Français Solved Supprimer une licence lors de l'achat d'une autre

  • Auteur de la discussion Auteur de la discussion Riyan Braga
  • Date de début Date de début
16/4/21
13
0
100
Salut comme le texte le dit plus haut je souhaite supprimer une licence lorsque le joueur achète la nouvelle je met donc ceci dans mon unit mais j'ai une erreur si quelqu'un peut m'aider svp :
Code:
["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", { 
    private _licenseToBuy = "licence1"; 
    private _licenseToSell = "licence2"; 
    if ((getPlayerLicenses player) find _licenseToSell) >= 0 then { 
        [_licenseToSell] call life_fnc_sellLicense; 
        ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> _licenseToBuy >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> _licenseToBuy >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,_licenseToBuy,0,false,false,"",'  ',5]; 
    } else { 
        hint "Vous ne possédez pas la licence que vous souhaitez supprimer."; 
    }; 
}, {}, ""] call BIS_fnc_guiMessage;
20230320055434_1.jpg
 
Dernière édition par un modérateur:
Solution
Si tu as le message "Vous ne possédez pas la licence que vous souhaitez supprimer.", c'est forcément que tu n'as pas la licence qui a pour classname "insurge"

Sinon tu peux essayer avec ma deuxième solution qui ne vérifie pas si tu as la licence avant de donner l'autre :
ça n'existe pas getPlayerLicenses, la syntaxe de life_fnc_buyLicense non plus. On dirait que c'est ChatGPT qui t'as donné ça 😅
Est-ce que tu as créé le life_fnc_sellLicense ? De base il n'y en a pas.

Si oui tu peux essayer comme ça :
Code:
["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", { 
    private _licenseToBuy = "licence1"; 
    private _licenseToSell = "licence2";

    if (missionNamespace getVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false]) then {
        missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
        ["","","",_licenseToBuy] call life_fnc_buyLicense;
    } else { 
        hint "Vous ne possédez pas la licence que vous souhaitez supprimer."; 
    }; 
}, {}, ""] call BIS_fnc_guiMessage;
 
ça n'existe pas getPlayerLicenses, la syntaxe de life_fnc_buyLicense non plus. On dirait que c'est ChatGPT qui t'as donné ça 😅
Est-ce que tu as créé le life_fnc_sellLicense ? De base il n'y en a pas.

Si oui tu peux essayer comme ça :
Code:
["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", {
    private _licenseToBuy = "licence1";
    private _licenseToSell = "licence2";

    if (missionNamespace getVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false]) then {
        missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
        ["","","",_licenseToBuy] call life_fnc_buyLicense;
    } else {
        hint "Vous ne possédez pas la licence que vous souhaitez supprimer.";
    };
}, {}, ""] call BIS_fnc_guiMessage;
Si tu as moyen de me faire le life_fnc_sellLicense s'il te plais
 
C'est logique puisque le code que tu as commencé n'ajoute pas d'action sur le panneau :)
Il faut utiliser un addAction pour ça : addAction - Bohemia Interactive Community

En fait en regardant plus précisément, y'a aucune syntaxe qui est bonne :unsure:
J'ai repris l'idée pour le recoder correctement, tu peux essayer ça :
Code:
this addAction ["Acheter la licence", {
    _action = ["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", true, true] call BIS_fnc_guiMessage;

    if (_action) then {
        private _licenseToBuy = "licence1"; 
        private _licenseToSell = "licence2";

        if (missionNamespace getVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false]) then {
            missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
            ["","","",_licenseToBuy] call life_fnc_buyLicense;
        } else { 
            hint "Vous ne possédez pas la licence que vous souhaitez supprimer."; 
        };
    };
}];
 
C'est logique puisque le code que tu as commencé n'ajoute pas d'action sur le panneau :)
Il faut utiliser un addAction pour ça : addAction - Bohemia Interactive Community

En fait en regardant plus précisément, y'a aucune syntaxe qui est bonne :unsure:
J'ai repris l'idée pour le recoder correctement, tu peux essayer ça :
Code:
this addAction ["Acheter la licence", {
    _action = ["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", true, true] call BIS_fnc_guiMessage;

    if (_action) then {
        private _licenseToBuy = "licence1";
        private _licenseToSell = "licence2";

        if (missionNamespace getVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false]) then {
            missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
            ["","","",_licenseToBuy] call life_fnc_buyLicense;
        } else {
            hint "Vous ne possédez pas la licence que vous souhaitez supprimer.";
        };
    };
}];
Merci pour ta réponse,
cependant le code ne fonctionne toujours pas, le dialog s'ouvre belle et bien mais lorsque je selectionne acheter la licence sa me dit que je n'est pas la licence à supprimer
 
Solution alternative (pas de moi. Dsl plus la source)
Core->action
ajouter dans le "fn_buyLicense.sqf" a la fin juste avant le" [2] call SOCK_fnc_updatePartial"

switch (_type) do {
case "journaliste" : {license_civ_taxi = false; license_civ_dp = false;};
case "dp" : {license_civ_taxi = false; license_civ_journaliste = false;};
case "taxi" : {license_civ_journaliste = false; license_civ_dp = false;};
default {};
};
Pour les init de mission sa reste les même.
 
Merci pour ta réponse,
cependant le code ne fonctionne toujours pas, le dialog s'ouvre belle et bien mais lorsque je selectionne acheter la licence sa me dit que je n'est pas la licence à supprimer
Le message d'erreur est plutôt clair, tu n'as pas la licence que tu dois supprimer pour obtenir l'autre :)

Si veux enlever cette condition pour pouvoir acheter la "licenseToBuy" sans avoir la "licenseToSell" tu peux essayer avec ce code :
Code:
this addAction ["Acheter la licence", {
    _action = ["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", true, true] call BIS_fnc_guiMessage;

    if (_action) then {
        private _licenseToBuy = "licence1"; 
        private _licenseToSell = "licence2";

        missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
        ["","","",_licenseToBuy] call life_fnc_buyLicense;
    };
}];
 
Le message d'erreur est plutôt clair, tu n'as pas la licence que tu dois supprimer pour obtenir l'autre :)

Si veux enlever cette condition pour pouvoir acheter la "licenseToBuy" sans avoir la "licenseToSell" tu peux essayer avec ce code :
Code:
this addAction ["Acheter la licence", {
    _action = ["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", true, true] call BIS_fnc_guiMessage;

    if (_action) then {
        private _licenseToBuy = "licence1";
        private _licenseToSell = "licence2";

        missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
        ["","","",_licenseToBuy] call life_fnc_buyLicense;
    };
}];
Si justement j'ai la licence qu'il doit enlevé
 
Code:
this addAction ["Acheter la licence", {
    _action = ["Êtes-vous sûr de vouloir acheter cette licence ?", "Acheter la licence", true, true] call BIS_fnc_guiMessage;

    if (_action) then {
        private _licenseToBuy = "insurge";
        private _licenseToSell = "mafia";

        if (missionNamespace getVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false]) then {
            missionNamespace setVariable [format ["license_civ_%1",getText (missionConfigFile >> "Licenses" >> _licenseToSell >> "variable")],false];
            ["","","",_licenseToBuy] call life_fnc_buyLicense;
        } else {
            hint "Vous ne possédez pas la licence que vous souhaitez supprimer.";
        };
    };
}];
 
Dernière édition par un modérateur:
après vérification chez moi sa marche.
vérifie bien les License
Merci de ta réponse.

Du coup sa supprime bien la licence mafia mais sa n'achete pas la "insurge" :
Code:
    class insurge {
        variable = "insurge";
        displayName = "STR_License_Rebel";
        price = 10000000;
        illegal = true;
        side = "civ";
    };
Et j'ai un message qui dit vous n'avez sélectionner aucune licence.
 
Dernière édition par un modérateur:
Si tu as le message "Vous ne possédez pas la licence que vous souhaitez supprimer.", c'est forcément que tu n'as pas la licence qui a pour classname "insurge"

Sinon tu peux essayer avec ma deuxième solution qui ne vérifie pas si tu as la licence avant de donner l'autre :
 
Solution