Moin,
es werden bei mir diverse Werte aus der DB abgefragt, nun wollte ich, dass ein Int(20) auch noch mit abgefragt wird und habe diesen in die query Request reingeschrieben.
Wenn ich ihn jedoch in der Mission empfange sagt er mir, dass er einen Array erwartet hat.
Jedoch habe ich in der query Request vorher festgelegt, dass er diese als Zahl "wahrnehmen" soll :o
Kennt wer das problem?
MfG Azoni

DB Error ?!?
-
Azoni -
25. April 2016 um 16:59 -
Geschlossen
-
-
Poste einmal den kompletten Log, dann kann man dir bestimmt leichter helfen
-
RPT:
Code16:52:08 Error foreach: Type Number, expected Array 16:52:08 File mpmissions\__CUR_MP.Altis\core\session\fn_requestReceived.sqf, line 63
Code in der requestReceived(Die Zivi Case):Code
Alles anzeigencase civilian: { life_is_arrested = _this select 7; __CONST__(life_coplevel, 0); __CONST__(life_medicLevel, 0); life_houses = _this select 9; { _house = nearestBuilding (call compile format["%1", _x select 0]); life_vehicles pushBack _house; } foreach life_houses; life_test1 = parseNumber (_this select 9); life_gangData = _This select 10; if(count life_gangData != 0) then { [] spawn life_fnc_initGang; }; [] spawn life_fnc_initHouses; };
-
Es wäre hilfreich, wenn du sagst, welche der Zeile da die Zeile 63 in deiner SQF ist.
-
-
ganz einfach:
Codelife_houses = _this select 9; { _house = nearestBuilding (call compile format["%1", _x select 0]); life_vehicles pushBack _house; } foreach life_houses; life_test1 = parseNumber (_this select 9);
du hast anscheinend einen Fehler in deinen Indexen, da du zweimal den Index 9 hast und somit die gleiche Stelle im Feld abfrägst.
schick uns bitte noch die dazugehörige Serverdatei fn_queryRequest.sqf -
Das ist die standart 3.1.4.8er , ich habe nur in der _query Abfrage rumgefuscht
Code
Alles anzeigen/* File: fn_queryRequest.sqf Author: Bryan "Tonic" Boardwine Description: Handles the incoming request and sends an asynchronous query request to the database. Return: ARRAY - If array has 0 elements it should be handled as an error in client-side files. STRING - The request had invalid handles or an unknown error and is logged to the RPT. */ private["_uid","_side","_query","_return","_queryResult","_qResult","_handler","_thread","_tickTime","_loops","_returnCount"]; _uid = [_this,0,"",[""]] call BIS_fnc_param; _side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param; _ownerID = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param; if(isNull _ownerID) exitWith {}; _ownerID = owner _ownerID; /* _returnCount is the count of entries we are expecting back from the async call. The other part is well the SQL statement. */ _query = switch(_side) do { case west: {_returnCount = 10; format["SELECT playerid, name, cash, bankacc, adminlevel, donatorlvl, cop_licenses, coplevel, cop_gear, blacklist FROM players WHERE playerid='%1'",_uid];}; case civilian: {_returnCount = 10; format["SELECT playerid, name, cash, bankacc, adminlevel, donatorlvl, civ_licenses, arrested, civ_gear, test1 FROM players WHERE playerid='%1'",_uid];}; case independent: {_returnCount = 9; format["SELECT playerid, name, cash, bankacc, adminlevel, donatorlvl, med_licenses, mediclevel, med_gear FROM players WHERE playerid='%1'",_uid];}; }; waitUntil{sleep (random 0.3); !DB_Async_Active}; _tickTime = diag_tickTime; _queryResult = [_query,2] call DB_fnc_asyncCall; diag_log "------------- Client Query Request -------------"; diag_log format["QUERY: %1",_query]; diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)]; diag_log format["Result: %1",_queryResult]; diag_log "------------------------------------------------"; if(typeName _queryResult == "STRING") exitWith { [[],"SOCK_fnc_insertPlayerInfo",_ownerID,false,true] spawn life_fnc_MP; }; if(count _queryResult == 0) exitWith { [[],"SOCK_fnc_insertPlayerInfo",_ownerID,false,true] spawn life_fnc_MP; }; //Blah conversion thing from a2net->extdb private["_tmp"]; _tmp = _queryResult select 2; _queryResult set[2,[_tmp] call DB_fnc_numberSafe]; _tmp = _queryResult select 3; _queryResult set[3,[_tmp] call DB_fnc_numberSafe]; _tmp = _queryResult select 9; _queryResult set[9,[_tmp] call DB_fnc_numberSafe]; //Parse licenses (Always index 6) _new = [(_queryResult select 6)] call DB_fnc_mresToArray; if(typeName _new == "STRING") then {_new = call compile format["%1", _new];}; _queryResult set[6,_new]; //Convert tinyint to boolean _old = _queryResult select 6; for "_i" from 0 to (count _old)-1 do { _data = _old select _i; _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]]; }; _queryResult set[6,_old]; _new = [(_queryResult select 8)] call DB_fnc_mresToArray; if(typeName _new == "STRING") then {_new = call compile format["%1", _new];}; _queryResult set[8,_new]; //Parse data for specific side. switch (_side) do { case west: { _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)]; }; case civilian: { _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)]; _houseData = _uid spawn TON_fnc_fetchPlayerHouses; waitUntil {scriptDone _houseData}; _queryResult pushBack (missionNamespace getVariable[format["houses_%1",_uid],[]]); _gangData = _uid spawn TON_fnc_queryPlayerGang; waitUntil{scriptDone _gangData}; _queryResult pushBack (missionNamespace getVariable[format["gang_%1",_uid],[]]); }; }; _keyArr = missionNamespace getVariable [format["%1_KEYS_%2",_uid,_side],[]]; _queryResult set[12,_keyArr]; [_queryResult,"SOCK_fnc_requestReceived",_ownerID,false] spawn life_fnc_MP;
-
Ok es liegt wie vermutet am Index: da du nun im case civilian test1 am Index 9 hast, musst du in deiner fn_requestReceived.sqf den Index von den Häusern und der Gang jeweils um eins erhöhen.
Sprich so:
Code
Alles anzeigencase civilian: { life_is_arrested = _this select 7; __CONST__(life_coplevel, 0); __CONST__(life_medicLevel, 0); life_houses = _this select 10; { _house = nearestBuilding (call compile format["%1", _x select 0]); life_vehicles pushBack _house; } foreach life_houses; life_test1 = parseNumber (_this select 9); life_gangData = _This select 11; if(count life_gangData != 0) then { [] spawn life_fnc_initGang; }; [] spawn life_fnc_initHouses; };
-
nox
25. März 2023 um 00:47 Hat das Thema aus dem Forum Hilfeforum - ArmA 3 nach Archiv verschoben.