Script de réarmement

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

Re: Script de réarmement

Message par =[TTK]= Yourry » sam. 5 juin 2010, 20:59

Dernier message de la page précédente :

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

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 38
Messages : 3217
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 » dim. 6 juin 2010, 11:14

Tu utilises des variables super locales, qui ne sortent pas de tes scripts (avec le _ devant le nom de variable) enlève donc ces tirets, et ça doit gazer.
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 : 30
Messages : 1594
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

Re: Script de réarmement

Message par =[TTK]= Yourry » mar. 8 juin 2010, 17:29

Slt
C'est un grand jour ! :banane: :banane: :banane: :banane1: :banane1: :banane1:

Manque plus que le vrai essai sur la mission pluie de météores (seul la version sans Hexagon est équipé du script) on verra plus tard pour l'autre en mod Hexagon (certains comprendrons).
J'espère que les quelques dernières modifications faites après notre test avec Fresh (que je remercie pour sa patience) n'ont pas d'incidence sur le bon déroulement du script
Enfin tout devrai fonctionner.
Je le teste une dernière fois en MP et je le mets en ligne si tout roule !

Testé avec Mao tout à l'heure ça fonctionne !

Code : Tout sélectionner

//Script de lancement pour procédure de réarmement
//Fait par =[TTK]= Yourry
//Execution par:  "this addEventHandler ["GETIN",{nul = [_this select 0] execVM "launch3.sqf"}];" dans l'init de l'avion
//Pour que la procédure fonctionne, le pilote doit descendre et remonter dans l'avion sans allumer le moteur à chaque fois qu'il veut réarmer. Si il n'a pas eu le choix des armements, il faut de nouveau descendre et remonter.

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

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

while {alive _av && ((_rearmbombok == 0) || (_rearmchassok == 0)) } do
{   
   if (!isEngineOn _av  && maintenance distance _av<10 && ((_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 (!isEngineOn _av  && maintenance distance _av<10) then
			{
			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 15;
			};
			
	 _rearmbombok = 1;
     _rearmchassok = 1; 
      
     if (_rearmbombok == 1)  then {_av removeAction _bomb};
     if (_rearmchassok  == 1) then {_av removeAction _chass};
	 sleep 30;
   };
};
if (speed _av != 0 || isEngineOn _av || maintenance distance _av>10) then
    {
	_av removeAction _bomb;
	_av removeAction _chass;
    _rearmbombok = 0;
    _rearmchassok = 0;   
    };   
           
_av removeAction _bomb;
_av removeAction _chass;
_rearmbombok = 0;
_rearmchassok = 0;  
};
Dans l'init de chaque avion:

Code : Tout sélectionner

"this addEventHandler ["GETIN",{nul = [_this select 0] execVM "launch3.sqf"}];"
La version bombardier de l'av8

Code : Tout sélectionner

// Fait par =[TTK]= Yourry

_unit = (vehicle player);

WaitUntil{(getPos _unit select 2)<2}; 
sleep 5;
if((getPos _unit select 2)>2) exitWith{};

if (typeof vehicle player == "AV8B2") then
{
_unit setFuel 0;
_unit VehicleChat "Reparations...";

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

sleep 5;
_weapons = weapons _unit;
_unit removeMagazine "6Rnd_Mk82";
_unit removeMagazine "6Rnd_Mk82";
_unit addMagazine "6Rnd_Mk82";
_unit addMagazine "6Rnd_Mk82";
if(not ("Mk82BombLauncher_6" in _weapons)) then {_unit addweapon "Mk82BombLauncher_6"};
_unit removeMagazine "4Rnd_Sidewinder_AV8B";
_unit addMagazine "4Rnd_Sidewinder_AV8B";
if(not ("SidewinderLaucher" in _weapons)) then {_unit addweapon "SidewinderLaucher"};
_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é.";
};

_unit removeAction bomb;
_unit removeAction chass;

if(true) exitWith{};


la version chasseur:

Code : Tout sélectionner

// Fait par =[TTK]= Yourry

_unit = (vehicle player);

WaitUntil{(getPos _unit select 2)<2}; 
sleep 5;
if((getPos _unit select 2)>2) exitWith{};

if (typeof vehicle player == "AV8B2") then
{
_unit setFuel 0;
_unit VehicleChat "Reparations...";

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

sleep 5;
_weapons = weapons _unit;
_unit removeMagazine "6Rnd_Mk82";
_unit removeMagazine "6Rnd_Mk82";
_unit addMagazine "6Rnd_Mk82";
_unit addMagazine "6Rnd_Mk82";
if(not ("Mk82BombLauncher_6" in _weapons)) then {_unit addweapon "Mk82BombLauncher_6"};
_unit removeMagazine "4Rnd_Sidewinder_AV8B";
_unit addMagazine "4Rnd_Sidewinder_AV8B";
if(not ("SidewinderLaucher" in _weapons)) then {_unit addweapon "SidewinderLaucher"};
_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é.";
};

_unit removeAction bomb;
_unit removeAction chass;

if(true) exitWith{};


A utiliser sans modération !

J'ai aussi une version qui sert pour l'ensemble des avions du jeu d'Arma, par contre cette version rétabli l'armement d'origine de chaque avion, bien-sur cela les répares et fait le plein.

Dans l'init de chaque avion dont le script doit se déclencher:

Code : Tout sélectionner

"this addEventHandler ["GETIN",{nul = [_this select 0] execVM "lancement.sqf"}];"
Nommé un fichier "lancement.sqf" dans le dossier de votre mission et coller le contenu suivant:

Code : Tout sélectionner

//Script de lancement pour procédure de réarmement, réparation et plein d'essence
    //Fait par =[TTK]= Yourry
    //Execution par:  "this addEventHandler ["GETIN",{nul = [_this select 0] execVM "launch3.sqf"}];" dans l'init de l'avion
    //Pour que la procédure fonctionne, le pilote doit descendre et remonter dans l'avion sans allumer le moteur à chaque fois qu'il veut réarmer. Si il n'a pas eu le choix des armements, il faut de nouveau descendre et remonter.

    _av = _this select 0;
    _rearmok = 0;


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

    while {alive _av && (_rearmok == 0) } do
    {   
       if (!isEngineOn _av  && maintenance distance _av<10 && (_rearmok == 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 (!isEngineOn _av  && maintenance distance _av<10) then
             {
             sleep 2;     
                if ((_rearmok == 0)) then
                {
                _maintetance = _av addAction ["Maintenance", "maintenance.sqf"];     
                _rearmok = 1;
                };             
               
             sleep 15;
             };             
         _rearmok = 1;
         
         if (_rearmok == 1)  then {_av removeAction _maintetance};
         
        sleep 30;
       };
    };
    if (speed _av != 0 || isEngineOn _av || maintenance distance _av>10) then
        {
      _av removeAction _maintetance;
        _rearmok = 0;

        };                 
      _av removeAction _maintetance;
        _rearmok = 0;
    };
Ensuite créer et nommé un fichier "maintenance" dans votre dossier mission et copier cela à l'intérieur

Code : Tout sélectionner

    //Script modifié par =[TTK]= Yourry
    //Auteur d'origine: GeneralCarver's Vehicle Rearming Script

      _unit = (vehicle player);

    WaitUntil{(getPos _unit select 2)<2};
    sleep 5;
    if((getPos _unit select 2)>2 && isEngineOn _unit) exitWith{};


    // A10
    if (typeof _unit == "A10") then         
       {
		  titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
          _unit setfuel 0;
          _unit removemagazines "4Rnd_GBU12";
          _unit addmagazine "4Rnd_GBU12";
          _unit removemagazines "14Rnd_FFAR";
          _unit addmagazine "14Rnd_FFAR";
          _unit removemagazines "1350Rnd_30mmAP_A10";
          _unit addmagazine "1350Rnd_30mmAP_A10";
          _unit removemagazines "2Rnd_Maverick_A10";
          _unit addmagazine "2Rnd_Maverick_A10";
          _unit removemagazines "2Rnd_Sidewinder_AH1Z";
          _unit addmagazine "2Rnd_Sidewinder_AH1Z";
          _unit setdamage 0;
          _unit setfuel 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };

       
    // AV8B2
    if (typeof _unit == "AV8B2") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "14Rnd_FFAR";
          _unit addmagazine "14Rnd_FFAR";
          _unit removemagazines "300Rnd_25mm_GAU12";
          _unit addmagazine "300Rnd_25mm_GAU12";
          _unit removemagazines "6Rnd_Mk82";
          _unit addmagazine "6Rnd_Mk82";
          _unit removemagazines "2Rnd_Sidewinder_AH1Z";
          _unit addmagazine "2Rnd_Sidewinder_AH1Z";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };
       
       
    // AV8B
    if (typeof _unit == "AV8B") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "300Rnd_25mm_GAU12";
          _unit addmagazine "300Rnd_25mm_GAU12";
          _unit removemagazines "6Rnd_GBU12_AV8B";
          _unit addmagazine "6Rnd_GBU12_AV8B";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };
       

    // C130J
    if (typeof _unit == "C130J") then
       
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };
       
    // F35B
    if (typeof _unit == "F35B") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "2Rnd_GBU12";
          _unit addmagazine "2Rnd_GBU12";
          _unit removemagazines "300Rnd_25mm_GAU12";
          _unit addmagazine "300Rnd_25mm_GAU12";
          _unit removemagazines "2Rnd_Sidewinder_F35";
          _unit addmagazine "2Rnd_Sidewinder_F35";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };

       
    // Su25 Insurgents
    if (typeof _unit == "Su25_Ins") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "4Rnd_FAB_250";
          _unit addmagazine "4Rnd_FAB_250";
          _unit removemagazines "180Rnd_30mm_GSh301";
          _unit addmagazine "180Rnd_30mm_GSh301";
          _unit removemagazines "2Rnd_R73";
          _unit addmagazine "2Rnd_R73";
          _unit removemagazines "80Rnd_80mm";
          _unit addmagazine "80Rnd_80mm";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };

       
    // Su39 Russian
    if (typeof _unit == "Su39") then   
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "4Rnd_Ch29";
          _unit addmagazine "4Rnd_Ch29";
          _unit removemagazines "180Rnd_30mm_GSh301";
          _unit addmagazine "180Rnd_30mm_GSh301";
          _unit removemagazines "2Rnd_R73";
          _unit addmagazine "2Rnd_R73";
          _unit removemagazines "80Rnd_80mm";
          _unit addmagazine "80Rnd_80mm";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };

       
    // Su25 CDF
    if (typeof _unit == "Su25_CDF") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "4Rnd_FAB_250";
          _unit addmagazine "4Rnd_FAB_250";
          _unit removemagazines "180Rnd_30mm_GSh301";
          _unit addmagazine "180Rnd_30mm_GSh301";
          _unit removemagazines "2Rnd_R73";
          _unit addmagazine "2Rnd_R73";
          _unit removemagazines "80Rnd_80mm";
          _unit addmagazine "80Rnd_80mm";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };

       
    //S34
    if (typeof _unit == "Su34") then
       {
          titleText ["Procédure d'armement en cours", "PLAIN DOWN"];
		  _unit setfuel 0;
          _unit removemagazines "40Rnd_80mm";
          _unit addmagazine "40Rnd_80mm";
          _unit removemagazines "6Rnd_Ch29";
          _unit addmagazine "6Rnd_Ch29";
          _unit removemagazines "180Rnd_30mm_GSh301";
          _unit addmagazine "180Rnd_30mm_GSh301";
          _unit removemagazines "4Rnd_R73";
          _unit addmagazine "4Rnd_R73";
          _unit setdamage 0;
          _unit setfuel 1;
          _unit setVehicleAmmo 1;
          titleText ["SERVICE COMPLETE", "PLAIN DOWN"];
       };
       
    _unit removeAction _maintetance      

N'oublier pas de descendre et remonter de l'avion pour lancer la procédure.
Si il y a des soucis n'hésitez pas à poster sachant que je n'ai pas testé sur tous les avions en plus ! :mrgreen:
"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