Advertisement
Guest User

Untitled

a guest
Dec 1st, 2016
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.24 KB | None | 0 0
  1. #include "\RPProject_ServerNew\macros.hpp"
  2. /*
  3. Script File Author: Moss & Lifeman
  4. Script File Mod: RP Project
  5. Script File: RPP_extDB.sqf
  6.  
  7. Description:
  8. extDB database stuff
  9. */
  10. ["RPP_DB_ASYNC", {
  11. private["_queryStmt","_mode","_multiarr","_queryResult","_key","_return","_loop"];
  12. _queryStmt = [_this,0,"",[""]] call BIS_fnc_param;
  13. _mode = [_this,1,1,[0]] call BIS_fnc_param;
  14. _multiarr = [_this,2,false,[false]] call BIS_fnc_param;
  15.  
  16. _key = EXTDB format["%1:%2:%3",_mode,FETCH_CONST(RPP_SQL_ID),_queryStmt];
  17.  
  18. if(EQUAL(_mode,1)) exitWith {true};
  19.  
  20. _key = call compile format["%1",_key];
  21. _key = SEL(_key,1);
  22.  
  23. _queryResult = "";
  24. _loop = true;
  25. while{_loop} do {
  26. _queryResult = "extDB2" callExtension format["4:%1", _key];
  27. if (EQUAL(_queryResult,"[5]")) then {
  28. _queryResult = "";
  29. for "_i" from 0 to 1 step 0 do {
  30. _pipe = EXTDB format["5:%1", _key];
  31. if(_pipe == "") exitWith {_loop = false};
  32. _queryResult = _queryResult + _pipe;
  33. };
  34. } else {
  35. if (!(EQUAL(_queryResult,"[3]"))) then {
  36. _loop = false;
  37. };
  38. };
  39. };
  40. _queryResult = call compile _queryResult;
  41. if(EQUAL(SEL(_queryResult,0),0)) exitWith {diag_log format ["extDB2: Protocol Error: %1", _queryResult]; []};
  42. _return = SEL(_queryResult,1);
  43. if(!_multiarr && count _return > 0) then {
  44. _return = SEL(_return,0);
  45. };
  46.  
  47. _return;
  48. }] call RPP_Function;
  49. publicVariable "RPP_DB_ASYNC";
  50.  
  51. ["RPP_DB_fetchDuty", {
  52. private ["_uid", "_query", "_result", "_curTime", "_tmp", "_tmp2"];
  53. _uid = param [0,"",[""]];
  54. _ownerID = param [1,ObjNull,[ObjNull]];
  55. if(isNull _ownerID) exitWith {diag_log "Owner ID is NULL";};
  56. _ownerID = owner _ownerID;
  57.  
  58. _query = format["SELECT locker_civ, locker_cop, locker_ems, onduty_civ, onduty_cop, onduty_ems FROM Duty WHERE pid='%1'", _uid];
  59.  
  60. _curTime = diag_tickTime;
  61. _result = [_query,2] call RPP_DB_ASYNC;
  62.  
  63. diag_log "------------- Fetch Duty Request -------------";
  64. diag_log format["QUERY: %1",_query];
  65. diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _curTime)];
  66. diag_log format["Result: %1",_result];
  67. diag_log "------------------------------------------------";
  68.  
  69. if(count _result isEqualTo 0) exitWith {
  70. [] remoteExec ["RPP_Duty_FirstInstert",_ownerID];
  71. };
  72.  
  73. _new = [(_result select 0)] call RPP_SQLToArr;
  74. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  75. _result set[0,_new];
  76.  
  77. _new = [(_result select 1)] call RPP_SQLToArr;
  78. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  79. _result set[1,_new];
  80.  
  81. _new = [(_result select 2)] call RPP_SQLToArr;
  82. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  83. _result set[2,_new];
  84.  
  85. _tmp = _result select 3;
  86. _result set[3,[_tmp] call RPP_safeNumber];
  87.  
  88. _tmp = _result select 4;
  89. _result set[4,[_tmp] call RPP_safeNumber];
  90.  
  91. _tmp = _result select 5;
  92. _result set[5,[_tmp] call RPP_safeNumber];
  93.  
  94. _result remoteExec ["RPP_Duty_load",_ownerID];
  95. }] call RPP_Function;
  96. publicVariable "RPP_DB_fetchDuty";
  97.  
  98. ["RPP_insertDuty", {
  99. _pid = param [0,"",[""]];
  100. _ownerID = param [1,ObjNull,[ObjNull]];
  101. if(isNull _ownerID) exitWith {diag_log "Owner ID is NULL";};
  102. _ownerID = owner _ownerID;
  103.  
  104. _query = format["INSERT INTO Duty(pid, locker_civ, locker_cop, locker_ems, onduty_civ, onduty_cop, onduty_ems) VALUES ('%1', '""[]""', '""[]""', '""[]""', '1', '0', '0')", _pid];
  105.  
  106. diag_log "------------- Fetch Duty Instert -------------";
  107. diag_log format["QUERY: %1",_query];
  108. diag_log "------------------------------------------------";
  109.  
  110. if(_query == "") exitWith {};
  111.  
  112. [_query,1] call RPP_DB_ASYNC;
  113.  
  114. [] remoteExec ["RPP_Duty_CheckSide",_ownerID];
  115. }] call RPP_Function;
  116. publicVariable "RPP_insertDuty";
  117.  
  118. ["RPP_DB_fetchLogin", {
  119. private ["_uid", "_query", "_result", "_curTime", "_tmp", "_tmp2"];
  120. _uid = param [0,"",[""]];
  121. _ownerID = param [1,ObjNull,[ObjNull]];
  122. if(isNull _ownerID) exitWith {diag_log "Owner ID is NULL";};
  123. _ownerID = owner _ownerID;
  124.  
  125. _query = format["SELECT username, password FROM game_logins WHERE pid='%1'", _uid];
  126.  
  127. _curTime = diag_tickTime;
  128. _result = [_query,2] call RPP_DB_ASYNC;
  129.  
  130. diag_log "------------- Fetch Login Request -------------";
  131. diag_log format["QUERY: %1",_query];
  132. diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _curTime)];
  133. diag_log format["Result: %1",_result];
  134. diag_log "------------------------------------------------";
  135.  
  136. [_result] remoteExec ["RPP_loadLogin",_ownerID];
  137. }] call RPP_Function;
  138. publicVariable "RPP_DB_fetchLogin";
  139.  
  140. ["RPP_DB_updateLogin", {
  141. params ["_username", "_password", "_pid"];
  142. _username = [_username] call RPP_safeString;
  143. _password = [_password] call RPP_safeString;
  144.  
  145. _query = format["UPDATE game_logins SET username='%1', password='%2' WHERE pid='%3'", _username, _password, _pid];
  146.  
  147. if(_query == "") exitWith {};
  148.  
  149. [_query,1] call RPP_DB_ASYNC;
  150. }] call RPP_Function;
  151. publicVariable "RPP_DB_updateLogin";
  152.  
  153. ["RPP_DB_insertLogin", {
  154. params ["_username", "_password", "_pid"];
  155. _username = [_username] call RPP_safeString;
  156. _password = [_password] call RPP_safeString;
  157.  
  158. _query = format["INSERT INTO game_logins(pid, username, password) VALUES ('%3', '%1', '%2')", _username, _password, _pid];
  159.  
  160. if(_query == "") exitWith {};
  161.  
  162. [_query,1] call RPP_DB_ASYNC;
  163. }] call RPP_Function;
  164. publicVariable "RPP_DB_insertLogin";
  165.  
  166. ["RPP_DB_fetchPlayer", {
  167. private ["_uid", "_query", "_result", "_curTime", "_tmp"];
  168. _uid = param [0,"",[""]];
  169. _ownerID = param [1,ObjNull,[ObjNull]];
  170. if(isNull _ownerID) exitWith {diag_log "Owner ID is NULL";};
  171. _ownerID = owner _ownerID;
  172.  
  173. _query = format["SELECT pid, name, cash, bank, gear, inventory, licenses, isinjail, copLevel, emtLevel, adminLevel, donorLevel, hunger, thirst, Jail_H, Jail_M, Jail_S, JailPOS, JailDir, Skill_Vehicle, skill_Crafting, Skill_Mining, Skill_Gathering, Skill_Fishing, VehicleStorage FROM players WHERE pid='%1'", _uid];
  174.  
  175. _curTime = diag_tickTime;
  176. _result = [_query,2] call RPP_DB_ASYNC;
  177.  
  178. diag_log "------------- Fetch Player Request -------------";
  179. diag_log format["QUERY: %1",_query];
  180. diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _curTime)];
  181. diag_log format["Result: %1",_result];
  182. diag_log "------------------------------------------------";
  183.  
  184. if(_result isEqualType "") exitWith {
  185. [] remoteExecCall ["RPP_insertPlayer",_ownerID];
  186. };
  187. if(count _result == 0) exitWith {
  188. [] remoteExecCall ["RPP_insertPlayer",_ownerID];
  189. };
  190.  
  191. _tmp = _result select 2;
  192. _result set[2,[_tmp] call RPP_safeNumber]; //Fix Cash VAR
  193. _tmp = _result select 3;
  194. _result set[3,[_tmp] call RPP_safeNumber]; //Fix Bank VAR
  195. _tmp = _result select 12;
  196. _result set[13,[_tmp] call RPP_safeNumber]; //Fix Thirst
  197. _tmp = _result select 13;
  198. _result set[12,[_tmp] call RPP_safeNumber]; //Fix Hunger
  199.  
  200. _new = [(_result select 4)] call RPP_SQLToArr;
  201. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  202. _result set[4,_new];
  203.  
  204. _new = [(_result select 5)] call RPP_SQLToArr;
  205. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  206. _result set[5,_new];
  207.  
  208. _new = [(_result select 6)] call RPP_SQLToArr;
  209. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  210. _result set[6,_new];
  211.  
  212. // Are They In Jail?
  213. _result set[7,([_result select 7,1] call RPP_bool)];
  214. if ([_result select 7,1] call RPP_bool) then {
  215. //load Jail.
  216. //NOT FINISHED.
  217. };
  218.  
  219. //levels
  220. _tmp = _result select 8;
  221. _result set[8,[_tmp] call RPP_safeNumber]; //Fix Coplevel VAR
  222.  
  223. _tmp = _result select 9;
  224. _result set[9,[_tmp] call RPP_safeNumber]; //Fix emtlevel VAR
  225.  
  226. _tmp = _result select 10;
  227. _result set[10,[_tmp] call RPP_safeNumber]; //Fix adminlevel VAR
  228.  
  229. _tmp = _result select 11;
  230. _result set[11,[_tmp] call RPP_safeNumber]; //Fix donatorlevel VAR
  231.  
  232. //Skills
  233. _tmp = _result select 19;
  234. _result set[19,[_tmp] call RPP_safeNumber]; //Fix Vehicle VAR
  235. _tmp = _result select 20;
  236. _result set[20,[_tmp] call RPP_safeNumber]; //Fix Crafting VAR
  237. _tmp = _result select 21;
  238. _result set[21,[_tmp] call RPP_safeNumber]; //Fix Mining VAR
  239. _tmp = _result select 22;
  240. _result set[22,[_tmp] call RPP_safeNumber]; //Fix Gathering VAR
  241. tmp = _result select 23;
  242. _result set[23,[_tmp] call RPP_safeNumber]; //Fix Fishing VAR
  243.  
  244. _new = [(_result select 24)] call RPP_SQLToArr;
  245. if(_new isEqualType "") then {_new = call compile format["%1", _new];};
  246. _result set[24,_new];
  247.  
  248. _result remoteExec ["RPP_loadPlayer",_ownerID];
  249. }] call RPP_Function;
  250. publicVariable "RPP_DB_fetchPlayer";
  251.  
  252. ["RPP_DB_insertPlayer", {
  253. private["_queryResult", "_query", "_tickTime"];
  254. params [
  255. "_uid",
  256. "_name",
  257. ["_money",-1,[0]],
  258. ["_bank",-1,[0]],
  259. ["_returnToSender",objNull,[objNull]],
  260. ["_Weight",-1,[0]]
  261. ];
  262.  
  263. //Error checks
  264. if((_uid == "") OR (_name == "")) exitWith {diag_log "Bad UID or name";}; //Let the client be 'lost' in 'transaction'
  265. if(isNull _returnToSender) exitWith {diag_log "ReturnToSender is Null!";}; //No one to send this to!
  266.  
  267. _query = format["SELECT pid, characterName FROM players WHERE pid='%1'",_uid];
  268.  
  269. _tickTime = diag_tickTime;
  270. _queryResult = [_query,2] call RPP_DB_ASYNC;
  271.  
  272. diag_log "------------- Check Before Insert -------------";
  273. diag_log format["QUERY: %1",_query];
  274. diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
  275. diag_log format["Result: %1",_queryResult];
  276. diag_log "------------------------------------------------";
  277.  
  278. //Double check to make sure the client isn't in the database...
  279. if(_queryResult isEqualType "") exitWith {[] remoteExecCall ["RPP_fetchPlayer",(owner _returnToSender)];}; //There was an entry!
  280. if(count _queryResult != 0) exitWith {[] remoteExecCall ["RPP_fetchPlayer",(owner _returnToSender)];};
  281.  
  282. //Clense and prepare some information.
  283. _name = [_name] call RPP_safeString; //Clense the name of bad chars.
  284. _money = [_money] call RPP_safeNumber;
  285. _bank = [_bank] call RPP_safeNumber;
  286.  
  287. //Prepare the query statement..
  288. _query = format["INSERT INTO players (pid, name, cash, bank, gear, inventory, licenses, Weight, Skill_Vehicle, skill_Crafting, Skill_Mining, Skill_Gathering, Skill_Fishing, adminLevel, emtLevel, copLevel, donorLevel, VehicleStorage, isinjail, Jail_H, Jail_M, Jail_S, JailPOS, JailDir) VALUES('%1', '%2', '%3', '%4', '""[]""','""[]""','""[]""','""%5""','""0""','""0""','""0""','""0""','""0""','""0""','""0""','""0""','""0""','""[]""','""0""','""0""','""0""','""0""','""0""','""0""')", _uid, _name, _money, _bank, _Weight];
  289.  
  290. [_query,1] call RPP_DB_ASYNC;
  291. [] remoteExecCall ["RPP_fetchPlayer",(owner _returnToSender)];
  292. }] call RPP_Function;
  293. publicVariable "RPP_DB_insertPlayer";
  294.  
  295. ["RPP_DB_partialSync", {
  296. private ["_query","_mode", "_value1", "_value2", "_data"];
  297. params ["_mode", "_data", "_pid"];
  298.  
  299. diag_log format ["Mode: %1 | Data: %2 | pid: %3",_mode,_data,_pid];
  300.  
  301. switch (_mode) do {
  302. case 0: {
  303. _data = [_data] call RPP_safeNumber;
  304. _query = format["UPDATE players SET cash='%1' WHERE pid='%2'", _data, _pid];
  305. };
  306. case 1: {
  307. _data = [_data] call RPP_safeNumber;
  308. _query = format["UPDATE players SET bank='%1' WHERE pid='%2'", _data, _pid];
  309. };
  310. case 2: {
  311. _data = [_data] call RPP_ArrToSQL;
  312. _query = format["UPDATE players SET licenses='%1' WHERE pid='%2'", _data, _pid];
  313. };
  314. case 3: {
  315. _value1 = _data select 0;
  316. _value1 = [_value1] call RPP_safeNumber;
  317. _value2 = _data select 1;
  318. _value2 = [_value2] call RPP_safeNumber;
  319. _query = format["UPDATE players SET hunger='%1', thirst='%2' WHERE pid='%3'", _value1, _value2, _pid];
  320. };
  321. case 4: {
  322. _data = [_data] call RPP_ArrToSQL;
  323. _query = format["UPDATE players SET gear='%1' WHERE pid='%2'", _data, _pid];
  324. };
  325. case 5: {
  326. _data = [_data] call RPP_ArrToSQL;
  327. _query = format["UPDATE players SET inventory='%1' WHERE pid='%2'", _data, _pid];
  328. };
  329. case 6: {
  330. _value1 = _data select 0;
  331. _value1 = [_value1] call RPP_safeNumber;
  332. _value2 = _data select 1;
  333. _value2 = [_value2] call RPP_safeNumber;
  334. _value3 = _data select 2;
  335. _value3 = [_value3] call RPP_safeNumber;
  336. _value4 = _data select 3;
  337. _value4 = [_value4] call RPP_safeNumber;
  338. _value5 = _data select 4;
  339. _value5 = [_value5] call RPP_safeNumber;
  340. _query = format["UPDATE players SET Skill_Vehicle='%1', skill_Crafting='%2, Skill_Mining='%3', Skill_Gathering='%4', Skill_Fishing='%5' WHERE pid='%6'", _value1, _value2, _value3, _value4, _value5, _pid];
  341. };
  342. case 7: {
  343. _data = [_data] call RPP_ArrToSQL;
  344. _query = format["UPDATE Duty SET locker_civ='%1' WHERE pid='%2'", _data, _pid];
  345. };
  346. case 8: {
  347. _data = [_data] call RPP_ArrToSQL;
  348. _query = format["UPDATE Duty SET locker_cop='%1' WHERE pid='%2'", _data, _pid];
  349. };
  350. case 9: {
  351. _data = [_data] call RPP_ArrToSQL;
  352. _query = format["UPDATE Duty SET locker_ems='%1' WHERE pid='%2'", _data, _pid];
  353. };
  354. case 10: {
  355. _value1 = _data select 0;
  356. _value1 = [_value1] call RPP_safeNumber;
  357. _value2 = _data select 1;
  358. _value2 = [_value2] call RPP_safeNumber;
  359. _value3 = _data select 2;
  360. _value3 = [_value3] call RPP_safeNumber;
  361. _query = format["UPDATE Duty SET onduty_civ='%1', onduty_ems='%2', onduty_cop='%3' WHERE pid='%4'", _value1, _value2, _value3, _pid];
  362. };
  363. };
  364.  
  365. if(_query == "") exitWith {};
  366.  
  367. [_query,1] call RPP_DB_ASYNC;
  368. }] call RPP_Function;
  369. publicVariable "RPP_DB_partialSync";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement