Script de réarmement

Pour les Masochistes Éditeurs de missions
Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Script de réarmement

Message par =[TTK]= Yourry »

Je vous présente mon premier script qui bien-sur ne marche pas ! :mrgreen:

Si quelqu'un a la solution: (script corrigé dans mon dernier post)

Code : Tout sélectionner



//Script de lancement pour procédure de réarmement
//Fait par =[TTK]= Yourry


_pilote = (vehicle player);
_av isKindOf "AV8B";

if (typeof vehicle player == "AV8B") then
{
WaitUntil {_pilote in _av};

	titleText ["Mise en place de la procédure d'armement:[|          ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||        ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[|||       ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||||      ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[|||||     ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||||||    ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[|||||||   ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||||||||  ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||||||||| ]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Mise en place de la procédure d'armement:[||||||||||]COMPLETE", "PLAIN DOWN"];
	sleep 0,5;
	titleText ["Vérifications en cours", "PLAIN DOWN"];	


if (isEngineOn _av) then 
{
titleText ["Eteignez votre moteur et recommencez la procédure", "PLAIN DOWN"];	
exitWith {};

};

_bomb = _av addAction ["Armement bonbardier", "rearmbomb.sqf"];
_chas = _av addAction ["Armement chasseur", "rearmchass.sqf"];

titleText ["Armement en cours", "PLAIN DOWN"];	

WaitUntil {(_pilote in _av)};
if (isNil "rearmok") || {(_pilote in _av)} then
{

_av removeAction _bomb;
_av removeAction _chass;
};
};

exitWith {};


Moi je sèche grave :mrgreen:
Modifié en dernier par =[TTK]= Yourry le mar. 8 juin 2010, 12:19, modifié 5 fois.
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: mon 1er script

Message par =[TTK]= Memphis007 »

Alors déjà sans regarder dans le détail il y a une erreur de syntaxe :

Code : Tout sélectionner

   titleText ["Mise en place de la procédure d'armement:[|          ]COMPLETE", "PLAIN DOWN"];
   sleep 0.5;
   titleText ["Mise en place de la procédure d'armement:[||        ]COMPLETE", "PLAIN DOWN"];
   sleep 0,5;
sur le premier sleep tu met "0.5" sur les suivant "0,5" c'est l'un ou l'autre !
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

Avec la commande "showscripterror", j'ai l'impression que c'est le:

Code : Tout sélectionner

if (_av isEngineOn) then 
Qui bug. Je ne dois pas avoir la bonne syntaxe certainement. Quand je l'enlève j'ai plus rien :mrgreen: qui marche.
En plus suis pas sur que

Code : Tout sélectionner

_av isKindOf "AV8B";
Soit vraiment utile.
Enfin bon comme c'est la misère ses scripts quand on est une quiche :guerre5:
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Script de réarmement

Message par =[TTK]= Memphis007 »

en effet le isEngineOn n'est pas bon il faut remplacer par :

Code : Tout sélectionner

if (isEngineOn _av) then 
Où la variable "_av" contient le nom de ton véhicule
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

Merci mais j'ai encore d'autres bugs !
:mrgreen:
:apero4:
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Script de réarmement

Message par =[TTK]= Memphis007 »

met ta mission sur le ftp du serveur que j'y jette un oeil !
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

ok de suite
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Script de réarmement

Message par =[TTK]= Memphis007 »

Bon j'ai avnacé un peu, ça marche en solo mais pas en multi pour l'instant :

Code : Tout sélectionner

//Script de lancement pour procédure de réarmement
//Fait par =[TTK]= Yourry

_av = (vehicle player);

if (typeof vehicle player == "AV8B2") then
{
	titleText ["Mise en place de la procédure d'armement:[|         ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||        ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[|||       ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||||      ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[|||||     ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||||||    ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[|||||||   ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||||||||  ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||||||||| ]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Mise en place de la procédure d'armement:[||||||||||]COMPLETE", "PLAIN DOWN"];
	sleep 0.5;
	titleText ["Vérifications en cours", "PLAIN DOWN"];   
	sleep 2;
	
	bomb = _av addAction ["Armement bombardier", "rearmbomb.sqf"];
	chass = _av addAction ["Armement chasseur", "rearmchass.sqf"];

};

Code : Tout sélectionner

// Written by Weasel [PXS] - andy@andymoore.ca
// Modifé par =[TTK]= Yourry
// This script rearms, refuels, and repairs vehicles.
// Vehicles must be less than height 2 (typically landed, if air vehicles) and must remain in the
// trigger area for 3 seconds. It then drains all fuel, repairs, rearms, and refuels.
//
// Setup a trigger area to activate this (F3 in map editor) with the following settings:
//
// Trigger REPEATEDLY, BLUFOR, PRESENT
// Name: Rearmlist
// Condition: this;
// Activation: {[_x] execVM "rearm.sqf"} foreach thislist;
// Warning: If this trigger area overlaps another trigger area (such as ammo-transport Scripts), sometimes

_unit = (vehicle player);
rearmav="true";

// Don't start the script until the unit is below a height of 2, and make sure they hold that 
// height for at least 5 seconds.
WaitUntil{(getPos _unit select 2)<2}; 
sleep 5;
if((getPos _unit select 2)>2 || not (_unit in list Rearmlist)) exitWith{};

if (typeof vehicle player == "AV8B2") then
{

_unit setFuel 0;
_unit VehicleChat "Reparations...";

sleep 15;
_unit setDammage 0;
_unit VehicleChat "Rearmement...";
_unit setVehicleAmmo 0;

sleep 5;
_weapons = weapons _unit;
_unit removeMagazine "6Rnd_GBU12_AV8B";
_unit removeMagazine "6Rnd_GBU12_AV8B";
_unit addMagazine "6Rnd_GBU12_AV8B";
_unit addMagazine "6Rnd_GBU12_AV8B";
if(not ("BombLauncher" in _weapons)) then {_unit addweapon "BombLauncher"};
_unit removeMagazine "14Rnd_FFAR";
_unit addMagazine "14Rnd_FFAR";
if(not ("FFARLauncher_14" in _weapons)) then {_unit addweapon "FFARLauncher_14"};
_unit removemagazine "300Rnd_25mm_GAU12";
_unit addMagazine "300Rnd_25mm_GAU12";
_unit setVehicleAmmo 1;
_unit VehicleChat "Essence...";
sleep 5;
_unit setFuel 1;
_unit VehicleChat "Terminé.";
};
rearmav="false";

_unit removeAction bomb;
_unit removeAction chass;

if(true) exitWith{};


Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

J'ai une version qui marche aussi en SP à voir si elle fonctionne en MP. J'utilise les mêmes commandes que le déclencheur que dans la missions gc_truc chouette.
Reste à essayer en MP
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Script de réarmement

Message par =[TTK]= Memphis007 »

oki on essaie de se tester ça alors, en fait c'est tout bête ya 2 bricoles à adapter par rapport au scripts d'origines pour que ça fonctionne.
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

OK, j'ai déjà fait un test avec Frog:
ça marche mais pas encore très bien. Le script s'exécute pour tous les joueurs mais ne fait plus planter arma.


Voila ma dernière mouture, elle marche en solo. Je n'arrive pas stopper la commande

Code : Tout sélectionner

while {alive _av && (_unit in (crew _av))} do


du début avec exithwith (c'est pour ça qu'il y a deux "//" dans le script, en attendant de trouver la bonne syntaxe)
Sinon, il s'exécute en multi localement (à confirmer :mrgreen: ) mais des fois il plante de le jeu d'autre non. C'est blizzard, j'ai eu l'impression que si c'est la première fois que le script se lance pas de problème, par contre si c'est un deuxième avions qui veut réarmer, badaboum.. :mrgreen:

Code : Tout sélectionner


//Script de lancement pour procédure de réarmement
//Fait par =[TTK]= Yourry

_av = _this select 0;
_unit = _this select 1;
_rearmbombok = 0;
_rearmchassok = 0;

if (local (driver _av)) then
{
_chass = false;
_bomb = false;

while {alive _av} do
{   
   if ((typeof vehicle player == "AV8B2") && !isEngineOn _av  && count (nearestObjects [_av, ["maintenance"], 15]) > 1 && (_rearmbombok == 0) || (_rearmchassok == 0))  then
   {
      titleText ["Mise en place de la procédure d'armement:[|         ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||        ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[|||       ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||||      ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[|||||     ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||||||    ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[|||||||   ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||||||||  ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||||||||| ]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Mise en place de la procédure d'armement:[||||||||||]COMPLETE", "PLAIN DOWN"];
      sleep 0.5;
      titleText ["Vérifications en cours", "PLAIN DOWN"];   
	  if (speed _av != 0 || isEngineOn _av || count (nearestObjects [_av, ["maintenance"], 15]) == 1 ) then
         {
		 exitwtith
		 };
      sleep 2;
      
         if (_rearmbombok == 0) then
         {
         _bomb = _av addAction ["Armement bombardier", "rearmbomb.sqf"];      
         _rearmbombok = 1;
         };
         
         if (_rearmchassok == 0) then
         {
         _chass = _av addAction ["Armement chasseur", "rearmchass.sqf"];
         _rearmchassok = 1;
         };
         
      sleep 10;
      
      if (_rearmbombok == 1)  then {_av removeAction _bomb;  _rearmbombok = 0};
      if (_rearmchassok  == 1) then {_av removeAction _chass; _rearmchassok = 0};
      //if ((_rearmbombok == 0) || (_rearmchassok == 0) || ) then exitWith{};
      sleep 15;
   };
   
   if (speed _av != 0 || isEngineOn _av || count (nearestObjects [_av, ["maintenance"], 15]) == 1 ) then
         {
         _av removeAction _bomb;
         _av removeAction _chass;
         _rearmbombok = 0;
         _rearmchassok = 0;   
         };   
      
};
};
_av removeAction _bomb;
_av removeAction _chass;   



J'exécute le script via l'init des avions:

Code : Tout sélectionner

nul=[] execVM"launch3.sqf"
Je pense que je suis pas loin de la vérité mais c'est pas encore fiable, sinon pour la commande "removeaction", j'ai trouvé :D , ça marche

Merci
Modifié en dernier par =[TTK]= Yourry le sam. 5 juin 2010, 21:00, modifié 1 fois.
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Freshmeat
Retraité
Retraité
Messages : 474
Enregistré le : lun. 1 mars 2010, 13:49

Re: Script de réarmement

Message par =[TTK]= Freshmeat »

Dis moi si je me trompe, mais j'ai l'impression que le but de ton script est 'simplement' d'ajouter les actions 'armement bombardier' et 'armement chasseur' lorsque le joueur est dans son avion et que celui-ci n'est pas détruit.

J'ai raison...ou pas ?

Si c'est le cas, j'opterais pour la solution suivante :

Code : Tout sélectionner

_actionId = this addAction ["Armement Bombardier", "rearmbomb.sqf", [], 1, false, true, "", "((typeof vehicle _target == ""AV8B2"") && !isEngineOn (vehicle _target)  && count (nearestObjects [vehicle _target, [""maintenance""], 15]) > 1 && _this == _target && grearmbomb == 0 && grearmchass == 0"];_actionId = this addAction ["Armement Chasseur", "rearmchass.sqf", [], 1, false, true, "", "((typeof vehicle _target == ""AV8B2"") && !isEngineOn (vehicle _target)  && count (nearestObjects [vehicle _target, [""maintenance""], 15]) > 1 && _this == _target && grearmbomb == 0 && grearmchass == 0"];
A mettre dans l'init du joueur.
Avec grearmchass et grearmbomb des variables globales que tu passes à 1 quand tu as un script de rearmement qui est lancé, et que tu repasses à 0 à la fin de son exécution, et que tu auras pris soin d'initialiser à 0 dans l'init.sqf.

Et ça devrait le faire....Je suppose


Je suis d'accord avec toi sur le fait que tu n'as plus ta jolie barre de progression, mais cela peut se compenser en en mettant une dans les scripts de réarmement.
Modifié en dernier par =[TTK]= Freshmeat le ven. 4 juin 2010, 11:35, modifié 1 fois.
Les gens n'accordent guère d'importance à la vie, la preuve : quand ils la perdent, ils ne la réclament jamais.
[Jean Deluca]
Image

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 44
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Script de réarmement

Message par =[TTK]= Memphis007 »

la barre de progression ne sert a rien de toutes façon puisque le réarmement à proprement parlé se fait via rearmchass et rearmbomb.
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Freshmeat
Retraité
Retraité
Messages : 474
Enregistré le : lun. 1 mars 2010, 13:49

Re: Script de réarmement

Message par =[TTK]= Freshmeat »

C'est pour cela que je n'ai pas eu de scrupules à proposer une solution qui ne l'intègre pas.

J'ai aussi corrigé une paire de fautes de frappes dans le code.
Les gens n'accordent guère d'importance à la vie, la preuve : quand ils la perdent, ils ne la réclament jamais.
[Jean Deluca]
Image

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 36
Messages : 1634
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry »

J'ai trouver !
Il faut utiliser un event handler:
this addEventHandler ["GETIN",{if ((_this select 1) == "driver") then {nul = [_this select 0] execVM "launch3.sqf"}}];
dans l'init de l'avion.
(en même temps depuis que je dis que j'ai trouvé et j'ai finalement rien trouvé à part des problèmes !)

J'ai testé ta technique Freash, il y a une erreur de syntaxe quelque part. Je ne comprends pas ta logique de mettre le script dans l'init des avions.

EDIT: bon une bonne chose cela fonctionne tout bien en multi SAUF :mrgreen:
que mes variables ne sont pas bien définit car mon
if ((typeof vehicle player == "AV8B2") && !isEngineOn _av && count (nearestObjects [_av, ["maintenance"], 15]) > 1 && (_rearmbombok == 0) || (_rearmchassok == 0)) then
Ne fonctionne pas, enfin si mon script se met en place en permanence sans tenir compte de mes conditions !
Mes variables sont définis comme ça:

Code : Tout sélectionner

_av = _this select 0;
_unit = _this select 1;
_rearmbombok = 0;
_rearmchassok = 0;
si quelqu'un peut trouver l'erreur (le script complet est dans mon dernier message)
merci

:bave:
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Répondre