Add upgradable safes and lockboxes

- Safes and lockboxes can be upgraded now.
- A winter lockbox version was added too. The current model and icon will be replaced later for the new lockbox.
- Calling Child 308 on the DB has no room for storing coins, this is why we need to update coins and gear after swaping the object. Same for upgrade vehicle
This commit is contained in:
AirwavesMan
2020-09-12 01:18:57 +02:00
parent cff5d38574
commit 673c705aeb
12 changed files with 344 additions and 56 deletions

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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";
};

View File

@@ -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"];

View File

@@ -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 {
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["<t color='#0059FF'>%1</t>",localize "STR_CL_ZSC_ACCESS_BANK"],"\z\addons\dayz_code\actions\zsc\bankDialog.sqf",_cursorTarget,1,true,true];
};

View File

@@ -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.

View File

@@ -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)

View File

@@ -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"];

View File

@@ -24455,6 +24455,11 @@
<German>Tresor</German>
<Russian>Сейф</Russian>
</Key>
<Key ID="STR_EPOCH_SAFE+">
<English>Safe +</English>
<German>Tresor +</German>
<Russian>Сейф +</Russian>
</Key>
<Key ID="STR_EPOCH_SAFE_DESC">
<English>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.</English>
<German>Ein platzierbares Objekt für eine sichere Aufbewahrung. Der vierstellige Code zum Öffnen wird nach dem Aufstellen angezeigt.</German>
@@ -24465,6 +24470,11 @@
<German>Tresor</German>
<Russian>Закрытый сейф</Russian>
</Key>
<Key ID="STR_EPOCH_SAFE_LOCKED+">
<English>Locked Safe +</English>
<German>Tresor +</German>
<Russian>Закрытый сейф +</Russian>
</Key>
<Key ID="STR_EPOCH_TRADER_ENTER">
<English>Now entering %1</English>
<German>Du betrittst %1</German>
@@ -25481,6 +25491,16 @@
<German>Schließkassette</German>
<Russian>Запертый ящик</Russian>
</Key>
<Key ID="STR_EPOCH_LOCKBOX+">
<English>Lockbox +</English>
<German>Schließkassette +</German>
<Russian>Запираемый ящик +</Russian>
</Key>
<Key ID="STR_EPOCH_LOCKBOX_LOCKED+">
<English>Locked Lockbox +</English>
<German>Schließkassette +</German>
<Russian>Запертый ящик +</Russian>
</Key>
<Key ID="STR_EPOCH_LOCKBOX_DESC">
<English>Semi secure lockbox.</English>
<German>Leicht gesicherte Schließkassette. Der Code besteht aus einer Farbe und 2 Ziffern.</German>
@@ -30802,7 +30822,7 @@
</Key>
<Key ID="STR_CL_ZSC_PACK_WARNING">
<English>You packed the %1 while it had %2 %3 in it, it has been transferred to your %3 total.</English>
<German>%1 wurde mit %2 %3 eingepackt. Es wurde zu deinen %3 transferiert.</German>
<German>Beim Einpacken befanden sich noch %2 %3 in %1. Die %3 wurden dir übertragen.</German>
<Russian>Вы сложили %1 пока там имелось %2 %3 внутри, содержимое загрузилось в ваш %3</Russian>
<French>Vous avez emballé le %1 alors qu'il contenait %2 %3, il a été transféré au total de vos %3.</French>
</Key>

View File

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

View File

@@ -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;
_keySelected = _this select 3;
_activatingPlayer = _this select 4;
_clientKey = _this select 5;
_playerUID = getPlayerUID _activatingPlayer;
_characterID = _keySelected;
@@ -72,6 +71,11 @@ 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;
@@ -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;

View File

@@ -1,4 +1,4 @@
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];};
@@ -26,12 +26,22 @@ if (!isNull(_obj)) then {
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;
@@ -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)];