Advertisement
Klowns

Untitled

Jan 27th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.52 KB | None | 0 0
  1. #include "\life_server\script_macros.hpp"
  2. /*
  3. File: fn_spawnVehicle.sqf
  4. Author: Bryan "Tonic" Boardwine
  5.  
  6. Description:
  7. Sends the query request to the database, if an array is returned then it creates
  8. the vehicle if it's not in use or dead.
  9. */
  10. params [
  11. ["_vid", -1, [0]],
  12. ["_pid", "", [""]],
  13. ["_sp", [], [[],""]],
  14. ["_unit", objNull, [objNull]],
  15. ["_price", 0, [0]],
  16. ["_dir", 0, [0]],
  17. "_spawntext"
  18. ];
  19.  
  20. private _unit_return = _unit;
  21. private _name = name _unit;
  22. private _side = side _unit;
  23. _unit = owner _unit;
  24.  
  25. if (_vid isEqualTo -1 || {_pid isEqualTo ""}) exitWith {};
  26. if (_vid in serv_sv_use) exitWith {};
  27. serv_sv_use pushBack _vid;
  28.  
  29. private _servIndex = serv_sv_use find _vid;
  30.  
  31. private _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist, insure, controltech, immatriculation FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
  32.  
  33. private _tickTime = diag_tickTime;
  34. private _queryResult = [_query,2] call DB_fnc_asyncCall;
  35.  
  36. if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
  37. diag_log "------------- Client Query Request -------------";
  38. diag_log format ["QUERY: %1",_query];
  39. diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
  40. diag_log format ["Result: %1",_queryResult];
  41. diag_log "------------------------------------------------";
  42. };
  43.  
  44. if (_queryResult isEqualType "") exitWith {};
  45.  
  46. private _vInfo = _queryResult;
  47. if (isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
  48. if (count _vInfo isEqualTo 0) exitWith {serv_sv_use deleteAt _servIndex;};
  49.  
  50. if ((_vInfo select 5) isEqualTo 0) exitWith {
  51. serv_sv_use deleteAt _servIndex;
  52. [1,"STR_Garage_SQLError_Destroyed",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
  53. };
  54.  
  55. if ((_vInfo select 6) isEqualTo 1) exitWith {
  56. serv_sv_use deleteAt _servIndex;
  57. [1,"STR_Garage_SQLError_Active",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
  58. };
  59.  
  60. private "_nearVehicles";
  61. if !(_sp isEqualType "") then {
  62. _nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
  63. } else {
  64. _nearVehicles = [];
  65. };
  66.  
  67. if (count _nearVehicles > 0) exitWith {
  68. serv_sv_use deleteAt _servIndex;
  69. [_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
  70. [1,"STR_Garage_SpawnPointError",true] remoteExecCall ["life_fnc_broadcast",_unit];
  71. };
  72.  
  73. _query = format ["UPDATE vehicles SET active='1',fourriere='0', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
  74.  
  75. private _trunk = [(_vInfo select 9)] call DB_fnc_mresToArray;
  76. private _gear = [(_vInfo select 10)] call DB_fnc_mresToArray;
  77. private _damage = [call compile (_vInfo select 12)] call DB_fnc_mresToArray;
  78. private _wasIllegal = _vInfo select 13;
  79. _wasIllegal = if (_wasIllegal isEqualTo 1) then { true } else { false };
  80.  
  81. [_query,1] call DB_fnc_asyncCall;
  82.  
  83. private "_vehicle";
  84. if (_sp isEqualType "") then {
  85. _vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
  86. waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
  87. _vehicle allowDamage false;
  88. _hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
  89. _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
  90. uiSleep 0.6;
  91. } else {
  92. _vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
  93. waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
  94. _vehicle allowDamage false;
  95. _vehicle setPos _sp;
  96. _vehicle setVectorUp (surfaceNormal _sp);
  97. _vehicle setDir _dir;
  98. };
  99. _vehicle allowDamage true;
  100. //Send keys over the network.
  101. [_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
  102. [_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
  103. _vehicle lock 2;
  104. //Reskin the vehicle
  105. [_vehicle,(_vInfo select 8)] remoteExecCall ["life_fnc_colorVehicle",_unit];
  106. _vehicle setVariable ["vehicle_info_owners",[[_pid,_name]],true];
  107. _vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7),(_vInfo select 14)],true];
  108. _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
  109. [_vehicle] call life_fnc_clearVehicleAmmo;
  110.  
  111.  
  112. //CONTROLE TECHNIQUE - MAXENCE
  113. _vehicle setVariable ["vehicle_info_vid",_vid,true];
  114. _controlTech = [(_vInfo select 15)];
  115. _controlTech = _controlTech select 0;
  116. _controlTech = _controlTech + 1;
  117. _vehicle setVariable ["vehicle_controlTech",_controlTech,true];
  118.  
  119. //UPDATE BDD
  120. _query = format ["UPDATE vehicles SET controlTech='%1' WHERE pid='%2' AND id='%3'",_controlTech,_pid,_vid];
  121. _thread = [_query,1] call DB_fnc_asyncCall;
  122.  
  123.  
  124. if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
  125.  
  126. _vehicle setVariable ["Trunk",_trunk,true];
  127.  
  128. if (_wasIllegal) then {
  129. private _refPoint = if (_sp isEqualType "") then {getMarkerPos _sp;} else {_sp;};
  130.  
  131. private _distance = 100000;
  132. private "_location";
  133.  
  134. {
  135. private _tempLocation = nearestLocation [_refPoint, _x];
  136. private _tempDistance = _refPoint distance _tempLocation;
  137.  
  138. if (_tempDistance < _distance) then {
  139. _location = _tempLocation;
  140. _distance = _tempDistance;
  141. };
  142. false
  143.  
  144. } count ["NameCityCapital", "NameCity", "NameVillage"];
  145.  
  146. _location = text _location;
  147. [1,"STR_NOTF_BlackListedVehicle",true,[_location,_name]] remoteExecCall ["life_fnc_broadcast",west];
  148.  
  149. _query = format ["UPDATE vehicles SET blacklist='0' WHERE id='%1' AND pid='%2'",_vid,_pid];
  150. [_query,1] call DB_fnc_asyncCall;
  151. };
  152. } else {
  153. _vehicle setVariable ["Trunk",[[],0],true];
  154. };
  155.  
  156. if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
  157. _vehicle setFuel (_vInfo select 11);
  158. }else{
  159. _vehicle setFuel 1;
  160. };
  161.  
  162. if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
  163. _items = _gear select 0;
  164. _mags = _gear select 1;
  165. _weapons = _gear select 2;
  166. _backpacks = _gear select 3;
  167.  
  168. for "_i" from 0 to ((count (_items select 0)) - 1) do {
  169. _vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
  170. };
  171. for "_i" from 0 to ((count (_mags select 0)) - 1) do {
  172. _vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
  173. };
  174. for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
  175. _vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
  176. };
  177. for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
  178. _vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
  179. };
  180. };
  181.  
  182. if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
  183. _parts = getAllHitPointsDamage _vehicle;
  184.  
  185. for "_i" from 0 to ((count _damage) - 1) do {
  186. _vehicle setHitPointDamage [format ["%1",((_parts select 0) select _i)],_damage select _i];
  187. };
  188. };
  189.  
  190. //Sets of animations
  191. if ((_vInfo select 1) isEqualTo "civ" && (_vInfo select 2) isEqualTo "B_Heli_Light_01_F" && !((_vInfo select 8) isEqualTo 13)) then {
  192. [_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  193. };
  194.  
  195. if ((_vInfo select 1) isEqualTo "cop" && ((_vInfo select 2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
  196. [_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  197. };
  198.  
  199. if ((_vInfo select 1) isEqualTo "med" && (_vInfo select 2) isEqualTo "C_Offroad_01_F") then {
  200. [_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  201. };
  202.  
  203. serv_sv_use deleteAt _servIndex;
  204.  
  205. if ((_vInfo select 15) >= 6) then {
  206. [1,"Attention ! Votre controle technique n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];
  207. uiSleep 2;
  208. if ((_vInfo select 14) isEqualTo 0) then {[1,"Attention ! Votre assurance n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];};
  209. } else {
  210. if ((_vInfo select 14) isEqualTo 0) then {[1,"Attention ! Votre assurance n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];
  211. } else {
  212. [1,"Votre véhicule est prêt."] RemoteExecCall ["life_fnc_broadcast",_unit];
  213. };
  214. };
  215. [_vid, _vehicle, 3] spawn mav_tuning_fnc_getTuningFromDB;
  216. _immatriculation = _vInfo select 16;
  217.  
  218. _vehicle setVariable ["vehicle_info_plate",_immatriculation,true];
  219.  
  220. RAW Paste Data
  221. #include "\life_server\script_macros.hpp"
  222. /*
  223. File: fn_spawnVehicle.sqf
  224. Author: Bryan "Tonic" Boardwine
  225.  
  226. Description:
  227. Sends the query request to the database, if an array is returned then it creates
  228. the vehicle if it's not in use or dead.
  229. */
  230. params [
  231. ["_vid", -1, [0]],
  232. ["_pid", "", [""]],
  233. ["_sp", [], [[],""]],
  234. ["_unit", objNull, [objNull]],
  235. ["_price", 0, [0]],
  236. ["_dir", 0, [0]],
  237. "_spawntext"
  238. ];
  239.  
  240. private _unit_return = _unit;
  241. private _name = name _unit;
  242. private _side = side _unit;
  243. _unit = owner _unit;
  244.  
  245. if (_vid isEqualTo -1 || {_pid isEqualTo ""}) exitWith {};
  246. if (_vid in serv_sv_use) exitWith {};
  247. serv_sv_use pushBack _vid;
  248.  
  249. private _servIndex = serv_sv_use find _vid;
  250.  
  251. private _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist, insure, controltech, immatriculation FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
  252.  
  253. private _tickTime = diag_tickTime;
  254. private _queryResult = [_query,2] call DB_fnc_asyncCall;
  255.  
  256. if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
  257. diag_log "------------- Client Query Request -------------";
  258. diag_log format ["QUERY: %1",_query];
  259. diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
  260. diag_log format ["Result: %1",_queryResult];
  261. diag_log "------------------------------------------------";
  262. };
  263.  
  264. if (_queryResult isEqualType "") exitWith {};
  265.  
  266. private _vInfo = _queryResult;
  267. if (isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
  268. if (count _vInfo isEqualTo 0) exitWith {serv_sv_use deleteAt _servIndex;};
  269.  
  270. if ((_vInfo select 5) isEqualTo 0) exitWith {
  271. serv_sv_use deleteAt _servIndex;
  272. [1,"STR_Garage_SQLError_Destroyed",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
  273. };
  274.  
  275. if ((_vInfo select 6) isEqualTo 1) exitWith {
  276. serv_sv_use deleteAt _servIndex;
  277. [1,"STR_Garage_SQLError_Active",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
  278. };
  279.  
  280. private "_nearVehicles";
  281. if !(_sp isEqualType "") then {
  282. _nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
  283. } else {
  284. _nearVehicles = [];
  285. };
  286.  
  287. if (count _nearVehicles > 0) exitWith {
  288. serv_sv_use deleteAt _servIndex;
  289. [_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
  290. [1,"STR_Garage_SpawnPointError",true] remoteExecCall ["life_fnc_broadcast",_unit];
  291. };
  292.  
  293. _query = format ["UPDATE vehicles SET active='1',fourriere='0', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
  294.  
  295. private _trunk = [(_vInfo select 9)] call DB_fnc_mresToArray;
  296. private _gear = [(_vInfo select 10)] call DB_fnc_mresToArray;
  297. private _damage = [call compile (_vInfo select 12)] call DB_fnc_mresToArray;
  298. private _wasIllegal = _vInfo select 13;
  299. _wasIllegal = if (_wasIllegal isEqualTo 1) then { true } else { false };
  300.  
  301. [_query,1] call DB_fnc_asyncCall;
  302.  
  303. private "_vehicle";
  304. if (_sp isEqualType "") then {
  305. _vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
  306. waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
  307. _vehicle allowDamage false;
  308. _hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
  309. _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
  310. uiSleep 0.6;
  311. } else {
  312. _vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
  313. waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
  314. _vehicle allowDamage false;
  315. _vehicle setPos _sp;
  316. _vehicle setVectorUp (surfaceNormal _sp);
  317. _vehicle setDir _dir;
  318. };
  319. _vehicle allowDamage true;
  320. //Send keys over the network.
  321. [_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
  322. [_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
  323. _vehicle lock 2;
  324. //Reskin the vehicle
  325. [_vehicle,(_vInfo select 8)] remoteExecCall ["life_fnc_colorVehicle",_unit];
  326. _vehicle setVariable ["vehicle_info_owners",[[_pid,_name]],true];
  327. _vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7),(_vInfo select 14)],true];
  328. _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
  329. [_vehicle] call life_fnc_clearVehicleAmmo;
  330.  
  331.  
  332. //CONTROLE TECHNIQUE - MAXENCE
  333. _vehicle setVariable ["vehicle_info_vid",_vid,true];
  334. _controlTech = [(_vInfo select 15)];
  335. _controlTech = _controlTech select 0;
  336. _controlTech = _controlTech + 1;
  337. _vehicle setVariable ["vehicle_controlTech",_controlTech,true];
  338.  
  339. //UPDATE BDD
  340. _query = format ["UPDATE vehicles SET controlTech='%1' WHERE pid='%2' AND id='%3'",_controlTech,_pid,_vid];
  341. _thread = [_query,1] call DB_fnc_asyncCall;
  342.  
  343.  
  344. if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
  345.  
  346. _vehicle setVariable ["Trunk",_trunk,true];
  347.  
  348. if (_wasIllegal) then {
  349. private _refPoint = if (_sp isEqualType "") then {getMarkerPos _sp;} else {_sp;};
  350.  
  351. private _distance = 100000;
  352. private "_location";
  353.  
  354. {
  355. private _tempLocation = nearestLocation [_refPoint, _x];
  356. private _tempDistance = _refPoint distance _tempLocation;
  357.  
  358. if (_tempDistance < _distance) then {
  359. _location = _tempLocation;
  360. _distance = _tempDistance;
  361. };
  362. false
  363.  
  364. } count ["NameCityCapital", "NameCity", "NameVillage"];
  365.  
  366. _location = text _location;
  367. [1,"STR_NOTF_BlackListedVehicle",true,[_location,_name]] remoteExecCall ["life_fnc_broadcast",west];
  368.  
  369. _query = format ["UPDATE vehicles SET blacklist='0' WHERE id='%1' AND pid='%2'",_vid,_pid];
  370. [_query,1] call DB_fnc_asyncCall;
  371. };
  372. } else {
  373. _vehicle setVariable ["Trunk",[[],0],true];
  374. };
  375.  
  376. if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
  377. _vehicle setFuel (_vInfo select 11);
  378. }else{
  379. _vehicle setFuel 1;
  380. };
  381.  
  382. if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
  383. _items = _gear select 0;
  384. _mags = _gear select 1;
  385. _weapons = _gear select 2;
  386. _backpacks = _gear select 3;
  387.  
  388. for "_i" from 0 to ((count (_items select 0)) - 1) do {
  389. _vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
  390. };
  391. for "_i" from 0 to ((count (_mags select 0)) - 1) do {
  392. _vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
  393. };
  394. for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
  395. _vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
  396. };
  397. for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
  398. _vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
  399. };
  400. };
  401.  
  402. if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
  403. _parts = getAllHitPointsDamage _vehicle;
  404.  
  405. for "_i" from 0 to ((count _damage) - 1) do {
  406. _vehicle setHitPointDamage [format ["%1",((_parts select 0) select _i)],_damage select _i];
  407. };
  408. };
  409.  
  410. //Sets of animations
  411. if ((_vInfo select 1) isEqualTo "civ" && (_vInfo select 2) isEqualTo "B_Heli_Light_01_F" && !((_vInfo select 8) isEqualTo 13)) then {
  412. [_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  413. };
  414.  
  415. if ((_vInfo select 1) isEqualTo "cop" && ((_vInfo select 2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
  416. [_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  417. };
  418.  
  419. if ((_vInfo select 1) isEqualTo "med" && (_vInfo select 2) isEqualTo "C_Offroad_01_F") then {
  420. [_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
  421. };
  422.  
  423. serv_sv_use deleteAt _servIndex;
  424.  
  425. if ((_vInfo select 15) >= 6) then {
  426. [1,"Attention ! Votre controle technique n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];
  427. uiSleep 2;
  428. if ((_vInfo select 14) isEqualTo 0) then {[1,"Attention ! Votre assurance n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];};
  429. } else {
  430. if ((_vInfo select 14) isEqualTo 0) then {[1,"Attention ! Votre assurance n'est plus à jour, ceci est interdit par la lois !"] RemoteExecCall ["life_fnc_broadcast",_unit];
  431. } else {
  432. [1,"Votre véhicule est prêt."] RemoteExecCall ["life_fnc_broadcast",_unit];
  433. };
  434. };
  435. [_vid, _vehicle, 3] spawn mav_tuning_fnc_getTuningFromDB;
  436. _immatriculation = _vInfo select 16;
  437. _vehicle setVariable ["vehicle_info_plate",_immatriculation,true];
  438. Pastebin PRO WINTER Special!
  439. Get 40% OFF Pastebin PRO accounts!
  440. create new paste / dealsnew! / api / trends / syntax languages / faq / tools / privacy / cookies / contact / dmca / scraping / go
  441. Site design & logo © 2017 Pastebin; user contributions (pastes) licensed under cc by-sa 3.0 -- Dedicated Server Hosting by Steadfast
  442. Top
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement