Moin.
Und zwar haben wir das Craftingsystem von Cationstudios drinne und wollten das wenn man was craftet, er das von dem Fahrzeug/Lagerbox welche man anguckt die Items herausnimmt und das Item dann craftet.
Wir haben dafür einfach einen Button in die trunk.hpp eingefügt das er das Craftingsystem aufruft und an der fn_craftAction.sqf etwas getestet. Nur das funktioniert nicht. Könnte uns jemand von euch helfen die craftAction richtig einzustellen damit er die Items aus dem Fahrzeug/Lagerbox ,die man anguckt, herausnimmt und dann das gewünschte Item craftet. Vielen Dank im Voraus!
Hier ist die uneditierte craftAction:
Code: fn_craftAction.sqf
/*
File: fn_craftAction.sqf
Author: EdgeKiller
Description:
Master handling for crafting an item.
Source: https://altisdev.com/topic/860/syst%C3%A8me-de-craft-par-edgekiller
------------------------
Overhauled by B4v4r!4n_Str!k3r ([email protected])
Licence: THE OVERHAULED LINES ARE THE MINDSET OF CATIONSTUDIO
AND ONLY AUTHORIZED PEOPLE/SERVERS ARE ALLOWED TO USE IT.
*/
private["_duration","_tN","_f","_textureName","_flag","_colorIndex","_c","_vehicle","_spawnPoint","_exit","_pos","_dialog","_item","_itemInfo","_oldItem","_newItem","_upp","_itemName","_ui","_progress","_pgText","_cP","_allMaterial","_matsNeed","_invSize","_handledItem","_itemFilter","_backpackOldItems","_weight","_weightUsedItems","_category","_vItem"];
if (isNull player || !alive player || (player getVariable ["restrained",false]) || (player getVariable ["Escorting",false]) || life_istazed || life_action_inUse) exitWith {}; //If null / dead exit menu
if ((getNumber(missionConfigFile >> "Cation_Crafting" >> "version")) > 4) then {
if ((player getVariable ["playerSurrender",false]) || life_isknocked) exitWith {};
};
disableSerialization;
_dialog = findDisplay 666;
_spawnPoint = _dialog getVariable ["spawn",""];
if ((lbCurSel 669) == -1) exitWith {hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "SelectItemFirst"))];};
_item = lbData[669,(lbCurSel 669)];
_allMaterial = true;
_itemFilter = lbData[673,(lbCurSel 673)];
_matsNeed = 0;
_pos = getPos player;
_exit = false;
_vItem = -1;
_duration = (getNumber(missionConfigFile >> "Cation_Crafting" >> "duration"));
if (_duration <= 0 || _duration > 10) then {
_duration = 0.3;
};
if (player distance _pos > 10) exitWith {};
_category = (getArray(missionConfigFile >> "Cation_Crafting" >> "category"));
_config = [];
{
if (_itemFilter isEqualTo (_x select 0)) then {
for "_i" from 2 to (count _x) do {
_config pushBack (_x select _i);
};
};
} forEach _category;
life_action_inUse = true;//Lock out other actions during processing.
{
if (_item == _x select 0)then {
_matsNeed = _x select 2;
_tN = _x select 3;
_f = _x select 4;
_invSize = count _matsNeed;
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_matsNum = _matsNeed select _i+1;
if ((getNumber(missionConfigFile >> "Cation_Crafting" >> "version")) > 3) then {
if ((missionNamespace getVariable [format["life_inv_%1",(getText(missionConfigFile >> "VirtualItems" >> (_matsNeed select _i) >> "variable"))],0]) < _matsNum) then {_allMaterial = false;};
} else {
if ((missionNamespace getVariable [format["%1",[(_matsNeed select _i),0] call life_fnc_varHandle],0]) < _matsNum) then {_allMaterial = false;};
};
};
_vItem = _x select 5;
};
} foreach (_config);
_newItem = _item;
if (!_allMaterial) exitWith {hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoMaterial"))]; life_action_inUse = false;};
//Some checks
if ((count _matsNeed) == 0) exitWith {life_action_inUse = false;};
switch (_itemFilter) do {
case "backpack": {
if (!(player canAdd _newItem)) then {
if (!(backpack player isEqualTo "")) exitWith {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationBackpack"))];
_exit = true;
};
};
};
case "vest": {
if (!(player canAdd _newItem)) then {
if (!(vest player isEqualTo "")) exitWith {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationVest"))];
_exit = true;
};
};
};
case "uniform": {
if (!(player canAdd _newItem)) then {
if (!(uniform player isEqualTo "")) exitWith {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationUnifrom"))];
_exit = true;
};
};
};
case "weapon": {
switch (getNumber(configFile >> "CfgWeapons" >> _newItem >> "type")) do {
case 1: {
if (!(primaryWeapon player isEqualTo "")) then {
if (!(player canAdd _newItem)) then {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
case 2: {
if (!(handGunWeapon player isEqualTo "")) then {
if (!(player canAdd _newItem)) then {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
case 4: {
if (!(secondaryWeapon player isEqualTo "")) then {
if (!(player canAdd _newItem)) then {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
};
};
default {
if (_vItem isEqualTo 1) then {
_weight = [_item] call life_fnc_itemWeight;
_weightUsedItems = 0;
for [{_i=0},{_i<(count _matsNeed)-1},{_i=_i+2}] do {
_matsNum = _matsNeed select _i+1;
_weightUsedItems = _weightUsedItems + (([(_matsNeed select _i)] call life_fnc_itemWeight) * _matsNum);
};
if ((life_carryWeight - _weightUsedItems + _weight) > life_maxWeight) exitWith {
hint localize "STR_NOTF_NoRoom";
_exit = true;
};
} else {
if (!(player canAdd _newItem)) exitWith {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
_exit = true;
};
};
};
};
if (_exit) exitWith {
life_action_inUse = false;
};
_oldItem = _matsNeed;
if (_itemFilter == "item") then {
if ((getNumber(missionConfigFile >> "Cation_Crafting" >> "version")) > 3) then {
_itemName = localize getText(missionConfigFile >> "VirtualItems" >> _newItem >> "displayName");
} else {
_itemName = [([_newItem,0] call life_fnc_varHandle)] call life_fnc_varToStr;
};
} else {
_itemInfo = [_newItem] call life_fnc_fetchCfgDetails;
_itemName = _itemInfo select 1;
};
life_is_processing = true;
_upp = format["%1 %2 - %3",(getText(missionConfigFile >> "Cation_Crafting" >> "Craft")),_itemName,_tN];
closeDialog 0;
//Setup our progress bar.
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;
_removeItemSuccess = true;
_invSize = count _oldItem;
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_handledItem = (_oldItem select _i);
if (!([false,_handledItem,_oldItem select _i+1] call life_fnc_handleInv)) exitWith {_removeItemSuccess = false;};
};
if (!_removeItemSuccess) exitWith {"progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;};
for "_i" from 0 to 1 step 0 do {
sleep _duration;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if(_cP >= 1) exitWith {};
if (isNull player || !alive player || (player getVariable ["restrained",false]) || (player getVariable ["Escorting",false]) || life_istazed) exitWith {}; //If null / dead exit menu
if ((getNumber(missionConfigFile >> "Cation_Crafting" >> "version")) > 4) then {
if ((player getVariable ["playerSurrender",false]) || life_isknocked) exitWith {};
};
if (player distance _pos > 10) exitWith {};
};
if (player distance _pos > 10) exitWith {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "Process_Stay"))]; "progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_handledItem = (_oldItem select _i);
[true,_handledItem,_oldItem select _i+1] call life_fnc_handleInv;
};
life_is_processing = false;
life_action_inUse = false;
};
if (isNull player || !alive player || (player getVariable ["restrained",false]) || (player getVariable ["Escorting",false]) || life_istazed) exitWith {
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_handledItem = (_oldItem select _i);
[true,_handledItem,_oldItem select _i+1] call life_fnc_handleInv;
};
life_is_processing = false;
life_action_inUse = false;
}; //If null / dead exit menu
if ((getNumber(missionConfigFile >> "Cation_Crafting" >> "version")) > 4) then {
if ((player getVariable ["playerSurrender",false]) || life_isknocked) exitWith {
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_handledItem = (_oldItem select _i);
[true,_handledItem,_oldItem select _i+1] call life_fnc_handleInv;
};
life_is_processing = false;
life_action_inUse = false;
};
};
_exit = false;
switch (_itemFilter) do {
case "backpack": {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
if (backpack player isEqualTo "") then {
player addBackpack _newItem;
} else {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationBackpack"))];
_exit = true;
};
};
};
case "vest": {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
if (vest player isEqualTo "") then {
player addVest _newItem;
} else {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationVest"))];
_exit = true;
};
};
};
case "uniform": {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
if (uniform player isEqualTo "") then {
player addUniform _newItem;
} else {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NotificationUnifrom"))];
_exit = true;
};
};
};
case "weapon": {
switch (getNumber(configFile >> "CfgWeapons" >> _newItem >> "type")) do {
case 1: {
if (primaryWeapon player isEqualTo "") then {
player addWeapon _newItem;
} else {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
case 2: {
if (handGunWeapon player isEqualTo "") then {
player addWeapon _newItem;
} else {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
case 4: {
if (secondaryWeapon player isEqualTo "") then {
player addWeapon _newItem;
} else {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
_exit = true;
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
};
};
};
default {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
_exit = true;
};
};
};
};
default {
if (_vItem isEqualTo 1) then {
_handledItem = _newItem;
if (!([true,_handledItem,1] call life_fnc_handleInv)) then { _exit = true; };
} else {
if (player canAdd _newItem) then {
player addItem _newItem;
} else {
hint format[(getText(missionConfigFile >> "Cation_Crafting" >> "NoRoom"))];
_exit = true;
};
};
};
};
if (_exit) exitWith {
for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
_handledItem = (_oldItem select _i);
[true,_handledItem,_oldItem select _i+1] call life_fnc_handleInv;
};
"progressBar" cutText ["","PLAIN"];
[0] call SOCK_fnc_updatePartial;
life_is_processing = false;
life_action_inUse = false;
};
"progressBar" cutText ["","PLAIN"];
titleText[format["%1 %2",(getText(missionConfigFile >> "Cation_Crafting" >> "Process")),_itemName],"PLAIN"];
[0] call SOCK_fnc_updatePartial;
life_is_processing = false;
life_action_inUse = false;
Alles anzeigen
Mit freundlichen Grüßen
Nico N.