Einige UID-Einträge sind doppelt vorhanden
- 76561198160791754
- 76561198119361206
- 76561198081592180
- 76561198141614031
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.
Einige UID-Einträge sind doppelt vorhanden
Nun kommt das:
[spoiler][18:05:56:232489 +02:00] [Thread 4636] extDB2: Database Type: MySQL
[18:05:56:247023 +02:00] [Thread 4636] extDB2: Database Session Pool Started
[18:05:56:277866 +02:00] [Thread 4636] extDB2: SQL_RAW_V2: Initialized: ADD_QUOTES True
Das ist kein Fehler, das zeigt die Init der [lexicon]extDB[/lexicon].
Zeige nun bitte mal deine Server-RPT-logs
Hi,
die Prozeduren, die ab und zu mal aufgerufen werden, haben einen falschen Benutzer "arma3", der nicht nicht existert. Bearbeite deine Prozeduren manuell und ersetze "arma3" mit dem Benutzernamen, den du zum Anmelden in der DB beim Serverstart ([lexicon]extdb[/lexicon]-config.ini) nutzt
serverside ( life_server/init.sqf)
Not tested yet/can not test it
[] spawn{
while {true} do {
sleep (1 * 60);
[] spawn TON_fnc_updatedtime; // call -> spawn
};
};
/*
Passed argement is _time1
You can call this serverside script with:
0 spawn TON_fnc_updatedtime;
*/
private ["_time1","_time2","_query","_queryResult"];
if !canSuspend exitWith {diag_log "TON_fnc_updatedtime has to be called (spawn) in sheduled environment, see description";};
_uids = "";
{
if(_uids isEqualTo "") then {
_uids = (getPlayerUID _x);
} else {
_uids = format["%1,%2",_uids,getPlayerUID _x];
};
} forEach allPlayers;
_query = format["SELECT pid,p_time FROM players WHERE pid not IN (%1)",_uids]; // only select entries without players are not online
waitUntil{!DB_Async_Active};
_queryResult = [_query,2] call DB_fnc_asyncCall; // 2=excepting
diag_log format["p_time query return: %1",_queryResult];
_time1 = _queryResult select 0;
if (count _queryResult < 1) exitWith {diag_log "No p_time changed";};
if ((_time1 - 1) < 0) exitWith {}; // cancel script execution, because negative number
{
_x params [["_uid","",[""]],["_time1",-1,[0]]];
_time2 = (_time1 -1);
if (!(_uid isEqualTo "") && (_time2 > 0)) then {
_query = format["UPDATE players SET p_time='%1' WHERE pid='%2'",_time2, _uid]; // Replace existing data with current _time1 with the new one (_time2), not all
diag_log format ["%1: new time %2", _uid, _time2];
waitUntil {sleep (random 0.3); !DB_Async_Active};
[_query,1] call DB_fnc_asyncCall; // 1=only insert/update data in database without return
};
} forEach _queryResult;
Alles anzeigen
do you call the function serverside? life_server\init.sqf or clientside mission.map\init.sqf?
How do you call your function/script?
[arguments] call/spawn/remoteExec/remoteExecCall tag_fnc_functionname
/*
Passed argement is _time1
You can call this serverside script with:
[300] remoteExec ["tag_fnc_functionname",2];
Change your tag_fnc_functionname
*/
private ["_time2","_query","_queryResult"];
params [["_time1",-1,[0]]]; // passed argement, default is -1, expect 0=number
if (_time1 isEqualTo -1) exitWith {diag_log "No argument found";};
_query = format["SELECT p_time FROM players WHERE p_time='%1'",_time1];
waitUntil{!DB_Async_Active};
_queryResult = [_query,2] call DB_fnc_asyncCall;
_time1 = _queryResult select 0;
if ((_time1 - 1) < 0) exitWith {}; // cancel script execution, because negative number
_time2 = _time1 - 1;
_query = format["UPDATE players SET p_time='%1' WHERE p_time='%2'",_time2, _time1]; // Replace existing data with current _time1 with the new one (_time2), not all
waitUntil {sleep (random 0.3); !DB_Async_Active};
[_query,2] call DB_fnc_asyncCall;
Alles anzeigen
this is one possibility
You have to use the WHERE Statement in Update:
_query = format["UPDATE players SET p_time='%1' WHERE p_time='%2'",_time2, _time1];
And you have to define _time1 first and select _time2 from your _queryresult
#mobile
Poste dennoch mal die Class für dein Item, wer weiß, wer weiß
Alles anzeigenclass adac_air {
side = "adac";
vehicles[] = {
{ "B_Heli_Transport_03_unarmed_F", { "adacAir" }, { "", "", -1 } },
{ "I_Heli_light_03_unarmed_F", { "adacAir" }, { "", "", -1 } },
{ "O_Heli_Light_02_unarmed_F", { "adacAir" }, { "", "", -1 } }
};
};class adac_shop {
side = "adac";
vehicles[] = {
{ "C_Offroad_01_repair_F", { "" }, { "", "", -1 } },
{ "C_SUV_01_F", { "" }, { "", "", -1 } },
{ "B_Truck_01_mover_F", { "adacCar" }, { "", "", -1 } }
};
};
So, war noch nicht ganz richtig:
class adac_air {
side = "adac";
vehicles[] = {
{ "B_Heli_Transport_03_unarmed_F", { "", "", -1 } },
{ "I_Heli_light_03_unarmed_F", { "", "", -1 } },
{ "O_Heli_Light_02_unarmed_F", { "", "", -1 } }
};
};
class adac_shop {
side = "adac";
vehicles[] = {
{ "C_Offroad_01_repair_F", { "", "", -1 } },
{ "C_SUV_01_F", { "", "", -1 } },
{ "B_Truck_01_mover_F", { "", "", -1 } }
};
};
Alles anzeigen
Alles anzeigenclass adac_air_hs {
side = "adac";
vehicles[] = {
{ "B_Heli_Transport_03_unarmed_F", 75000, { "adacAir" }, { "", "", -1 } },
{ "I_Heli_light_03_unarmed_F", 60000, { "adacAir" }, { "", "", -1 } },
{ "O_Heli_Light_02_unarmed_F", 60000, { "adacAir" }, { "", "", -1 } }
};
};class adac_shop {
side = "adac";
vehicles[] = {
{ "C_Offroad_01_repair_F", 1500, { "" }, { "", "", -1 } },
{ "C_SUV_01_F", 2000, { "" }, { "", "", -1 } },
{ "B_Truck_01_mover_F", 25000, { "adacCar" }, { "", "", -1 } }
};
Natürlich jetzt die korrigierte Version. Sehe gerade, wir haben das gleiche mit der Config_Master festgestellt
Das Format ist noch falsch :D.
Die Fahrzeugpreise musst du in der class LifeCfgVehicles seperat anpassen, schaue dazu oben in die kommentierte Beschreibung und richte dich mit dem Format an vorhandene Fahrzeug, bspw. SUV oder Offroad.
Edit: Ansonsten komm doch mal auf den NN TS
Config_Vehicles und dann deinen Shop aus class CarShops nehmen
Ja ich weiß ich dachte nur vielleicht hatte jemand bereits solch ein Error und weiß woran es liegt... [lexicon]extdb[/lexicon] erstellt wie gesagt keine logs und der vom arma 3 server ist im anhang
Aus dem RPT werde ich auch gerade nicht schlauer
Hast du ausversehen die tbbmalloc.dll aus deinem Serververzeichnis gelöscht? Ist die Visual-C++ Bibliothek 2013 installiert? (Glaube auch eine/zwei .net Version/en -> [lexicon]extDB[/lexicon]).
Einfach, wegen dem Folgen des Tuts, kann es nicht dazu kommen, da müssen höhere Mächte am Werk gewesen sein.
Ansonsten Backup drauf und aufs Neue
hab leider ein neues problem
es werden keine helis oder farhzeuge in den shops gezeigt obwohl alles richtig eingetragen ist.kann es hiermit zusammen hängen?? @Rom
CodeError select: Typ Zahl, erwartet Array,Zeichenfolge,Config entry 16:37:17 File mpmissions\__CUR_MP.LakesideValley\core\shops\fn_vehicleShopMenu.sqf, line 51
Code Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_vehicleShopMenu.sqf Author: Bryan "Tonic" Boardwine Description: Blah */ private ["_shop","_sideCheck","_spawnPoints","_shopFlag","_shopTitle","_disableBuy"]; (_this select 3) params [ ["_shop","",[""]], ["_sideCheck",sideUnknown,[civilian]], ["_spawnPoints","",["",[]]], ["_shopFlag","",[""]], ["_shopTitle","",[""]], ["_disableBuy",false,[true]] ]; disableSerialization; //Long boring series of checks if (dialog) exitWith {}; if (_shop isEqualTo "") exitWith {}; if (_sideCheck != sideUnknown && {playerSide != _sideCheck}) exitWith {hint localize "STR_Shop_Veh_NotAllowed"}; if (LIFE_SETTINGS(getNumber,"vehicleShop_3D") isEqualTo 1) then { createDialog "Life_Vehicle_Shop_v2_3D"; } else { createDialog "Life_Vehicle_Shop_v2"; }; life_veh_shop = [_shop,_spawnpoints,_shopFlag,_disableBuy]; //Store it so so other parts of the system can access it. ctrlSetText [2301,_shopTitle]; if (_disableBuy) then { //Disable the buy button. ctrlEnable [2309,false]; }; //Fetch the shop config. _vehicleList = M_CONFIG(getArray,"CarShops",_shop,"vehicles"); _control = CONTROL(2300,2302); lbClear _control; //Flush the list. ctrlShow [2330,false]; ctrlShow [2304,false]; //Loop through { _className = _x select 0; _levelAssert = _x select 1; _levelName = _levelAssert select 0; _levelType = _levelAssert select 1; _levelValue = _levelAssert select 2; _showall = true; if (!(_levelValue isEqualTo -1)) then { _level = missionNamespace getVariable _levelName; if (_level isEqualType {}) then {_level = FETCH_CONST(_level);}; _showall = switch (_levelType) do { case "SCALAR": {_level >= _levelValue}; case "BOOL": {_level}; case "EQUAL": {_level isEqualTo _levelValue}; default {false}; }; }; if (_showall) then { _vehicleInfo = [_className] call life_fnc_fetchVehInfo; _control lbAdd (_vehicleInfo select 3); _control lbSetPicture [(lbSize _control)-1,(_vehicleInfo select 2)]; _control lbSetData [(lbSize _control)-1,_className]; _control lbSetValue [(lbSize _control)-1,_ForEachIndex]; }; } forEach _vehicleList; if (LIFE_SETTINGS(getNumber,"vehicleShop_3D") isEqualTo 1) then { [] call life_fnc_vehicleShopInit3DPreview; }; ((findDisplay 2300) displayCtrl 2302) lbSetCurSel 0;
Bin ich mir ehrlich gesagt gerade unsicher, aber schaue mal in deine "CarShops" -> Adac hinein, ob das Array-Element 1 von "vehicles" ein Array ist. Wenn poste mal deinen ADAC Shop
Ja das wäre super. Könnte aber erst gegen 18:00 Uhr
Oki doki, musst mich nur anschreiben/anstupsen
Diese Aussage ist leider nicht hilfreich für helfende Hände und Augen. Poste doch bitte mal deine beiden Logs ([lexicon]extDB[/lexicon] und Armaserver, siehe @blackfisch(s) Signatur), am besten als Dateianhang einem Post anhängen
@Rom ich danke dir für deine hilfe es geht jetzt...
muss nurnoch die skins und fahrzeuge richten weil die nicht angezeigt werden aber das ist ja ein kleines problem.
kümmere mich schnell drum
Und wieder einem weiter geholfen
Wie heißt denn dein Item in der Vitem_Config? Vllt hast du dort im Zusammenhang mit der ProcessAction einen Dreher/Fehler, spricht falscher varname bspw.
Edit: Das ist ja hauptsächlich clientseitig, also Clientlogs bitte auch, falls es das o.g. nicht ist.
@Reen36, du kannst testweise mal die Makros für EQUAL (fn_initAdac.sqf, Zeile 16) und SEL (fn_requestReceived.sqf, Zeile 89) entfernen: