Morgen, habe hier plötzlich Probleme eventuell mit meiner [lexicon]extDB[/lexicon]?
Wen ich an meinen Auto Fahrzeug Shop gehe spuckt der Show Errors aus:
Code
9:06:09 Error in expression <chVehInfo;
_control lbAdd (_vehicleInfo select 3);
_control lbSetPicture [(lbSiz>
9:06:09 Error position: <select 3);
_control lbSetPicture [(lbSiz>
9:06:09 Error Nullteiler
9:06:09 File mpmissions\__CUR_MP.Altis\core\shops\fn_vehicleShopMenu.sqf, line 46
Fahrzeuge lassen sich nicht ausparken.
Beim Heli Shop gibt es keine Errors und es lassen sich Helis kaufen.
Ausparken von vorhandenen Helis klappt ebenfalls nicht.
Server logs:
Code
2016/05/20, 9:16:18 "------------- Client Query Request -------------"
2016/05/20, 9:16:18 "QUERY: SELECT playerid, name, cash, bankacc, adminlevel, donatorlvl, cop_licenses, coplevel, cop_gear, blacklist FROM players WHERE playerid='76561198066558600'"
2016/05/20, 9:16:18 "Time to complete: 0.181992 (in seconds)"
2016/05/20, 9:16:18 "Result: ["76561198066558600","Max Smith",5.44763e+008,40000,"0","0","[[`license_cop_air`,0],[`license_cop_swat`,0],[`license_cop_cg`,0]]","11","[`U_Rangemaster`,`V_PlateCarrier1_blk`,`B_Bergen_mcamo`,``,`H_Beret_blk_POLICE`,[`ItemMap`,`ItemCompass`,`ItemWatch`,`ItemGPS`],``,`hgun_P07_snds_F`,[],[`16Rnd_9x21_Mag`,`16Rnd_9x21_Mag`,`16Rnd_9x21_Mag`],[`ToolKit`],[],[],[],[``,``,``,``],[`muzzle_snds_L`,``,``,``],[]]",0]"
2016/05/20, 9:16:18 "------------------------------------------------"
2016/05/20, 9:16:18 "########################## DYNAMIC MARKET ##########################"
2016/05/20, 9:16:18 "### >> SUCCESSFULLY LOADED PRICES FROM DATABASE! ###"
2016/05/20, 9:16:18 "####################################################################"
2016/05/20, 9:16:48 "[Display #24]"
2016/05/20, 9:16:51 "<infiSTAR.de> RequestToken: Max Smith(76561198066558600) Requested a Token! _clientID: 3"
2016/05/20, 9:16:51 "<infiSTAR.de>ConnectLog| 155h 49min | Runtime: 33s | SENT TOKEN [hymyqlgbmenin3d] TO ID [Max Smith(76561198066558600) - 3] (v0230)"
2016/05/20, 9:16:51 "<infiSTAR.de> server_setToken: SENT TOKEN [hymyqlgbmenin3d] TO Max Smith(76561198066558600)"
2016/05/20, 9:17:20 "<infiSTAR.de> ******ADMIN-LOGIN******: Max Smith(76561198066558600) (v0230)"
2016/05/20, 9:17:25 "------------- Client Query Request -------------"
2016/05/20, 9:17:25 "QUERY: SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='76561198066558600' AND alive='1' AND active='0' AND side='cop' AND type='Car'"
2016/05/20, 9:17:25 "Time to complete: 0.0220032 (in seconds)"
2016/05/20, 9:17:25 "Result: [[647,"cop","C_Offroad_01_F","Car","76561198066558600",1,0,117230,10],[648,"cop","C_Hatchback_01_F","Car","76561198066558600",1,0,687055,9],[649,"cop","C_SUV_01_F","Car","76561198066558600",1,0,714406,5],[650,"cop","C_Hatchback_01_sport_F","Car","76561198066558600",1,0,452013,6],[651,"cop","B_MRAP_01_F","Car","76561198066558600",1,0,340738,2],[658,"cop","C_Offroad_01_F","Car","76561198066558600",1,0,11627,10]]"
2016/05/20, 9:17:25 "------------------------------------------------"
2016/05/20, 9:17:36 "------------- Client Query Request -------------"
2016/05/20, 9:17:36 "QUERY: SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='76561198066558600' AND alive='1' AND active='0' AND side='cop' AND type='Air'"
2016/05/20, 9:17:36 "Time to complete: 0.022995 (in seconds)"
2016/05/20, 9:17:36 "Result: [[617,"cop","B_UAV_02_CAS_F","Air","76561198066558600",1,0,809038,0],[618,"cop","B_UAV_01_F","Air","76561198066558600",1,0,166593,0],[623,"cop","O_UAV_02_CAS_F","Air","76561198066558600",1,0,310274,0],[624,"cop","I_UAV_02_CAS_F","Air","76561198066558600",1,0,581329,0]]"
2016/05/20, 9:17:36 "------------------------------------------------"
2016/05/20, 9:17:45 Error in expression <"76561198066558600", 1, 0, 166593, 0, ""[[],0]"", ""[[[],[]],[[],[]],[[],[]],[[]>
2016/05/20, 9:17:45 Error position: <[[],0]"", ""[[[],[]],[[],[]],[[],[]],[[]>
2016/05/20, 9:17:45 Error Missing ]
2016/05/20, 9:17:45 Error in expression <"76561198066558600", 1, 0, 166593, 0, ""[[],0]"", ""[[[],[]],[[],[]],[[],[]],[[]>
2016/05/20, 9:17:45 Error position: <[[],0]"", ""[[[],[]],[[],[]],[[],[]],[[]>
2016/05/20, 9:17:45 Error Missing ]
2016/05/20, 9:17:45 Error in expression <compile _queryResult;
_queryResult = (_queryResult select 1);
if(count (_quer>
2016/05/20, 9:17:45 Error position: <_queryResult select 1);
if(count (_quer>
2016/05/20, 9:17:45 Error Undefined variable in expression: _queryresult
2016/05/20, 9:17:45 File life_server\Functions\MySQL\fn_asyncCall.sqf, line 46
2016/05/20, 9:17:45 "------------- Client Query Request -------------"
2016/05/20, 9:17:45 "QUERY: SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear FROM vehicles WHERE id='618' AND pid='76561198066558600'"
2016/05/20, 9:17:45 "Time to complete: 0.0220032 (in seconds)"
2016/05/20, 9:17:45 "Result: any"
2016/05/20, 9:17:45 "------------------------------------------------"
2016/05/20, 9:17:45 Error in expression <ickTime)];
diag_log format["Result: %1",_queryResult];
diag_log "--------------->
2016/05/20, 9:17:45 Error position: <_queryResult];
diag_log "--------------->
2016/05/20, 9:17:45 Error Undefined variable in expression: _queryresult
2016/05/20, 9:17:45 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 34
2016/05/20, 9:19:38 "### DYNMARKET >> SUCCESSFULLY BACKUP'D CURRENT PRICES TO DATABASE! ###"
2016/05/20, 9:22:53 "### DYNMARKET >> SUCCESSFULLY BACKUP'D CURRENT PRICES TO DATABASE! ###"
Alles anzeigen
Nun die angeblich Fehlerhaften Dateien:
Ich habe nichts in den angebenenen Dateien verändert.
Code: spawnvehicle.sqf
/*
File: fn_spawnVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
private["_vid","_sp","_pid","_query","_vehicle","_nearVehicles","_name","_side","_tickTime","_dir","_queryResult"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_sp = [_this,2,[],[[],""]] call BIS_fnc_param;
_unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
_price = [_this,4,0,[0]] call BIS_fnc_param;
_dir = [_this,5,0,[0]] call BIS_fnc_param;
_unit_return = _unit;
_name = name _unit;
_side = side _unit;
_unit = owner _unit;
if(_vid == -1 OR _pid == "") exitWith {};
if(_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
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 {};
_vInfo = _queryResult;
if(isNil "_vInfo") exitWith {serv_sv_use = serv_sv_use - [_vid];};
if(count _vInfo == 0) exitWith {serv_sv_use = serv_sv_use - [_vid];};
if((_vInfo select 5) == 0) exitWith
{
serv_sv_use = serv_sv_use - [_vid];
[[1,format[(localize "STR_Garage_SQLError_Destroyed"),_vInfo select 2]],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
};
if((_vInfo select 6) == 1) exitWith
{
serv_sv_use = serv_sv_use - [_vid];
[[1,format[(localize "STR_Garage_SQLError_Active"),_vInfo select 2]],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
};
if(typeName _sp != "STRING") then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
} else {
_nearVehicles = [];
};
if(count _nearVehicles > 0) exitWith
{
serv_sv_use = serv_sv_use - [_vid];
[[_price,_unit_return],"life_fnc_garageRefund",_unit,false] spawn life_fnc_MP;
[[1,(localize "STR_Garage_SpawnPointError")],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
};
_query = format["UPDATE vehicles SET active='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
waitUntil {!DB_Async_Active};
[_query,false] spawn DB_fnc_asyncCall;
if(typeName _sp == "STRING") then {
_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_vehicle setPos _sp;
_vehicle setVectorUp (surfaceNormal _sp);
_vehicle setDir _dir;
};
_vehicle allowDamage true;
//Send keys over the network.
[[_vehicle],"life_fnc_addVehicle2Chain",_unit,false] spawn life_fnc_MP;
[_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
_vehicle lock 2;
//Reskin the vehicle
[[_vehicle,_vInfo select 8],"life_fnc_colorVehicle",nil,false] spawn life_fnc_MP;
_vehicle setVariable["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable["dbInfo",[(_vInfo select 4),_vInfo select 7]];
///////////////////////////////////////
_trunk = [_vInfo select 9] call DB_fnc_mresToArray;
if(typeName _trunk == "STRING") then {_trunk = call compile format["%1", _trunk];};
_gear = [_vInfo select 10] call DB_fnc_mresToArray;
if(typeName _gear == "STRING") then {_gear = call compile format["%1", _gear];};
_vehicle setVariable["Trunk",_trunk,true];
//////////////////////////////////////
//_vehicle addEventHandler["Killed","_this spawn TON_fnc_vehicleDead"]; //Obsolete function?
[_vehicle] call life_fnc_clearVehicleAmmo;
/////////////////////////////////////
if (count _gear > 0) then
{
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
_backpacks = _gear select 3;
for "_i" from 0 to ((count (_items select 0)) - 1) do
{
_vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
for "_i" from 0 to ((count (_mags select 0)) - 1) do
{
_vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
for "_i" from 0 to ((count (_weapons select 0)) - 1) do
{
_vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
for "_i" from 0 to ((count (_backpacks select 0)) - 1) do
{
_vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
//Sets of animations
if((_vInfo select 1) == "civ" && (_vInfo select 2) == "B_Heli_Light_01_F" && _vInfo select 8 != 13) then
{
[[_vehicle,"civ_littlebird",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
};
if((_vInfo select 1) == "civ" && (_vInfo select 2) == "C_Offroad_01_repair_F") then
{
[[_vehicle,"adac_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
};
if((_vInfo select 1) == "cop" && (_vInfo select 2) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","I_Heli_light_03_F","B_Heli_Light_01_F","C_Hatchback_01_sport_F","I_MRAP_03_F","O_MRAP_02_F","O_MRAP_02_hmg_F","B_MRAP_01_hmg_F","I_MRAP_03_hmg_F","C_Offroad_01_repair_F","C_Van_01_box_F"]) then
{
[[_vehicle,"cop_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
};
if((_vInfo select 1) == "med" && (_vInfo select 2) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","I_Heli_light_03_F","B_Heli_Light_01_F","C_Hatchback_01_sport_F","I_MRAP_03_F","O_MRAP_02_F","O_MRAP_02_hmg_F","B_MRAP_01_hmg_F","I_MRAP_03_hmg_F","C_Offroad_01_repair_F","C_Van_01_box_F"]) then
{
[[_vehicle,"med_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
};
[[1,"Your vehicle is ready!"],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
if((_vInfo select 2) in [
"C_SUV_01_F",
"C_Hatchback_01_F",
"C_Hatchback_01_sport_F",
"C_Offroad_01_F",
"B_G_Offroad_01_F",
"B_G_Offroad_01_armed_F",
"C_Offroad_01_repair_F",
"B_Quadbike_01_F",
"B_MRAP_01_F",
"B_MRAP_01_gmg_F",
"B_MRAP_01_hmg_F",
"C_Van_01_transport_F",
"B_G_Van_01_fuel_F",
"C_Van_01_box_F",
"O_MRAP_02_F",
"O_MRAP_02_hmg_F",
"O_MRAP_02_gmg_F",
"I_MRAP_03_F",
"I_MRAP_03_hmg_F",
"I_MRAP_03_gmg_F",
"I_Truck_02_transport_F",
"I_Truck_02_covered_F",
"O_Truck_02_fuel_F",
"B_Truck_01_mover_F",
"B_Truck_01_transport_F",
"B_Truck_01_covered_F",
"B_Truck_01_ammo_F",
"B_Truck_01_medical_F",
"B_Truck_01_fuel_F",
"B_Truck_01_box_F",
"O_Truck_03_transport_F",
"O_Truck_03_covered_F",
"O_Truck_03_device_F",
"O_Truck_03_ammo_F"
]);
serv_sv_use = serv_sv_use - [_vid];
Alles anzeigen
Code: vehicleshopmenu.sqf
/*
File: fn_vehicleShopMenu.sqf
Author: Bryan "Tonic" Boardwine
Description:
Blah
*/
private["_shop","_sideCheck","_spawnPoints","_shopFlag","_disableBuy"];
_shop = [(_this select 3),0,"",[""]] call BIS_fnc_param;
_sideCheck = [(_this select 3),1,sideUnknown,[civilian]] call BIS_fnc_param;
_spawnPoints = [(_this select 3),2,"",["",[]]] call BIS_fnc_param;
_shopFlag = [(_this select 3),3,"",[""]] call BIS_fnc_param;
_disableBuy = [(_this select 3),5,false,[true]] call BIS_fnc_param;
disableSerialization;
//Long boring series of checks
if(dialog) exitWith {};
if(_shop == "") exitWith {};
if(_sideCheck != sideUnknown && {playerSide != _sideCheck}) exitWith {hint localize "STR_Shop_Veh_NotAllowed"};
if(!createDialog "Life_Vehicle_Shop_v2") exitWith {};
life_veh_shop = [_shop,_spawnpoints,_shopFlag,_disableBuy]; //Store it so so other parts of the system can access it.
ctrlSetText [2301,((_this select 3) select 4)];
if(_disableBuy) then {
//Disable the buy button.
ctrlEnable [2309,false];
};
//Fetch the shop config.
_vehicleList = [_shop] call life_fnc_vehicleListCfg;
_control = ((findDisplay 2300) displayCtrl 2302);
lbClear _control; //Flush the list.
ctrlShow [2330,false];
ctrlShow [2304,false];
//Loop through
{
_className = _x select 0;
_basePrice = _x select 1;
_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;
Alles anzeigen
Code: fn_asynccall.sqf
/*
File: fn_asyncCall.sqf
Author: Bryan "Tonic" Boardwine
Description:
Commits an asynchronous call to ExtDB
Parameters:
0: STRING (Query to be ran).
1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's).
3: BOOL (True to return a single array, false to return multiple entries mainly for garage).
*/
waitUntil {!DB_Async_Active};
private["_queryStmt","_queryResult","_key","_mode","_return"];
_queryStmt = [_this,0,"",[""]] call BIS_fnc_param;
_mode = [_this,1,1,[0]] call BIS_fnc_param;
_multiarr = [_this,2,false,[false]] call BIS_fnc_param;
if(_queryStmt == "") exitWith {"_INVALID_SQL_STMT"};
_return = false;
DB_Async_Active = true;
_queryResult = "";
_key = "extDB" callExtension format["%1:%2:%3",_mode,(call life_sql_id),_queryStmt];
if(_mode == 1) exitWith {DB_Async_Active = false; true};
_key = call compile format["%1",_key]; _key = _key select 1;
waitUntil{sleep (random .03); !DB_Async_ExtraLock};
DB_Async_ExtraLock = true;
while{true} do {
_pipe = "extDB" callExtension format["5:%1",_key];
if(_pipe == "") exitWith {};
if(_pipe != "[3]") then {
_queryResult = _queryResult + _pipe;
} else {
sleep 0.35;
};
};
DB_Async_ExtraLock = false;
DB_Async_Active = false;
//Get the Array of information blah blah
_queryResult = call compile _queryResult;
//Make everything possible for DB_RAW_V2
_queryResult = (_queryResult select 1);
if(count (_queryResult select 1) == 0) exitWith {[]};
_return = (_queryResult select 1) select 0;
if(_multiarr) then {
_return = (_queryResult select 1);
};
_return;
Alles anzeigen
Ich hoffe jemand von euch hat paar Ideen