Français Solved Ajout d'un traitement de conversion d'objet virtuel en objet physique

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

Aiden

User
3/9/20
310
10
3
950
bonjour je poste ce message suite a une discussion avec Maxence Maxence sa serait pour modifier le script Farming System je voudrais que l on puisse creer un traitement de virtuel a physique
 
Solution
Hey! Alors ça n'a pas de rapport avec Farming System mais je vais t'expliquer comment faire :

Dans ta mission/config, créé un fichier Config_ProcessVirtToPhysical.hpp avec :
Code:
/*
    Maxence
*/
class VirtualToPhysical_Processing {
    class ExampleProcess {
        object_required = "toolkit";
        object_given = "TheProgrammer_cailloux";
        text = "Traitement d'un truc";
        time = 45;
        required_licenses[] = {"license_civ_driver"};
    };
};

A la fin de ton Config_Master.hpp (du dossier config), ajoute :
Code:
#include "Config_ProcessVirtToPhysical.hpp"

Dans ta mission/core/actions, créé un fichier fn_processVirtToPhysical.sqf avec :
Code:
#include "..\..\script_macros.hpp"
/*
    Maxence...
Hey! Alors ça n'a pas de rapport avec Farming System mais je vais t'expliquer comment faire :

Dans ta mission/config, créé un fichier Config_ProcessVirtToPhysical.hpp avec :
Code:
/*
    Maxence
*/
class VirtualToPhysical_Processing {
    class ExampleProcess {
        object_required = "toolkit";
        object_given = "TheProgrammer_cailloux";
        text = "Traitement d'un truc";
        time = 45;
        required_licenses[] = {"license_civ_driver"};
    };
};

A la fin de ton Config_Master.hpp (du dossier config), ajoute :
Code:
#include "Config_ProcessVirtToPhysical.hpp"

Dans ta mission/core/actions, créé un fichier fn_processVirtToPhysical.sqf avec :
Code:
#include "..\..\script_macros.hpp"
/*
    Maxence
*/
params ["_target", "_caller", "_actionId", "_type"];

_config = missionConfigFile >> "VirtualToPhysical_Processing";

if (life_action_inUse || (life_is_processing) || (_type isEqualTo "")) exitWith {hint "You cannot process your objects"};
if !(isClass (_config >> _type)) exitWith {};
if (_caller distance _target > 10) exitWith {hint localize "STR_ISTR_Lock_TooFar"};

_exit = false;
_config = _config >> _type;

_materialsRequired = getText (_config >> "object_required");
_materialsGiven = getText (_config >> "object_given");

_upp = getText (_config >> "text");
_time = getNumber (_config >> "time");
_license = getArray (_config >> "required_licenses");

if ((count _license) >= 1) then {
    {
        if (_x != "") then {
            if !(missionNamespace getVariable [_x,false]) exitWith {_exit = true};
        };
    } forEach _license;
};

if (_exit) exitWith {hint localize "STR_Shop_Veh_NoLicense"};

_amount = ITEM_VALUE(_materialsRequired);
if (_amount isEqualTo 0) exitWith {hint localize "STR_NOTF_NotEnoughItemProcess"};
 
disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;

life_is_processing = true;
life_action_inUse = true;

for "_i" from 0 to 1 step 0 do {
    uiSleep (_time / 100);
    _cP = _cP + 0.01;
    _progress progressSetPosition _cP;
    _pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
    if (_cP >= 1) exitWith {};
    if (_caller distance _target > 10) exitWith {
        hint localize "STR_Process_Stay";
        life_is_processing = false;
    };
};

"progressBar" cutText ["","PLAIN"];

if (life_is_processing) then {
    _itemSpace = getNumber (configFile >> "cfgWeapons" >> _materialsGiven >> "ItemInfo" >> "mass");  
    _maxWeightPlayer = 0;
  
    _maxUniform = getContainerMaxLoad uniform player;
    _maxVest = getContainerMaxLoad vest player;
    _maxBackpack = getContainerMaxLoad backpack player;

    if (_maxUniform > 0) then {
        _maxWeightPlayer = _maxWeightPlayer + _maxUniform;
    };

    if (_maxVest > 0) then {
        _maxWeightPlayer = _maxWeightPlayer + _maxVest;
    };

    if (_maxBackpack > 0) then {
        _maxWeightPlayer = _maxWeightPlayer + _maxBackpack;
    };

    _curentMass = (loadVest player * _maxUniform) + (loadBackpack player * _maxBackpack) + (loadUniform player * _maxUniform);

    _objectToAdd = _amount;
    if (_itemSpace > 0) then {
        _objectToAdd = (floor ((_maxWeightPlayer - _curentMass) / _itemSpace)) min _amount;
    };

    if (_maxWeightPlayer isEqualTo 0) exitWith {hint "Unable to retrieve the player's inventory"};
    if (_objectToAdd isEqualTo 0) exitWith {hint localize "STR_NOTF_InvFull"};

    [false,_materialsRequired,_objectToAdd] call life_fnc_handleInv;

    for "_i" from 1 to _objectToAdd do {
        player addItem _materialsGiven;
    };

    titleText [localize "STR_NOTF_ItemProcess","PLAIN"];
    [0] call SOCK_fnc_updatePartial;
};

life_action_inUse = false;
life_is_processing = false;

Et dans ton Functions.hpp sous file = "core\actions"; ajoute cette ligne :
Code:
class processVirtToPhysical {};

Pour ton mapping, il faudra mettre cet init :
Code:
 this addAction["Traitement d'un truc",life_fnc_processVirtToPhysical,"ExampleProcess"];

Il te reste plus qu'a configurer ton traitement avec des objets virtuels en entrée et des objets physiques en sortie
 
Dernière édition:
Solution
hello quand j ai traiter sa ma supprimer tout mon inventaire et ya cette erreur dans les logs client
[CODE lang="sql" title="logs client"]16:01:34 Error in expression <floor ((_maxWeightPlayer - _curentMass) / _itemSpace)) min _amount;

if (_maxWei>
16:01:34 Error position: </ _itemSpace)) min _amount;

if (_maxWei>
16:01:34 Error Diviseur nul
16:01:34 File mpmissions\__CUR_MP.ohana_life\core\actions\fn_processVirtToPhysical.sqf..., line 80[/CODE]
 
sa ne fonctionne toujours pas sa me supprime l'iphone et apres cette erreur l'iphone ne fonctionne plus
[CODE title="logs client"]_objectToAdd = _amount;
if (_itemSpace > 0) then {
_obj>
15:05:23 Error position: <_amount;
if (_itemSpace > 0) then {
_obj>
15:05:23 Error Variable indéfinie dans une expression: _amount
15:05:23 File mpmissions\__CUR_MP.ohana_life\core\actions\fn_processVirtToPhysical.sqf..., line 81[/CODE]
 
Dernière édition:
parfait sa fonctionne merci beaucoup par contre sa traite un paquet de ciguarette peut on faire en sorte que sa traite tout d un coup ?
 
Dernière édition: