Français Solved Séparer les catégories de craft pour faciliter la recherche

  • Auteur de la discussion Auteur de la discussion anto carlito
  • Date de début Date de début
29/12/19
69
2
300
bonjour serait il possible de séparer les catégorie de craft dans plusieurs objet exemple avoir un établie pour les arme un autre que pour les véhicule et ainsi de suite et de cacher le contenu des craft temp qu' il on pas les objet nécessaire a leur fabrication exemple si il on pas les matériaux nécessaire pour la pioche on la vois pas comme sa on sais pas se qu' il faut et on recherche les recette merci d avance pour votre reponse
 
  • Like
Les réactions: Lows
Pour afficher uniquement les crafts dont le joueur a tous les objets requis, il faut modifier ton @The_Programmer/addons/crafting_system/client/fn_openWorkBench.sqf
- Ajoute tout en haut du fichier :
Code:
_fnc_hasAllRequiredItems = {
    params [
        ["_itemType","",[""]],
        ["_itemClass","",[""]]
    ];

    _itemClassConfig = missionConfigFile >> "Max_Settings_Craft" >> "crafts" >> _itemType >> _itemClass;
    _hasItems = true;

    if !(isClass _itemClassConfig) exitWith {false;};

    {
        _hasItem = false;

        _index = [(_x select 0),_data] call max_craft_fnc_index;
        if !(_index isEqualTo -1) then {
            _value = (_data select _index) select 1;
            if (_value >= (_x select 1)) then {_hasItem = true;};
        };

        if !(_hasItem) exitWith {_hasItems = false;};
    } forEach (getArray (_itemClassConfig >> "itemsRequired"));

    _money = getNumber (_itemClassConfig >> "moneyRequired");
    if (_money > 0) then {if (life_cash < _money) then {_hasItems = false;};};

    _hasItems;
};
- Trouve ces 4 lignes :
Code:
_craftsList lbAdd format ["- %1",_itemName];
_craftsList lbSetData [(lbSize _craftsList)-1,str [_itemType,_itemClass]];
if !(_icon isEqualTo "") then {
    _craftsList lbSetPicture [(lbSize _craftsList)-1,_icon];
};
Remplace les par :
Code:
if ([_itemType,_itemClass] call _fnc_hasAllRequiredItems) then {
    _craftsList lbAdd format ["- %1",_itemName];
    _craftsList lbSetData [(lbSize _craftsList)-1,str [_itemType,_itemClass]];
    if !(_icon isEqualTo "") then {
        _craftsList lbSetPicture [(lbSize _craftsList)-1,_icon];
    };
};
 
Pour afficher seulement certaines catégories d'items dans les établis, tu peux ajouter dans init de l'objet sur ton mapping :
Code:
this setVariable ["crafting_type",["vItem","weapon","vehicle","backpack","uniform"]];
Tu peux remplacer, ou supprimer les catégories qui ne seront pas affichés. Celles qui sont écrites seront les seules affichés.
Ensuite, dans ton @The_Programmer/addons/crafting_system/client/fn_openWorkBench.sqf, remplace cette instruction :
Code:
(_itemType in ["vItem","weapon","vehicle","backpack","uniform"])
par :
Code:
(_itemType in (_workbench getVariable ["crafting_type",[]]))

Il faudra ajouter l'init dans tous les établis, sinon aucune catégorie ne sera affichée dans l'établi qui n'a pas la variable dans son init
 
Ah d'accord ! Il te manque l'addAction pour ouvrir l'établi tout simplement :)
Met dans l'init de ton objet :
Code:
this addAction [(["STR_OPEN_WORKBENCH","Max_Settings_Craft","Craft_Localization"] call theprogrammer_core_fnc_localize),max_craft_fnc_openWorkBench,"",0,false,false,"",'(isNull (cursorObject getVariable ["workbench_in_use_by",objNull]))'];
this setVariable ["crafting_type",["weapon"]];
 
Ok je vois ! Merci pour la vidéo c'est vachement plus clair :)
Du coup il faut remettre à jour la liste à chaque fois qu'un item est déposé ou retiré. Essaye en ajoutant à la fin de ton @The_Programmer/addons/crafting_system/client/fn_workBenchInventory.sqf :
Code:
_craftsList = _display displayCtrl 6941;
lbClear _craftsList;

{
    _typeConfigPath = _x;
    _itemType = configName _typeConfigPath;

    if (isClass _typeConfigPath) then {
        for "_i" from 0 to (count _typeConfigPath)-1 do {
            _configPath = _typeConfigPath select _i;
            _itemClass = configName _configPath;

            if ((isClass _configPath) && (_itemType in (_workbench getVariable ["crafting_type",[]]))) then {
                _condition = getText (_configPath >> "condition");
                _condition_result = if (_condition isEqualTo "") then {true} else {call compile _condition};

                if (!isNil "_condition_result") then {
                    if (_condition_result isEqualType true) then {
                        if (_condition_result isEqualTo true) then {
                            _itemResult = getText (_configPath >> "itemGive");
                            _itemName = "";
                            _icon = "";

                            switch (_itemType) do {
                                case "vItem" : {
                                    _itemConfig = missionConfigFile >> "VirtualItems" >> _itemResult;
                                    _itemName = localize (getText (_itemConfig >> "displayName"));
                                    _icon = getText (_itemConfig >> "icon");
                                };

                                case "weapon" : {
                                    _itemInfo = [_itemResult] call life_fnc_fetchCfgDetails;
                                    _itemName = _itemInfo select 1;
                                    _icon = _itemInfo select 2;
                                };

                                case "vehicle" : {
                                    _vehicleInfo = [_itemResult] call life_fnc_fetchVehInfo;
                                    _itemName = _vehicleInfo select 3;
                                    _icon = _vehicleInfo select 2;
                                };

                                case "backpack" : {
                                    _itemInfo = [_itemResult] call life_fnc_fetchCfgDetails;
                                    _itemName = _itemInfo select 1;
                                    _icon = _itemInfo select 2;
                                };

                                case "uniform" : {
                                    _itemInfo = [_itemResult] call life_fnc_fetchCfgDetails;
                                    _itemName = _itemInfo select 1;
                                    _icon = _itemInfo select 2;
                                };

                                default {};
                            };

                            _craftsList lbAdd format ["- %1",_itemName];
                            _craftsList lbSetData [(lbSize _craftsList)-1,str [_itemType,_itemClass]];
                            if !(_icon isEqualTo "") then {
                                _craftsList lbSetPicture [(lbSize _craftsList)-1,_icon];
                            };
                        };
                    };
                };
            } else {
                if ((_itemClass isEqualTo "category_display_name") && ((count _typeConfigPath) > 1)) then {
                    if ((lbSize _craftsList) > 0) then {
                        _craftsList lbAdd "";
                        _craftsList lbSetData [(lbSize _craftsList)-1,"category"];
                    };

                    _craftsList lbAdd format ["%1 :",([(getText (_configPath)),"Max_Settings_Craft","Craft_Localization"] call theprogrammer_core_fnc_localize)];
                    _craftsList lbSetData [(lbSize _craftsList)-1,"category"];
                };
            };
        };
    };
} forEach ("true" configClasses (missionConfigFile >> "Max_Settings_Craft" >> "crafts"));