diff --git a/SQF/dayz_code/CfgMagazines.hpp b/SQF/dayz_code/CfgMagazines.hpp index 50aed2307..6a9d22e62 100644 --- a/SQF/dayz_code/CfgMagazines.hpp +++ b/SQF/dayz_code/CfgMagazines.hpp @@ -849,7 +849,7 @@ class CfgMagazines { neednearby[] = {}; requiretools[] = {"ItemToolbox","ItemCrowbar"}; output[] = {{"storage_shed_kit",1}}; - input[] = {{"bulk_empty",1},{"ItemCorrugated",5},{"PartWoodPlywood",2},{"PartWoodLumber",5}}; + input[] = {{"bulk_empty",1},{"ItemCorrugated",5},{"PartWoodPlywood",2},{"PartWoodLumber",3}}; }; }; }; @@ -876,11 +876,21 @@ class CfgMagazines { { text = "Craft Rusty Gate"; script = "spawn player_craftItem1;"; - neednearby[] = {}; + neednearby[] = {"workshop"}; requiretools[] = {"ItemToolbox","ItemCrowbar"}; output[] = {{"rusty_gate_kit",1}}; input[] = {{"bulk_empty",1},{"ItemPole",6},{"PartGeneric",3},{"ItemTankTrap",1}}; }; + class Crafting2 + { + text = "Craft Metal Panel"; + script = "spawn player_craftItem2;"; + neednearby[] = {"workshop"}; + requiretools[] = {"ItemToolbox","ItemCrowbar"}; + output[] = {{"metal_panel_kit",1}}; + input[] = {{"bulk_empty",1},{"ItemPole",4},{"ItemTankTrap",4}}; + }; + }; }; @@ -1084,6 +1094,27 @@ class CfgMagazines { }; }; }; + + class metal_panel_kit: CA_Magazine + { + scope = 2; + count = 1; + type = 256; + displayName = "Metal Panel"; + descriptionShort = "Metal Panel: Strong metal wall used for base defence."; + model = "\z\addons\dayz_epoch\models\supply_crate.p3d"; + picture = "\z\addons\dayz_epoch\pictures\equip_wooden_crate_ca.paa"; + class ItemActions + { + class Build + { + text = "$STR_ACTIONS_BUILD"; + script = "spawn player_build;"; + require[] = {"ItemEtool","ItemToolbox"}; + create = "MetalPanel_DZ"; + }; + }; + }; class deer_stand_kit: CA_Magazine { scope = 2; @@ -1603,7 +1634,7 @@ class CfgMagazines { script = "spawn player_craftItem1;"; neednearby[] = {"sawmil"}; requiretools[] = {"ItemToolbox"}; - output[] = {{"PartWoodPlywood",1}}; + output[] = {{"bulk_empty",1}}; input[] = {{"PartWoodLumber",4},{"PartGeneric",1}}; }; diff --git a/SQF/dayz_code/actions/remove.sqf b/SQF/dayz_code/actions/remove.sqf index 66d6f8b0b..043e80dd6 100644 --- a/SQF/dayz_code/actions/remove.sqf +++ b/SQF/dayz_code/actions/remove.sqf @@ -128,10 +128,10 @@ while {_isOk} do { }; if(_brokenTool){ - if(_isRemovable) then { - _removeTool = ["ItemCrowbar","ItemToolbox"] call BIS_fnc_selectRandom; - } else { + if(_isWreck) then { _removeTool = "ItemToolbox"; + } else { + _removeTool = ["ItemCrowbar","ItemToolbox"] call BIS_fnc_selectRandom; }; if([player,_removeTool,1] call BIS_fnc_invRemove) then { cutText [format["Tool (%1) broke cannot remove %2.",_removeTool,_objType], "PLAIN DOWN"]; diff --git a/SQF/dayz_code/cfgVehicles.hpp b/SQF/dayz_code/cfgVehicles.hpp index e77e3e2dd..72159b4a9 100644 --- a/SQF/dayz_code/cfgVehicles.hpp +++ b/SQF/dayz_code/cfgVehicles.hpp @@ -2047,6 +2047,22 @@ class Citizen1; // External class reference constructioncount = 5; removeoutput[] = {{"ItemTankTrap",1}}; }; + // Metal Panel + class MetalPanel_DZ: BuiltItems + { + scope = 2; + destrType = "DestructTree"; + cost = 100; + offset[] = {0,1.5,0.5}; + model = "\ca\structures\wall\wall_indcnc2_3.p3d"; + icon = "\ca\data\data\Unknown_object.paa"; + mapSize = 2; + armor = 1000; + displayName = "Metal Panel"; + vehicleClass = "Fortifications"; + constructioncount = 10; + removeoutput[] = {{"metal_panel_kit",1}}; + }; class Generator_DZ: BuiltItems { scope = 2; diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf index 496580bb0..5aa5ff5dc 100644 --- a/SQF/dayz_code/compile/fn_selfActions.sqf +++ b/SQF/dayz_code/compile/fn_selfActions.sqf @@ -4,7 +4,7 @@ scriptName "Functions\misc\fn_selfActions.sqf"; - Function - [] call fnc_usec_selfActions; ************************************************************/ -private ["_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_canmove","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors"]; +private ["_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_canmove","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deleteBuild"]; if (TradeInprogress) exitWith {}; // Do not allow if any script is running. @@ -162,7 +162,16 @@ if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cu // diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID)); //Allow player to delete objects - if((_isDestructable or _isWreck or (_isRemovable and ("ItemCrowbar" in _itemsPlayer))) and _hasToolbox and _isAlive) then { + _player_deleteBuild = false; + if(_isAlive) then { + if(_isDestructable or _isWreck or _isRemovable) then { + if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then { + _player_deleteBuild = true; + }; + }; + }; + + if(_player_deleteBuild) then { if (s_player_deleteBuild < 0) then { s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, true, true, "", ""]; }; @@ -170,6 +179,7 @@ if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cu player removeAction s_player_deleteBuild; s_player_deleteBuild = -1; }; + // Allow Owner to lock and unlock vehicle if(_isVehicle and _isAlive and !_isMan and _ownerID != "0") then { diff --git a/Server Files/MPMissions/TEMPLATE/init.sqf b/Server Files/MPMissions/TEMPLATE/init.sqf index 6d2ce2c08..b387e5493 100644 --- a/Server Files/MPMissions/TEMPLATE/init.sqf +++ b/Server Files/MPMissions/TEMPLATE/init.sqf @@ -1,5 +1,6 @@ /* - INITILIZATION + For DayZ Epoch + // Addons Credits: */ startLoadingScreen ["","RscDisplayLoadCustom"]; cutText ["","BLACK OUT"]; @@ -24,8 +25,9 @@ MaxVehicleLimit = 50; // Default = 50 MaxDynamicDebris = 100; // Default = 100 dayz_MapArea = 4000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +dayz_fullMoonNights = true; -DZEdebug = true; //Load in compiled functions call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early)