diff --git a/SQF/dayz_code/Configs/CfgMagazines/Buildings/Storage.hpp b/SQF/dayz_code/Configs/CfgMagazines/Buildings/Storage.hpp
index 05bfaac86..6cf84512e 100644
--- a/SQF/dayz_code/Configs/CfgMagazines/Buildings/Storage.hpp
+++ b/SQF/dayz_code/Configs/CfgMagazines/Buildings/Storage.hpp
@@ -263,6 +263,28 @@ class ItemVault: CA_Magazine
};
};
+class ItemVault2: CA_Magazine
+{
+ scope = 2;
+ count = 1;
+ type = 256;
+ displayName = "$STR_EPOCH_SAFE+";
+ model = "\z\addons\dayz_epoch\models\safe_onside.p3d";
+ picture = "\z\addons\dayz_epoch\pictures\equip_safe_ca.paa";
+ descriptionShort = $STR_EPOCH_SAFE_DESC;
+
+ class ItemActions
+ {
+ class Build
+ {
+ text = $STR_EPOCH_PLAYER_230;
+ script = "spawn player_build;";
+ require[] = {"ItemToolbox"};
+ create = "VaultStorage2Locked";
+ };
+ };
+};
+
class ItemLockbox: CA_Magazine
{
scope = 2;
@@ -285,6 +307,72 @@ class ItemLockbox: CA_Magazine
};
};
+class ItemLockbox2: CA_Magazine
+{
+ scope = 2;
+ count = 1;
+ type = 256;
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ model = "\z\addons\dayz_epoch\models\lockbox_mag.p3d";
+ picture = "\z\addons\dayz_epoch\pictures\equip_lockbox_CA.paa";
+ descriptionShort = $STR_EPOCH_LOCKBOX_DESC;
+
+ class ItemActions
+ {
+ class Build
+ {
+ text = $STR_EPOCH_PLAYER_231;
+ script = "spawn player_build;";
+ require[] = {"ItemToolbox"};
+ create = "LockboxStorage2Locked";
+ };
+ };
+};
+
+class ItemLockboxWinter: CA_Magazine
+{
+ scope = 2;
+ count = 1;
+ type = 256;
+ displayName = $STR_EPOCH_LOCKBOX;
+ model = "\z\addons\dayz_epoch\models\lockbox_mag.p3d";
+ picture = "\z\addons\dayz_epoch\pictures\equip_lockbox_CA.paa";
+ descriptionShort = $STR_EPOCH_LOCKBOX_DESC;
+
+ class ItemActions
+ {
+ class Build
+ {
+ text = $STR_EPOCH_PLAYER_231;
+ script = "spawn player_build;";
+ require[] = {"ItemToolbox"};
+ create = "LockboxStorageWinterLocked";
+ };
+ };
+};
+
+class ItemLockboxWinter2: CA_Magazine
+{
+ scope = 2;
+ count = 1;
+ type = 256;
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ model = "\z\addons\dayz_epoch\models\lockbox_mag.p3d";
+ picture = "\z\addons\dayz_epoch\pictures\equip_lockbox_CA.paa";
+ descriptionShort = $STR_EPOCH_LOCKBOX_DESC;
+
+ class ItemActions
+ {
+ class Build
+ {
+ text = $STR_EPOCH_PLAYER_231;
+ script = "spawn player_build;";
+ require[] = {"ItemToolbox"};
+ create = "LockboxStorageWinter2Locked";
+ };
+ };
+};
+
class StashSmall_kit: CA_Magazine
{
scope = 2;
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Buildables/LockableStorage.hpp b/SQF/dayz_code/Configs/CfgVehicles/Buildables/LockableStorage.hpp
index 9ca06c74a..3ad34ae0b 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Buildables/LockableStorage.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Buildables/LockableStorage.hpp
@@ -1,7 +1,7 @@
class VaultStorage: Land_A_tent {
placement = "vertical";
vehicleClass = "DayZ Epoch Buildables";
- displayName = $STR_EPOCH_SAFE;
+ displayName = "$STR_EPOCH_SAFE";
model = "\z\addons\dayz_epoch\models\safe.p3d";
destrType = "DestructNo";
armor = 800;
@@ -14,7 +14,7 @@ class VaultStorage: Land_A_tent {
class VaultStorageLocked: Land_A_tent {
placement = "vertical";
vehicleClass = "DayZ Epoch Buildables";
- displayName = $STR_EPOCH_SAFE_LOCKED;
+ displayName = "$STR_EPOCH_SAFE_LOCKED";
model = "\z\addons\dayz_epoch\models\safe.p3d";
destrType = "DestructNo";
armor = 800;
@@ -26,8 +26,51 @@ class VaultStorageLocked: Land_A_tent {
unlockedClass = "VaultStorage";
requireplot = 0;
nounderground = 0;
+ upgradeBuilding[] = {"VaultStorage2Locked",{"ItemToolbox","ItemSolder_DZE"},{{"equip_metal_sheet",4},{"ItemScrews",2},{"equip_scrapelectronics",4},{"equip_floppywire",2}}};
};
+class VaultStorage2: Land_A_tent {
+ placement = "vertical";
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_SAFE+";
+ model = "\z\addons\dayz_epoch\models\safe.p3d";
+ destrType = "DestructNo";
+ armor = 1600;
+ transportMaxMagazines = 400;
+ transportMaxWeapons = 50;
+ transportMaxBackpacks = 20;
+ lockedClass = "VaultStorage2Locked";
+ packedClass = "WeaponHolder_ItemVault2";
+};
+class VaultStorage2Locked: Land_A_tent {
+ placement = "vertical";
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_SAFE_LOCKED+";
+ model = "\z\addons\dayz_epoch\models\safe.p3d";
+ destrType = "DestructNo";
+ armor = 1600;
+ transportMaxMagazines = 0;
+ transportMaxWeapons = 0;
+ transportMaxBackpacks = 0;
+ offset[] = {0,2.5,0};
+ lockable = 4;
+ unlockedClass = "VaultStorage2";
+ requireplot = 0;
+ nounderground = 0;
+};
+
+class LockboxStorage: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = $STR_EPOCH_LOCKBOX;
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 800;
+ transportMaxMagazines = 50;
+ transportMaxWeapons = 20;
+ transportMaxBackpacks = 10;
+ lockedClass = "LockboxStorageLocked";
+ packedClass = "WeaponHolder_ItemLockbox";
+};
class LockboxStorageLocked: Land_A_tent {
vehicleClass = "DayZ Epoch Buildables";
displayName = $STR_EPOCH_LOCKBOX_LOCKED;
@@ -42,8 +85,38 @@ class LockboxStorageLocked: Land_A_tent {
unlockedClass = "LockboxStorage";
nounderground = 0;
requireplot = 0;
+ upgradeBuilding[] = {"LockboxStorage2Locked",{"ItemToolbox","ItemSolder_DZE"},{{"equip_metal_sheet",2},{"ItemScrews",2},{"equip_scrapelectronics",2},{"equip_floppywire",2}}};
};
-class LockboxStorage: Land_A_tent {
+
+class LockboxStorage2: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 16000;
+ transportMaxMagazines = 100;
+ transportMaxWeapons = 40;
+ transportMaxBackpacks = 20;
+ lockedClass = "LockboxStorage2Locked";
+ packedClass = "WeaponHolder_ItemLockbox2";
+};
+class LockboxStorage2Locked: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_LOCKBOX_LOCKED+";
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 1600;
+ transportMaxMagazines = 0;
+ transportMaxWeapons = 0;
+ transportMaxBackpacks = 0;
+ offset[] = {0,1.5,0.5};
+ lockable = 2;
+ unlockedClass = "LockboxStorage2";
+ nounderground = 0;
+ requireplot = 0;
+};
+
+class LockboxStorageWinter: Land_A_tent {
vehicleClass = "DayZ Epoch Buildables";
displayName = $STR_EPOCH_LOCKBOX;
model = "\z\addons\dayz_epoch\models\lockbox.p3d";
@@ -52,6 +125,50 @@ class LockboxStorage: Land_A_tent {
transportMaxMagazines = 50;
transportMaxWeapons = 20;
transportMaxBackpacks = 10;
- lockedClass = "LockboxStorageLocked";
- packedClass = "WeaponHolder_ItemLockbox";
+ lockedClass = "LockboxStorageWinterLocked";
+ packedClass = "WeaponHolder_ItemLockboxWinter";
+};
+class LockboxStorageWinterLocked: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = $STR_EPOCH_LOCKBOX_LOCKED;
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 800;
+ transportMaxMagazines = 0;
+ transportMaxWeapons = 0;
+ transportMaxBackpacks = 0;
+ offset[] = {0,1.5,0.5};
+ lockable = 2;
+ unlockedClass = "LockboxStorageWinter";
+ nounderground = 0;
+ requireplot = 0;
+ upgradeBuilding[] = {"LockboxStorageWinter2Locked",{"ItemToolbox","ItemSolder_DZE"},{{"equip_metal_sheet",2},{"ItemScrews",2},{"equip_scrapelectronics",2},{"equip_floppywire",2}}};
+};
+
+class LockboxStorageWinter2: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 1600;
+ transportMaxMagazines = 100;
+ transportMaxWeapons = 40;
+ transportMaxBackpacks = 20;
+ lockedClass = "LockboxStorageWinter2Locked";
+ packedClass = "WeaponHolder_ItemLockboxWinter2";
+};
+class LockboxStorageWinter2Locked: Land_A_tent {
+ vehicleClass = "DayZ Epoch Buildables";
+ displayName = "$STR_EPOCH_LOCKBOX_LOCKED+";
+ model = "\z\addons\dayz_epoch\models\lockbox.p3d";
+ destrType = "DestructNo";
+ armor = 1600;
+ transportMaxMagazines = 0;
+ transportMaxWeapons = 0;
+ transportMaxBackpacks = 0;
+ offset[] = {0,1.5,0.5};
+ lockable = 2;
+ unlockedClass = "LockboxStorageWinter2";
+ nounderground = 0;
+ requireplot = 0;
};
\ No newline at end of file
diff --git a/SQF/dayz_code/Configs/CfgVehicles/WeaponHolder.hpp b/SQF/dayz_code/Configs/CfgVehicles/WeaponHolder.hpp
index 47d6e72bb..4703b6ac8 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/WeaponHolder.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/WeaponHolder.hpp
@@ -350,8 +350,32 @@ class WeaponHolder_ItemVault: WeaponHolder {
seedItem = "ItemVault";
};
+class WeaponHolder_ItemVault2: WeaponHolder {
+ scope = 1;
+ displayName = "$STR_EPOCH_SAFE+";
+ seedItem = "ItemVault2";
+};
+
class WeaponHolder_ItemLockbox: WeaponHolder {
scope = 1;
displayName = $STR_EPOCH_LOCKBOX;
seedItem = "ItemLockbox";
+};
+
+class WeaponHolder_ItemLockbox2: WeaponHolder {
+ scope = 1;
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ seedItem = "ItemLockbox2";
+};
+
+class WeaponHolder_ItemLockboWinter: WeaponHolder {
+ scope = 1;
+ displayName = $STR_EPOCH_LOCKBOX;
+ seedItem = "ItemLockboxWinter";
+};
+
+class WeaponHolder_ItemLockboxWinter2: WeaponHolder {
+ scope = 1;
+ displayName = "$STR_EPOCH_LOCKBOX+";
+ seedItem = "ItemLockboxWinter2";
};
\ No newline at end of file
diff --git a/SQF/dayz_code/compile/fn_gearMenuChecks.sqf b/SQF/dayz_code/compile/fn_gearMenuChecks.sqf
index 54132b9e0..2100a8fc2 100644
--- a/SQF/dayz_code/compile/fn_gearMenuChecks.sqf
+++ b/SQF/dayz_code/compile/fn_gearMenuChecks.sqf
@@ -51,7 +51,7 @@ if ((vehicle player) == player) then {
waitUntil {((_this select 0) != dayz_lastSave) || {diag_tickTime >= ((_this select 1) + 1)}}; //waiting is required otherwise player_forceSave will reset DZE_GearCheckBypass
if (!dialog) then {
DZE_GearCheckBypass = true;
- if ((((_this select 2) in DZE_isNewStorage) || {(_this select 2) == "LockboxStorage"} || {(_this select 2) isKindOf "Land_A_tent"} || {(_this select 2) isKindOf "WeaponHolder"} || {((!alive (_this select 3)) && {(_this select 2) isKindOf "Man"})}) && {!(locked (_this select 3))}) then {
+ if ((((_this select 2) in DZE_isNewStorage) || {(_this select 2) isKindOf "Land_A_tent"} || {(_this select 2) isKindOf "WeaponHolder"} || {((!alive (_this select 3)) && {(_this select 2) isKindOf "Man"})}) && {!(locked (_this select 3))}) then {
Player action ["GEAR", (_this select 3)];
} else {
createGearDialog [player, "RscDisplayGear"];
diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf
index 5cb37dec3..16e695344 100644
--- a/SQF/dayz_code/compile/fn_selfActions.sqf
+++ b/SQF/dayz_code/compile/fn_selfActions.sqf
@@ -622,7 +622,7 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis
};
//Allow owner to unlock vault
- if (_isClose && !keypadCancel && {(_typeOfCursorTarget in DZE_LockableStorage) && {_characterID != "0"}}) then {
+ if (_isClose && !keypadCancel && {(_typeOfCursorTarget in DZE_LockedStorage) && {_characterID != "0"}}) then {
if (s_player_unlockvault < 0) then {
if (_typeOfCursorTarget in DZE_LockedStorage) then {
if ((_characterID == dayz_combination) || {_ownerID == _uid}) then {
@@ -706,17 +706,17 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis
};
// inplace upgrade tool
- if (((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base") || (_cursorTarget isKindOf "DZE_Housebase") || (_cursorTarget isKindOf "DZ_storage_base") || (_typeOfCursorTarget in DZE_isNewStorage)) && !(_typeOfCursorTarget in DZE_DisableUpgrade)) then {
+ if (((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base") || (_cursorTarget isKindOf "DZE_Housebase") || (_cursorTarget isKindOf "DZ_storage_base") || (_typeOfCursorTarget in DZE_UpgradableStorage)) && !(_typeOfCursorTarget in DZE_DisableUpgrade)) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
};
- if (s_player_upgrade_build < 0) then {
- _hasAccess = [player, _cursorTarget] call FNC_check_access;
- _upgrade = getArray (configFile >> "CfgVehicles" >> (typeOf _cursorTarget) >> "upgradeBuilding");
- if (((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3}) && {(count _upgrade) > 0}) then {
+ _upgrade = getArray (configFile >> "CfgVehicles" >> (typeOf _cursorTarget) >> "upgradeBuilding");
+ if ((s_player_upgrade_build < 0) && {(count _upgrade) > 0}) then {
+ _hasAccess = [player, _cursorTarget] call FNC_check_access;
+ if ((_hasAccess select 0) || (_hasAccess select 2) || (_hasAccess select 3) || (_typeOfCursorTarget in DZE_UpgradableStorage) || (_typeOfCursorTarget isKindOf "DZ_storage_base")) then {
s_player_lastTarget set [0,_cursorTarget];
s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_UPGRADE",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true];
};
@@ -822,8 +822,8 @@ if (!isNull _cursorTarget && {!_inVehicle && !_isPZombie && _canDo && player dis
player removeAction s_player_checkWallet;
s_player_checkWallet = -1;
};
- //if (_typeOfCursorTarget in DZE_MoneyStorageClasses && {!_isLocked} && {!(_typeOfCursorTarget in DZE_LockedStorage)}) then {
- if (!_isLocked && {_typeOfCursorTarget in DZE_MoneyStorageClasses}) then {
+
+ if (!_isLocked && {_typeOfCursorTarget in DZE_MoneyStorageClasses} && {!(_typeOfCursorTarget in DZE_LockedStorage)}) then {
if (s_bank_dialog < 0) then {
s_bank_dialog = player addAction [format["%1",localize "STR_CL_ZSC_ACCESS_BANK"],"\z\addons\dayz_code\actions\zsc\bankDialog.sqf",_cursorTarget,1,true,true];
};
diff --git a/SQF/dayz_code/compile/player_upgradeVehicle.sqf b/SQF/dayz_code/compile/player_upgradeVehicle.sqf
index 2890e7565..158d24a27 100644
--- a/SQF/dayz_code/compile/player_upgradeVehicle.sqf
+++ b/SQF/dayz_code/compile/player_upgradeVehicle.sqf
@@ -30,7 +30,7 @@ if (count (crew _vehicle) == 0) then {
_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "Upgrades" >> _upgrade);
if (!isNil "_upgrade" && {(count _upgrade) > 0}) then {
- closeDialog 0;
+ closeDialog 0;
_newclassname = _upgrade select 0;
_requirementsTools = _upgrade select 1;
@@ -57,10 +57,13 @@ if (count (crew _vehicle) == 0) then {
} count _requirementsWeapon;
if (_proceed) then {
- [player,20,true,(getPosATL player)] spawn player_alertZombies;
+ [player,(getPosATL player),20,"repair"] spawn fnc_alertZombies;
+
_finished = ["Medic",1] call fn_loopAction;
if (!_finished) exitWith {};
+
if (count (crew _vehicle) > 0) exitWith {format [localize "STR_CL_LOG_FAIL_PLAYER",_displayname] call dayz_rollingMessages;};
+ ["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
_temp_removed_array_mag = [];
_temp_removed_array_wep = [];
@@ -107,7 +110,7 @@ if (count (crew _vehicle) == 0) then {
// all parts removed proceed
if (_tobe_removed_total == _removed_total) then {
-
+ call player_forceSave;
_objectID = _vehicle getVariable ["ObjectID","0"];
_objectUID = _vehicle getVariable ["ObjectUID","0"];
@@ -125,7 +128,7 @@ if (count (crew _vehicle) == 0) then {
localize "STR_EPOCH_VEHUP_IN_PROGRESS" call dayz_rollingMessages;
[_newclassname,objNull] call fn_waitForObject;
dze_waiting = nil;
- PVDZE_veh_Upgrade = [_vehicle,[_dir,_location],_newclassname,true,_objectCharacterID,player,dayz_authKey];
+ PVDZE_veh_Upgrade = [_vehicle,[_dir,_location],_newclassname,_objectCharacterID,player,dayz_authKey];
publicVariableServer "PVDZE_veh_Upgrade";
//Wait for hive to finish spawning vehicle. Prevents dupe via player queuing multiple upgrades.
diff --git a/SQF/dayz_code/configVariables.sqf b/SQF/dayz_code/configVariables.sqf
index a3f11cbcc..fd6eb085d 100644
--- a/SQF/dayz_code/configVariables.sqf
+++ b/SQF/dayz_code/configVariables.sqf
@@ -181,7 +181,7 @@ ZSC_bankObjects = [""]; // Array of objects that are available for banking i.e:
ZSC_bankTraders = ["Functionary1_EP1_DZ"]; // Array of trader classnames that are available for banking (i.e Functionary1_EP1_DZ)
ZSC_limitOnBank = true; // Have a limit on the bank? (i.e true or false) limits the global banking to the number below.
ZSC_maxBankMoney = 500000; // Default limit for bank objects.
-DZE_MoneyStorageClasses = ["VaultStorage","LockboxStorage"]; // If using single currency this is an array of object classes players can store coins in.
+DZE_MoneyStorageClasses = ["VaultStorage","VaultStorage2","VaultStorageLocked","VaultStorage2Locked","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorage","LockboxStorage2","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","LockboxStorageWinter","LockboxStorageWinter2"]; // If using single currency this is an array of object classes players can store coins in. E.g.: ["GunRack_DZ","WoodCrate_DZ"]
ZSC_VehicleMoneyStorage = true; // Allow players to store money in vehicles. If vehicles are destroyed the money is also destroyed.
ZSC_defaultStorageMultiplier = 200; // Default magazine count for bank objects that don't have storage slots i.e: ["Suitcase","Info_Board_EP1","Laptop_EP1","SatPhone"]
ZSC_MaxMoneyInStorageMultiplier = 5000; // Multiplier for how much money a bank object can hold, example: 200 magazine slots in the object (or the default value above ^^) multiplied by the 5000 multiplier is 1 million coin storage. (200 * 5000 = 1,000,000 coins)
diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf
index 70010955e..ce2768a3d 100644
--- a/SQF/dayz_code/init/variables.sqf
+++ b/SQF/dayz_code/init/variables.sqf
@@ -1,7 +1,7 @@
/**************Variables Compiled on Both Client and Server**************/
Dayz_plants = ["Dayz_Plant1","Dayz_Plant2","Dayz_Plant3"];
-DayZ_SafeObjects = ["Base_Fire_DZ","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","GunRack2_DZ","FireBarrel_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","WoodenFence_1_foundation_DZ","WoodenFence_1_frame_DZ","WoodenFence_quaterpanel_DZ","WoodenFence_halfpanel_DZ","WoodenFence_thirdpanel_DZ","WoodenFence_1_DZ","WoodenFence_2_DZ","WoodenFence_3_DZ","WoodenFence_4_DZ","WoodenFence_5_DZ","WoodenFence_6_DZ","WoodenFence_7_DZ","MetalFence_1_foundation_DZ","MetalFence_1_frame_DZ","MetalFence_halfpanel_DZ","MetalFence_thirdpanel_DZ","MetalFence_1_DZ","MetalFence_2_DZ","MetalFence_3_DZ","MetalFence_4_DZ","MetalFence_5_DZ","MetalFence_6_DZ","MetalFence_7_DZ","WoodenGate_foundation_DZ","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ"];
+DayZ_SafeObjects = ["Base_Fire_DZ","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","VaultStorage2Locked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorageWinter2Locked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","GunRack2_DZ","FireBarrel_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","WoodenFence_1_foundation_DZ","WoodenFence_1_frame_DZ","WoodenFence_quaterpanel_DZ","WoodenFence_halfpanel_DZ","WoodenFence_thirdpanel_DZ","WoodenFence_1_DZ","WoodenFence_2_DZ","WoodenFence_3_DZ","WoodenFence_4_DZ","WoodenFence_5_DZ","WoodenFence_6_DZ","WoodenFence_7_DZ","MetalFence_1_foundation_DZ","MetalFence_1_frame_DZ","MetalFence_halfpanel_DZ","MetalFence_thirdpanel_DZ","MetalFence_1_DZ","MetalFence_2_DZ","MetalFence_3_DZ","MetalFence_4_DZ","MetalFence_5_DZ","MetalFence_6_DZ","MetalFence_7_DZ","WoodenGate_foundation_DZ","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ"];
DayZ_GearedObjects = ["Car","Helicopter","Motorcycle","Ship","TentStorage_base","StashSmall_base","StashMedium_base","Plane","Tank","VaultStorage","LockboxStorage","TentStorage","OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","GunRack_DZ","GunRack2_DZ","WoodCrate_DZ","WoodCrate2_DZ","Scaffolding_DZ","Generator_DZ"];
dayz_typedBags = ["emptyBloodBag","bloodTester","bloodBagANEG","bloodBagAPOS","bloodBagBNEG","bloodBagBPOS","bloodBagABNEG","bloodBagABPOS","bloodBagONEG","bloodBagOPOS","wholeBloodBagANEG","wholeBloodBagAPOS","wholeBloodBagBNEG","wholeBloodBagBPOS","wholeBloodBagABNEG","wholeBloodBagABPOS","wholeBloodBagONEG","wholeBloodBagOPOS"];
dayz_plant = ["pumpkin.p3d","p_helianthus.p3d","p_fiberplant_ep1.p3d"];
@@ -20,9 +20,9 @@ AllPlayers = ["Survivor_DZ","Survivor1_DZ","SurvivorW2_DZ","Survivor2_DZ","Snipe
dayz_activeInvites = [];
DZE_DoorsLocked = ["Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallDoorLocked_DZ","CinderWallDoorSmallLocked_DZ","WoodenGate_1_DZ","WoodenGate_2_DZ","WoodenGate_3_DZ","WoodenGate_4_DZ"];
DZE_isWreckBuilding = ["Land_wreck_cinder","Land_wood_wreck_quarter","Land_wood_wreck_floor","Land_wood_wreck_third","Land_wood_wreck_frame","Land_iron_vein_wreck","Land_silver_vein_wreck","Land_gold_vein_wreck","Land_ammo_supply_wreck"];
-DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
-DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
-DZE_isNewStorage = ["VaultStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ"];
+DZE_LockedStorage = ["VaultStorageLocked","VaultStorage2Locked","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorageWinterLocked","LockboxStorageWinter2Locked"];
+DZE_UnLockedStorage = ["VaultStorage","VaultStorage2","LockboxStorage","LockboxStorage2","LockboxStorageWinter","LockboxStorageWinter2"];
+DZE_isNewStorage = ["OutHouse_DZ","Wooden_shed_DZ","Wooden_shed2_DZ","WoodShack_DZ","WoodShack2_DZ","StorageShed_DZ","StorageShed2_DZ","GunRack_DZ","GunRack2_DZ","WoodCrate_DZ","WoodCrate2_DZ"];
DZE_isWreck = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1","Rubbish2"];
respawn_west_original = getMarkerPos "respawn_west"; //Prevent problems caused by cheaters moving respawn_west marker with setMarkerPos or deleteMarker
@@ -55,6 +55,7 @@ if (isServer) then {
// Epoch Additions
DZE_safeVehicle = ["ParachuteWest","ParachuteC"];
+ DZE_isLockedStorageUpgrade = ["VaultStorage2Locked","LockboxStorage2Locked","LockboxStorage2WinterLocked"];
};
/**************Variables Compiled on Clients Only**************/
@@ -275,9 +276,9 @@ if (!isDedicated) then {
DayZ_fuelSources = ["Land_Ind_TankSmall","Land_fuel_tank_big","Land_fuel_tank_stairs","Land_fuel_tank_stairs_ep1","Land_wagon_tanker","Land_fuelstation","Land_fuelstation_army","Land_smd_fuelstation_army","land_fuelstation_w","Land_benzina_schnell"];
dayz_plantOutput = ["FoodPumpkin","FoodSunFlowerSeed","ItemKiloHemp"];
dayz_plantTypes = ["","MAP_pumpkin","MAP_p_Helianthus","fiberplant"];
- DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
- DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
- DZE_REPLACE_WEAPONS = [["Crossbow","DMR","M14_EP1","SVD","SVD_CAMO"],["Crossbow_DZ","DMR_DZ","M14_CCO_DZ","SVD_DZ","SVD_Gh_DZ"]];
+ DZE_LockableStorage = ["VaultStorage","VaultStorage2","VaultStorageLocked","VaultStorage2Locked","LockboxStorageLocked","LockboxStorage2Locked","LockboxStorage","LockboxStorage2","LockboxStorageWinterLocked","LockboxStorageWinter2Locked","LockboxStorageWinter","LockboxStorageWinter2"];
+ DZE_UpgradableStorage = ["StorageShed_DZ","WoodShack_DZ","Wooden_shed_DZ","GunRack_DZ","WoodCrate_DZ","VaultStorageLocked","LockboxStorageLocked","LockboxStorageWinterLocked"];
+ DZE_REPLACE_WEAPONS = [["Crossbow","DMR","M14_EP1","SVD","SVD_CAMO","M4SPR","VSS_vintorez"],["Crossbow_DZ","DMR_DZ","M14_CCO_DZ","SVD_PSO1_DZ","SVD_PSO1_Gh_DZ","M4SPR_DZE","VSS_vintorez_DZE"]];
DZE_replaceMagazines = [["vil_20Rnd_762x51_G3"],["vil_20Rnd_762x51_G3"]];
DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Generator_DZ","DZ_buildables","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ","M240Nest_DZ"];
DZE_fueltruckarray = ["KamazRefuel_DZ","UralRefuel_TK_EP1_DZ","MtvrRefuel_DES_EP1_DZ","V3S_Refuel_TK_GUE_EP1_DZ","MtvrRefuel_DZ","KamazRefuel_DZE1","KamazRefuel_DZE2","KamazRefuel_DZE3","KamazRefuel_DZE4","T810A_ACR_REFUEL_DES_DZE","T810A_ACR_REFUEL_DES_DZE1","T810A_ACR_REFUEL_DES_DZE2","T810A_ACR_REFUEL_DES_DZE3","T810A_ACR_REFUEL_DES_DZE4","T810A_ACR_REFUEL_DZE","T810A_ACR_REFUEL_DZE1","T810A_ACR_REFUEL_DZE2","T810A_ACR_REFUEL_DZE3","T810A_ACR_REFUEL_DZE4"];
diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml
index 5f0c57bff..73b215593 100644
--- a/SQF/dayz_code/stringtable.xml
+++ b/SQF/dayz_code/stringtable.xml
@@ -24455,6 +24455,11 @@
Tresor
Сейф
+
+ Safe +
+ Tresor +
+ Сейф +
+
A placeable object that is used for very secure storage. Placing your safe will give you a 4 digit number that is used to open the safe.
Ein platzierbares Objekt für eine sichere Aufbewahrung. Der vierstellige Code zum Öffnen wird nach dem Aufstellen angezeigt.
@@ -24465,6 +24470,11 @@
Tresor
Закрытый сейф
+
+ Locked Safe +
+ Tresor +
+ Закрытый сейф +
+
Now entering %1
Du betrittst %1
@@ -25481,6 +25491,16 @@
Schließkassette
Запертый ящик
+
+ Lockbox +
+ Schließkassette +
+ Запираемый ящик +
+
+
+ Locked Lockbox +
+ Schließkassette +
+ Запертый ящик +
+
Semi secure lockbox.
Leicht gesicherte Schließkassette. Der Code besteht aus einer Farbe und 2 Ziffern.
@@ -30802,7 +30822,7 @@
You packed the %1 while it had %2 %3 in it, it has been transferred to your %3 total.
- %1 wurde mit %2 %3 eingepackt. Es wurde zu deinen %3 transferiert.
+ Beim Einpacken befanden sich noch %2 %3 in %1. Die %3 wurden dir übertragen.
Вы сложили %1 пока там имелось %2 %3 внутри, содержимое загрузилось в ваш %3
Vous avez emballé le %1 alors qu'il contenait %2 %3, il a été transféré au total de vos %3.
diff --git a/SQF/dayz_server/compile/server_handleSafeGear.sqf b/SQF/dayz_server/compile/server_handleSafeGear.sqf
index f16a7b5a4..c039b8d4d 100644
--- a/SQF/dayz_server/compile/server_handleSafeGear.sqf
+++ b/SQF/dayz_server/compile/server_handleSafeGear.sqf
@@ -123,10 +123,13 @@ call {
_holder addMagazineCargoGlobal [getText(configFile >> "CfgVehicles" >> _packedClass >> "seedItem"),1];
[_weapons,_magazines,_backpacks,_holder] call fn_addCargo;
if (Z_singleCurrency && {_coins > 0}) then {
+ private "_displayName";
+
+ _displayName = getText (configFile >> "CfgVehicles" >> _type >> "displayName");
_wealth = _player getVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),0];
_player setVariable [(["cashMoney","globalMoney"] select Z_persistentMoney),_wealth + _coins,true];
- RemoteMessage = ["systemChat",["STR_CL_ZSC_PACK_WARNING",_type,[_coins] call BIS_fnc_numberText,CurrencyName]];
+ RemoteMessage = ["systemChat",["STR_CL_ZSC_PACK_WARNING",_displayName,[_coins] call BIS_fnc_numberText,CurrencyName]];
(owner _player) publicVariableClient "RemoteMessage";
};
@@ -137,11 +140,11 @@ call {
if (_status < 4) then {
_type = call {
- if (_type == "VaultStorageLocked" || _type == "VaultStorage") exitwith {
+ if (_type in ["VaultStorageLocked","VaultStorage","VaultStorage2Locked","VaultStorage2"]) exitwith {
if (_ownerID == _playerUID) then {_lockCode = format["%1 - Owner",_lockCode];};
"Safe"
};
- if (_type == "LockboxStorage" || _type == "LockboxStorageLocked") exitwith {
+ if (_type in ["LockboxStorage","LockboxStorageLocked","LockboxStorage2","LockboxStorage2Locked"]) exitwith {
if (_ownerID == _playerUID) then {
_lockCode = _charID call fnc_lockCode;
_lockCode = format["%1 - Owner",_lockCode];
diff --git a/SQF/dayz_server/compile/server_publishVehicle3.sqf b/SQF/dayz_server/compile/server_publishVehicle3.sqf
index 9ada3970f..eba46e2a5 100644
--- a/SQF/dayz_server/compile/server_publishVehicle3.sqf
+++ b/SQF/dayz_server/compile/server_publishVehicle3.sqf
@@ -1,19 +1,18 @@
-private ["_activatingPlayer","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey","_result","_outcome","_oid","_objectID","_objectUID","_newobject","_weapons","_magazines","_backpacks","_clientKey","_exitReason","_playerUID"];
+private ["_inv","_coins","_activatingPlayer","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_result","_outcome","_oid","_objectID","_objectUID","_newobject","_weapons","_magazines","_backpacks","_clientKey","_exitReason","_playerUID"];
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
-if (count _this < 7) exitWith {
+if (count _this < 6) exitWith {
diag_log "Server_PublishVehicle3 error: Wrong parameter format";
dze_waiting = "fail";
- (owner (_this select 5)) publicVariableClient "dze_waiting";
+ (owner (_this select 4)) publicVariableClient "dze_waiting";
};
-_object = _this select 0;
-_worldspace = _this select 1;
-_class = _this select 2;
-_donotusekey = _this select 3;
-_keySelected = _this select 4;
-_activatingPlayer = _this select 5;
-_clientKey = _this select 6;
+_object = _this select 0;
+_worldspace = _this select 1;
+_class = _this select 2;
+_keySelected = _this select 3;
+_activatingPlayer = _this select 4;
+_clientKey = _this select 5;
_playerUID = getPlayerUID _activatingPlayer;
_characterID = _keySelected;
@@ -34,7 +33,7 @@ if (!(isClass(configFile >> "CfgVehicles" >> _class)) || isNull _object) exitWit
diag_log ("PUBLISH: Attempt " + str(_object));
#endif
-_dir = _worldspace select 0;
+_dir = _worldspace select 0;
_location = _worldspace select 1;
_uid = _worldspace call dayz_objectUID2;
@@ -44,8 +43,8 @@ diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
-_objectID = _object getVariable ["ObjectID","0"];
-_objectUID = _object getVariable ["ObjectUID","0"];
+_objectID = _object getVariable ["ObjectID","0"];
+_objectUID = _object getVariable ["ObjectUID","0"];
_location = [_object] call fnc_getPos;
// GET DB ID
@@ -72,12 +71,17 @@ if (_outcome != "PASS") then {
_weapons = getWeaponCargo _object;
_magazines = getMagazineCargo _object;
_backpacks = getBackpackCargo _object;
+ _inv = [_weapons,_magazines,_backpacks];
+
+ if (Z_SingleCurrency && ZSC_VehicleMoneyStorage) then {
+ _coins = _object getVariable ["cashMoney",0];
+ };
deleteVehicle _object;
[_objectID,_objectUID,_object] call server_deleteObjDirect;
uiSleep 3;
-
+
_newobject = _class createVehicle [0,0,0];
// switch var to new vehicle at this point.
@@ -98,6 +102,12 @@ if (_outcome != "PASS") then {
[_weapons,_magazines,_backpacks,_object] call fn_addCargo;
+ if (Z_SingleCurrency && ZSC_VehicleMoneyStorage && {_coins > 0}) then {
+ _object setVariable ["cashMoney",_coins,true];
+ _key = format["CHILD:309:%1:",_uid] + str _inv + ":" + str _coins + ":";
+ _key call server_hiveWrite;
+ };
+
_object call fnc_veh_ResetEH;
// for non JIP users this should make sure everyone has eventhandlers for vehicles.
PVDZE_veh_Init = _object;
diff --git a/SQF/dayz_server/compile/server_swapObject.sqf b/SQF/dayz_server/compile/server_swapObject.sqf
index 0d331dbc4..b3bbb9320 100644
--- a/SQF/dayz_server/compile/server_swapObject.sqf
+++ b/SQF/dayz_server/compile/server_swapObject.sqf
@@ -1,12 +1,12 @@
-private ["_class","_uid","_charID","_object","_worldspace","_key","_allowed","_obj","_inv","_objectID","_objectUID","_proceed","_activatingplayer","_clientKey","_exitReason","_playerUID","_weapons","_magazines","_backpacks"];
+private ["_gearClasses","_coins","_class","_uid","_charID","_object","_worldspace","_key","_allowed","_obj","_inv","_objectID","_objectUID","_proceed","_activatingplayer","_clientKey","_exitReason","_playerUID","_weapons","_magazines","_backpacks"];
if (count _this < 8) exitWith {diag_log format ["Server_SwapObject error: Wrong parameter format from player %1",_this select 5];};
-_charID = _this select 0;
-_object = _this select 1;
+_charID = _this select 0;
+_object = _this select 1;
_worldspace = _this select 2;
-_class = _this select 3;
-_obj = _this select 4;
+_class = _this select 3;
+_obj = _this select 4;
_activatingplayer = _this select 5;
_inv = _this select 6;
_clientKey = _this select 7;
@@ -20,18 +20,28 @@ if (_exitReason != "") exitWith {diag_log _exitReason};
if (!isNull(_obj)) then {
// Find objectID
- _objectID = _obj getVariable ["ObjectID","0"];
+ _objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
- _objectUID = _obj getVariable ["ObjectUID","0"];
+ _objectUID = _obj getVariable ["ObjectUID","0"];
if !(DZE_GodModeBase) then {
_obj removeAllMPEventHandlers "MPKilled";
};
- if (_class isKindOf "Land_A_tent" || {_class in DZE_isNewStorage}) then {
+ if ((_class isKindOf "Land_A_tent" || {_class in DZE_isNewStorage}) && !(_class in DZE_isLockedStorageUpgrade)) then {
_weapons = getWeaponCargo _obj;
_magazines = getMagazineCargo _obj;
_backpacks = getBackpackCargo _obj;
_inv = [_weapons,_magazines,_backpacks];
};
+ if (_class in DZE_isLockedStorageUpgrade) then {
+ _weapons = _obj getVariable ["WeaponCargo",[]];
+ _magazines = _obj getVariable ["MagazineCargo",[]];
+ _backpacks = _obj getVariable ["BackpackCargo",[]];
+ _inv = [_weapons,_magazines,_backpacks];
+ };
+ if (Z_SingleCurrency && {_class in DZE_MoneyStorageClasses}) then {
+ _coins = _obj getVariable ["cashMoney",0];
+ };
+
// Remove old object
deleteVehicle _obj;
@@ -42,7 +52,7 @@ if (isNull(_object)) then {
_proceed = false;
};
-if(_objectID == "0" && {_objectUID == "0"}) then {
+if (_objectID == "0" && {_objectUID == "0"}) then {
_proceed = false;
} else {
[_objectID,_objectUID,_obj] call server_deleteObjDirect;
@@ -68,8 +78,7 @@ _object setVariable ["OEMPos",(_worldspace select 1),true];
_uid = _worldspace call dayz_objectUID2;
//Send request
-//_key = str formatText["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0, _charID, _worldspace, [], [], 0,_uid];
-_key = str formatText["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0, _charID, _worldspace call AN_fnc_formatWorldspace, _inv, [], 0,_uid]; // Precise Base Building 1.0.5
+_key = str formatText["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0, _charID, _worldspace call AN_fnc_formatWorldspace, _inv, [], 0,_uid];
//diag_log ("HIVE: WRITE: "+ str(_key));
_key call server_hiveWrite;
@@ -83,13 +92,26 @@ if (DZE_GodModeBase && {!(_class in DZE_GodModeBaseExclude)}) then {
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
};
-if (count _inv > 0 && {_class in ["Wooden_shed2_DZ","WoodShack2_DZ","StorageShed2_DZ","GunRack2_DZ","WoodCrate2_DZ","VaultStorage2Locked","LockboxStorage2Locked","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4""DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4"]}) then {
+_gearClasses = ["Wooden_shed2_DZ","WoodShack2_DZ","StorageShed2_DZ","GunRack2_DZ","WoodCrate2_DZ","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4""DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4"];
+
+if (count _inv > 0 && {_class in _gearClasses}) then {
[_weapons,_magazines,_backpacks,_object] call fn_addCargo;
};
+if (_class in DZE_isLockedStorageUpgrade) then {
+ _object setVariable ["WeaponCargo",_weapons,false];
+ _object setVariable ["MagazineCargo",_magazines,false];
+ _object setVariable ["BackpackCargo",_backpacks,false];
+};
// Test disabling simulation server side on buildables only.
_object enableSimulation false;
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
+if (Z_SingleCurrency && {(_coins > 0) && {_class in DZE_MoneyStorageClasses}}) then {
+ _object setVariable ["cashMoney",_coins,true];
+ _key = format["CHILD:309:%1:",_uid] + str _inv + ":" + str _coins + ":";
+ _key call server_hiveWrite;
+};
+
diag_log format["PUBLISH: Player %1(%2) upgraded or downgraded object to %3 with UID:%4 @%5",(_activatingPlayer call fa_plr2str),_playerUID,_class,_uid,((_worldspace select 1) call fa_coor2str)];