Principe

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 le fichier mission.sqm

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.

wiki_d30_1

Appel du script

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.

Script "tir_D30.sqf"

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.

Exécution

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.

Note concernant l'utilisation avec le "R3F Artillery and Logistic"

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 :

  1. lancer le script “tir_D30.sqf” au moins 30 sec aprés le départ de la mission.
  2. utiliser les munitions de “R3F Artillery and Logistic” dont la liste est dans le fichier config.sqf du répertoire R3F_ARTY comme dans l'exemple ci dessous.
  3. mettre dans un déclencheur “sur act.” pour lancer le script “tir_D30.sqf” précédé dans ce cas précis de :
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.

Remerciements

à Aigle4, Madbull, et Betep

 
scripts/action-useweapon.txt · Dernière modification: 12/04/2011 21:57 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki