Les AddActions! :D

Pour les Masochistes Éditeurs de missions
Répondre
Avatar du membre
RaptorJoe
Tout fou
Tout fou
Âge : 35
Messages : 26
Enregistré le : lun. 21 janv. 2013, 16:57
Humeur : Editeuse...
Localisation : Dordogne, 24!

Les AddActions! :D

Message par RaptorJoe »

Bon, ceci est très désintéressé de ma part, mais Yourry a dit qu'il fallait faire vivre le forum donc je continue sur ma lancée :p

PS: ce sujet concernera les petits problèmes rencontrés face aux AddActions :(
=[TTK]= Yourry, dans un sujet précédent... a écrit :Voici la réponse à ton problème:

Code : Tout sélectionner

_valise = _this select 0;
_id = _this select 2;

//sert à supprimer l'action "prendre la valise"
_valise removeAction _id;

//Utilisation d'une fonction Multiplayer-Framework. Attention pour que cela fonctionne, il faut poser le module de fonction (F7) sur la carte !!!!!
    //------> Cette fonction permet d'envoyer à tous les joueurs le code ci-dessous:
    _nic = [nil,nil,rSPAWN,[],{
        hint"Une valise a été trouvée";
        playSound "radionoise1";
        extrac sideChat "Valise trouvée";
        sleep 3;
        obj1 setTaskState "SUCCEEDED";
        nul=[objNull, objNull, obj1, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
    }] call RE;


//supprime la valise
deleteVehicle valise;                    
:!: :!: :!: Il te faut poser sur la carte le module de fonction (F7) sinon le truc "call RE" ne fonctionne pas bien !!!!

ps: pense à sauvegarder en UTF-8 pour conserver les accents.
Lors d'une mission 'spéciale' nommée 'bouclier blindé' où mes collègues russophiles pensaient avoir à affronter des bataillons entiers de blindés, j'ai ajouté un AddAction à un générateur de secours. Here the code used, basé évidemment sur les précisions du docteur Yourry :D :

Code : Tout sélectionner

_rem = _this select 0;
_id = _this select 2;

//sert à supprimer l'action "demarrer"
_rem removeAction _id;

//Utilisation d'une fonction Multiplayer-Framework. Attention pour que cela fonctionne, il faut poser le module de fonction (F7) sur la carte !!!!!
    //------> Cette fonction permet d'envoyer à tous les joueurs le code ci-dessous:
    _nic = [nil,nil,rSPAWN,[],{
    sleep 1;
    rem say3D "demarreur";
    sleep 6;
    rem say3D "engine_35s";
    sleep 8;
    ber say3D "zombiewalk";
    hz_hunt_distance= 300;
    sleep 5;
    ber1 say3D "mindlesszomb";
    ber2 say3D "engine_35s";
    sleep 25;
    ber2 say3D "engine_35s";
    sleep 25;
    rem say3D "arretmoteur";
    nul=[feu1,4,time,false,false] spawn BIS_Effects_Burn;
    sleep 15;
    hz_hunt_distance= 30;
    }] call RE;
  
Le tout fonctionne nickel à un détail près: l'action ne s'efface pas, et est encore disponible pour tous les autres joueurs. Le removeaction doit-il faire partie de la fonction CALL RE? Merci d'avance de votre réponse :)

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: Les AddActions! :D

Message par =[TTK]= Yourry »

Non le "removeAction" n'a pas besoin d'être dans le call RE.
Je viens de faire le teste en solo sur l'éditeur, l'action se supprime bien via cette commande et telle qu'elle est écrite dans le script.
L'action disparaît-elle uniquement pour la personne qui fait l'action où vraiment pour personne ?!?
"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
RaptorJoe
Tout fou
Tout fou
Âge : 35
Messages : 26
Enregistré le : lun. 21 janv. 2013, 16:57
Humeur : Editeuse...
Localisation : Dordogne, 24!

Re: Les AddActions! :D

Message par RaptorJoe »

Et bien un ami a lancé l'action, et cette dernière a bien disparue pour lui. Une trentaine de zombies plus tard, j'ai remarqué que je pouvais faire moi aussi l'action... Et pour tester j'ai essayé de la lancer. Résultat, trente zombies de plus. Le removeaction n'a donc pas fonctionné (je devrais faire des tests plus poussées avec mes amis tout de même, ça me paraît étrange cette histoire) :D

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: Les AddActions! :D

Message par =[TTK]= Yourry »

Et bien un ami a lancé l'action, et cette dernière a bien disparue pour lui. Une trentaine de zombies plus tard, j'ai remarqué que je pouvais faire moi aussi l'action
Effectivement c'est étrange et peut être une particularité des parties Hostées. On pourrait mettre le removeAction dans le call RE, qui aurait pour conséquence d'envoyer la commande à tous les joueurs. Cependant, pour un joueur qui se connecte en cours de partie, l'action ne sera pas supprimé car le call RE est instantané et éphémère.

Il y ' a une autre solution qui est beaucoup utilisée, c'est de mettre une condition. Dans la commande du addaction, tu peux mettre une condition. L'action ne sera disponible que si la condition est remplie.
Il nous suffira dans le script de l'action de passer à faux notre condition pour que toutes actions soient enlevées.

Voici le wiki fr pour t'aider:
http://arma2-wiki.fr/addAction

Dans notre cas, la commande de l'action se complexifie (pour connaitre le sens des trucs en plus, je t’invite à lire le wiki):

Code : Tout sélectionner

object_qui_avoir_laction addAction ["Mon action", "monscript.sqf", [], 0,false, true, "", " isNil ""action_realisee"" "];    
Et le script :

Code : Tout sélectionner

_rem = _this select 0;
_id = _this select 2;

//sert à supprimer l'action "demarrer"
    _rem removeAction _id;

////////////////////
//Variable qui bloquera l'action
    action_realisee = true;
    publicVariable"action_realisee";
////////////////////


//Utilisation d'une fonction Multiplayer-Framework. Attention pour que cela fonctionne, il faut poser le module de fonction (F7) sur la carte !!!!!
    //------> Cette fonction permet d'envoyer à tous les joueurs le code ci-dessous:
    _nic = [nil,nil,rSPAWN,[],{
        sleep 1;
        rem say3D "demarreur";
        sleep 6;
        rem say3D "engine_35s";
        sleep 8;
        ber say3D "zombiewalk";
        hz_hunt_distance= 300;
        sleep 5;
        ber1 say3D "mindlesszomb";
        ber2 say3D "engine_35s";
        sleep 25;
        ber2 say3D "engine_35s";
        sleep 25;
        rem say3D "arretmoteur";
        nul=[feu1,4,time,false,false] spawn BIS_Effects_Burn;
        sleep 15;
        hz_hunt_distance= 30;
    }] call RE;
    
"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
RaptorJoe
Tout fou
Tout fou
Âge : 35
Messages : 26
Enregistré le : lun. 21 janv. 2013, 16:57
Humeur : Editeuse...
Localisation : Dordogne, 24!

Re: Les AddActions! :D

Message par RaptorJoe »

Après la fonte de ma carte graphique et de mon disque dur, je suis de retour, toujours près à souffrir (et à aimer ça en plus).

Donc pour te répondre Yourry, j'ai testé le code que tu m'as donné ci-dessus, et j'ai remarqué que... ça marchait pas bien chez moi, je sais pas pourquoi. Je l'ai assigné à un véhicule, et je pouvais le déclencher autant de fois que possible, mais bon, j'ai du faire une erreur quelque part. Je referais ça de nouveau je pense, c'est tellement bien les Addactions x)

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: Les AddActions! :D

Message par =[TTK]= Yourry »

Oui c'est normale vu la façon dont est écrit le code ci-dessus.
Pour que cela fonctionne comme tu veux et n'important quand (j'aurais du l'écrire dès le début comme ça):

Code : Tout sélectionner

object_qui_avoir_laction addAction ["Mon action", "monscript.sqf", [], 0,false, true, "", " isNil{_this getVariable""action_realisee""} "];     
Et l'autre :

Code : Tout sélectionner

_rem = _this select 0;
_id = _this select 2;

//sert à supprimer l'action "demarrer"
    _rem removeAction _id;

////////////////////
//Variable qui bloquera l'action
    _rem setVariable["action_realisee",true,true];
////////////////////


//Utilisation d'une fonction Multiplayer-Framework. Attention pour que cela fonctionne, il faut poser le module de fonction (F7) sur la carte !!!!!
    //------> Cette fonction permet d'envoyer à tous les joueurs le code ci-dessous:
    _nic = [nil,nil,rSPAWN,[],{
        sleep 1;
        rem say3D "demarreur";
        sleep 6;
        rem say3D "engine_35s";
        sleep 8;
        ber say3D "zombiewalk";
        hz_hunt_distance= 300;
        sleep 5;
        ber1 say3D "mindlesszomb";
        ber2 say3D "engine_35s";
        sleep 25;
        ber2 say3D "engine_35s";
        sleep 25;
        rem say3D "arretmoteur";
        nul=[feu1,4,time,false,false] spawn BIS_Effects_Burn;
        sleep 15;
        hz_hunt_distance= 30;
    }] call RE;
      
Et voilà chef, à vot' service !
:D
"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
RaptorJoe
Tout fou
Tout fou
Âge : 35
Messages : 26
Enregistré le : lun. 21 janv. 2013, 16:57
Humeur : Editeuse...
Localisation : Dordogne, 24!

Re: Les AddActions! :D

Message par RaptorJoe »

Merci beaucoup grand chef Yourry! Malheureusement la mission que j'avais et qui utilisais ce code n'est plus, mort de mon pc oblige, mais je m'en servirais très prochainement dans de futures missions! Et évidemment je te tiendrais au courant :D

Répondre