Français ACE 3 : Créer des interactions

  • Auteur de la discussion Auteur de la discussion 3rk
  • Date de début Date de début
  • Tags Tags
    ace3

3rk

User
29/12/19
42
3
15
300
TUTORIEL OBSOLETE, EN COURS DE MODIFICATIONS


1645982633195.png

Bonjour à tous,

On va voir comment ajouter des interactions au menu ACE 3 qui seront accessibles via le menu. (comme ci dessous).

1645898582811.png


Vous pouvez tout à fait utiliser ce tuto pour transférer vos actions depuis le menu Altis Life vers le menu ACE 3.

Les prérequis :



Petite piqure de rappel, ACE 3 est modulaire, ce qui signifie que vous pouvez utiliser par exemple seulement le système médical ou le système de réparation et enlever tous les autres systèmes.
Vous pouvez voir la liste des dépendances ici.

Bref ! Comment on ajoute une action ACE 3 ?

Dans le code source de ACE 3 que vous avez téléchargé sur github, il y a beaaaaaaucoup de dossiers et de fichiers.

Les dossiers qui nous intéressent sont addons et tools.

Dans addons, il y a tous les systèmes de ACE 3. (notez qu'ils ne sont pas sous forme de PBO pour l'instant)
Dans tools, il y a des scripts python tout prêts qui ne demandent qu'à être exécutés.

Le principe est le suivant :
  1. J'effectue mes modifications dans les systèmes d'ACE 3 dans le dossier addons.​
  2. J'exécute le fichier build.py dans le dossier tools
    1. Le script build.py va parcourir le dossier addons à la recherche de modifications, si il détecte une modification dans l'un des systèmes d'ACE 3, il va automatiquement pack le dossier concerné en PBO.​
  3. Vous n'aurez alors plus qu'à copier le ou les PBO dans votre modpack (avec toutes les dll qui vont bien of course)​

Suivons les étapes ci dessus pour ajouter une action au menu d'ACE 3.
On se rend dans le dossier interaction qui se trouve dans le dossier addons.

On ouvre le fichier CfgVehicles.hpp, dans ce fichier sont déclarées toutes les actions d'ACE 3.
Recherchez ce texte dans le fichier :
Code:
class CAManBase: Man {

Je vous invite à fouiller la classe ACE_Actions de la classe ci-dessus afin de comprendre son fonctionnement et également à lire cette page.

Dans la classe ACE_Actions, vous pouvez reconnaître les actions d'ACE 3 par défaut qui apparaissent lorsqu'on utilise le menu ACE sur un autre joueur, par exemple :
Code:
class ACE_PassMagazinePrimary {
    displayName = CSTRING(PassMagazinePrimary);
    condition = QUOTE([ARR_3(_player,_target,primaryWeapon _target)] call FUNC(canPassMagazine));
    statement = QUOTE([ARR_3(_player,_target,primaryWeapon _target)] call FUNC(passMagazine));
    exceptions[] = {"isNotSwimming"};
    showDisabled = 0;
    icon = "\a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryweapon_ca.paa";
};

C'est la classe qui permet de donner un chargeur à un autre joueur, ACE 3 ayant ses propres conventions de nommage et de codage, c'est normal que le code vous paraisse inhabituel.

Pour ajouter notre nouvelle action, rendez-vous dans la classe ACE_SelfActions. C'est la classe qui gère les actions sur soi même.
Copiez collez ce code dans la classe ACE_SelfActions
Code:
class ACE_monSuperTest {
    displayName = "Test catégorie";
    condition = "alive _target";
    statement = "";
    showDisabled = 0;

    class test_1 {
        displayName = "Test";
        distance = 4;
        condition = "true";
        statement = "hint 'Mon test fonctionne.';";
        showDisabled = 0;
    };
};

Ensuitez lancez le fichier build.py, copiez collez l'addon Interaction.pbo dans votre modpack et le tour est joué ! Vous pourrez voir votre action en jeu.

Si vous rencontrez des difficultés ou avez des questions, ne pas hésiter à les poser sur ce topic ! :)
 
Dernière édition:
  • Like
Les réactions: LINWAINN et ToMA3
bonjour souci j'ai pas le pbo alors que j'ai tout fait vous avez une idée de comment m'aider ?
 
voila une capture d'ecran du code que j'ai mit
 

Fichiers joints

  • 2022-03-19 21_44_40-.png
    2022-03-19 21_44_40-.png
    99.7 KB · Affichages: 70
TUTORIEL OBSOLETE, EN COURS DE MODIFICATIONS


Voir la pièce jointe 2630

Bonjour à tous,

On va voir comment ajouter des interactions au menu ACE 3 qui seront accessibles via le menu. (comme ci dessous).

Voir la pièce jointe 2627


Vous pouvez tout à fait utiliser ce tuto pour transférer vos actions depuis le menu Altis Life vers le menu ACE 3.

Les prérequis :



Petite piqure de rappel, ACE 3 est modulaire, ce qui signifie que vous pouvez utiliser par exemple seulement le système médical ou le système de réparation et enlever tous les autres systèmes.
Vous pouvez voir la liste des dépendances ici.

Bref ! Comment on ajoute une action ACE 3 ?

Dans le code source de ACE 3 que vous avez téléchargé sur github, il y a beaaaaaaucoup de dossiers et de fichiers.

Les dossiers qui nous intéressent sont addons et tools.

Dans addons, il y a tous les systèmes de ACE 3. (notez qu'ils ne sont pas sous forme de PBO pour l'instant)
Dans tools, il y a des scripts python tout prêts qui ne demandent qu'à être exécutés.

Le principe est le suivant :
  1. J'effectue mes modifications dans les systèmes d'ACE 3 dans le dossier addons.​
  2. J'exécute le fichier build.py dans le dossier tools
    1. Le script build.py va parcourir le dossier addons à la recherche de modifications, si il détecte une modification dans l'un des systèmes d'ACE 3, il va automatiquement pack le dossier concerné en PBO.​
  3. Vous n'aurez alors plus qu'à copier le ou les PBO dans votre modpack (avec toutes les dll qui vont bien of course)​

Suivons les étapes ci dessus pour ajouter une action au menu d'ACE 3.
On se rend dans le dossier interaction qui se trouve dans le dossier addons.

On ouvre le fichier CfgVehicles.hpp, dans ce fichier sont déclarées toutes les actions d'ACE 3.
Recherchez ce texte dans le fichier :
Code:
class CAManBase: Man {

Je vous invite à fouiller la classe ACE_Actions de la classe ci-dessus afin de comprendre son fonctionnement et également à lire cette page.

Dans la classe ACE_Actions, vous pouvez reconnaître les actions d'ACE 3 par défaut qui apparaissent lorsqu'on utilise le menu ACE sur un autre joueur, par exemple :
Code:
class ACE_PassMagazinePrimary {
    displayName = CSTRING(PassMagazinePrimary);
    condition = QUOTE([ARR_3(_player,_target,primaryWeapon _target)] call FUNC(canPassMagazine));
    statement = QUOTE([ARR_3(_player,_target,primaryWeapon _target)] call FUNC(passMagazine));
    exceptions[] = {"isNotSwimming"};
    showDisabled = 0;
    icon = "\a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryweapon_ca.paa";
};

C'est la classe qui permet de donner un chargeur à un autre joueur, ACE 3 ayant ses propres conventions de nommage et de codage, c'est normal que le code vous paraisse inhabituel.

Pour ajouter notre nouvelle action, rendez-vous dans la classe ACE_SelfActions. C'est la classe qui gère les actions sur soi même.
Copiez collez ce code dans la classe ACE_SelfActions
Code:
class ACE_monSuperTest {
    displayName = "Test catégorie";
    condition = "alive _target";
    statement = "";
    showDisabled = 0;

    class test_1 {
        displayName = "Test";
        distance = 4;
        condition = "true";
        statement = "hint 'Mon test fonctionne.';";
        showDisabled = 0;
    };
};

Ensuitez lancez le fichier build.py, copiez collez l'addon Interaction.pbo dans votre modpack et le tour est joué ! Vous pourrez voir votre action en jeu.

Si vous rencontrez des difficultés ou avez des questions, ne pas hésiter à les poser sur ce topic ! :)
Bonour, quand on veut mettre l'action sur un objet, ca se passe comment ? (un ATM par exemple)
Merci d'avance
 
Bonjour,

Il faut que tu crée une classe pour l'ATM, dans ce fichier tu peux voir qu'il y a plein de classes : https://github.com/acemod/ACE3/blob/master/addons/interaction/CfgVehicles.hpp

Par exemple ligne 696, c'est la classe pour allumer ou éteindre un lampadaire, tu peux t'en inspirer pour ajouter des actions sur un ATM :)
Merci pour la réponse, je m’en suis déjà inspiré mais je pense que je l’écris mal c’est pour ça que ça fonctionne pas 😩
Quand je crée la nouvelle classe je n’ai pas d’interaction sur l’ATM
Une question simple mais j’ai testé en éditeur il faut peut-être que je fasse le test sur serveur ?