hi Leuts,
ich bin seit gestern am versuchen das Crafting System von EdgeKiller Klicke hier! auf unserem Server umzuschreiben.
Nun habe ich ein Problem. Ich möchte gerne mit Inventory Items Craften, dies ist aber Standardmäßig nicht mit vorgesehen.
Mit Inventory Items meine ich Items die man im Normalen Inventar von Arma hat.
Im Prinzip fehlt mir nur noch die Abfrage ob genügend Items im Inventar sind, aber wie ich die schreibe weiß ich nicht
wäre cool wenn mir wer helfen könnte der da etwas mehr drin ist im Thema Crafting
Hier mal meine fn_craftAction.sqf
Alle anderen Datein wurden nur zur Anzeige der richtigen Items bearbeitet, die haben aber keine Auswirkung auf das Script.
Code
/*
File: fn_craftAction.sqf
Author: EdgeKiller
Description:
Master handling for crafting an item.
*/
private["_dialog","_item","_itemInfo","_oldItem","_newItem","_upp","_itemName","_ui","_progress","_pgText","_cP","_allMaterial","_matsNeed","_invSize","_handledItem"];
disableSerialization;
_dialog = findDisplay 666;
if((lbCurSel 669) == -1) exitWith {hint localize "STR_ISTR_SelectItemFirst";};
_item = lbData[669,(lbCurSel 669)];
_allMaterial = true;
_matsNeed = 0;
if(!(player canAdd _item)) exitWith {hint localize "Du hast kein Platz im Inventar";};
_config = ["weapon"] call life_fnc_craftCfg;
{
if(_item == _x select 0)then
{
_matsNeed = _x select 1;
_invSize = count _matsNeed;
for [{_i = 0},{_i < _invSize - 1},{_i = _i + 2}] do {
_str = _matsNeed select _i;
_matsNum = _matsNeed select _i+1;
if((missionNamespace getVariable (_matsNeed select _i)) < _matsNum) exitWith {_allMaterial = false;};
};
};
} foreach (_config);
if(!_allMaterial) exitWith {hint localize "STR_PM_NoMaterial";};
//Error checking
if((count _matsNeed) == 0) exitWith {};
//Setup vars.
_oldItem = _matsNeed;
_newItem = _item;
_itemInfo = [_newItem] call life_fnc_fetchCfgDetails;
_itemName = _itemInfo select 1;
_upp = format["Crafting %1",_itemName];
//Some more checks
if((count _oldItem) == 0) exitWith {};
closeDialog 0;
//Setup our progress bar.
5 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;
player removeitem _handledItem;
};
life_is_processing = true;
while{true} do
{
sleep 0.3;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if(_cP >= 1) exitWith {};
};
player additem _item;
5 cutText ["","PLAIN"];
titleText[format[localize "STR_CRAFT_Process",_item],"PLAIN"];
life_is_processing = false;
Alles anzeigen
Liebe Grüße
Pasi