"RESPAWN" DE VEHICULE (+ ACCES RESTREINT) © Pumpkin
Ce "respawn" de véhicule est à usage multiple, il permet :
La fonction est "modulaire" et comporte plusieurs scripts pouvant être utilisé séparement et/ou conjointement. Le respawn ressuscite tous types de véhicules, les "statiques" y compris (mortiers, mitrailleuse sur pied,...)
- le respawn de véhicule vide ou avec équipage : respawn des véhicules utilisables par les joueurs mais aussi les véhicules avec équipage IA de l'éditeur.
- de restreindre le nombre de nombre de respawn : le véhicule est définitivement détruit après un certain nombre de respawn
- de bloquer l'accès au véhicule à certains joueurs : grâce à une table, le véhicule ne peut être conduit que par certains joueurs (membres d'une team,...). Cette accés restreint est modulable véhicule par véhicule.
- créer un équipage à un véhicule vide avec possibilité de greffer le véhicule au groupe du/des joueur(s) : on peut créer un équipage à un véhicule qui a été placé vide dans l'éditeur. On peut également faire en sorte que cet équipage se retrouve sous les ordres du/des joueur(s).
- vehicule_respawn.rar
- mission démo "spécial serveur dédié"
- mission démo "simple", épurée
1. RÉPERTOIRES & FICHIERS :
- lib\ : répertoire de scripts/fonctions personnels
- veh_respawn\ : répertoire des scripts de gestion du respawn
- veh_respawn\imgs\ : répertoire des images contenant "lives.paa" et "no-entry.paa", 2 images utilisées pour les avertissements "nombre de respawn encore disponible" et "éjection d'un joueur non-autorisé"
- veh_respawn\fill_veh.sqf : script "remplissant" un véhicule vide avec l'équipage type défini dans le fichier de configuration BIS
- veh_respawn\members_unlock.sqf : script "verrouillant" un véhicule. En fait, il éjecte un joueur non-autorisé à conduire le véhicule. Il autorise cependant à monter à d'autres postes, comme tireur ou passager
- veh_respawn\respawn_veh.sqf : le script de respawn proprement dit, qui appele/utilise tous les autres scripts, selon besoin
- veh_respawn\team_names.sqf : pas un script à proprement parlé, c'est en fait le tableau des pseudo des membres autorisés par défaut à conduire les véhicules "respawnables" ou verrouillés
2. PRÉSENTATION :
Il y a deux missions d'exemple : "@vehicule_respawn" et "@vehicule_respawn_simple". La première est plus orientée Multi-Joueurs. Les scripts du respawn doivent fonctionner sur serveur et non sur les machines clientes. L'inconvénient est que, dans ce cas, les messages d'avertissements que produisent les scripts ne sont jamais visibles par les joueurs. Je passe donc par mon système d'affichage de message Multi-Joueurs pour afficher les avertissements à tous les joueurs. Ainsi, tous les mondes est averti par exemple, qu'un véhicule n'a plus que 3 respawns disponibles, ou encore que tel ou tel joueur non-autorisé a tenté de déplacer un véhicule et a été éjecté.
Pour infos, il y a deux messages radio de test : "LRAC SMAW" (radio 0-0-1) fourni 4 roquettes SMAW HEAA automatiquement (je suis parfosi un gros flemmard, 'pas envie de me pencher tout le temps sur une caisse de munitions :D ); "remplir HMMWV" (radio 0-0-2) met un équipage dans le Humvee au sud, juste à côté du joueur, et le greffe sur le groupe du joueur... un exemple de "renfort spontané", en gros.
a. spécificité de la mission "@vehicule_respawn"
Pour mettre en place ce système de message, il faut simplement lancer le script "LIB\Init_Speach_Broadcast.sqf", ce qui est fait dans le fichier "init.sqf" (lancement restreint au serveur, d'où le test _testserver)
...et avoir le script "LIB\Fonctions_Speach.sqf" installé.
if (_testserver) then {
// Init permettant de diffuser en MP le texte des chats, = objet nommé "PUMPKINBroadcaster"
nul = execVM "lib\Init_Speach_Broadcast.sqf";
};
...
b. spécificité de la mission "@vehicule_respawn_simple"
Cette seconde mission d'exemple n'est pas incompatible Multi-Joueurs, elle est quasiment identique à la 1ère. Seulement, en MP, aucun message ne sera visible, car le système de message Multi-Joueurs a été supprimé : pas de fichier "init.sqf", "Fonctions_Speach.sqf" et "Init_Speach_Broadcast.sqf" retirés du répertoire "lib\". Seul subsiste l'indispensable "Server_detection.sqf" dans "lib\". Je ne l'ai ajouté pour exemple.
Pour tous le reste, je vous laisse décourvrir par vous-même...
2. PARAMÉTRAGE :
a. la table "team_names.sqf"
Il faut en tout premier lieu inscrire dans cette table les pseudos des joueurs autorisés par défaut à conduire les véhicules. Par exemple :
_team_members = [Ce signifie que tous véhicules qui aura le script "respawn_veh.sqf" ou le script "members_unlock.sqf" aura la place de conducteur interdite , sauf pour "Pumpkin" et "Warsheeeep".
"Pumpkin",
"Warsheeeep"
];Attention ! Les pseudos doivent comporter les MAJUSCULES et MINUSCULES exacts, ainsi que les BLANCS éventuels. Tous joueurs avec son pseudo mal orthographié se verra éjecté du véhicule s'il s'installe à la place du conducteur
Si vous voulez désactiver totalement cette fonctionnalité de "verrouillage", il suffit de laisser la table vide :
_team_members = [
];La seule contraite de la table est que tous les pseudos doivent être suivi d'une virgule, SAUF le dernier
_team_members = [
"Pumpkin",
"Warsheeeep",
"Tromplamort"
];ARMA 2 est intransigeant ! Oubliez une virgule derrière un des pseudos jusqu'à l'avant dernier ou mettez un virgule au dernier pseudo et rien ne fonctionnera plus... A manipuler avec précaution
Logiquement, pour une table a un membre, le premier étant aussi le dernier, pas de virgule du tout
_team_members = [C'est la table dans les 2 missions d'exemple. J'ai utilisé mon propre pseudo pour les tests, inscrivez le votre pour tester efficacement les missions d'exemple.
"Pumpkin"
];
b. le script "respawn_veh.sqf"
nul = [this ('ou nom_du_vehicule') <, délai de réapparition> <, nombre de respawn (infini par défaut)> <, [table de pilotes autorisées alternative]> ] execVM "veh_respawn\Respawn_veh.sqf"
- this ('ou nom_du_vehicule') : this si le script est inscrit dans le champ "Initialisation" du véhicule, "'nom_du_véhicule'" pour les autres cas
- délai de réapparition <optionnel, obligatoire en cas de 3ème paramètre>: nombre de seconde avant réapparition du véhicule
- nombre de respawn <optionnel>: (infini par défaut) si le véhicule ne réapparaitra plus s'il a été déjà respawné le nombre de fois indiqué par ce paramètre.
- table de pilotes autorisées alternative <optionnel>: si on indique une table au script, elle a priorité sur la table par défaut. Ainsi on peut soit désactiver la fonction de verrouillage pour certains véhicules, ou encore autoriser le pilotage de certains véhicule par des joueurs trés spécifiques, en fonction de rôles attribués par exemple : certains pourront piloter des hélico, d'autres uniquement des chars,...
Remarque : Non seulement le véhicule est "respawné" lorsqu'il est détruit mais aussi lorsque son équipage est décimé.
NOTA : Le 3ème et 4ème paramètres sont interchangeables, autrement dit on peut mettre le nombre de respawn, puis la table alternative, ou inversement la table alternative puis le le nombre de respawn, comme le montre les exemples ci-dessous.
Exemples :
nul = [this] execVM "veh_respawn\respawn_veh.sqf" :réapparition simple, le véhicule détruit réapparait quasi immédiatement
nul = [this,10] execVM "veh_respawn\respawn_veh.sqf" :réapparition du véhicule au bout de 10s
nul = [this,10,["Pumpkin","WarSheeeep"]] execVM "veh_respawn\respawn_veh.sqf" :réapparition du véhicule au bout de 10s, réservé uniquement à "Pumpkin" et "WarSheeeep"
nul = [this,10,3] execVM "veh_respawn\respawn_veh.sqf" :réapparition au bout de 10s, limitée à 3 respawn maximum
nul = [this,10,3,["Pumpkin","WarSheeeep"]] execVM "veh_respawn\respawn_veh.sqf" :réapparition au bout de 10s, limitée à respawn maximum, réservé uniquement à "Pumpkin" et "WarSheeeep"
c. le script "members_unlock.sqf"
nul = [ this ('ou nom_du_vehicule) <, [table de pilotes autorisées alternative]> ] execVM "veh_respawn\members_unlock.sqf"
- this ('ou nom_du_vehicule') : this si le script est inscrit dans le champ "Initialisation" du véhicule, "'nom_du_véhicule'" pour les autres cas
- table de pilotes autorisées alternative <optionnel>: Même comportement que pour "respawn_veh.sqf"; si on indique une table au script, elle a priorité.
C'est la fonction de "verrouillage" proprement dit. Elle est appelé par le script "respawn_veh.sqf" mais peut être utilisé séparément (voir dans les missions d'exemple).
d. le script "fill_veh.sqf"
nul = [nom_du_vehicule <, groupe<] execVM "veh_respawn\fill_veh.sqf"
- nom_du_vehicule : explicite, non ? ;) this convient aussi si le script est inscrit dans le champ "Initialisation" du véhicule, mais... quel intérêt alors que l'on peut créer un véhicule avec équipage dans l'éditeur (??)
- groupe <optionnel>: groupe sur lequel doit être greffé le véhicule, par exemple, pour renforcer un groupe existant, voir le(s) joueur(s) (cf. l'exemple dans les missions de démo)
Ce script "rempli" un véhicule vide avec l'équipage standard, défini dans les fichiers de configation. Il est appelé par le script "respawn_veh.sqf" pour "respawner" les véhicules avec équipage mais peut être utilisé séparément
Bonne édition !