Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.33 KB | None | 0 0
  1. #include "\life_server\script_macros.hpp"
  2. /*
  3. File: fn_queryRequest.sqf
  4. Author: Bryan "Tonic" Boardwine
  5.  
  6. Description:
  7. Handles the incoming request and sends an asynchronous query
  8. request to the database.
  9.  
  10. Return:
  11. ARRAY - If array has 0 elements it should be handled as an error in client-side files.
  12. STRING - The request had invalid handles or an unknown error and is logged to the RPT.
  13. */
  14. private ["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
  15. _uid = [_this,0,"",[""]] call BIS_fnc_param;
  16. _side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
  17. _ownerID = [_this,2,objNull,[objNull]] call BIS_fnc_param;
  18.  
  19. if (isNull _ownerID) exitWith {};
  20. _ownerID = owner _ownerID;
  21.  
  22. _query = switch (_side) do {
  23. // West - 13 entries returned
  24. 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];};
  25. // Civilian - 16 entries returned
  26. 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];};
  27. // Independent - 12 entries returned
  28. 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];};
  29. };
  30.  
  31. _tickTime = diag_tickTime;
  32. _queryResult = [_query,2] call DB_fnc_asyncCall;
  33.  
  34. if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
  35. diag_log "------------- Client Query Request -------------";
  36. diag_log format ["QUERY: %1",_query];
  37. diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
  38. diag_log format ["Result: %1",_queryResult];
  39. diag_log "------------------------------------------------";
  40. };
  41.  
  42. if (_queryResult isEqualType "") exitWith {
  43. [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
  44. };
  45.  
  46. if (count _queryResult isEqualTo 0) exitWith {
  47. [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
  48. };
  49.  
  50. //Blah conversion thing from a2net->extdb
  51. _tmp = _queryResult select 2;
  52. _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
  53. _tmp = _queryResult select 3;
  54. _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
  55.  
  56. //Parse licenses (Always index 6)
  57. _new = [(_queryResult select 6)] call DB_fnc_mresToArray;
  58. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  59. _queryResult set[6,_new];
  60.  
  61. //Convert tinyint to boolean
  62. _old = _queryResult select 6;
  63. for "_i" from 0 to (count _old)-1 do {
  64. _data = _old select _i;
  65. _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
  66. };
  67.  
  68. _queryResult set[6,_old];
  69.  
  70. _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
  71. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  72. _queryResult set[8,_new];
  73. //Parse data for specific side.
  74. switch (_side) do {
  75. case west: {
  76. _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
  77.  
  78. //Parse Stats
  79. _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
  80. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  81. _queryResult set[10,_new];
  82.  
  83. //Position
  84. _queryResult set[11,([_queryResult select 11,1] call DB_fnc_bool)];
  85. _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
  86. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  87. _queryResult set[12,_new];
  88.  
  89. //Playtime
  90. _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
  91. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  92. _index = TON_fnc_playtime_values_request find [_uid, _new];
  93. if (_index != -1) then {
  94. TON_fnc_playtime_values_request set[_index,-1];
  95. TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
  96. TON_fnc_playtime_values_request pushBack [_uid, _new];
  97. } else {
  98. TON_fnc_playtime_values_request pushBack [_uid, _new];
  99. };
  100. [_uid,_new select 0] call TON_fnc_setPlayTime;
  101. //BANKING
  102. _tmp = _queryResult select 12;
  103. _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
  104. //idcard_data
  105. _new = [(_queryResult select 14)] call DB_fnc_mresToArray;
  106. if (_new isEqualType "") then {_new = call compile format["%1", _new];};
  107. _queryResult set[14,_new];
  108. };
  109.  
  110. case civilian: {
  111. _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)];
  112.  
  113. //Parse Stats
  114. _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
  115. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  116. _queryResult set[9,_new];
  117.  
  118. //Position
  119. _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
  120. _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
  121. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  122. _queryResult set[11,_new];
  123.  
  124. //Playtime
  125. _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
  126. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  127. _index = TON_fnc_playtime_values_request find [_uid, _new];
  128. if (_index != -1) then {
  129. TON_fnc_playtime_values_request set[_index,-1];
  130. TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
  131. TON_fnc_playtime_values_request pushBack [_uid, _new];
  132. } else {
  133. TON_fnc_playtime_values_request pushBack [_uid, _new];
  134. };
  135. [_uid,_new select 2] call TON_fnc_setPlayTime;
  136.  
  137. /* Make sure nothing else is added under here */
  138. _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
  139. waitUntil {scriptDone _houseData};
  140. _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
  141.  
  142.  
  143. _tmp = _queryResult select 13;
  144. _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
  145.  
  146. //idcard_data
  147. _new = [(_queryResult select XY)] call DB_fnc_mresToArray;
  148. if (_new isEqualType "") then {_new = call compile format["%1", _new];};
  149. _queryResult set[XY,_new];
  150.  
  151. };
  152.  
  153. case independent: {
  154. //Parse Stats
  155. _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
  156. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  157. _queryResult set[9,_new];
  158.  
  159. //Position
  160. _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
  161. _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
  162. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  163. _queryResult set[11,_new];
  164.  
  165. //Playtime
  166. _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
  167. if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
  168. _index = TON_fnc_playtime_values_request find [_uid, _new];
  169. if !(_index isEqualTo -1) then {
  170. TON_fnc_playtime_values_request set[_index,-1];
  171. TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
  172. TON_fnc_playtime_values_request pushBack [_uid, _new];
  173. } else {
  174. TON_fnc_playtime_values_request pushBack [_uid, _new];
  175. };
  176. [_uid,_new select 1] call TON_fnc_setPlayTime;
  177.  
  178. _tmp = _queryResult select 11;
  179. _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
  180.  
  181. //idcard_data
  182. _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
  183. if (_new isEqualType "") then {_new = call compile format["%1", _new];};
  184. _queryResult set[13,_new];
  185. };
  186. };
  187.  
  188. publicVariable "TON_fnc_playtime_values_request";
  189.  
  190. _keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
  191. _queryResult pushBack _keyArr;
  192.  
  193. _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
  194.  
  195. //[_uid,_side,_ownerID] remoteExec ["max_phone_fnc_request",2];
  196.  
  197. [_uid,_side,_ownerID] remoteExec ["max_permisPoints_fnc_request",2];
  198.  
  199. [_uid,_side,_ownerID] remoteExec ["max_annuaire_fnc_request",2];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement