Français Solved Problème avec la création d'une action de double-clic sur l'inventaire

  • Auteur de la discussion Auteur de la discussion Nhexen
  • Date de début Date de début

Nhexen

Technical Support - Forum Mod.
Membre du personnel
4/12/21
98
9
15
450
Bureaux de la DGSI
Bonjour ou bonsoir,

Nous avons entrepris de supprimer les items virtuels sur notre serveur et de les remplacer par des items physiques.
Afin de pouvoir utiliser les fonctions du framework, j'ai donc créé un script pour "double-cliquer" sur un item dans l'inventaire pour l'utiliser.

Cependant, cela ne marche pas et je n'arrive pas vraiment à trouver pourquoi ^^'
Si quelqu'un aurait une idée, ce serait avec plaisir

Lien du script : https://paste-me.net/juyux
 
Solution
Il est assez bizarrement fait ce code, je vais te donner une autre manière en partant de 0.

Dans ton Functions.hpp ajoute sous file = "core\actions"; :
Code:
class physicalUseItem{};

Créé un fichier fn_physicalUseItem.sqf dans core/actions :
Code:
/*
    Maxence
*/
_idc = ctrlIDC (_this select 0);
_selectedIndex = (_this select 1);
_data = format ["%1",lbData [_idc, _selectedIndex]];

switch (_data) do {
    case "item_bouteille_F": {
        ["item_bouteille_F",false] spawn life_fnc_handleItem;
        life_thirst = (life_thirst + 50) min 100;
    };

    case "item_coca_F": {
        ["item_coca_F",false] spawn life_fnc_handleItem;
        life_thirst = (life_thirst + 25) min 100;
    };

    case "item_poire_F": {...
Pas de soucis, nous attendons ton retour ;)
J'ai test et cela fonctionne pas avec les chargeur,
Il faut mettre les items en CfgMagazines et cela fonctionne niquel

Mias c'est possible de faire sa avec les autre item ? Comme Locpick ? on fait double clique dessus et cela ouvre le menu ?

Ou alors pour le locker, que quand on double clique dessus sa execute le script du menu ?
 
Oui par exemple pour Lockers System tu peux mettre dans ton fn_physicalUseItem.sqf :
Code:
case "item_locker": {
    {
        if (_data == (_x select 2)) exitWith {
            [_data,false] spawn life_fnc_handleItem;
            [_forEachIndex] spawn max_lockers_fnc_placeLocker;
        };
    } forEach getArray (missionConfigFile >> "Max_Settings_Lockers" >> "lockers_classnames");
};
Pour la cocaine avec le effets ecran sa peut étre cela du coup ?
Code:
case "Inventaire_Cocaine": {
        {
            if (_data == (_x select 2)) exitWith {
                [_data,false] spawn life_fnc_handleItem;
                [_forEachIndex] spawn Max_EffetsEcran_fnc_cocaine;
            };
        } forEach getArray (missionConfigFile >> "Max_Settings_EffetsEcran" >> "item_cocaine");
    };

les lignes la sont bonne ?
Code:
case "Inventaire_Graine_Tomate": {
        {
            if (_data == (_x select 2)) exitWith {
                [_data,false] spawn life_fnc_handleItem;
                [Inventaire_Graine_Tomate] spawn max_plants_fnc_plantPlante;
            };
        } forEach getArray (missionConfigFile >> "Max_Settings_Plants" >> "Plants" >> "itemNeeded");
    };
    case "Inventaire_Arrossoir": {
        {
            if (_data == (_x select 2)) exitWith {
                [_data,false] spawn life_fnc_handleItem;
                [] spawn max_plants_fnc_waterPlante;
            };
        } forEach getArray (missionConfigFile >> "Max_Settings_Plants" >> "item_to_put_water");
    };
 
Tu peux faire plus simplement comme ça :
Code:
case "Inventaire_Cocaine": {
    [_data,false] spawn life_fnc_handleItem;
    [] spawn Max_EffetsEcran_fnc_cocaine;
};

case "Inventaire_Graine_Tomate": {
    [_data,false] spawn life_fnc_handleItem;
    [_data] spawn max_plants_fnc_plantPlante;
};

case "Inventaire_Arrossoir": {
    [] spawn max_plants_fnc_waterPlante;
};
 
Tu peux faire plus simplement comme ça :
Code:
case "Inventaire_Cocaine": {
    [_data,false] spawn life_fnc_handleItem;
    [] spawn Max_EffetsEcran_fnc_cocaine;
};

case "Inventaire_Graine_Tomate": {
    [_data,false] spawn life_fnc_handleItem;
    [_data] spawn max_plants_fnc_plantPlante;
};

case "Inventaire_Arrossoir": {
    [] spawn max_plants_fnc_waterPlante;
};
J'ai consommer de l'alcool et rien ne se passe en effet
 
L'effet arrive progressivement, après 1 minute tu n'as toujours rien ?
Est-ce que les autres objets fonctionnement ? Lockers, graines, arrosoir etc
Pour locker il me dit : vous devez étre a l'interieur d'une maison hors j'ai mis false dans le config master
et les autre graine je double clique mais rien se passe
 
Pour Lockers System, le réglage "place_only_in_own_house" sur false nécessite quand même que le locker soit placé dans une maison mais tu n'as pas besoin d'en être le propriétaire.
Pour enlève complètement la condition de le placer dans une maison, dans ton @The_Programmer/addons/lockers_system/client/tp_placeLocker.sqf supprime cette ligne :
Code:
if !([player] call life_fnc_playerInBuilding) exitWith {hint (["STR_MUST_PLACE_IN_HOUSE","Max_Settings_Lockers","Lockers_Localization"] call theprogrammer_core_fnc_localize);};
Et dans ton @The_Programmer/addons/lockers_system/client/tp_placeLockerCompleted.sqf supprime ces lignes :
Code:
if (!([player] call life_fnc_playerInBuilding) || !([_locker] call life_fnc_playerInBuilding)) exitWith {
    deleteVehicle _locker;

    _item = getText (_config >> "item_locker");
    [true,_item,1] call life_fnc_handleInv;

    titleText [(["STR_MUST_PLACE_IN_HOUSE","Max_Settings_Lockers","Lockers_Localization"] call theprogrammer_core_fnc_localize),"PLAIN"];
};



Pour la graine, est-ce que tu peux envoyer ton config_master.hpp de Growing System et la classname de l'objet qui ne fonctionne pas ?
La classname de l'objet doit être une class dans le config_master du script
 
Code:
/*
    Author: Maxence Lyon
    Altis DEV: https://altisdev.com/user/maxence-lyon
    Teamspeak 3: ts.the-programmer.com
    Web site: www.the-programmer.com
    Steam: « Une Vache Sur CS – Maxence », please leave a message on my profile who says the exact reason before adding me.

    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.

    License number:
    Server's name:
    Owner's name:
*/
#define false 0
#define true 1

class Max_Settings_Plants {
    default_lang = "fr";
    check_all_plants_loop_every_x_seconds = 45;
    save_plants_between_reboot = true;
    item_to_put_water = "arrosoir";
    item_to_delete_plant = "desherbant";

    class Plants {
        class TOMATE {
            className = "tp_tomato";
            zones[] = {};
            zoneSize = 0;
            allow_to_plant_in_house = false;
            allow_to_plant_everywhere = true;
            itemNeeded = "Inventaire_Graine_Tomate";
            itemGiven = "Inventaire_Tomate";
            amount_min = 1;
            amount_max = 3;
            time_to_growth = 240;
            number_of_watering_needed = 0;
        };
    };
};

item graine quand on double clique : Inventaire_Graine_Tomate
 
Est-ce que l'objet est bien supprimé de ton inventaire quand tu l'utilises ?

Sinon est-ce que tu peux essayer comme ça ?
Code:
case "Inventaire_Graine_Tomate": {
    ["Inventaire_Graine_Tomate",false] spawn life_fnc_handleItem;
    ["Inventaire_Graine_Tomate"] spawn max_plants_fnc_plantPlante;
};