Advertisement
MGT

ExileServer_system_trading_network_sellItemRequest.sqf

MGT
Nov 22nd, 2015
420
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. /**
  2. * ExileServer_system_trading_network_sellItemRequest
  3. *
  4. * Exile Mod
  5. * www.exilemod.com
  6. * © 2015 Exile Mod Team
  7. *
  8. * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
  9. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  10. */
  11.  
  12. private["_sessionID","_parameters","_itemClassName","_quantity","_containerType","_containerNetID","_playerObject","_vehicleObject","_sellPrice","_playerMoney","_respectGain","_playerRespect","_responseCode"];
  13. _sessionID = _this select 0;
  14. _parameters = _this select 1;
  15. _itemClassName = _parameters select 0;
  16. _quantity = _parameters select 1;
  17. _containerType = _parameters select 2;
  18. _containerNetID = _parameters select 3;
  19. try
  20. {
  21. _playerObject = _sessionID call ExileServer_system_session_getPlayerObject;
  22. if (isNull _playerObject) then
  23. {
  24. throw 1;
  25. };
  26. if !(alive _playerObject) then
  27. {
  28. throw 2;
  29. };
  30. if(_playerObject getVariable ["ExileMutex",false]) then
  31. {
  32. throw 12;
  33. };
  34. _playerObject setVariable ["ExileMutex",true];
  35. _vehicleObject = objNull;
  36. if !(isClass (missionConfigFile >> "CfgExileArsenal" >> _itemClassName) ) then
  37. {
  38. throw 3;
  39. };
  40. _sellPrice = _itemClassName call ExileClient_util_gear_calculateSellPrice;
  41. if (_containerType isEqualTo 1) then
  42. {
  43. if (_itemClassName isEqualTo (primaryWeapon _playerObject)) then
  44. {
  45. {
  46. {
  47. if !(_x isEqualTo "") then
  48. {
  49. _sellPrice = _sellPrice + (_x call ExileClient_util_gear_calculateSellPrice);
  50. };
  51. }
  52. forEach _x;
  53. }
  54. forEach
  55. [
  56. primaryWeaponItems _playerObject,
  57. primaryWeaponMagazine _playerObject
  58. ];
  59. };
  60. if (_itemClassName isEqualTo (handgunWeapon _playerObject)) then
  61. {
  62. {
  63. {
  64. if !(_x isEqualTo "") then
  65. {
  66. _sellPrice = _sellPrice + (_x call ExileClient_util_gear_calculateSellPrice);
  67. };
  68. }
  69. forEach _x;
  70. }
  71. forEach
  72. [
  73. handgunItems _playerObject,
  74. handgunMagazine _playerObject
  75. ];
  76. };
  77. };
  78. if (_sellPrice <= 0) then
  79. {
  80. throw 4;
  81. };
  82. _playerMoney = _playerObject getVariable ["ExileMoney", 0];
  83. _playerMoney = _playerMoney + _sellPrice;
  84. _playerObject setVariable ["ExileMoney", _playerMoney];
  85. _respectGain = _sellPrice * getNumber (configFile >> "CfgSettings" >> "Respect" >> "tradingRespectFactor");
  86. _playerRespect = _playerObject getVariable ["ExileScore", 0];
  87. _playerRespect = floor (_playerRespect + _respectGain);
  88. _playerObject setVariable ["ExileScore", _playerRespect];
  89. format["setAccountMoneyAndRespect:%1:%2:%3", _playerMoney, _playerRespect, (getPlayerUID _playerObject)] call ExileServer_system_database_query_fireAndForget;
  90. [_sessionID, "sellItemResponse", [0, str _playerMoney, _itemClassName, 1, _containerType, _containerNetID, str _playerRespect]] call ExileServer_system_network_send_to;
  91. _traderLog = format ["PLAYER: %1:%6 SOLD ITEM: %5 FOR %2 POPTABS AND %3 RESPECT | PLAYER TOTAL MONEY: %4 RESPECT: %7",_playerObject,_sellPrice,_respectGain,_playerMoney,_itemClassName,(getPlayerUID _playerObject),_playerRespect];
  92. 'ARMA_LOG' callExtension format['A3_EXILE_TRADERLOG:%1',_traderLog];
  93. if !(_vehicleObject isEqualTo objNull) then
  94. {
  95. _vehicleObject call ExileServer_object_vehicle_database_update;
  96. }
  97. else
  98. {
  99. _playerObject call ExileServer_object_player_database_update;
  100. };
  101. }
  102. catch
  103. {
  104. _responseCode = _exception;
  105. diag_log format ["NOPE: %1", _responseCode];
  106. [_sessionID, "sellItemResponse", [_responseCode, "", "", 0, 0, "", ""]] call ExileServer_system_network_send_to;
  107. };
  108. if !(isNull _playerObject) then
  109. {
  110. _playerObject setVariable ["ExileMutex", false];
  111. };
  112. true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement