И их не может быть очень много
у каждого игрока свой, что будет с твоим сервером, когда записей станет тыща?
не проще ли искать игрока в базе, а не базу в игроке?
я не могу понять почему это происходит.
как ты забираешь данные из базы?
Вот так: функция загрузки нужного объекта (джед).
_id = _this select 0; // идентификатор джеда в базе
_fetchstr = format ["loadDjed:%1", _id];
_fetch = [_fetchstr, 2] call ExternalS_fnc_ExtDBasync;
_data = _fetch select 0;
_OwnerID = _data select 0; // UID хозяина джеда. Вот тут и проблема!
_position = [_data select 1, _data select 2, _data select 3];
_djed = createVehicle ["Djed_Static", _position, [], 0, "CAN_COLLIDE"];
_djed setPosATL _position;
//_djed setVectorDirAndUp [_vectorDirection, _vectorUp];
_djed setVariable ["Djed_OwnerID",_OwnerID, true];
_djed setVariable ["Energy", _data select 4, true];
_djed setVariable ["Djed_Radius", _data select 5, true];
... дальше там навешивание на него action и возврат созданного объекта.
ExternalS_fnc_ExtDBasync - функция обработки запроса,честно слямзил у кого-то))
/*
File: asyncCall.sqf
Author: Bryan "Tonic" Boardwine
Description:
Commits an asynchronous call to extDB
Gets result via extDB 4:x + uses 5:x if message is Multi-Part
Parameters:
0: STRING (Query to be ran).
1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's).
*/
private["_queryStmt","_queryResult","_key","_mode","_return","_loop"];
if (!params [["_queryStmt", "", [""]],["_mode", 0, [0]]]) exitWith {};
_key = "extDB3" callExtension format["%1:%2:%3",_mode, (call extDB_SQL_CUSTOM_ID), _queryStmt];
if(_mode isEqualTo 1) exitWith {true};
_key = call compile format["%1",_key];
_key = _key select 1;
//uisleep (random .03);
_queryResult = "";
_loop = true;
while{_loop} do
{
_queryResult = "extDB3" callExtension format["4:%1", _key];
if (_queryResult isEqualTo "[5]") then {
// extDB3 returned that result is Multi-Part Message
_queryResult = "";
while{true} do {
_pipe = "extDB3" callExtension format["5:%1", _key];
if(_pipe isEqualTo "") exitWith {_loop = false};
_queryResult = _queryResult + _pipe;
};
}
else
{
if (_queryResult isEqualTo "[3]") then
{
//diag_log format ["extDB3: uisleep [4]: %1", diag_tickTime];
//uisleep 0.1;
} else {
_loop = false;
};
};
};
_queryResult = call compile _queryResult;
// Not needed, its SQF Code incase extDB3 ever returns error message i.e Database Connection Died
if ((_queryResult select 0) isEqualTo 0) exitWith {diag_log format ["extDB3: Protocol Error: %1", _queryResult]; []};
_return = (_queryResult select 1);
_return;