RAVITAILLEMENT AERIEN © Pumpkin
Un script écrit il y a longtemps, à l'époque où aucun script de ravitaillement/parachutage de cargaison ne me convenait (manque cruel d'option,...). Finalement, il ne s'est pas "démodé", et est plus souple d'utilisation que le nouveau module de ravitaillement de BIS (cf. module de support simple).
Le but est d'avoir un ravitaillement aérien polyvalent, qui devrait permettre une utilisation dans tous les cas de figure :
- Choix du type de positionnement du largage : On peut indiquer à l'avion de ravitaillement de lâcher sa cargaison, sur la position du joueur ou d'un objet, en cliquant sur la carte ou encore en tirant un fumigène, ou une autre munition.
- Pas de gestion d'avion : le script se charge de créer les avions pour le largage et de les faire disparaitre
- Choix de l'avion de ravitaillement : le script fonctionne par défaut en utilisant un Osprey, mais on peut indiquer un autre avion de ravitaillement, afin de pouvoir utiliser le script avec d'autres addons
- demande de largage réservé au leader du groupe : évites le "chaos" en MP.
- largage d'une cargaison prédéfinie ou générée, ou mixage objets prédéfinis et objects générés : On peut soit procéder au largage d'une cargaison existante sur la carte (= placée dans l'éditeur), ainsi le créateur de missions peut plus facilement "personnaliser" la cargaison, ou générer la cargaison en indiquant le type de cargaison à larguer. On peut mixer les deux types d'objets et composer un cargaison avec à la fois des objets placés dans l'éditeur et des objets générés.
- ravitaillement2.rar
- mission démo
- air_supply_A3.rar
- modification "à l'arrache" pour A3 (note: le marquage par fumigène ne fonctionne pas)
1. RÉPERTOIRES & FICHIERS :
- lib\ : répertoire de scripts/fonctions personnels
- debug\ : répertoire de scripts de débuggage personnels; (à ne pas conserver dans les missions)
- AirSupply\ : répertoire des scripts de ravitaillement aérien
- AirSupply\AirDropping.sqf : script principal, celui qui doit être utilisé pour une demande de ravitaillement (hors appels "spéciaux", vois ci-dessous)
- AirSupply\DropSupply2.sqf : script gérant le parachutage d'une cargaison; appelé par le script principal
- AirSupply\MarqueDropPos.sqf : appels "spéciaux"; ce script est utilisé à la place du script principal si l'on veut pour indiquer l'emplacement de largage par click sur la carte ou lancement de fumigène.
- AirSupply\InitSupplyMenu.sqf : script annexe non indispensable; met en place les options permettant un appel par menu
- AirSupply\menu_supply.sqf : script annexe non indispensable; gère l'appel "réel" au(x) script(s) dans le cas d'appel par menu
Ces 2 derniers scripts n'ont aucune autre fonction que de conserver un exemple d'utilisation de menu avec le script de ravitaillement. Ils pourrait être effacés sans perturber le bon fonctionnement des autres scripts.
NOTA : En raison des multiples façon de conserver les menus après respawn, je laisse le soin au créateur de mission de relancer la mise en place du menu, qui, évidemment, disparaitra après la mort du joueur.
2. PRÉSENTATION :
La mission de démo permet de tester différents types d'appels/d'utilisation du script de ravitaillement, aussi bien par menu que par appel radio :
En bout de piste (cf. la position "a.") se trouve une caisse de munition et un HMMWV. Il constitue la cargaison à larguer lors des tests, sauf pour les tests "création approvis." et "longue attente (mk-40s)". Lorsque l'avion arrive, il largue non pas ces deux objets mais leur "clone" (pour contourner certains bugs de Arma 2). Ce n'est qu'à l'impact au sol des "clones" que les 2 objects "originels" sont déplacés (et les clones détruits).
- "ravitailmt Osprey (mk-40s)" : ravitaillement par avion par défaut, disparition des marqueurs 40s après l'impact au sol.
- "ravitailmt C130" : ravitaillement par C130, pas de disparition des marqueurs
- "création approvis." : la cargaison n'a pas été placée sur la carte en éditeur, mais est générée par script
- "marquage carte" : 1er appel "spécial". Il faut que le joueur clique sur la carte pour indiquer l'endroit où l'avion doit larger la cargaison
- "marquage fumigène" : 2ème appel "spécial". Le joueur doit soit tirer une grenade fumigène au M203, soit simplement lancer un grenade fumigène à main pour indiquer la zone de largage.
- "attente (mk-40s)(mix.obj.)" : test du délai d'attente (1mn avant déclenchement du ravitaillement), cargaison mixé object généré + object existant, disparition des marqueurs 40s après l'impact au sol.
NOTA : pour indiquer un exemple de personnalisation de cargaison, j'ai greffé sur la caisse de munition mon script de remplissage universel d'armes et munitions (qui donne accès à toutes les armes du jeu, tout addon confondu).
Un dernier test peut s'effectuer : un largage à proximité d'un objet avec appel par déclencheur. Il faut simplement s'approcher du mat de drapeau, situé en b.
Note importante : le point de largage n'est pas le point de chute des cargaisons. Le point de contact au sol dépend du vent, de la vitesse de l'avion de ravitaillement. Le point d'impact de la cargaison est souvent à plusieurs centaines de mètres du point de largage indiqué. Les images ci-dessous illustent de façon plus compréhensible les phases de largage :
- 1ère image : le marqueur vert "largage" est le point où doit se faire le largage. L'avion a cependant laché les 2 objets à l'endroit des 2 points rouges. Ils resteront à ces emplacements jusqu'à ce qu'ils touchent le sol
- 2ème image : les 2 objets ont touché le sol. la dérive des parachutes dûe au vent les a cependant poussés plus à l'ouest de quelques centaines de mètres.
2. PARAMÉTRAGE :
a. le script "AirDropping.sqf"
Script principal, gère la création et disparition de l'avion et le largage des objets
nul = [position, [materiel1,materiel2,...], attente (,type d'avion ,temporisation des marqueurs)] execVM "AirSupply\AirDropping.sqf"
- position : une position 2D ou 3D
- [materiel1, materiel2, ...] : le tableau comportant le nom des cargaisons (nommez impérativement les objets à larger par leur champ "Nom :" !) ou le type d'object à générer
- attente : temps d'attente avant le départ du ravitaillement (en seconde); ce n'est pas le temps d'attente avant le largage ! temps total avant largage = temps d'attente + temps de voyage de l'avion jusqu'à la position.
- type d'avion : par défaut, l'avion utilisé en le MV-22 Osprey (à cause de sa maniabilité). On peut cependant choisir n'importe quel autre type d'avion.
- temporisation des marqueurs : par défaut, les marqueurs sont permanents. Si ce nombre est spécifié, les marqueurs ne seront affichés que durant ce laps de temps et disparaitront ensuite. Le marqueur d'un véhicule disparaitra systématiquement dès qu'il sera déplacé, ainsi que le marqueur d'une cargaison prédéfinie dont la position est modifié par un autre largage.
NOTA : Le 4ème et 5ème paramètres sont interchangeables, autrement dit on peut mettre le type d'avion, puis la temporisation des marqueurs, ou inversement.
Exemples :
nul = [getpos player,[munition,hummer],0,40] execVM "AirSupply\AirDropping.sqf";largage à la position du joueur, des objets nommés munition et hummer, aucune attente avant début du ravitaillement, les deux marqueurs disparaitront 40s après le contact au sol.
nul = [getpos player,[munition,hummer],0,"C130J"] execVM "AirSupply\AirDropping.sqf";largage à la position du joueur, des objets nommés munition et hummer, aucune attente avant début du ravitaillement, ravitaillment par un C130 (les deux marqueurs seront permanents).
nul = [getpos player,["HMMWV_Armored","USVehicleBox"],0] execVM "AirSupply\AirDropping.sqf";largage à la position du joueur, d'un HMMWV et d'une caisse de munition tous deux générés, aucune attente avant début du ravitaillement, (les deux marqueurs seront permanents).
nul = [getpos player,["hilux1_civil_2_covered",hummer],60,40] execVM "AirSupply\AirDropping.sqf";largage à la position du joueur, d'un 4X4 civil génére et de l'objet nommé hummer, 60s d'attente avant début du ravitaillement, les deux marqueurs disparaitront 40s après le contact au sol.
b. le script "MarqueDropPos.sqf"
Script utilisé pour appels "spéciaux" : On peut demander un largage soit sur une position indiquée en cliquant sur la carte, soit en tirant/lançant un fumigène ou tout autre munition. Pour le choix par pointage sur la carte, il faut mettre une chaine vide (="") comme premier argument. Si on spécifie autre chose qu'une chaine vide, le script considérera que c'est une munition et attendra le tir de cette munition durant une minute avant de déclencher le largage. Si au bout d'une minute, le tir n'est pas détecté, il faudra relancer la demande de largage. "SmokeShell" englobe tous les fumigène, aussi bien les grenades de M203 que les grenades à main. Bien que je n'en vois pas la raison immédiatement, il se peut qu'on veuille marquer l'emplacement de largage par "l'impact" d'une autre munition; le script n'est pas bridé de ce côté et on peut très bien detecter le tir d'une autre munition (dont le nom se recherche dans la section "CfgAmmo" des fichiers de configuration).
Le paramètrage est presque identique à celui de "AirDropping.sqf"
nul = ["type_de_munition", [materiel1,materiel2,...], attente (,type d'avion ,temporisation des marqueurs)] execVM "AirSupply\AirDropping.sqf"
- type_de_munition : le type de munition dont le script doit détecté le tir pour déclencher le ravitaillement
- [materiel1, materiel2, ...] : le tableau comportant le nom des cargaisons (nommez impérativement les objets à larger par leur champ "Nom :" !) ou le type d'object à générer
- attente : temps d'attente avant le départ du ravitaillement (en seconde); ce n'est pas le temps d'attente avant le largage ! temps total avant largage = temps d'attente + temps de voyage de l'avion jusqu'à la position.
- type d'avion : par défaut, l'avion utilisé en le MV-22 Osprey (à cause de sa maniabilité). On peut cependant choisir n'importe quel autre type d'avion.
- temporisation des marqueurs : par défaut, les marqueurs sont permanents. Si ce nombre est spécifié, les marqueurs ne seront affichés que durant ce laps de temps et disparaitront ensuite. Le marqueur d'un véhicule disparaitra systématiquement dès qu'il sera déplacé, ainsi que le marqueur d'une cargaison prédéfinie dont la position est modifié par un autre largage.
nul = ["",[munition,hummer],5] execVM "AirSupply\MarqueDropPos.sqf";position indiquée par cliquage sur la carte, les objets nommé munition et hummer sont déplacé, le ravitaillement s'effectuera 5s après la demande
nul = ["SmokeShell",[munition,hummer],5] execVM "AirSupply\MarqueDropPos.sqf";position indiquée tir/jet de fumigène, les objets nommé munition et hummer sont déplacé, le ravitaillement s'effectuera 5s après la demande
"Clin d'oeil" : Je me suis demandé parfois ce qui se passerai si un véhicule parachuté atterrissait pile-poil sur un arbre, sans avoir pu faire de test correct... réponse : le véhicule abat l'arbre, sans dommage (le 4X4 hilux n'a même pas sa peinture d'abîmé). Par contre, c'est nettement moins probant s'il tombe pile-poil à côté d'un bâtiment :) (pas gênant en fait : on arrive à monter dedans et à l'extirper de là sans dégâts)
Bonne édition !