Guten Tag.
Wir wollen auf unserem Server aus einem Item mehrere Craften, also soll aus z.B. Stein die Items Sand und Kalk werden. In der 4.5 und 5.0 geht das recht simpel, aber wir können/wollen nicht wechseln, da viele unserer Scripts für die 4.4 optimiert sind.
So sieht die "processAction" aus der 4.4 aus:
Code
#include "..\..\script_macros.hpp"
/*
File: fn_processAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Master handling for processing an item.
*/
private["_vendor","_type","_itemInfo","_oldItem","_newItem","_cost","_upp","_hasLicense","_itemName","_oldVal","_ui","_progress","_pgText","_cP"];
_vendor = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
_type = [_this,3,"",[""]] call BIS_fnc_param;
//Error check
if(isNull _vendor OR EQUAL(_type,"") OR (player distance _vendor > 10)) exitWith {};
//unprocessed item,processed item, cost if no license,Text to display (I.e Processing (percent) ..."
_itemInfo = switch (_type) do {
case "oil": {["oil_unprocessed","oil_processed",40000,(localize "STR_Process_Oil")];};
case "stein": {["stein","HIER MEHRERE ITEMS HERAUSBEKOMMEN",40000,(localize "STR_Process_Heroin")];};
case "copper": {["copper_unrefined","copper_refined",40000,(localize "STR_Process_Copper")];};
case "iron": {["iron_unrefined","iron_refined",40000,(localize "STR_Process_Iron")];};
case "sand": {["sand","glass",40000,(localize "STR_Process_Sand")];};
case "cocaine": {["cocaine_unprocessed","cocaine_processed",40000,(localize "STR_Process_Cocaine")];};
case "marijuana": {["cannabis","marijuana",40000,(localize "STR_Process_Marijuana")];};
case "weizen": {["weizenu","weizenp",40000,(localize "STR_Process_weizen")];};
case "kartoffel": {["kartoffelu","kartoffelp",40000,(localize "STR_Process_kartoffel")];};
case "bier": {["bieru","bierp",40000,(localize "STR_Process_bier")];};
case "kohle": {["kohleu","kohlep",40000,(localize "STR_Process_kohle")];};
case "chemie": {["chemieu","chemiep",40000,(localize "STR_Process_chemie")];};
case "holz": {["holzu","holzp",40000,(localize "STR_Process_holz")];};
default {[];};
};
//Error checking
if(EQUAL(count _itemInfo,0)) exitWith {};
//Setup vars.
_oldItem = SEL(_itemInfo,0);
_newItem = SEL(_itemInfo,1);
_cost = SEL(_itemInfo,2);
_upp = SEL(_itemInfo,3);
if(_vendor in [mari_processor,coke_processor,heroin_processor]) then {
_hasLicense = true;
} else {
_hasLicense = LICENSE_VALUE(_type,"civ");
};
_itemName = M_CONFIG(getText,"VirtualItems",_newItem,"displayName");
_oldVal = ITEM_VALUE(_oldItem);
_cost = _cost * _oldVal;
//Some more checks
if(EQUAL(_oldVal,0)) exitWith {};
//Setup our progress bar.
disableSerialization;
5 cutRsc ["life_progress","PLAIN"];
_ui = GVAR_UINS "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;
if(_hasLicense) then {
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 {};
if(player distance _vendor > 10) exitWith {};
};
if(player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; 5 cutText ["","PLAIN"]; life_is_processing = false;};
if(!([false,_oldItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; life_is_processing = false;};
if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; [true,_oldItem,_oldVal] call life_fnc_handleInv; life_is_processing = false;};
5 cutText ["","PLAIN"];
titleText[format[localize "STR_Process_Processed",_oldVal,localize _itemName],"PLAIN"];
life_is_processing = false;
} else {
if(CASH < _cost) exitWith {hint format[localize "STR_Process_License",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;};
while{true} do {
sleep 0.9;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if(_cP >= 1) exitWith {};
if(player distance _vendor > 10) exitWith {};
};
if(player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; 5 cutText ["","PLAIN"]; life_is_processing = false;};
if(CASH < _cost) exitWith {hint format[localize "STR_Process_License",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;};
if(!([false,_oldItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; life_is_processing = false;};
if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; [true,_oldItem,_oldVal] call life_fnc_handleInv; life_is_processing = false;};
5 cutText ["","PLAIN"];
titleText[format[localize "STR_Process_Processed2",_oldVal,localize _itemName,[_cost] call life_fnc_numberText],"PLAIN"];
SUB(CASH,_cost);
life_is_processing = false;
};
Alles anzeigen
Wie kann ich jetzt aus Stein mehrere Sachen herausbekommen?
Danke für die Hilfe.