Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "\life_server\script_macros.hpp"
- /*
- 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","_queryResult","_tickTime","_tmp"];
- _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;
- _query = switch (_side) do {
- // West - 13 entries returned
- case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, cop_alive, cop_position, playtime, banking_pin , idcard_data_cop FROM players WHERE pid='%1'",_uid];};
- // Civilian - 16 entries returned
- case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, banking_pin , gang_id, gang_perm_id , idcard_data_civ FROM players WHERE pid='%1'",_uid];};
- // Independent - 12 entries returned
- case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, med_alive, med_position, playtime, banking_pin , idcard_data_med FROM players WHERE pid='%1'",_uid];};
- };
- _tickTime = diag_tickTime;
- _queryResult = [_query,2] call DB_fnc_asyncCall;
- if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
- 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 (_queryResult isEqualType "") exitWith {
- [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
- };
- if (count _queryResult isEqualTo 0) exitWith {
- [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
- };
- //Blah conversion thing from a2net->extdb
- _tmp = _queryResult select 2;
- _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
- _tmp = _queryResult select 3;
- _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
- //Parse licenses (Always index 6)
- _new = [(_queryResult select 6)] call DB_fnc_mresToArray;
- if (_new isEqualType "") 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 (_new isEqualType "") 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)];
- //Parse Stats
- _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[10,_new];
- //Position
- _queryResult set[11,([_queryResult select 11,1] call DB_fnc_bool)];
- _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[12,_new];
- //Playtime
- _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if (_index != -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 0] call TON_fnc_setPlayTime;
- //BANKING
- _tmp = _queryResult select 12;
- _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
- //idcard_data
- _new = [(_queryResult select 14)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format["%1", _new];};
- _queryResult set[14,_new];
- };
- case civilian: {
- _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)];
- //Parse Stats
- _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
- //Position
- _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
- _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[11,_new];
- //Playtime
- _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if (_index != -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 2] call TON_fnc_setPlayTime;
- /* Make sure nothing else is added under here */
- _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
- waitUntil {scriptDone _houseData};
- _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
- _tmp = _queryResult select 13;
- _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
- //idcard_data
- _new = [(_queryResult select XY)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format["%1", _new];};
- _queryResult set[XY,_new];
- };
- case independent: {
- //Parse Stats
- _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
- //Position
- _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
- _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[11,_new];
- //Playtime
- _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if !(_index isEqualTo -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 1] call TON_fnc_setPlayTime;
- _tmp = _queryResult select 11;
- _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
- //idcard_data
- _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format["%1", _new];};
- _queryResult set[13,_new];
- };
- };
- publicVariable "TON_fnc_playtime_values_request";
- _keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
- _queryResult pushBack _keyArr;
- _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
- //[_uid,_side,_ownerID] remoteExec ["max_phone_fnc_request",2];
- [_uid,_side,_ownerID] remoteExec ["max_permisPoints_fnc_request",2];
- [_uid,_side,_ownerID] remoteExec ["max_annuaire_fnc_request",2];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement