Darth_Rogue

purchaseVehicleRequest

Sep 18th, 2015
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. /**
  2. * Exile Mod
  3. * www.exilemod.com
  4. * © 2015 Exile Mod Team
  5. *
  6. * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
  7. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  8. */
  9.  
  10. private["_sessionID","_parameters","_vehicleClass","_pinCode","_playerObject","_salesPrice","_playerMoney","_position","_vehicleObject","_position2d","_offset","_responseCode"];
  11. _sessionID = _this select 0;
  12. _parameters = _this select 1;
  13. _vehicleClass = _parameters select 0;
  14. _pinCode = _parameters select 1;
  15. try
  16. {
  17. _playerObject = _sessionID call ExileServer_system_session_getPlayerObject;
  18. if(_playerObject getVariable ["ExileMutex",false])then
  19. {
  20. throw 12;
  21. };
  22. _playerObject setVariable ["ExileMutex",true];
  23. if (isNull _playerObject) then
  24. {
  25. throw 1;
  26. };
  27. if !(alive _playerObject) then
  28. {
  29. throw 2;
  30. };
  31. if !(isClass (missionConfigFile >> "CfgExileArsenal" >> _vehicleClass) ) then
  32. {
  33. throw 3;
  34. };
  35. _salesPrice = getNumber (missionConfigFile >> "CfgExileArsenal" >> _vehicleClass >> "price");
  36. if (_salesPrice <= 0) then
  37. {
  38. throw 4;
  39. };
  40. _playerMoney = _playerObject getVariable ["ExileMoney", 0];
  41. if (_playerMoney < _salesPrice) then
  42. {
  43. throw 5;
  44. };
  45. if!((count _pinCode) isEqualTo 4)then
  46. {
  47. throw 11;
  48. };
  49. if (_vehicleClass isKindOf "Ship") then
  50. {
  51. _position = [(getPosATL _playerObject), 80, 10] call ExileClient_util_world_findWaterPosition;
  52. _vehicleObject = [_vehicleClass, _position, (random 360), true, _pinCode] call ExileServer_object_vehicle_createPersistentVehicle;
  53. _vehicleObject setPosASL _position;
  54. }
  55. else
  56. {
  57. if (_vehicleClass isKindOf "Air") then
  58. {
  59. _position2d =
  60. [
  61. (getPosATL _playerObject),
  62. 5,
  63. 175,
  64. 40,
  65. 0,
  66. 9999,
  67. 0
  68. ]
  69. call BIS_fnc_findSafePos;
  70. }
  71. else
  72. {
  73. _position2d =
  74. [
  75. (getPosATL _playerObject),
  76. 5,
  77. 80,
  78. 8,
  79. 0,
  80. 9999,
  81. 0
  82. ]
  83. call BIS_fnc_findSafePos;
  84. };
  85. if(count _position2d isEqualTo 3)then
  86. {
  87. throw 13;
  88. };
  89. _vehicleObject = [_vehicleClass, [0,0,1000], (random 360), true, _pinCode] call ExileServer_object_vehicle_createPersistentVehicle;
  90. _position2d set [2,0];
  91. _offset = _vehicleObject call ExileClient_util_model_getHeight;
  92. _position2d set [2,_offset / 4];
  93. _vehicleObject setPosATL _position2d;
  94. };
  95. _vehicleObject setVariable ["ExileOwnerUID", (getPlayerUID _playerObject)];
  96. _vehicleObject setVariable ["ExileIsLocked",0];
  97. _vehicleObject lock 0;
  98. _vehicleObject allowDamage false;
  99. _vehicleObject removeAllEventHandlers "HandleDamage";
  100. if (_vehicleClass=="Exile_Car_Strider") then { _vehicleObject disableTIEquipment true;}; //disables thermal on Strider
  101. _vehicleObject call ExileServer_object_vehicle_database_insert;
  102. _vehicleObject call ExileServer_object_vehicle_database_update;
  103. ExileServerOwnershipSwapQueue pushBack [_vehicleObject, _playerObject];
  104. _playerMoney = _playerMoney - _salesPrice;
  105. _playerObject setVariable ["ExileMoney", _playerMoney];
  106. format["setAccountMoney:%1:%2", _playerMoney, (getPlayerUID _playerObject)] call ExileServer_system_database_query_fireAndForget;
  107. [_sessionID, "purchaseVehicleResponse", [0, netId _vehicleObject, str _playerMoney]] call ExileServer_system_network_send_to;
  108. }
  109. catch
  110. {
  111. _responseCode = _exception;
  112. [_sessionID, "purchaseVehicleResponse", [_responseCode, "", ""]] call ExileServer_system_network_send_to;
  113. };
  114. _playerObject setVariable ["ExileMutex",false];
  115. true
Advertisement
Add Comment
Please, Sign In to add comment