Advertisement
valaukgaming

ExileServer_object_vehicle_network_storeVehicleRequest

Jun 13th, 2019
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQF 4.98 KB | None | 0 0
  1. /**
  2.  * ExileServer_object_vehicle_network_storeVehicleRequest
  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", "_netID", "_nickname", "_playerObject", "_vehicleObject", "_alphabet", "_forbiddenCharacter", "_flagObject", "_storedVehicles", "_level", "_maxNumberOfVehicles", "_vehiclePosition", "_items", "_magazines", "_weapons", "_containers", "_popTabs", "_groundHolder", "_popTabsObject"];
  13. _sessionID = _this select 0;
  14. _parameters = _this select 1;
  15. _netID = _parameters select 0;
  16. _nickname = _parameters select 1;
  17. try
  18. {
  19.     if (getNumber(missionConfigFile >> "CfgVirtualGarage" >> "enableVirtualGarage") isEqualTo 0) then
  20.     {
  21.         throw "Virtual Garage is disabled on this server";
  22.     };
  23.     _playerObject = _sessionID call ExileServer_system_session_getPlayerObject;
  24.     if (isNull _playerObject) then
  25.     {
  26.         throw "Player is null";
  27.     };
  28.     if (_playerObject getVariable ["ExileMutex",false]) then
  29.     {
  30.         throw "Player is Mutex";
  31.     };
  32.     _playerObject setVariable ["ExileMutex", true];
  33.     _vehicleObject = objectFromNetID(_netID);
  34.     if (isNull _vehicleObject) then
  35.     {
  36.         throw "Vehicle is null";
  37.     };
  38.     if !(alive _vehicleObject) then
  39.     {
  40.         throw "Vehicle has been destroyed";
  41.     };
  42.     if (_vehicleObject getVariable ["ExileMutex",false]) then
  43.     {
  44.         throw "Vehicle is in the process of being stored";
  45.     };
  46.     _vehicleObject setVariable ["ExileMutex", true];
  47.     if !(_vehicleObject getVariable ["ExileIsPersistent", false]) then
  48.     {
  49.         throw "You cannot store non-persistent vehicles in the garage!";
  50.     };
  51.     _alphabet = getText (missionConfigFile >> "CfgClans" >> "clanNameAlphabet");
  52.     _forbiddenCharacter = [_nickname, _alphabet] call ExileClient_util_string_containsForbiddenCharacter;
  53.     if !(_forbiddenCharacter isEqualTo -1) then
  54.     {
  55.         throw "Invalid vehicle nickname";
  56.     };
  57.     _flagObject = _playerObject call ExileClient_util_world_getTerritoryAtPosition;
  58.     _storedVehicles = _flagObject getVariable ["ExileTerritoryStoredVehicles", []];
  59.     _level = _flagObject getVariable ["ExileTerritoryLevel", 1];
  60.     _maxNumberOfVehicles = getArray(missionConfigFile >> "CfgVirtualGarage" >> "numberOfVehicles") select ((_level - 1) max 0);
  61.     if (_maxNumberOfVehicles isEqualTo -1) then
  62.     {
  63.         throw "Your territory isn't allowed to store any vehicles.<br />Upgrade your territory to gain access to Virtual Garage";
  64.     };
  65.     if (count(_storedVehicles) >= _maxNumberOfVehicles) then
  66.     {
  67.         throw "You cannot store any more vehicles in your territory.<br />Upgrade your territory to store more vehicles!";
  68.     };
  69.     if ((getPosATL _vehicleObject) distance (getPosATL _flagObject) > (_flagObject getVariable ["ExileTerritorySize", 0])) then
  70.     {
  71.         throw "Vehicle must be in your territory";
  72.     };
  73.     if (getNumber(missionConfigFile >> "CfgVirtualGarage" >> "clearInventoryOnStore") isEqualTo 1) then
  74.     {      
  75.         _vehiclePosition = getPosATL _vehicleObject;
  76.         _items = _vehicleObject call ExileServer_util_getItemCargo;
  77.         _magazines = magazinesAmmoCargo _vehicleObject;
  78.         _weapons = weaponsItemsCargo _vehicleObject;
  79.         _containers =_vehicleObject call ExileServer_util_getObjectContainerCargo;
  80.         _popTabs = _vehicleObject getVariable ["ExileMoney", 0];
  81.         _groundHolder = createVehicle ["GroundWeaponHolder",_vehiclePosition, [], 0, "CAN_COLLIDE"];
  82.         _groundHolder setPosATL _vehiclePosition;
  83.         if (_popTabs > 0 ) then
  84.         {
  85.             _popTabsObject = createVehicle ["Exile_PopTabs", _vehiclePosition, [], 0, "CAN_COLLIDE"];  
  86.             _popTabsObject setVariable ["ExileMoney", _popTabs, true];
  87.         };
  88.         [_groundHolder,_items] call ExileServer_util_fill_fillItems;
  89.         [_groundHolder,_magazines] call ExileServer_util_fill_fillMagazines;
  90.         [_groundHolder,_weapons] call ExileServer_util_fill_fillWeapons;
  91.         [_groundHolder,_containers] call ExileServer_util_fill_fillContainers;
  92.         _vehicleObject call ExileClient_util_containerCargo_clear;
  93.     };
  94.     _storedVehicles pushBack [typeOf(_vehicleObject), _nickname];
  95.     _flagObject setVariable ["ExileTerritoryStoredVehicles", _storedVehicles, true];
  96.     _vehicleObject call ExileServer_object_vehicle_database_update;
  97.     format["storeVehicle:%1:%2:%3", _flagObject getVariable ["ExileDatabaseID", -1], _nickname, _vehicleObject getVariable ["ExileDatabaseID", -1]] call ExileServer_system_database_query_fireAndForget;
  98.     _vehicleObject call ExileServer_system_vehicleSaveQueue_removeVehicle;
  99.     _vehicleObject call ExileServer_system_simulationMonitor_removeVehicle;
  100.     deleteVehicle _vehicleObject;
  101.     [_sessionID, "storeVehicleResponse", [true,_nickname]] call ExileServer_system_network_send_to;
  102. }
  103. catch
  104. {
  105.     [_sessionID, "storeVehicleResponse", [false,_exception]] call ExileServer_system_network_send_to;
  106.     _exception call ExileServer_util_log;  
  107. };
  108. _playerObject setVariable ["ExileMutex", false];
  109. if !(isNull _vehicleObject) then
  110. {
  111.     _vehicleObject setVariable ["ExileMutex", false];
  112. };
  113. true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement