dann haste da einen kleinen Fehler drin. Schau mal ob in der fn_Ausweissehen.sqf folgendes enthalten ist
life_known_Players pushBack _unit;
und in der configuration.sqf
life_known_Players = [];
drin steht
Und ja ich lag mit meiner Vermutung richtig
Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.
dann haste da einen kleinen Fehler drin. Schau mal ob in der fn_Ausweissehen.sqf folgendes enthalten ist
life_known_Players pushBack _unit;
und in der configuration.sqf
life_known_Players = [];
drin steht
Und ja ich lag mit meiner Vermutung richtig
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.
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
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
#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
naja bin erst ein Jahr dabei und darf auch erst ab August so richtig umbauen, da die Projektleitung gewechselt hat. Klar hätte man normalerweise mit dem remoteexec anfangen müssen, aber auch ich unterliege einem lernprozess. Des Weiteren wollen die Leute immer wieder neu Features und dann ist so ein Umbau nicht so ohne weiteres machbar. Allerdings kamen sie jetzt auf die Idee, dass sich viele dinge ändern sollen und das ist nun mal deutlich einfacher mit den configs umzusetzen als mit dem nervigen Kram aus der 3.1.4.8. Daher jetzt der Umbau, mit der Gather, Process, License und vItem bin ich schon fertig und habe die Config auch in einigen Punkten um ein paar nette Sachen erweitert.
Auch wenn ich an einigen Stellen nicht verstehe warum gewisse Sachen auch in der 5.0 so gelöst wurden. Zum Teil habe ich den Code für mich weiter optimiert, damit ich mehr mit den configs arbeiten kann
das mit den Ausweien hast Du nicht drin oder? nicht dass sich die Leute erstmal den Ausweis zeigen müssen . Es hört sich jeden Falls für mich so an, da ja die nahen Einheiten geändert wurden mit dem Ausweisscript
macht sowieso nur Sinn die neueste Version zu nehmen, deutlich Bugärmer, Hacker-sicherer (mehr oder minder) und gleichzeitig umfangreicher als die alten Versionen
wenn man einen neuen Server aufsetzt auf jeden fall, wenn man allerdings ne kiste hat die seit 3 Jahren läuft muss man zu sehen wie man den auf stand bekommt. Allerdings bin ich guter hoffnung in 2 -3 Wochen eine grundmodernisierte Variante zu haben. Anschliessend geht es mit dem Umbau auf remoteexec weiter . Aber wie immer ist der Teufel ein Eichhörnchen
na das ist so nicht ganz richtig , man kann das umschreiben, dass es funktioniert
Moin,
wie br1zey schon geschrieben hat bitte mal alle Logfiles hier anhängen. Ich sehe auch schon ganz oben in dem was Du gepostet hast, daß Spyglass da einen Fehler wirft aber ohne das komplette Log haben wir keine Chance Dir zu helfen.
Gruß,
moeck
moin,
das ist relativ einfach. Du benötigst 2 Scripte bzw. ein Script mit den Optionen start und stop. Dann öffnest Du deine Crontab mit dem Befehl crontab -e anschliessend fügst du folgenden Befehl hinzu. Achtung hier muss eventuell der Befehl angepasst werden je nach dem wie er bei dir aussieht.
In diesem Sinne frohes schaffen. Das Ganze zum nachlesen findest du zum einen mit dem Befehl man crontab bzw. man 5 crontab oder hier https://wiki.ubuntuusers.de/Cron/ bzw. hier https://linux.die.net/man/5/crontab
Gruß,
moeck
sonst hätte er die Datei wahrscheinlich nicht mit gepostet
Moin,
die Daten für deinen dynmarkt musst Du schon in die DB laden sonst kann das nicht klappen. Wenn ich mich nicht irre gibt es bei dem Markt ein SQL welches Du beim Anlegen mit ausführen musst.
Gruß,
moeck
Hast Du mal nach diesen "abcd" in deinen Dateien gesucht? Ich gehe davon aus dass dort der Fehler steckt.
willst Du das da einfügen und nicht über über eine Taste machen?
Moin,
hier steht doch da was ihn stört.
Error Undefined variable in expression: _time_gathered
Des Weiteren hast du in den SQl Statement noch einen Fehler drin
"abcd SELECT exp_level, exp_total, exp_perkPoints, exp_perks FROM players WHERE pid = '76561198082050391'"
"abcd [0,0,0,[[[""perk_gunsspecialist_lessRecoil_1"",0],[[[""perk_gunsspecialist_lessRecoil_2"",0],[[""perk_gunsspecialist_lessRecoil_3"",0]]]]],[[""perk_paycheck_1"",0],[[[""perk_paycheck_2"",0],[[""perk_paycheck_3"",0]]]]],[[""perk_repair_1"",0],[[[""perk_repair_2"",0],[[""perk_repair_3"",0]]]]]]]"
"abcd [0,0,0,[[[""perk_gunsspecialist_lessRecoil_1"",false],[[[""perk_gunsspecialist_lessRecoil_2"",false],[[""perk_gunsspecialist_lessRecoil_3"",false]]]]],[[""perk_paycheck_1"",false],[[[""perk_paycheck_2"",false],[[""perk_paycheck_3"",false]]]]],[[""perk_repair_1"",false],[[[""perk_repair_2"",false],[[""perk_repair_3"",false]]]]]]]"
Error in expression <st pushBack [_uid, _new];
};
[_uid,_new select 2] call TON_fnc_setPlayTime;
Das abcd ist da irgendwie fehl am Platze. Such mal in deinen Dateien wo dieses Statement aufgerufen wird.
Gruß,
moeck
ja! denke daran für die prozeduren den user anzupassen!
und wer sagt dass ich den kram im client erzeuge
Ich habe keine Ahnung davon aber moeck aber das geht rein aus der Sicht eines C Compilers wie Arma ihn benutzt nicht.
Also so wie ich das oben gepostet habe, funktioniert es. Das habe ich gestern erfolgreich getestet.
Moin,
was ist für Dich ein kleiner Server? Wir haben abends zwischen 30 und 70 Spieler je nach Wochentag
Gruß,
moeck
Es geht doch als Beispiel mal die fn_virt_sell.sqf
#include "..\..\script_macros.hpp"
/*
File: fn_virt_sell.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sell a virtual item to the store / shop
*/
private ["_type","_index","_price","_amount","_name"];
if ((lbCurSel 2402) isEqualTo -1) exitWith {};
_type = lbData[2402,(lbCurSel 2402)];
if (M_CONFIG(isNumber,"VirtualItems",_type,"sellPrice")) then {
_price = M_CONFIG(getNumber,"VirtualItems",_type,"sellPrice");
} else {
_price = M_CONFIG(getText,"VirtualItems",_type,"sellPrice");
_price = call compile _price;
};
if (_price isEqualTo -1) exitWith {};
_amount = ctrlText 2405;
if (!([_amount] call TON_fnc_isnumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";};
_amount = parseNumber (_amount);
if (_amount > (ITEM_VALUE(_type))) exitWith {hint localize "STR_Shop_Virt_NotEnough"};
if ((time - life_action_delay) < 0.2) exitWith {hint localize "STR_NOTF_ActionDelay";};
life_action_delay = time;
_price = (_price * _amount);
_name = M_CONFIG(getText,"VirtualItems",_type,"displayName");
if ([false,_type,_amount] call life_fnc_handleInv) then {
hint format [localize "STR_Shop_Virt_SellItem",_amount,(localize _name),[_price] call life_fnc_numberText];
CASH = CASH + _price;
[0] call SOCK_fnc_updatePartial;
[] call life_fnc_virt_update;
};
if (life_shop_type isEqualTo "drugdealer") then {
private ["_array","_ind","_val"];
_array = life_shop_npc getVariable ["sellers",[]];
_ind = [getPlayerUID player,_array] call TON_fnc_index;
if (!(_ind isEqualTo -1)) then {
_val = ((_array select _ind) select 2);
_val = _val + _price;
_array set[_ind,[getPlayerUID player,profileName,_val]];
life_shop_npc setVariable ["sellers",_array,true];
} else {
_array pushBack [getPlayerUID player,profileName,_price];
life_shop_npc setVariable ["sellers",_array,true];
};
};
if (life_shop_type isEqualTo "gold" && (LIFE_SETTINGS(getNumber,"noatm_timer")) > 0) then {
[] spawn {
life_use_atm = false;
sleep ((LIFE_SETTINGS(getNumber,"noatm_timer")) * 60);
life_use_atm = true;
};
};
[3] call SOCK_fnc_updatePartial;
Alles anzeigen
man muss die Zeile
_price = M_CONFIG(getNumber,"VirtualItems",_type,"sellPrice");
durch das ersetzen
if (M_CONFIG(isNumber,"VirtualItems",_type,"sellPrice")) then {
_price = M_CONFIG(getNumber,"VirtualItems",_type,"sellPrice");
} else {
_price = M_CONFIG(getText,"VirtualItems",_type,"sellPrice");
_price = call compile _price;
};
dann funktioniert das.
Gruß,
moeck
P.s.: blackfisch : kannste zu machen