Hallo NN,
da ich zur Zeit viel mit PHP arbeite und mich sehr in die PHP-Arrays verliebt habe und seit geraumer Zeit mal meine queryRequest Funktion neu schreiben wollte, habe ich gestern mir ein "Array-Pattern" System geschrieben, wo man auf die einzelnen Felder durch KeyWords zugreifen kann.
Der Vorteil des Systems ist, ich kann auf die Daten zugreifen ohne ihren Index wissen zu müssen und ich kann neue Felder dynamisch hinzufügen und muss nicht darauf achten, dass z.B. die Lizenzen immer den Index 6 haben.
fn_applyPattern.sqf (life_fnc_applyPattern)
Parameter:
0: Pattern <ARRAY>
1: Data <ARRAY>
Beschreibung:
Das Pattern wird auf die Daten angelegt.
Pattern und Data müssen gleich lang sein, da das KeyWord über den aktuellen Index ausgelesen wird.
Bsp.:
_pattern = ["cash",""bankacc","copLevel"];
_data = [0,1000,4];
_patternArray = [_patern,_data ] call life_fnc_applyPattern;
_patternArray sollte dann so aussehen [["cash",0],["bankacc",1000],["copLevel",4]]
fn_dataFromKey.sqf (life_fnc_dataFromKey)
Parameter:
0: Key <STRING>
1: Stack <ARRAY>
Beschreibung:
Gibt den Wert eines KeyWords aus einem Stack(Array) aus.
Sollte der Key nicht im Stack(Array) zu finden sein, wird false ausgegeben.
Bsp.:
Wir nehmen mal den Stack von oben _patternArray.
["bankacc",_patternArray] call life_fnc_dataFromKey sollte 1000 ausgeben.
fn_setDataAtKey.sqf (life_fnc_setDataAtKey)
Parameter:
0: Key <STRING>
1: Stack <ARRAY>
2: Neuer Wert <ANY>
Beschreibung:
Ersetzt die Daten eines KeyWords.
Sollte das KeyWord nicht im Array sein, wird das KeyWord und der neue Wert einfach in den Stack(Array) übernommen.
Bsp. ersetzen:
Wir nehmen wieder den Stack von oben _patternArray.
["cash",_patternArray,100000] call life_fnc_setDataAtKey; sollte den alten Wert der KeyWords "cash", also 0 durch 100000 ersetzen.
Bsp. neuen Wert einfügen:
Wir nehmen wieder den Stack von oben _patternArray.
["adminlevel",_patternArray,5] call life_fnc_setDataAtKey; fügt dem Stack(Array) den neuen Datensatz hinzu.
Der _patternArray sollte dann so aussehen: [["bankacc",1000],["copLevel",4],["cash",100000],["adminlevel",5]]
fn_applyCodeAtKey.sqf (life_fnc_applyCodeAtKey)
Parameter:
0: Key <STRING>
1: Stack <ARRAY>
2: Code <CODE>
Beschreibung:
Man kann Code injecten wodurch der Wert des KeyWords verändert wird.
Bsp.:
Wir nehmen wieder den Stack von oben _patternArray.
["cash",_patternArray,{_this - 1000;}] call life_fnc_applyCodeAtKey;
Dadurch sollte der wert des KeyWords "cash" nur noch 99000 sein. Der Stack(Array) _patternArray sollte dann so aussehen: [["bankacc",1000],["copLevel",4],["adminlevel",5],["cash",99000]]
Ich hoffe einige können damit was anfangen