Script pour Artillerie




jeje52 - 02 Septembre 2020, 15:23


Bonjour à tous,

Je vous écris, car j'ai un souci pour l'artillerie.
En effet j'aimerais faire tirer un 2S9 SOCHOR OPFOR sur une cible.
Par exemple, j'arrive avec mon équipe sur un trigger qui active le tir du blindée.
J'ai regardé sur internet, mais rien du tout.
Si vous avez un script pour ça, je suis preneur.
Merci d'avance et merci pour l'autre topic sur le problème d'affichage.


GMC - 02 Septembre 2020, 18:29


Regarde ce petit script :

Code (Sélectionner)
// ==============================
// Conditions de sortie de script 
// ==============================
/*
	Argument 1 (String) : _target = cible
	Argument 2 (String) : _arty = unité de tir artillerie
	Argument 3 (String) : _timerBase = délais entre chaque tir
	Argument 4 (Val)    : _timerRandom = _this select 3;
	Argument 5 (Val)    : _salves = nbre de tir d'obus;
	Argument 6 (Val)    : _bias = 359° Rayon
	Argument 7 (String) : _munitions = type de munitions
	Argument 8 (Val)    : _rayon d'impact (Facultatif)
	---------------------------------------------------------------------------------------------

 	Faites un trigger activé par ce que vous voulez, choisissez une cible (ex. target1) et mettez dans le onActivation du trigger:

	Commande à utiliser dans un déclencheur :
	script = [_target, _arty, _timerBase, _timerRandom, _salves, _bias, _munitions] execVM 'Scripts\ado_artillerie.sqf' 

	---------------------------------------------------------------------------------------------
	Exemple :
	script = [arty_target1,m2,1,1,3,359,"8Rnd_82mm_Mo_shells",45] execVM 'Scripts\ado_artillerie.sqf';

	---------------------------------------------------------------------------------------------
	cet exemple fait tirer le mortier 'm1' sur la cible '_arty' toutes les 1 secondes par salves de 3 obus, sur un rayon de 359°,
	chaque obus est affecté par l'imprécision, donc pas d'obus au même endroit.
	Le mortier tire à l'infini, jusqu'à la mort de la sible. 
*/

if (!isServer) exitwith  {sleep 0.1;};										// Sortir du Script: si pas le serveur.

_target = _this select 0;
_arty = _this select 1;
_timerBase = _this select 2;
_timerRandom = _this select 3;
_salves = _this select 4;
_bias = _this select 5;
_munitions = _this select 6;
_rayon = _this select 7;

while {alive _target} do {
	for "_i" from 1 to _salves do {
		_targetX = (getpos _target select 0);
		_targetY = (getpos _target select 1);
		_targetZ = (getpos _target select 2);
		_arty setVehicleAmmoDef 1;
		if (!alive _target)  exitWith {};
		if ( _salves == 0)  exitWith {};
		_arty commandArtilleryFire [[_targetX - (_rayon*sin(random _bias)),_targetY - (_rayon*cos(random _bias)),_targetZ], _munitions, 1]; //45
		sleep (_timerBase + random _timerRandom);
	};
};


http://membresado.free.fr/upload_images/images/min/1599064641_gmc.jpg http://membresado.free.fr/upload_images/images/min/1599064675_gmc.jpg http://membresado.free.fr/upload_images/images/min/1599064697_gmc.jpg http://membresado.free.fr/upload_images/images/min/1599064853_gmc.jpg


jeje52 - 02 Septembre 2020, 19:01


à quoi correspond Scripts\ado_artillerie.sqf' ?

Ceci, c'est juste pour l'exemple où je dois le mettre quelque part
Argument 1 (String) : _target = cible
Argument 2 (String) : _arty = unité de tir artillerie
Argument 3 (String) : _timerBase = délais entre chaque tir
Argument 4 (Val) : _timerRandom = _this select 3;
Argument 5 (Val) : _salves = nbre de tir 'obus;
Argument 6 (Val) : _bias = 359 Rayon
Argument 7 (String) : _munitions = type de munitions
Argument 8 (Val) : _rayon d'dimpact (Facultatif)

Et ça, j'en fais quoi aussi

if (!isServer) exitwith {sleep 0.1;}; // Sortir du Script: si pas le serveur.

_target = _this select 0;
_arty = _this select 1;
_timerBase = _this select 2;
_timerRandom = _this select 3;
_salves = _this select 4;
_bias = _this select 5;
_munitions = _this select 6;
_rayon = _this select 7;

while {alive _target} do {
for "_i" from 1 to _salves do {
_targetX = (getpos _target select 0);
_targetY = (getpos _target select 1);
_targetZ = (getpos _target select 2);
_arty setVehicleAmmoDef 1;
if (!alive _target) exitWith {};
if ( _salves == 0) exitWith {};
_arty commandArtilleryFire [[_targetX - (_rayon*sin(random _bias)),_targetY - (_rayon*cos(random _bias)),_targetZ], _munitions, 1]; //45
sleep (_timerBase + random _timerRandom);
};


Ensuite que je passe le trigger, j'ai le message suivant qui apparaît " Script Script\ado_artillerie.sqf not found


philippe83 - 02 Septembre 2020, 19:35


Normal le " Scripts\ado_artillerie.sqf" fait partie du "Template ADO" que nous utilisons au sein du clan. Je pense que tu dois renommer le script comme tu le souhaites et que tu l'appelles en lieu et place de "ADO_Template/Scripts.."


jeje52 - 02 Septembre 2020, 20:01


mais le script, c'est bien un doc que je fais et que je mets dans mon dossier mission, vue que c'est un sqf.
Mais dedans, je mets quoi?


GMC - 02 Septembre 2020, 21:07


c'est le script: ligne de commande du scrip: un fichier nom_script.sqf

Code (Sélectionner)
// ==============================
// Conditions de sortie de script 
// ==============================
/*
	Argument 1 (String) : _target = cible
	Argument 2 (String) : _arty = unité de tir artillerie
	Argument 3 (String) : _timerBase = délais entre chaque tir
	Argument 4 (Val)    : _timerRandom = _this select 3;
	Argument 5 (Val)    : _salves = nbre de tir d'obus;
	Argument 6 (Val)    : _bias = 359° Rayon
	Argument 7 (String) : _munitions = type de munitions
	Argument 8 (Val)    : _rayon d'impact (Facultatif)
	---------------------------------------------------------------------------------------------

 	Faites un trigger activé par ce que vous voulez, choisissez une cible (ex. target1) et mettez dans le onActivation du trigger:

	Commande à utiliser dans un déclencheur :
	script = [_target, _arty, _timerBase, _timerRandom, _salves, _bias, _munitions] execVM 'Scripts\ado_artillerie.sqf' 

	---------------------------------------------------------------------------------------------
	Exemple :
	script = [arty_target1,m2,1,1,3,359,"8Rnd_82mm_Mo_shells",45] execVM 'Scripts\ado_artillerie.sqf';

	---------------------------------------------------------------------------------------------
	cet exemple fait tirer le mortier 'm1' sur la cible '_arty' toutes les 1 secondes par salves de 3 obus, sur un rayon de 359°,
	chaque obus est affecté par l'imprécision, donc pas d'obus au même endroit.
	Le mortier tire à l'infini, jusqu'à la mort de la sible. 
*/

if (!isServer) exitwith  {sleep 0.1;};										// Sortir du Script: si pas le serveur.

_target = _this select 0;
_arty = _this select 1;
_timerBase = _this select 2;
_timerRandom = _this select 3;
_salves = _this select 4;
_bias = _this select 5;
_munitions = _this select 6;
_rayon = _this select 7;

while {alive _target} do {
	for "_i" from 1 to _salves do {
		_targetX = (getpos _target select 0);
		_targetY = (getpos _target select 1);
		_targetZ = (getpos _target select 2);
		_arty setVehicleAmmoDef 1;
		if (!alive _target)  exitWith {};
		if ( _salves == 0)  exitWith {};
		_arty commandArtilleryFire [[_targetX - (_rayon*sin(random _bias)),_targetY - (_rayon*cos(random _bias)),_targetZ], _munitions, 1]; //45
		sleep (_timerBase + random _timerRandom);
	};
};


ligne de commande dans le trigger: [arty_target1,m2,1,1,3,359,"8Rnd_82mm_Mo_shells",45] execVM 'Scripts\ado_artillerie.sqf';

Chemin d’accès du script: 'Scripts\nom_script.sqf'; scripts = répertoire avec les scripts par exemple.

Regarde aussi les images pour comprendre.


jeje52 - 03 Septembre 2020, 11:33


Cette fois, j'ai un autre message d'erreur qui apparait.
ça me parle du dossier script cette fois ci.
Est-ce que je dois modifier des choses sur ce documents sqf... je ne sais pas


GMC - 04 Septembre 2020, 5:43


Non , regarde le chemin d'accès de ton script.
Fait un screen de ton répertoire de ta mission. SVP