Moin,
ich habe heute mal eine etwas spezielle Frage . Da wir momentan ziemlich viel umbauen und ich auch gewisse Sachen automatisieren möchte, denke ich gerade darüber nach ob es möglich ist die Inits der Verarbeiter zu automatisieren. Wie stelle ich mir das vor aktuell muss man ja bei jedem Verarbeiter die Init selbst eintragen
z.B.
C
init="this enableSimulation false; this allowDamage false; this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"",0,false,false,"""",' life_inv_copperUnrefined > 0 && !life_is_processing && !life_action_inUse']; this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""copper"",0,false,false,"""",' !license_civ_copper && playerSide isEqualTo civilian '];";
Jetzt würde ich das gern dahin gehend ändern, dass ich in die Init nur noch sowas schreibe
C
init="this enableSimulation false; this allowDamage false; [this,""copper""] call life_fnc_checkInvLic;";
und diese funktion generiert dann allle notwendigen addActions. Die Funktion könnte irgendwie in diese Richtung aussehen
C
#include "..\..\script_macros.hpp"
/*
file: fn_checkInvLic.sqf
autor: moeck
Description: checks the inventar and license to generate the init of a processor
*/
params ["_obj","_process"];
if ((isNull _obj) || (_process isEqualTo "")) exitWith {};
private _flag = "civ";
if (playerSide isEqualTo west) then (_flag = "cop");
if (playerSide isEqualTo independent) then (_flag = "med");
private _materialsRequired =[];
private _text = "";
private _haslicense = false;
private _addAction = "";
if (isClass (missionConfigFile >> "ProcessAction" >> _proces)) then {
_materialsRequired = M_CONFIG(getArray,"ProcessAction",_type,"MaterialsReq");
_text = M_CONFIG(getText,"ProcessAction",_type,"Text");
_haslicense = LICENSE_VALUE(_process,_flag);
};
{
if (count (_x select 0) isEqualTo 0) exitWith {};
if (life_is_processing || life_action_inUse) exitWith {};
_addAction=format ["this addAction[localize""%1"",life_fnc_processAction,""%2"",0,false,false,"""",''];",_text,_process]
} count _materialsRequired;
if !(_haslicense) then {
_string = format[ "this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""%1"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""%1"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""%1"",0,false,false,"""",' !license_civ_%1 && playerSide isEqualTo civilian '];",_process];
_addAction = _addAction + _string;
};
_obj call compile _addAction;
Alles anzeigen
Hatte sich schon jemand mit dem Thema auseinander gesetzt?
Gruß,
moeck