Français Créer de nouveaux types d'addAction

  • Auteur de la discussion Auteur de la discussion Yuri Zoko
  • Date de début Date de début

Yuri Zoko

TP-Shop Team
Membre du personnel
Developer
31/3/20
448
76
63
1 300
Hello !

Je sais que vous en avez marre d'avoir les addAction avec la molette de la souris, à chaque fois il faut modifier la map etc, c'est fastidieux !

Si je vous dis qu'aujourd'hui j'ai un nouveau style d'addAction à vous proposer ? Et que vous pourrez modifier TOUTES vos actions depuis 1 seul fichier ? Allez, let's go !!

1) Nous allons créer un fichier "fn_addActions.sqf" dans votre dossier core\actions et dedans on va mettre :
fn_addActions.sqf:
Développer Réduire Copier
/*
        Author: Yuri Zoko
        Web site: www.the-programmer.com
        Discord: https://discord.the-programmer.com

        Terms of use:
            - This file is forbidden unless you have permission from the author. If you have this file without permission to use it please do not use it and do not share it.
            - If you have permission to use this file, you can use it on your server however it is strictly forbidden to share it.
            - Out of respect for the author please do not delete this information.
*/

[] spawn { [Banque_NPC01, // Mettre la variable du PNJ/Objet qui aura cette addAction - A MODIFIER IMPÉRATIVEMENT !!
"Ouvrir un compte en banque", // Titre - A MODIFIER IMPÉRATIVEMENT !!
"a3\ui_f_oldman\data\igui\cfg\holdactions\holdaction_market_ca.paa", // Icone de l'addAction (voir point n°2)
"a3\ui_f_oldman\data\igui\cfg\holdactions\holdaction_market_ca.paa", // Icone de progression (voir point n°2)
"(player distance _target) < 5", // Condition pour que l'action soit montrée
"(player distance _target) < 5", // Condition pour que l'acion soit activable
{}, // Code exécuté lors du démarrage de l'action
{}, // Code exécuté à chaque tic
{}, // Code exécuté une fois terminé - A MODIFIER IMPÉRATIVEMENT !!
{}, // Code exécuté lorsqu'il est interrompu
[], // Anciens arguments pour le script
1, // Durée
0, //  Priorité
false, // Supprime l'action lorsqu'elle est exécutée
false // Montrer quand on est inconscient
] remoteExec ["BIS_fnc_holdActionAdd", -2, true]; };

N'oubliez pas de modifier toutes les valeurs selon les commentaires.
La documentation de la fonction est disponible ici : https://community.bistudio.com/wiki/BIS_fnc_holdActionAdd

2) Pour trouver les icônes de base d'Arma vous pouvez exécuter ce code dans votre console de debug :
Code:
Développer Réduire Copier
[] spawn
{    // EXECUTE IN EDEN EDITOR OR EDITOR PREVIEW!    disableSerialization;

    private _display = findDisplay 313 createDisplay "RscDisplayEmpty";

    private _edit = _display ctrlCreate ["RscEdit", 645];    _edit ctrlSetPosition [safezoneX + 50 * pixelW, safezoneY + 50 * pixelH, safezoneW - 500 * pixelW, 50 * pixelH];    _edit ctrlSetBackgroundColor [0,0,0,1];    _edit ctrlCommit 0;

    private _status = _display ctrlCreate ["RscEdit", 1337];    _status ctrlSetPosition [safezoneX + safezoneW - 400 * pixelW, safezoneY + 50 * pixelH, 350 * pixelW, 50 * pixelH];    _status ctrlSetBackgroundColor [0,0,0,1];    _status ctrlCommit 0;    _status ctrlEnable false;

    private _tv = _display ctrlCreate ["RscTreeSearch", -1];    _tv ctrlSetFont "EtelkaMonospacePro";    _tv ctrlSetFontHeight 0.05;    _tv ctrlSetPosition [safezoneX + 50 * pixelW, safezoneY + 125 * pixelH, safezoneW - 100 * pixelW, safeZoneH - 175 * pixelH];    _tv ctrlSetBackgroundColor [0,0,0,1];    _tv ctrlCommit 0;

    _tv ctrlAddEventHandler ["treeSelChanged",    {        params ["_ctrlTV", "_selectionPath"];        copyToClipboard (_ctrlTV tvText _selectionPath);        playSound ("RscDisplayCurator_ping" + selectRandom ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10"]);        (ctrlParent _ctrlTv) displayCtrl 1337 ctrlSetText "Path copied to clipboard!";    }];

    private _counter = 0;    {        private _files = addonFiles [_x # 0, ".paa"];        {            if ("\actions" in _x || "\holdaction" in _x) then            {                _counter = _counter + 1;                _status ctrlSetText format ["%1 textures found.", _counter];                private _index = _tv tvAdd [[], _x];                _tv tvSetPicture [[_index], _x];            };        } forEach _files;    } foreach allAddonsInfo;

    _tv tvSortall [[], false];

};

3) Supprimer init dans l'objet sur votre mapping et donnez lui la même variable que dans l'étape 1 (dans l'exemple c'est Banque_NPC01)

4) Ajoutez autant d'addAction que vous le souhaitez dans le fichier en copiant/collant le code.

5) Dans votre init.sqf du dossier core\mission ajoutez tout en bas :
init.sqf:
Développer Réduire Copier
[] execVM "core\actions\fn_addActions.sqf";

Et voila ! Maintenant vous aurez ce résultat :
screenshot_1-png.3401
 

Fichiers joints

  • Screenshot_1.png
    Screenshot_1.png
    750.6 KB · Affichages: 452
Dernière édition par un modérateur:
  • Like
Les réactions: Vincentimetr
Je ne comprends pas comment modifier ça :
Code:
Développer Réduire Copier
this enableSimulation false; this allowDamage false; this addAction[localize "STR_MAR_General_Store",life_fnc_weaponShopMenu,"genstore",1.5,true,true,"","true",5];
en ça :
Code:
Développer Réduire Copier
"Ouvrir un compte en banque", // Titre - A MODIFIER IMPÉRATIVEMENT !!
"a3\ui_f_oldman\data\igui\cfg\holdactions\holdaction_market_ca.paa", // Icone de l'addAction (voir point n°2)
"a3\ui_f_oldman\data\igui\cfg\holdactions\holdaction_market_ca.paa", // Icone de progression (voir point n°2)
"(player distance _target) < 5", // Condition pour que l'action soit montrée
"(player distance _target) < 5", // Condition pour que l'acion soit activable
{}, // Code exécuté lors du démarrage de l'action
{}, // Code exécuté à chaque tic
{}, // Code exécuté une fois terminé - A MODIFIER IMPÉRATIVEMENT !!
{}, // Code exécuté lorsqu'il est interrompu
[], // Anciens arguments pour le script
1, // Durée
0, //  Priorité
false, // Supprime l'action lorsqu'elle est exécutée
false // Montrer quand on est inconscient
] remoteExec ["BIS_fnc_holdActionAdd", -2, true]; };
 
Dernière édition par un modérateur:
Yoo
Tu dois suivre le tutoriel, dans ton cas :

this enableSimulation false; this allowDamage false; this addAction[localize "STR_MAR_General_Store",life_fnc_weaponShopMenu,"genstore",1.5,true,true,"","true",5];

A l'endroit où tu as trouver cette ligne, tu supprimes et tu mets ça :
Code:
Développer Réduire Copier
 this enableSimulation false; this allowDamage false;


Ensuite, tu suis simplement le tutoriel qu'a fait Yuri.
Et tu remplaces le ""Banque_NPC01"" par le variable du PNj concerné
 
  • Like
Les réactions: Yuri Zoko
Oui ça d'accord mais faut bien que je mette un init quelque part pour pouvoir ouvrir ma banque par exemple x)
si je le met pas dans l'object je le met comment dans le script ?
 
Oui ça d'accord mais faut bien que je mette un init quelque part pour pouvoir ouvrir ma banque par exemple x)
si je le met pas dans l'object je le met comment dans le script ?
En récupérant la variable de ton Objet et en la mettant dans le fn_addActions.sqf, tu la met à la place de ""Banque_NPC01""
 
Tu peux me donner un exemple un vrai pasque vraiment je comprends j'ai essayer comme tu dit ça marche pas..
j'appel pas le shop vitems donc comment je pourrai l'ouvrir
 
Je doit être vrm *** pasque j'y arrive pas..

La je met genstore dans le fn_addactions.sqf

Après dans l'editeur je met genstore dans - Variable NAME

Mais le truuuc c que comme ça sa marche pas logique j'ai pas de INIT

Et ducoups bahhh je sais pas ou le mettre, si je le met dans l'init du pnj ça fonctionne pas donc je me dit faut que je le mette dans addaction mais comment faire :/

désolé de faire le forceur mais moi pas comprendre mdrrr
 

Fichiers joints

  • Capture d’écran 2022-11-15 195751.png
    Capture d’écran 2022-11-15 195751.png
    34.1 KB · Affichages: 20
Je doit être vrm *** pasque j'y arrive pas..

La je met genstore dans le fn_addactions.sqf

Après dans l'editeur je met genstore dans - Variable NAME

Mais le truuuc c que comme ça sa marche pas logique j'ai pas de INIT

Et ducoups bahhh je sais pas ou le mettre, si je le met dans l'init du pnj ça fonctionne pas donc je me dit faut que je le mette dans addaction mais comment faire :/

désolé de faire le forceur mais moi pas comprendre mdrrr
Tu ne met plus rien dans l'init de ton PNJ, seulement la variable, le reste se passe dans fn_addActions.

Tu dois mettre ton action ici :

{[] spawn life_fnc_vehicleShopMenu}, // Code exécuté une fois terminé - A MODIFIER IMPÉRATIVEMENT !!

Si tu n'as rien en jeu, c'est que soit le nom de ton PNJ ne correspond pas à ce que tu as entré, soit que ton script n'est pas exécuté dans l'init de ta mission
 
ça fonctionne tjr pas, je n'ai même pas le message dans n'importe quelle solution :/

j'ai bien vérif si les modif était prise en compte que ça soit client / serveur
j'ai l'impression que le fn_addaction n'est pas lu par le serveur
 

Fichiers joints

Yo

Je vais essayer de te faire un tuto de A à z, pour voir si c'est le script qui déconne ou si c'est le serveur qui n'arrive pas à l'apeller.

1- Supprime ton fichier fn_Addaction.sqf et supprime la ligne ''execvm'' qui se trouve dans ton init (celle que tu as mis pour appeller ton script).

2- Rend toi dans ton fichier Functions.hpp et dans la catégorie ''Master Directory'' et ajoute, après
Code:
Développer Réduire Copier
 class welcomenotification {};
Cette ligne :
Code:
Développer Réduire Copier
 class Addactions {};

3 - Ajoute le fichier fn_Addactions.sqf dans : TaMission/core

4 - Dans ton fichier fn_Addactions, tu met ce que Yuri a mis dans son exemple


Essaye comme ça
Si ça marche toujours pas :

5- Rajoute, dans ton init.sqf qui se trouve dans le dossier core, après cette ligne
Code:
Développer Réduire Copier
 []call life_fnc_hudSetup;
Cette ligne :
Code:
Développer Réduire Copier
 [] call life_fnc_Addactions;

normalement, ça doit marcher 😄


Cependant, si le problème persiste toujours :
Ajoute cette ligne a ton fichier fn_Addactions
Code:
Développer Réduire Copier
 diag_log "Script Addaction par Yuri Zoko";
(tu retest IG après cette modification, rien ne changera, mais on saura si le script s'exécute correctement)
Et tu nous envoie, après cette modification, tes logs et ton fichier Fonctions.hpp, init.sqf et fn_Addactions.sqf
 
Dernière édition par un modérateur:
bonjour, je me permet de relancer ce sujet. j'aurai aimé savoir comment modifier le script de façon à mettre le addaction en fonction de la classname de l'object et non de la variable de l'object. merci d'avance
 
Activité
Pour l'instant, il n'y a personne ici