TIR DE BARRAGE A USAGE MULTIPLE © Pumpkin
Il y a déjà eu beaucoup de script de tir de barrage, pourquoi un de plus ? Parce que l'un fait tirer un canon, fait exploser la munition et l'obus tiré explose... quelque part. Parce que l'un prévoit le tir d'un ou plusieurs canons mais oublie que les canons ne tireront plus dès qu'ils seront à court de munition. Un autre prévoit tous ces paramètres, mais ne permet pas de changer la munition pour obtenir une explosion plus puissante. Donc le but de ce script est avant tout de réunir le plus d'options possibles, pour obtenir un script le plus universel possible.
Ce tir de barrage "ennemi" est à usage multiple, il permet :
- une utilisation simple à 2 paramètres : En plus d'une utilisation plus complexe, le script peut être lancé "simplement" avec 2 paramètre : la zone de tir et le délai entre tir, sans plus.
- arrêt des tirs "sur demande" : Il suffit de lancer le script en précisant le nom du marqueur où se déroule le bombardement et un délai de 0.
- tirs sur multiples zones "en simultané" : Plusieurs zones de tirs peuvent être activées (ou réactivées) en même temps
- une pseudo-synchronisation de la zone de tir avec un groupe de "statiques" : Un groupe de "statiques", canons ou mortiers, peut être lié/"synchronisé" à une zone de tir (attention ! il ne s'agit pas de la synchronisation de l'éditeur !).
- choix de la munition des tirs : si l'obus de 105mm (munition par défaut) est trop puissant, ou pas assez, le créateur de mission peut changer la munition du tir. En cas de synchronisation zone/groupe, la munition tirée par les canons/mortiers est "interceptée" et détruite, donc pas de 2ème impact "accidentel" !
- activer un son à l'endroit de l'impact : avant l'explosion, le joueur entend un son (le "sifflement" de l'obus approchant), afin de lui permettre de se mettre à l'abri. (Merci pour cette idée géniale à Mister Murray, apparue dans son ancien script Arma 1, "MMarty")
Remarques importantes :
- Il ne peut cependant n'y avoir qu'un seul tir de barrage sur une zone/marqueur.
- Si un groupe est synchronisé avec une zone/ un marqueur, les tirs s'arrêtent si tous les tireurs du groupe sont tués. Cette option permet de réaliser des scénarios d'attaque le batterie de tir. A l'approche des joueurs, les tireurs des "statiques" ne chercheront pas à tirer sur les joueurs-attaquants, il faut donc prévoir des troupes de protection.
- Les membres du groupe de "statiques" synchronisé sont alimentés en munition "à l'infini". Cependant, si un de ces membres se trouve à court de munition, les tirs s'arrêteront, ce qui peut être fait facilement par un déclencheur (par exemple, le_nom_du_tireur removeMagazines "30Rnd_122mmHE_D30" pour une batterie de D30 ou tireur removeMagazines "30Rnd_105mmHE_M119" pour une batterie de M119; voir le déclencheur groupé au joueur dans la mission d'exemple)
Téléchargement :
- tir_de_barrage.rar
- mission démo
1. RÉPERTOIRES & FICHIERS :
- lib\ : répertoire de scripts/fonctions personnels, à copier intégralement.
- barrage_fire\ : répertoire du scripts de tir de barrage (ainsi que du script, non indispensable, de démo des munitions)
- tir_de_barrage.sqf : Le script de tir de barrage proprement dit
- marqueur_visibilite.sqf : Script permettant de faire apparaitre/disparaitre le marqueur de la zone de tir
- test_ammo.sqf : Script pour la mission de démo, qui fait exploser 58 munitions et indique leur nom
- barrage_fire\sounds\ : répertoire contenant le son du "sifflement" d'obus (basé sur un échantillonnage réel d'obus)
- whiz3b.ogg : son "sifflement d'obus" durée ~8s
- description.ext : ce fichier contient la définition du son de "sifflement" d'obus. Il n'est pas nécessaire de copier intégralement ce fichier pour que le script fonctionne, mais il faut au minimum copier la description du son :
class CfgSounds { sounds[ ] = {}; class ShellWhiz { name = "Shell_Whiz"; sound[ ] = {"\barrage_fire\sounds\whiz3b.ogg", 55, 0.55, 500}; titles[ ] = {}; }; };- init.sqf : ce fichier contient la définition du son de "sifflement" d'obus. Il n'est pas nécessaire de copier intégralement ce fichier pour que le script fonctionne, mais il faut au minimum copier la description du son :
Si l'on active le son d'obus et qu'on veut qu'il soit audible en Multi-joueur, il faut impérativement laisser active la ligne d'initialisation du système de message MP ! :if (_testserver) then { nul = execVM "lib\Init_Speach_Broadcast.sqf"; };
2. PARAMÉTRAGE :
["nom_du_marqueur", délai entre tirs (, "type de munition", groupe synchronisé, activation sifflement d'obus)] execVM "barrage_fire/tir_de_barrage.sqf"
(à mettre dans un déclencheur, ou à faire appeler par un autre script compatible serveur)
- nom_du_marqueur : entre guillements, la variable indiquée dans le champ "nom" du marqueur; NOTA : un marqueur invisible sur la carte a en fait sa taille X et Y divisé par 10000, le script en tiendra compte. ex.: pour un marqueur couvrant une zone X=100 Y=200, sa taille est réduite à X=0.01 Y=0.02. Cela peut être fait "manuellement" dans l'éditeur mais ce n'est pas très pratique pour le repérer par la suite (à vous de voir ;) ). Le script "marqueur_visibilite.sqf" peut se charger d'alterné visibilité/invisibilité automatiquement.
- délai entre tirs :
- valeur positive = temps moyen modulé aléatoirement à +/- 1/3 du temps indiqué
- valeur négative = temps aléatoire de 0s jusqu'au temps indiqué
- valeur 0 = utilisée pour arrêter le tir de barrage
- type de munition (OPTIONNEL) : munition explosant sur la zone; indépendante du type de canon ou mortier utilisé pour la synchronisation; "Sh_105_HE" par défaut (voir la démo munitions pour d'autres noms de munitions)
- groupe synchronisé (OPTIONNEL) : pseudo-synchronisation à un groupe de "statique" existant (canons ou mortiers); le tir s'arrête si tous les tireurs du groupe sont morts (pour scénario d'attaque de position de tir); le tir stoppe également si un membre du groupe n'a plus de munition (pour scénario d'interception de ravitaillement, par exemple). Du fait du certaines initialisations supplémentaires lors d'une synchronisation groupe/zone, les salves de tirs ne commencent que 10s environ après le déclenchement du tir.
- activation son sur impact (OPTIONNEL) : produire un son à l'endroit du futur impact, pour permettre au joueur d'essayer de déterminer à l'avance où se produira l'explosion et ainsi se mettre à l'abri. Le son s'entends environ 8 à 9s avant l'explosion. Ce son est en "3D", c'est-à-dire que le joueur l'entendra assez faible s'il est loin de l'impact, et inversement, et il pourra le situer dans l'espace (savoir si l'impact se produira devant, derrière, à gauche ou à droite)
Les 3 derniers paramètres, "type de munition", "groupe synchronisé" et "activation son sur impact", sont interchangeables (à mettre indifféremment comme 3ème, 4ème ou/et 5ème paramètre)
exemples :
nul = ["tirbarrage",1] execVM "barrage_fire\tir_de_barrage.sqf"Lancement simplifié : tirs sur la zone/le marqueur nommé "tirbarrage", espacés d'environ 1 seconde. La valeur du délai est positive, le délai entre tirs fluctuera environ entre 1/2 seconde et 1 seconde 1/2.
nul = ["tirbarrage",-5,group tireur] execVM "barrage_fire\tir_de_barrage.sqf"Exemple de synchonisation : tirs sur la zone/le marqueur nommé "tirbarrage", la valeur négative du délai indique que les tirs sont espacés par un délai allant de 0 à 5s (au lieu de 3 sec. 1/2 à 6 sec. 1/2). Un des membres du groupe de "statiques" a été nommé "tireur". Pour indiquer la synchronisation à un groupe, il suffit donc d'indiquer comme 3ème paramètre "group tireur"
nul = ["tirbarrage",10,"Bo_GBU12_LGB",group tireur_est] execVM "barrage_fire\tir_de_barrage.sqf"La zone de tir est toujours un marqueur nommé "tirbarrage", il y a 10s de délai entre tirs à +/- 3s, la munition utilisée est une bombe, la "Bo_GBU12_LGB" et enfin la synchronisation est faite avec un groupe dont l'un des membres est nommé "tireur_est". Notez que, cette fois, le 2ème argument est la munition utilisée, et non le groupe synchronisé, les 3 derniers paramètres (type de munition, groupe synchro et activation son sur impact) s'indiquant dans n'importe quel ordre.
nul = ["tirbarrage",5,group tireur_est2,true] execVM "barrage_fire\tir_de_barrage.sqf"Encore le même marqueur nommé "tirbarrage" pour indiquer la zone de tir, il y a synchronisation avec un groupe dont l'un des membres est nommé "tireur_est2", et le son sur impact est activé. Comme on a indiqué 5s de délai entre tir ET qu'il y a activation du son sur impact, le délai réel entre tirs sera d'environ 14s, soit les 5s indiqué + les 9s que dure l'echantillon sonore. Le paramètre "true" de l'activation du son sur impact est placé à la 4ème place, mais aurait pu être placé avant le groupe, les 3 derniers paramètres étant interchangeables, comme le montre ce dernier exemple ci-dessous.
nul = ["tirbarrage",-10,true,"Bo_GBU12_LGB",group tireur_est2] execVM "barrage_fire\tir_de_barrage.sqf"Je vous laisse le soin de traduire ce dernier exemple ;)
SCRIPT "MARQUEUR_VISIBILITE.SQF"
Ce script sert à rendre invisible une marqueur définissant une zone de tir (en le réduisant). Afin qu'il n'apparaisse pas dans le briefing, au début de la mission, il faut placer l'appel dans le champ "initialisation" d'une unité "logique de jeu" catégorie objet.
nul = "nom_du_marqueur" execVM "barrage_fire\marqueur_visibilite.sqf"
3. MISSION DÉMO :
Pour tester les différents usages du tir de barrage dans cette mission d'exemple, il faut utiliser les appels radio soit les touches 0 - 0 puis de 1 à 9 :
- tir de barrage simple : exemple de lancement simple. Il n'y a que les 2 paramètres obligatoires : le nom du marqueur et le délai entre tirs
- tir de barrage synchro M119 : exemple de synchronisation entre zone et groupe. A noter le délai négatif (-5), donc explosions distantes de 0 à 5s (voir la signification d'un délai négatif dans le paragraphe des paramètrages ci-dessus).
- tir de barrage synchro D30 : exemple de synchronisation entre zone et groupe, changement de munition, et cette fois avec un délai positif.
- tir de barrage synchro mortier : exemple de synchronisation entre zone et groupe, tir avec son sur impact.
Ces 4 premiers déclencheurs déclenche les tirs sur la zone nommée "tirbarrage", dont le marqueur est "invisible" (en fait réduit à une taille non visualisable). Il y a un déclencheur sur la même zone (voir l'image ci-dessous) qui lance un tir de barrage "simplifié (nul = ["tirbarrage",10] execVM "barrage_fire\tir_de_barrage.sqf"). Si vous entrez dans cette zone, vu qu'il ne peut y avoir qu'un seul tir d'activé par zone, les déclencheurs radio ne fonctionnerons plus, du moins tant que vous resterez dans la zone. Inversement, si vous déclenchez un tir via la radio, ce déclencheur n'activera rien.
- fin tir de barrage 1-2-3-4 : commande l'arrêt des 4 tirs ci-dessus
- tir de barrage zone 2 : tir de barrage sur une 2ème zone (marqueur rectangle orange, visible à droite de la piste) pour montrer/tester la simultanéité des tirs, à la fois sur la zone 1 et la zone 2.
- fin tir de barrage zone 2 : commande l'arrêt des tirs sur la 2ème zone
- afficher/masquer marqueur : rend visible/invisible, en alternance, le marqueur de la 1ère zone de tir, nommée "tirbarrage" (cf. les exemples 1, 2, 3 et 4, et voir l'image ci-dessous); rappel : pour un marqueur "invisible", sa taille est 1/10000ème de sa taille "normale".
Pour afficher un marqueur "invisible" ou rendre "invisible" un marqueur apparent à l'aide du script "marqueur_visibilite.sqf", il faut simplement passer le nom du marqueur en argument :
nul = "tirbarrage" execVM "barrage_fire\marqueur_visibilite.sqf"Pour afficher un marqueur "invisible" sans passer par le script "marqueur_visibilite.sqf", il suffit de multiplier sa taille en X et en Y par 10000 comme ceci :
"tirbarrage" setMarkerSize [((getMarkerSize "tirbarrage") select 0) * 10000,((getMarkerSize "tirbarrage") select 1) * 10000]
- démo munitions : tirs successifs de munitions de différents types à l'emplacement du marqueur indiquant "visualisation du test de munition ici". Utile pour obtenir le nom exact d'une munition (58 munitions testées).
Afin de faciliter un peu la vie aux éditeurs de missions qui auraient quelques oublis, il y a, dans le répertoire "barrage_fire\", un script nommé "test_ammo.sqf", qui est lancé par ce déclencheur radio et qui va faire exploser 58 munitions à l'emplacement indiqué par le marqueur "visualisation du test de munition ici" en indiquant sur la ligne chat le nom de la munition qui explose. Ce nom est l'un de ceux qui peut être utilisé par le script "tir_de_barrage.sqf".
Pour finir, comme noté précédemment, il y a un petit déclencheur derrière la batterie de M119, groupé au joueur.
Si vous activez le tir des M119 (radio 2) et que vous passez sur ce déclencheur, les tirs s'arrêteront. C'est un exemple d'une des méthodes utilisées pour arrêter les tirs, c'est-à-dire, supprimer les munitions d'un membre du groupe :
tireur removeMagazines "30Rnd_105mmHE_M119"
Bonne édition !