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)];