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 :
// ============================== // 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); }; };
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
// ============================== // 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); }; };
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