le but est d'animer un véhicule/statique ou un groupe de véhicule/statique par exemple une batterie de D30.
Cela permet de rajouter à une mission du réalisme visuel et sonore, par exemple sur un objectif à attaquer.
De plus les tir réels peuvent atteindre une cible de votre choix, votre point d'insertion ou une usine par exemple.
La difficulté trouver la commande de tir automatique par IA n'est pas aisée sous ArmA 2. Curieusement la commande fire pose problème.
On peut donc passer par une “action” appelé “useweapon” :
ex :
gameLogic action ["useWeapon",d30_1,gunner d30_1,0];
Où “d30_1” est le nom du véhicule avec son ou ses IA.
Dans cet exemple j'utilise quatre unités » OPFOR » statique » D30 nommés de “d30_1” à “d30_4” placés par exemple avec l'Editeur d'ArmA2.
Il est nécessaire de placer une unité » Logique de jeu » objet nommée “gamelogic_1” dans l'exemple.
mettre dans un déclencheur “sur act.” :
_nul=[] execVM "tir_D30.sqf";
la condition de déclenchement sera bien sur fonction du scénario de la mission, par ex la présence Blufor dans une zone.
If !(IsServer) ExitWith {}; while {true} do { azimuth_1 = (204 + random 3); elevation_1 = (21 + random 2); azimuth_2 = (208 + random 2); elevation_2 = (21 + random 3); azimuth_3 = (157 + random 3); elevation_3 = (19 + random 2); azimuth_4 = (157 + random 2); elevation_4 = (18 + random 3); //ciblage par les D30 d30_1 doWatch [ (getPos d30_1 select 0) + (sin azimuth_1)*(cos elevation_1)*1000, (getPos d30_1 select 1) + (cos azimuth_1)*(cos elevation_1)*1000, (getPos d30_1 select 2) + (sin elevation_1)*1000 ]; d30_2 doWatch [ (getPos d30_2 select 0) + (sin azimuth_2)*(cos elevation_2)*1000, (getPos d30_2 select 1) + (cos azimuth_2)*(cos elevation_2)*1000, (getPos d30_2 select 2) + (sin elevation_2)*1000 ]; d30_3 doWatch [ (getPos d30_3 select 0) + (sin azimuth_3)*(cos elevation_3)*1000, (getPos d30_3 select 1) + (cos azimuth_3)*(cos elevation_3)*1000, (getPos d30_3 select 2) + (sin elevation_3)*1000 ]; d30_4 doWatch [ (getPos d30_4 select 0) + (sin azimuth_4)*(cos elevation_4)*1000, (getPos d30_4 select 1) + (cos azimuth_4)*(cos elevation_4)*1000, (getPos d30_4 select 2) + (sin elevation_4)*1000 ]; //tir par les D30 et rechargement sleep 4; gameLogic_1 action ["useWeapon",d30_1,gunner d30_1,0]; sleep 5; gameLogic_1 action ["useWeapon",d30_2,gunner d30_2,0]; sleep 6; gameLogic_1 action ["useWeapon",d30_3,gunner d30_3,0]; sleep 5; gameLogic_1 action ["useWeapon",d30_4,gunner d30_4,0]; d30_1 setvehicleAmmo 1; d30_2 setvehicleAmmo 1; d30_3 setvehicleAmmo 1; d30_4 setvehicleAmmo 1; };
If !(IsServer) ExitWith {}; : pour que le script ne s'exécute que coté serveur, sans risque de se multiplier par le nombre de client.
random : pour donner une dispersion aléatoire au tir sur l'objctif
dowatch : pour viser la cible
sleep : permet de laisser le temps voulu en sec. entre chaque tir
setvehicleAmmo : recharge complétement les D30 à chaque boucle.
ce script permet donc de “forcer” les IA à utiliser leur armement, ici la batterie de D30, qui entre en action et pilonne les azimuts choisies, à des distances correspondant au élévations choisies.
Le point précis de la retombé des tirs se fait ensuite par évaluation/correction sur l'éditeur.
A noter qu'en cas de détection de forces ennemies à proximité les IA peuvent alors changer de cible et les engager.
R3F Artillery and Logistic (par madbull@team-r3f.org)
Le calculateur du poste de commandement d'artillerie de “R3F Artillery and Logistic” peut permettre de calculer les azimuts et élévations à entrer dans le script “tir_D30.sqf” grâce à l'outil clic-carte du calculateur.
ce script va prendre le pas sur l'artillerie gérée par Arma 2 de Bis.
Il faut alors :
d30_1 setVariable ["R3F_ARTY_chargeur_courant", ["30Rnd_122mmHE_D30", "HE 122mm Ch.2 (6000m)", 250, 0, "HE", []]]; d30_2 setVariable ["R3F_ARTY_chargeur_courant", ["30Rnd_122mmHE_D30", "HE 122mm Ch.2 (6000m)", 250, 0, "HE", []]]; d30_3 setVariable ["R3F_ARTY_chargeur_courant", ["30Rnd_122mmHE_D30", "HE 122mm Ch.2 (6000m)", 250, 0, "HE", []]]; d30_4 setVariable ["R3F_ARTY_chargeur_courant", ["30Rnd_122mmHE_D30", "HE 122mm Ch.2 (6000m)", 250, 0, "HE", []]]; _nul=[] execVM "tir_D30.sqf";
noter que le 4ième paramètre (coefficient de frottements) de l'array [“30Rnd_122mmHE_D30”, “HE 122mm Ch.2 (6000m)”, 250, 0, “HE”, []] doit être présent.
à Aigle4, Madbull, et Betep