From a4ade2308685bba6180ba2b1519855daad74ff21 Mon Sep 17 00:00:00 2001 From: Mikeeeyy Date: Tue, 29 Jul 2014 17:47:29 +0100 Subject: [PATCH 01/36] Update dayz_spaceInterrupt.sqf Changed starts at line 87 and end at line 93. Fix for glitching through doors. --- SQF/dayz_code/actions/dayz_spaceInterrupt.sqf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SQF/dayz_code/actions/dayz_spaceInterrupt.sqf b/SQF/dayz_code/actions/dayz_spaceInterrupt.sqf index 53de8087d..53666c72e 100644 --- a/SQF/dayz_code/actions/dayz_spaceInterrupt.sqf +++ b/SQF/dayz_code/actions/dayz_spaceInterrupt.sqf @@ -84,6 +84,14 @@ if (_dikCode in actionKeys "MoveLeft") exitWith {r_interrupt = true; if (DZE_Sur if (_dikCode in actionKeys "MoveRight") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};}; if (_dikCode in actionKeys "MoveBack") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};}; +//Prevent exploit of glitching through doors +if (_dikCode in actionKeys "Prone") then { + _doors = nearestObjects [player, DZE_DoorsLocked, 3]; + if (count _doors > 0) then { + _handled = true; + }; +}; + //Prevent exploit of drag body if ((_dikCode in actionKeys "Prone") && r_drag_sqf) exitWith { force_dropBody = true; }; if ((_dikCode in actionKeys "Crouch") && r_drag_sqf) exitWith { force_dropBody = true; }; From a8389ba2bc7f5c0584df895cf1f08af105cb7fa7 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Tue, 29 Jul 2014 14:26:48 -0400 Subject: [PATCH 02/36] Fix typo _intentory > _inventory _intentory should be _inventory --- SQF/dayz_server/system/server_monitor.sqf | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index 6e3d1a122..5612e5185 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -1,4 +1,4 @@ -private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_key","_vehLimit","_hiveResponse","_objectCount","_codeCount","_data","_status","_val","_traderid","_retrader","_traderData","_id","_lockable","_debugMarkerPosition","_vehicle_0","_bQty","_vQty","_BuildingQueue","_objectQueue","_superkey","_shutdown","_res","_hiveLoaded"]; +private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_inventory","_hitPoints","_fuel","_damage","_key","_vehLimit","_hiveResponse","_objectCount","_codeCount","_data","_status","_val","_traderid","_retrader","_traderData","_id","_lockable","_debugMarkerPosition","_vehicle_0","_bQty","_vQty","_BuildingQueue","_objectQueue","_superkey","_shutdown","_res","_hiveLoaded"]; dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); @@ -91,7 +91,7 @@ if (isServer && isNil "sm_done") then { _ownerID = _x select 3; _worldspace = _x select 4; - _intentory = _x select 5; + _inventory = _x select 5; _hitPoints = _x select 6; _fuel = _x select 7; _damage = _x select 8; @@ -176,17 +176,17 @@ if (isServer && isNil "sm_done") then { }; - if (count _intentory > 0) then { + if (count _inventory > 0) then { if (_type in DZE_LockedStorage) then { // Fill variables with loot - _object setVariable ["WeaponCargo", (_intentory select 0),true]; - _object setVariable ["MagazineCargo", (_intentory select 1),true]; - _object setVariable ["BackpackCargo", (_intentory select 2),true]; + _object setVariable ["WeaponCargo", (_inventory select 0),true]; + _object setVariable ["MagazineCargo", (_inventory select 1),true]; + _object setVariable ["BackpackCargo", (_inventory select 2),true]; } else { //Add weapons - _objWpnTypes = (_intentory select 0) select 0; - _objWpnQty = (_intentory select 0) select 1; + _objWpnTypes = (_inventory select 0) select 0; + _objWpnQty = (_inventory select 0) select 1; _countr = 0; { if(_x in (DZE_REPLACE_WEAPONS select 0)) then { @@ -200,8 +200,8 @@ if (isServer && isNil "sm_done") then { } count _objWpnTypes; //Add Magazines - _objWpnTypes = (_intentory select 1) select 0; - _objWpnQty = (_intentory select 1) select 1; + _objWpnTypes = (_inventory select 1) select 0; + _objWpnQty = (_inventory select 1) select 1; _countr = 0; { if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow @@ -214,8 +214,8 @@ if (isServer && isNil "sm_done") then { } count _objWpnTypes; //Add Backpacks - _objWpnTypes = (_intentory select 2) select 0; - _objWpnQty = (_intentory select 2) select 1; + _objWpnTypes = (_inventory select 2) select 0; + _objWpnQty = (_inventory select 2) select 1; _countr = 0; { _isOK = isClass(configFile >> "CfgVehicles" >> _x); From 0d5d0b9b8eebdcf5f68cc8daab421e918e9a22c5 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Tue, 29 Jul 2014 15:50:53 -0400 Subject: [PATCH 03/36] Change count back to forEach - fix empty safes See Kronzky's note: https://community.bistudio.com/wiki/count You can only use count to iterate through an array if all elements in the array are of the same data type. In this case you have an array with strings (type), arrays (worldspace, inventory, hitpoints) and numbers (fuel, ownerID). You need to use forEach instead. This error explains the problem people were having with safe inventories being empty when they open them after a restart: http://epochmod.com/forum/index.php?/topic/13423-safe-is-empty-after-restart-if-you-open-it/ https://github.com/vbawol/DayZ-Epoch/issues/1368 https://github.com/vbawol/DayZ-Epoch/issues/1422 --- SQF/dayz_server/system/server_monitor.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index 5612e5185..336bf1216 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -256,7 +256,7 @@ if (isServer && isNil "sm_done") then { //Monitor the object PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object]; }; - } count (_BuildingQueue + _objectQueue); + } forEach (_BuildingQueue + _objectQueue); // # END SPAWN OBJECTS # // preload server traders menu data into cache From 94aaf929f2805993a26099654c1698833db17d4f Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Tue, 29 Jul 2014 15:58:38 -0400 Subject: [PATCH 04/36] Update CHANGE LOG 1.0.5.2.txt --- CHANGE LOG 1.0.5.2.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index ca13496a2..1aa162c2f 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -19,6 +19,7 @@ [FIXED] Fire cleanup diag_log error in server_functions.sqf #1421 @ebaydayz [FIXED] NearestObjects position error in server_playerSync.sqf #1425 @ebaydayz [FIXED] Corrected ClassName type for CH53_DZE and BAF_Merlin_DZE. @Cinjun +[FIXED] Safes empty when opening after restart #1467 @ebaydayz [UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1 [UPDATED] .bat files updated in Config-Examples @Raziel23x From c464d17c765fccbbef9ee993535b74c789df5f24 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 15:51:18 -0700 Subject: [PATCH 05/36] Updated Steam Ports --- .../instance_11_Chernarus/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_11_Chernarus/config.cfg b/Server Files/Config-Examples/instance_11_Chernarus/config.cfg index 250d17102..70e26366d 100644 --- a/Server Files/Config-Examples/instance_11_Chernarus/config.cfg +++ b/Server Files/Config-Examples/instance_11_Chernarus/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Chernarus Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 0ff822200a0f373fecc2367dc0c5b9eef618e70d Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 15:59:48 -0700 Subject: [PATCH 06/36] Updated Steam Ports --- .../Config-Examples/instance_12_duala/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_12_duala/config.cfg b/Server Files/Config-Examples/instance_12_duala/config.cfg index 310962760..2def18afc 100644 --- a/Server Files/Config-Examples/instance_12_duala/config.cfg +++ b/Server Files/Config-Examples/instance_12_duala/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Isla Duala Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From de538db0a42a0fe4dda28eea68340e6ad083e3e2 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:00:16 -0700 Subject: [PATCH 07/36] Updated Steam Ports --- .../Config-Examples/instance_13_tavi/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_13_tavi/config.cfg b/Server Files/Config-Examples/instance_13_tavi/config.cfg index 54cf8060a..11aaafafd 100644 --- a/Server Files/Config-Examples/instance_13_tavi/config.cfg +++ b/Server Files/Config-Examples/instance_13_tavi/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Taviana Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 05bfcd9299a337537f532aa5e11af3d282295381 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:00:51 -0700 Subject: [PATCH 08/36] Updated Steam Ports --- .../instance_15_namalsk/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_15_namalsk/config.cfg b/Server Files/Config-Examples/instance_15_namalsk/config.cfg index 527ba3ed4..a6b2097d2 100644 --- a/Server Files/Config-Examples/instance_15_namalsk/config.cfg +++ b/Server Files/Config-Examples/instance_15_namalsk/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Namalsk Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 640a496316340c75f7460dca8bded2f4993609e9 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:01:12 -0700 Subject: [PATCH 09/36] Updated Steam Ports --- .../instance_16_panthera/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_16_panthera/config.cfg b/Server Files/Config-Examples/instance_16_panthera/config.cfg index 8c8e8e66e..b07894585 100644 --- a/Server Files/Config-Examples/instance_16_panthera/config.cfg +++ b/Server Files/Config-Examples/instance_16_panthera/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Panthera Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 383ec9a70d3d78c7ce234278ff5c7682efa3f1ee Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:01:32 -0700 Subject: [PATCH 10/36] Updated Steam Ports --- .../instance_18_sahrani/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_18_sahrani/config.cfg b/Server Files/Config-Examples/instance_18_sahrani/config.cfg index 63942f78a..13659decc 100644 --- a/Server Files/Config-Examples/instance_18_sahrani/config.cfg +++ b/Server Files/Config-Examples/instance_18_sahrani/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Sahrani Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From ed42233c925ceed54daa8e7413929fd4dfc33776 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:01:51 -0700 Subject: [PATCH 11/36] Update config.cfg --- .../Config-Examples/instance_19_poda/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_19_poda/config.cfg b/Server Files/Config-Examples/instance_19_poda/config.cfg index 77bf9fd9d..bd92a497a 100644 --- a/Server Files/Config-Examples/instance_19_poda/config.cfg +++ b/Server Files/Config-Examples/instance_19_poda/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Podagorsk Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 427b9efd0f27fcf617f129809bf93aaaab34d9d3 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:02:43 -0700 Subject: [PATCH 12/36] Updated Steam Ports --- .../instance_1_takistan/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_1_takistan/config.cfg b/Server Files/Config-Examples/instance_1_takistan/config.cfg index fe654ebd8..f1a3c4a80 100644 --- a/Server Files/Config-Examples/instance_1_takistan/config.cfg +++ b/Server Files/Config-Examples/instance_1_takistan/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Takistan Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From a340b1008490f9a75ec89e12c976c73c0eb6e2fc Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:03:08 -0700 Subject: [PATCH 13/36] Updated Steam Ports --- .../instance_20_fapovo/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_20_fapovo/config.cfg b/Server Files/Config-Examples/instance_20_fapovo/config.cfg index 9221c334f..7264e1850 100644 --- a/Server Files/Config-Examples/instance_20_fapovo/config.cfg +++ b/Server Files/Config-Examples/instance_20_fapovo/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Fapovo Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From c8ec9f545b7a5b8bebd191c0285173d7ed570d3b Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:03:31 -0700 Subject: [PATCH 14/36] Updated Steam Ports --- .../instance_21_caribou/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_21_caribou/config.cfg b/Server Files/Config-Examples/instance_21_caribou/config.cfg index 1ca7f137c..022bddd90 100644 --- a/Server Files/Config-Examples/instance_21_caribou/config.cfg +++ b/Server Files/Config-Examples/instance_21_caribou/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Caribou Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 329147da65c5037e25f656d7e09fc1e1400737d5 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:03:56 -0700 Subject: [PATCH 15/36] Updated Steam Ports --- .../instance_22_SMDsahrani/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_22_SMDsahrani/config.cfg b/Server Files/Config-Examples/instance_22_SMDsahrani/config.cfg index ed5897554..cbb238018 100644 --- a/Server Files/Config-Examples/instance_22_SMDsahrani/config.cfg +++ b/Server Files/Config-Examples/instance_22_SMDsahrani/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch SMD Sahrani Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 47ec14e9fa127ab0e9ec21d0be150e4fee4ddfcb Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:04:24 -0700 Subject: [PATCH 16/36] Updated Steam Ports --- .../Config-Examples/instance_24_Napf/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_24_Napf/config.cfg b/Server Files/Config-Examples/instance_24_Napf/config.cfg index f66e579c1..dde8bb799 100644 --- a/Server Files/Config-Examples/instance_24_Napf/config.cfg +++ b/Server Files/Config-Examples/instance_24_Napf/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Napf Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From f0d041a8b3714e9b3498f7580d2f28581466cdd4 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:04:52 -0700 Subject: [PATCH 17/36] Updated Steam Ports --- .../instance_25_sauerland/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_25_sauerland/config.cfg b/Server Files/Config-Examples/instance_25_sauerland/config.cfg index 4177adf19..e258c3caa 100644 --- a/Server Files/Config-Examples/instance_25_sauerland/config.cfg +++ b/Server Files/Config-Examples/instance_25_sauerland/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Sauerland Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From b6d8a8b6868d805d712724f2c9238b9223c5fcbf Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:05:21 -0700 Subject: [PATCH 18/36] Updated Steam Ports --- .../Config-Examples/instance_2_utes/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_2_utes/config.cfg b/Server Files/Config-Examples/instance_2_utes/config.cfg index 838315562..3deeb8f3e 100644 --- a/Server Files/Config-Examples/instance_2_utes/config.cfg +++ b/Server Files/Config-Examples/instance_2_utes/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Utes Server (1.0.5.2/125548/No Traders)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From a624c81653af183ce1145be581a1518d93fa97ba Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:05:51 -0700 Subject: [PATCH 19/36] Updated Steam Ports --- .../instance_3_shapur_baf/config.cfg | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Server Files/Config-Examples/instance_3_shapur_baf/config.cfg b/Server Files/Config-Examples/instance_3_shapur_baf/config.cfg index a5a5899ed..c09405f7e 100644 --- a/Server Files/Config-Examples/instance_3_shapur_baf/config.cfg +++ b/Server Files/Config-Examples/instance_3_shapur_baf/config.cfg @@ -1,14 +1,18 @@ hostName = "DayZ Epoch Shapur BAF Server (1.0.5.2/125548/No Traders)"; password = ""; passwordAdmin = "changeme"; -maxPlayers = 24; +maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 5ca6aab0c8307d94abb972bb349e7c67bd33926e Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:06:12 -0700 Subject: [PATCH 20/36] Updated Steam Ports --- .../instance_4_zargabad/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_4_zargabad/config.cfg b/Server Files/Config-Examples/instance_4_zargabad/config.cfg index 7f520c8f4..2eea290d6 100644 --- a/Server Files/Config-Examples/instance_4_zargabad/config.cfg +++ b/Server Files/Config-Examples/instance_4_zargabad/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Zargabad Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From b77d959572874ff4d1122c46df0dd6cb88d7245a Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:06:35 -0700 Subject: [PATCH 21/36] Updated Steam Ports --- .../instance_6_Dingor/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_6_Dingor/config.cfg b/Server Files/Config-Examples/instance_6_Dingor/config.cfg index 41637be8b..5481cc512 100644 --- a/Server Files/Config-Examples/instance_6_Dingor/config.cfg +++ b/Server Files/Config-Examples/instance_6_Dingor/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Dingor Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From e302195c439f81a1ded373e1b076a9389e69ec4b Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:06:58 -0700 Subject: [PATCH 22/36] Updated Steam Ports --- .../Config-Examples/instance_7_Lingor/config.cfg | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_7_Lingor/config.cfg b/Server Files/Config-Examples/instance_7_Lingor/config.cfg index 11dbb3ab5..872a0859c 100644 --- a/Server Files/Config-Examples/instance_7_Lingor/config.cfg +++ b/Server Files/Config-Examples/instance_7_Lingor/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch Lingor Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,11 +20,13 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; @@ -33,4 +39,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From 18d76b13c6ba2e4be2ce34c3ba083c1c839e0a47 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:07:22 -0700 Subject: [PATCH 23/36] Updated Steam Ports --- .../instance_8_ProvingGrounds_PMC/config.cfg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Server Files/Config-Examples/instance_8_ProvingGrounds_PMC/config.cfg b/Server Files/Config-Examples/instance_8_ProvingGrounds_PMC/config.cfg index 9a9fb4b1a..c8356e77b 100644 --- a/Server Files/Config-Examples/instance_8_ProvingGrounds_PMC/config.cfg +++ b/Server Files/Config-Examples/instance_8_ProvingGrounds_PMC/config.cfg @@ -2,13 +2,17 @@ hostName = "DayZ Epoch ProvingGrounds_PMC Server (1.0.5.2/125548)"; password = ""; passwordAdmin = "changeme"; maxPlayers = 50; +steamport = 8766; +steamqueryport = 27016; + +motd[] = {"DayZ Epoch","Have fun!"}; +motdInterval = 0; + logFile = "server_log.txt"; voteThreshold = 2; voteMissionPlayers = 3; -reportingIP = "arma2oapc.master.gamespy.com"; timeStampFormat = "short"; -motd[] = {"DayZ Epoch","Have fun!"}; -motdInterval = 0; + vonCodecQuality = 11; disableVoN = 0; kickduplicate = 1; @@ -16,15 +20,18 @@ verifySignatures = 2; persistent = 1; BattlEye = 1; doubleIdDetected = ""; + onUserConnected = ""; onUserDisconnected = ""; onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; +onHackedData = "kick (_this select 0)"; onDifferentData = ""; + regularCheck = ""; requiredBuild = 125548; requiredSecureId = 2; + class Missions { class Mission1 @@ -33,4 +40,4 @@ class Missions difficulty="veteran"; }; -}; \ No newline at end of file +}; From d4028a8b88b794e7e8f8707613309daa29b84977 Mon Sep 17 00:00:00 2001 From: Namindu Date: Wed, 30 Jul 2014 16:23:50 -0700 Subject: [PATCH 24/36] Update CHANGE LOG 1.0.5.2.txt --- CHANGE LOG 1.0.5.2.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index 1aa162c2f..1811c8933 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -23,6 +23,7 @@ [UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1 [UPDATED] .bat files updated in Config-Examples @Raziel23x +[UPDATED] Updated all config.cfg in Config-Examples, Added Default Steam Ports and Updated Layout. @Namindu [INFO] (EXTREMELY IMPORTANT) Server owners MUST update their required build and beta to 125548 [INFO] Server admins should add requiredSecureId = 2; to their server.cfg to prevent uid spoofing. From 0111a8f5807b091223f2237dfb8bc6b029b4a800 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Thu, 31 Jul 2014 13:14:10 -0400 Subject: [PATCH 25/36] Change count back to forEach You can not nest count loops inside other count loops: https://community.bistudio.com/wiki/Code_Optimisation#forEach_vs_count --- SQF/dayz_code/actions/maintain_area.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQF/dayz_code/actions/maintain_area.sqf b/SQF/dayz_code/actions/maintain_area.sqf index 6dc3f15d5..2f7db6f89 100644 --- a/SQF/dayz_code/actions/maintain_area.sqf +++ b/SQF/dayz_code/actions/maintain_area.sqf @@ -66,7 +66,7 @@ switch _option do { _countIn = _x select 1; _qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player; if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; }; - } count _requirements; + } forEach _requirements; if (_proceed) then { player playActionNow "Medic"; From 81729c26f454994cadacd2880b5bf93a5e14eb38 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Thu, 31 Jul 2014 13:33:51 -0400 Subject: [PATCH 26/36] Change count back to forEach Can not nest count loops inside other count loops: https://community.bistudio.com/wiki/Code_Optimisation#forEach_vs_count --- SQF/dayz_code/compile/fn_checkItems.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQF/dayz_code/compile/fn_checkItems.sqf b/SQF/dayz_code/compile/fn_checkItems.sqf index dd94496a4..958f62500 100644 --- a/SQF/dayz_code/compile/fn_checkItems.sqf +++ b/SQF/dayz_code/compile/fn_checkItems.sqf @@ -41,5 +41,5 @@ _hasItems = true; _textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName"); cutText [format[(localize "STR_EPOCH_ACTIONS_12"), _missingQty, _textMissing], "PLAIN DOWN"]; }; -} count _items; +} forEach _items; _hasItems From 445556ff12ffc0a7e110c5a2233dd00ed31e6bc8 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Thu, 31 Jul 2014 13:41:02 -0400 Subject: [PATCH 27/36] Change count back to forEach Can not nest count loops inside other count loops: https://community.bistudio.com/wiki/Code_Optimisation#forEach_vs_count --- SQF/dayz_code/compile/local_lights_init.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQF/dayz_code/compile/local_lights_init.sqf b/SQF/dayz_code/compile/local_lights_init.sqf index 53e3a263f..424b146c0 100644 --- a/SQF/dayz_code/compile/local_lights_init.sqf +++ b/SQF/dayz_code/compile/local_lights_init.sqf @@ -137,7 +137,7 @@ if(isServer)then{ }; }; sleep 0.001; - } count _missonLights; + } forEach _missonLights; if (_delQtyLights > 0) then { _qty = count _missonLights; diag_log (format["CLEANUP: Deleted %1 Lights out of %2",_delQtyLights,_qty]); From d19001d87b37a7d5fb742d6078f5780bfa2619b9 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Thu, 31 Jul 2014 13:45:26 -0400 Subject: [PATCH 28/36] Change count back to forEach Can not nest count loops inside other count loops: https://community.bistudio.com/wiki/Code_Optimisation#forEach_vs_count --- SQF/dayz_code/compile/player_spawnCheck.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQF/dayz_code/compile/player_spawnCheck.sqf b/SQF/dayz_code/compile/player_spawnCheck.sqf index e5d51fcb8..46bd824bc 100644 --- a/SQF/dayz_code/compile/player_spawnCheck.sqf +++ b/SQF/dayz_code/compile/player_spawnCheck.sqf @@ -150,4 +150,4 @@ if (_nearbyCount < 1) exitwith }; }; }; -} count _nearby; +} forEach _nearby; From 6d1d4c998aa8cb9ca9d8fe5bc34b1a054ea93364 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Thu, 31 Jul 2014 14:00:50 -0400 Subject: [PATCH 29/36] Change count back to forEach Can not nest count loops inside other count loops: https://community.bistudio.com/wiki/Code_Optimisation#forEach_vs_count --- SQF/dayz_server/init/server_functions.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index 382ee8909..e86ec45a2 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -863,7 +863,7 @@ server_spawnCleanLoot = { }; }; sleep 0.001; - } count _missionObjs; + } forEach _missionObjs; if (_delQty > 0) then { _qty = count _missionObjs; diag_log (format["CLEANUP: Deleted %1 Loot Piles out of %2",_delQty,_qty]); @@ -894,7 +894,7 @@ server_spawnCleanAnimals = { }; }; sleep 0.001; - } count _missonAnimals; + } forEach _missonAnimals; if (_delQtyAnimal > 0) then { _qty = count _missonAnimals; diag_log (format["CLEANUP: Deleted %1 Animals out of %2",_delQtyAnimal,_qty]); From a5e0f665e9771d500b3c56bd7a86ce19fd6ad52f Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Fri, 1 Aug 2014 13:56:49 -0400 Subject: [PATCH 30/36] Update CHANGE LOG 1.0.5.2.txt --- CHANGE LOG 1.0.5.2.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index 1811c8933..96f03d537 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -19,6 +19,7 @@ [FIXED] Fire cleanup diag_log error in server_functions.sqf #1421 @ebaydayz [FIXED] NearestObjects position error in server_playerSync.sqf #1425 @ebaydayz [FIXED] Corrected ClassName type for CH53_DZE and BAF_Merlin_DZE. @Cinjun +[FIXED] Several count reverted to forEach due to count loops not being nestable inside other count loops #1491-#1495 @ebaydayz [FIXED] Safes empty when opening after restart #1467 @ebaydayz [UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1 From e52790d8fb8d75010ae6448a0e6dabf0c8d329ae Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Fri, 1 Aug 2014 14:56:41 -0400 Subject: [PATCH 31/36] Update CHANGE LOG 1.0.5.2.txt --- CHANGE LOG 1.0.5.2.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index 96f03d537..9b22dee82 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -19,7 +19,7 @@ [FIXED] Fire cleanup diag_log error in server_functions.sqf #1421 @ebaydayz [FIXED] NearestObjects position error in server_playerSync.sqf #1425 @ebaydayz [FIXED] Corrected ClassName type for CH53_DZE and BAF_Merlin_DZE. @Cinjun -[FIXED] Several count reverted to forEach due to count loops not being nestable inside other count loops #1491-#1495 @ebaydayz +[FIXED] Some count reverted to forEach due to count loops not being nestable inside other count loops #1491-#1495 @ebaydayz [FIXED] Safes empty when opening after restart #1467 @ebaydayz [UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1 From 12400b1a2bdc22c9001c26bc827ce9f2b95adba5 Mon Sep 17 00:00:00 2001 From: ebaydayz Date: Fri, 1 Aug 2014 14:58:20 -0400 Subject: [PATCH 32/36] Update CHANGE LOG 1.0.5.2.txt --- CHANGE LOG 1.0.5.2.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index 9b22dee82..fea82d8c6 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -19,7 +19,7 @@ [FIXED] Fire cleanup diag_log error in server_functions.sqf #1421 @ebaydayz [FIXED] NearestObjects position error in server_playerSync.sqf #1425 @ebaydayz [FIXED] Corrected ClassName type for CH53_DZE and BAF_Merlin_DZE. @Cinjun -[FIXED] Some count reverted to forEach due to count loops not being nestable inside other count loops #1491-#1495 @ebaydayz +[FIXED] Some counts reverted to forEach - count loops can not be nested inside other count loops #1491-#1495 @ebaydayz [FIXED] Safes empty when opening after restart #1467 @ebaydayz [UPDATED] .hpp files updated in dayz_epoch_b CfgLootPos > CfgBuildingPos. @Uro1 From d4f978e461cd01b575e1ca0a808f3862adc224d0 Mon Sep 17 00:00:00 2001 From: "infiSTAR.de" Date: Tue, 5 Aug 2014 19:42:40 +0200 Subject: [PATCH 33/36] delete promptRName.sqf Delete promptRName.sqf - only used for hacks and not the mod anymore --- SQF/dayz_code/medical/publicEH/promptRName.sqf | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 SQF/dayz_code/medical/publicEH/promptRName.sqf diff --git a/SQF/dayz_code/medical/publicEH/promptRName.sqf b/SQF/dayz_code/medical/publicEH/promptRName.sqf deleted file mode 100644 index 5bace5ec3..000000000 --- a/SQF/dayz_code/medical/publicEH/promptRName.sqf +++ /dev/null @@ -1,6 +0,0 @@ -// promptRName.sqf - -private ["_unit"]; -_unit = _this select 0; - -call compile format ["server globalChat reviver_%1", _unit]; \ No newline at end of file From 361ab3a3e5b60a09fd84eb1ddd9a0a86f9c96d95 Mon Sep 17 00:00:00 2001 From: raymix Date: Thu, 7 Aug 2014 13:03:14 +0100 Subject: [PATCH 34/36] function based player_build --- SQF/dayz_code/actions/modular_build.sqf | 87 +++ SQF/dayz_code/actions/player_build2.sqf | 627 ------------------ .../actions/player_build_buildReq.sqf | 41 ++ .../actions/player_build_controls.sqf | 220 ++++++ .../actions/player_build_countNearby.sqf | 10 + SQF/dayz_code/actions/player_build_create.sqf | 38 ++ .../actions/player_build_getConfig.sqf | 38 ++ .../actions/player_build_needNearby.sqf | 45 ++ .../actions/player_build_plotCheck.sqf | 77 +++ .../actions/player_build_publish.sqf | 220 ++++++ SQF/dayz_code/actions/player_build_states.sqf | 34 + SQF/dayz_code/init/compiles.sqf | 24 +- SQF/dayz_code/init/variables.sqf | 10 +- 13 files changed, 834 insertions(+), 637 deletions(-) create mode 100644 SQF/dayz_code/actions/modular_build.sqf delete mode 100644 SQF/dayz_code/actions/player_build2.sqf create mode 100644 SQF/dayz_code/actions/player_build_buildReq.sqf create mode 100644 SQF/dayz_code/actions/player_build_controls.sqf create mode 100644 SQF/dayz_code/actions/player_build_countNearby.sqf create mode 100644 SQF/dayz_code/actions/player_build_create.sqf create mode 100644 SQF/dayz_code/actions/player_build_getConfig.sqf create mode 100644 SQF/dayz_code/actions/player_build_needNearby.sqf create mode 100644 SQF/dayz_code/actions/player_build_plotCheck.sqf create mode 100644 SQF/dayz_code/actions/player_build_publish.sqf create mode 100644 SQF/dayz_code/actions/player_build_states.sqf diff --git a/SQF/dayz_code/actions/modular_build.sqf b/SQF/dayz_code/actions/modular_build.sqf new file mode 100644 index 000000000..d80a20db8 --- /dev/null +++ b/SQF/dayz_code/actions/modular_build.sqf @@ -0,0 +1,87 @@ +//Check if building already in progress, exit if so. +if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; +DZE_ActionInProgress = true; + +private ["_itemConfig","_classname","_classnametmp","_require","_text","_ghost","_lockable","_requireplot","_isAllowedUnderGround","_offset","_isPole","_isLandFireDZ","_hasRequired","_hasrequireditem","_reason","_buildObject","_location1","_object","_objectHelper","_position","_controls","_cancel","_dir"]; + +/*Basic Defines*/ +DZE_Q = false; +DZE_Z = false; + +DZE_Q_alt = false; +DZE_Z_alt = false; + +DZE_Q_ctrl = false; +DZE_Z_ctrl = false; + +DZE_5 = false; +DZE_4 = false; +DZE_6 = false; + +DZE_F = false; + +DZE_cancelBuilding = false; + +call gear_ui_init; +closeDialog 1; + +DZE_buildItem = _this; //This is a magazine! It's global to allow access to it from outside functions + +//count nearby objects. Returns [_cnt] number +[] call player_build_countNearby; + +//Check illegal player states. Returns [_isFine] string +[] call player_build_states; + +//check for nearby requirements (campfire, workshop, fueltank). Returns [_reason] string +[] call player_build_needNearby; + +//check config files and gather info about item (if using custom buildables, make your own similar function instead). +_itemConfig = [] call player_build_getConfig; + +//define items collected from function +_classname = _itemConfig select 0; //string +_classnametmp = _itemConfig select 1; //string +_require = _itemConfig select 2; // array +_text = _itemConfig select 3; // string +_ghost = _itemConfig select 4; //string +_lockable = _itemConfig select 5; //int -- 0/1=No 2=lockbox, 3=combolock, 4=safe +_requireplot = _itemConfig select 6; //int +_isAllowedUnderGround = _itemConfig select 7; //int +_offset = _itemConfig select 8; //array +_isPole = _itemConfig select 9; //bool +_isLandFireDZ = _itemConfig select 10; //bool + +//Check for nearby plotpoles. Returns [_IsNearPlot,_nearestPole,_ownerID,_friendlies] [int,Obj,int,array] +[_isPole, _requireplot, _isLandFireDZ] call player_build_plotCheck; + +//Check for build requirements (missing tools and items). Returns [_hasrequireditem,_reason] [bool,string] +_hasRequired = [_require, _text, true, true] call player_build_buildReq; + +//define item collected from function +_hasrequireditem = _hasRequired select 0; //bool + +if (_hasrequireditem and DZE_ActionInProgress) then { + + //Create object that is attached to a player (i.e Ghost preview if available) + _buildObject = [_classname, _ghost, _offset, true] call player_build_create; + + //define items collected from function + _location1 = _buildObject select 0; //array + _object = _buildObject select 1; //Obj + _position = _buildObject select 2; // array + _objectHelper = _buildObject select 3; //Obj + + _controls = [_object, _isAllowedUnderGround, _location1, _position, _objectHelper] call player_build_controls; + + //define items collected from function + _cancel = _controls select 0; //bool + _reason = _controls select 1; //string + _position = _controls select 2; //array + _dir = _controls select 3; //int + + //Publish item to a database + if (!DZE_cancelBuilding) then { //double check that building was not cancelled externally + [_cancel, _position, _classnametmp,_isAllowedUnderGround, _text, _isPole, _lockable,_dir, _reason] call player_build_publish; + }; +}; diff --git a/SQF/dayz_code/actions/player_build2.sqf b/SQF/dayz_code/actions/player_build2.sqf deleted file mode 100644 index 339bfff29..000000000 --- a/SQF/dayz_code/actions/player_build2.sqf +++ /dev/null @@ -1,627 +0,0 @@ -/* - DayZ Base Building - Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. -*/ -private ["_helperColor","_objectHelper","_objectHelperDir","_objectHelperPos","_canDo", -"_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"]; - -if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; -DZE_ActionInProgress = true; - -// disallow building if too many objects are found within 30m -if((count ((getPosATL player) nearObjects ["All",30])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];}; - -_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; -_isWater = dayz_isSwimming; -_cancel = false; -_reason = ""; -_canBuildOnPlot = false; - -_vehicle = vehicle player; -_inVehicle = (_vehicle != player); -//snap -helperDetach = false; -_canDo = (!r_drag_sqf and !r_player_unconscious); - -DZE_Q = false; -DZE_Z = false; - -DZE_Q_alt = false; -DZE_Z_alt = false; - -DZE_Q_ctrl = false; -DZE_Z_ctrl = false; - -DZE_5 = false; -DZE_4 = false; -DZE_6 = false; -DZE_F = false; - -DZE_cancelBuilding = false; - -call gear_ui_init; -closeDialog 1; - -if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; -if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];}; -if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; -if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];}; - -_item = _this; - -// Need Near Requirements -_abort = false; -_reason = ""; - -_needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); - -{ - switch(_x) do{ - case "fire": - { - _distance = 3; - _isNear = {inflamed _x} count (getPosATL player nearObjects _distance); - if(_isNear == 0) then { - _abort = true; - _reason = "fire"; - }; - }; - case "workshop": - { - _distance = 3; - _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); - if(_isNear == 0) then { - _abort = true; - _reason = "workshop"; - }; - }; - case "fueltank": - { - _distance = 30; - _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); - if(_isNear == 0) then { - _abort = true; - _reason = "fuel tank"; - }; - }; - }; -} forEach _needNear; - - -if(_abort) exitWith { - cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"]; - DZE_ActionInProgress = false; -}; - -_classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); -_classnametmp = _classname; -_require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); -_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); -_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); - -_lockable = 0; -if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { - _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); -}; - -_requireplot = DZE_requireplot; -if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { - _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); -}; - -_isAllowedUnderGround = 1; -if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { - _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); -}; - -_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); -if((count _offset) <= 0) then { - _offset = [0,1.5,0]; -}; - -_isPole = (_classname == "Plastic_Pole_EP1_DZ"); -_isLandFireDZ = (_classname == "Land_Fire_DZ"); - -_distance = DZE_PlotPole select 0; -_needText = localize "str_epoch_player_246"; - -if(_isPole) then { - _distance = DZE_PlotPole select 1; -}; - -// check for near plot -_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; -_findNearestPole = []; - -{ - if (alive _x) then { - _findNearestPole set [(count _findNearestPole),_x]; - }; -} count _findNearestPoles; - -_IsNearPlot = count (_findNearestPole); - -// If item is plot pole && another one exists within 45m -if(_isPole && _IsNearPlot > 0) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; }; - -if(_IsNearPlot == 0) then { - - // Allow building of plot - if(_requireplot == 0 || _isLandFireDZ) then { - _canBuildOnPlot = true; - }; - -} else { - // Since there are plots nearby we check for ownership && then for friend status - - // check nearby plots ownership && then for friend status - _nearestPole = _findNearestPole select 0; - - // Find owner - _ownerID = _nearestPole getVariable ["CharacterID","0"]; - - // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID]; - - // check if friendly to owner - if(dayz_characterID == _ownerID) then { //Keep ownership - // owner can build anything within his plot except other plots - if(!_isPole) then { - _canBuildOnPlot = true; - }; - - } else { - // disallow building plot - if(!_isPole) then { - _friendlies = player getVariable ["friendlyTo",[]]; - // check if friendly to owner - if(_ownerID in _friendlies) then { - _canBuildOnPlot = true; - }; - }; - }; -}; - -// _message -if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; }; - -_missing = ""; -_hasrequireditem = true; -{ - _hastoolweapon = _x in weapons player; - if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); }; -} count _require; - -_hasbuilditem = _this in magazines player; -if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; - -if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; }; -if (_hasrequireditem) then { - - _location = [0,0,0]; - _isOk = true; - - // get inital players position - _location1 = getPosATL player; - _dir = getDir player; - - // if ghost preview available use that instead - if (_ghost != "") then { - _classname = _ghost; - }; - - _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; - //Build gizmo - _objectHelper = "Sign_sphere10cm_EP1" createVehicle _location; - _helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)"; - _objectHelper setobjecttexture [0,_helperColor]; - _objectHelper attachTo [player,_offset]; - _object attachTo [_objectHelper,[0,0,0]]; - _position = getPosATL _objectHelper; - - //cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"]; - - _objHDiff = 0; - -if (isClass (configFile >> "SnapBuilding" >> _classname)) then { - ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; -}; - - while {_isOk} do { - - _zheightchanged = false; - _zheightdirection = ""; - _rotate = false; - - if (DZE_Q) then { - DZE_Q = false; - _zheightdirection = "up"; - _zheightchanged = true; - }; - if (DZE_Z) then { - DZE_Z = false; - _zheightdirection = "down"; - _zheightchanged = true; - }; - if (DZE_Q_alt) then { - DZE_Q_alt = false; - _zheightdirection = "up_alt"; - _zheightchanged = true; - }; - if (DZE_Z_alt) then { - DZE_Z_alt = false; - _zheightdirection = "down_alt"; - _zheightchanged = true; - }; - if (DZE_Q_ctrl) then { - DZE_Q_ctrl = false; - _zheightdirection = "up_ctrl"; - _zheightchanged = true; - }; - if (DZE_Z_ctrl) then { - DZE_Z_ctrl = false; - _zheightdirection = "down_ctrl"; - _zheightchanged = true; - }; - if (DZE_4) then { - _rotate = true; - DZE_4 = false; - if (helperDetach) then { - _dir = -45; - } else { - _dir = 180; - }; - }; - if (DZE_6) then { - _rotate = true; - DZE_6 = false; - if (helperDetach) then { - _dir = 45; - } else { - _dir = 0; - }; - }; - - if (DZE_F and _canDo) then { - if (helperDetach) then { - _objectHelperDir = getDir _objectHelper; - _objectHelper attachTo [player]; - _objectHelper setDir _objectHelperDir-(getDir player); - helperDetach = false; - } else { - _objectHelperPos = getPosATL _objectHelper; - detach _objectHelper; - _objectHelper setPosATL _objectHelperPos; - _objectHelperDir = getDir _objectHelper; - _objectHelper setVelocity [0,0,0]; //fix sliding glitch - helperDetach = true; - }; - DZE_F = false; - }; - - if(_rotate) then { - if (helperDetach) then { - _objectHelperDir = getDir _objectHelper; - _objectHelperPos = getPosATL _objectHelper; - _objectHelper setDir _objectHelperDir+_dir; - _objectHelper setPosATL _objectHelperPos; - } else { - _objectHelper setDir _dir; - _objectHelper setPosATL _position; - //diag_log format["DEBUG Rotate BUILDING POS: %1", _position]; - }; - - }; - - if(_zheightchanged) then { - if (!helperDetach) then { - detach _objectHelper; - }; - - _position = getPosATL _objectHelper; - - if(_zheightdirection == "up") then { - _position set [2,((_position select 2)+0.1)]; - _objHDiff = _objHDiff + 0.1; - }; - if(_zheightdirection == "down") then { - _position set [2,((_position select 2)-0.1)]; - _objHDiff = _objHDiff - 0.1; - }; - - if(_zheightdirection == "up_alt") then { - _position set [2,((_position select 2)+1)]; - _objHDiff = _objHDiff + 1; - }; - if(_zheightdirection == "down_alt") then { - _position set [2,((_position select 2)-1)]; - _objHDiff = _objHDiff - 1; - }; - - if(_zheightdirection == "up_ctrl") then { - _position set [2,((_position select 2)+0.01)]; - _objHDiff = _objHDiff + 0.01; - }; - if(_zheightdirection == "down_ctrl") then { - _position set [2,((_position select 2)-0.01)]; - _objHDiff = _objHDiff - 0.01; - }; - - _objectHelper setDir (getDir _objectHelper); - - if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then { - _position set [2,0]; - }; - - _objectHelper setPosATL _position; - - //diag_log format["DEBUG Change BUILDING POS: %1", _position]; - - if (!helperDetach) then { - _objectHelper attachTo [player]; - }; - }; - - sleep 0.5; - - _location2 = getPosATL player; - - if(DZE_5) exitWith { - _isOk = false; - detach _object; - _dir = getDir _object; - _position = getPosATL _object; - //diag_log format["DEBUG BUILDING POS: %1", _position]; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - - if(_location1 distance _location2 > 10) exitWith { - _isOk = false; - _cancel = true; - _reason = "You've moved to far away from where you started building (within 10 meters)"; - detach _object; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - - if(_location1 distance _objectHelperPos > 10) exitWith { - _isOk = false; - _cancel = true; - _reason = "Object is placed to far away from where you started building (within 10 meters)"; - detach _object; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - - if(abs(_objHDiff) > 10) exitWith { - _isOk = false; - _cancel = true; - _reason = "Cannot move up or down more than 10 meters"; - detach _object; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - - if (player getVariable["combattimeout", 0] >= time) exitWith { - _isOk = false; - _cancel = true; - _reason = (localize "str_epoch_player_43"); - detach _object; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - - if (DZE_cancelBuilding) exitWith { - _isOk = false; - _cancel = true; - _reason = "Cancelled building."; - detach _object; - deleteVehicle _object; - detach _objectHelper; - deleteVehicle _objectHelper; - }; - }; - - //No building on roads unless toggled - if (!DZE_BuildOnRoads) then { - if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; }; - }; - - // No building in trader zones - if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; }; - - if(!_cancel) then { - - _classname = _classnametmp; - - // Start Build - _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; - - _tmpbuilt setdir _dir; - - // Get position based on object - _location = _position; - - if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { - _location set [2,0]; - }; - - _tmpbuilt setPosATL _location; - - - cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; - - _limit = 3; - - if (DZE_StaticConstructionCount > 0) then { - _limit = DZE_StaticConstructionCount; - } - else { - if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { - _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); - }; - }; - - _isOk = true; - _proceed = false; - _counter = 0; - - while {_isOk} do { - - [10,10] call dayz_HungerThirst; - player playActionNow "Medic"; - - _dis=20; - _sfx = "repair"; - [player,_sfx,0,false,_dis] call dayz_zombieSpeak; - [player,_dis,true,(getPosATL player)] spawn player_alertZombies; - - r_interrupt = false; - r_doLoop = true; - _started = false; - _finished = false; - - while {r_doLoop} do { - _animState = animationState player; - _isMedic = ["medic",_animState] call fnc_inString; - if (_isMedic) then { - _started = true; - }; - if (_started && !_isMedic) then { - r_doLoop = false; - _finished = true; - }; - if (r_interrupt || (player getVariable["combattimeout", 0] >= time)) then { - r_doLoop = false; - }; - if (DZE_cancelBuilding) exitWith { - r_doLoop = false; - }; - sleep 0.1; - }; - r_doLoop = false; - - - if(!_finished) exitWith { - _isOk = false; - _proceed = false; - }; - - if(_finished) then { - _counter = _counter + 1; - }; - - cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"]; - - if(_counter == _limit) exitWith { - _isOk = false; - _proceed = true; - }; - - }; - - if (_proceed) then { - - _num_removed = ([player,_item] call BIS_fnc_invRemove); - if(_num_removed == 1) then { - - cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; - - if (_isPole) then { - [] spawn player_plotPreview; - }; - - _tmpbuilt setVariable ["OEMPos",_location,true]; - - if(_lockable > 1) then { - - _combinationDisplay = ""; - - switch (_lockable) do { - - case 2: { // 2 lockbox - _combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue - _combination_2 = floor(random 10); - _combination_3 = floor(random 10); - _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; - dayz_combination = _combination; - if (_combination_1 == 100) then { - _combination_1_Display = "Red"; - }; - if (_combination_1 == 101) then { - _combination_1_Display = "Green"; - }; - if (_combination_1 == 102) then { - _combination_1_Display = "Blue"; - }; - _combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3]; - }; - - case 3: { // 3 combolock - _combination_1 = floor(random 10); - _combination_2 = floor(random 10); - _combination_3 = floor(random 10); - _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; - dayz_combination = _combination; - _combinationDisplay = _combination; - }; - - case 4: { // 4 safe - _combination_1 = floor(random 10); - _combination_2 = floor(random 10); - _combination_3 = floor(random 10); - _combination_4 = floor(random 10); - _combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4]; - dayz_combination = _combination; - _combinationDisplay = _combination; - }; - }; - - _tmpbuilt setVariable ["CharacterID",_combination,true]; - - - PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location],_classname]; - publicVariableServer "PVDZE_obj_Publish"; - - cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; - systemChat format [(localize "str_epoch_player_140"),_combinationDisplay,_text]; - - } else { - _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; - - // fire? - if(_tmpbuilt isKindOf "Land_Fire_DZ") then { - _tmpbuilt spawn player_fireMonitor; - } else { - PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname]; - publicVariableServer "PVDZE_obj_Publish"; - }; - }; - } else { - deleteVehicle _tmpbuilt; - cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; - }; - - } else { - r_interrupt = false; - if (vehicle player == player) then { - [objNull, player, rSwitchMove,""] call RE; - player playActionNow "stop"; - }; - - deleteVehicle _tmpbuilt; - - cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; - }; - - } else { - cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; - }; -}; - -DZE_ActionInProgress = false; diff --git a/SQF/dayz_code/actions/player_build_buildReq.sqf b/SQF/dayz_code/actions/player_build_buildReq.sqf new file mode 100644 index 000000000..4364c1094 --- /dev/null +++ b/SQF/dayz_code/actions/player_build_buildReq.sqf @@ -0,0 +1,41 @@ +//Check for build requirements like tools and if item is in magazines (check args to disable checks) +private ["_passArray","_missing","_hasrequireditem","_require","_hastoolweapon","_hasbuilditem","_checkMag","_checkTools","_reason"]; + +_require = _this select 0; //grab passed array of required items from item config function +_text = _this select 1; //grab text string passed from config +_checkMag = _this select 2; //check if item was built from magazine used in config file. Default is true. Set to false if building item from custom script +_checkTools = _this select 3; //same as above, default is true, set to false if you do not need item requirements. + +_missing = ""; +_hasrequireditem = true; +_reason = "ok"; +_passArray = []; + +{ + _hastoolweapon = _x in weapons player; //check each required item against weapons array on player + if(!_hastoolweapon) exitWith { //if tool was not found, get missing tool's name from config + _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); + }; +} count _require; //count each item in requirements array + +_hasbuilditem = DZE_buildItem in magazines player; + +if (_checkMag) then { //passed argument + if (!_hasbuilditem) exitWith { //End script if magazine was not found + DZE_ActionInProgress = false; + cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; + _reason = "missing item"; + }; +}; + +if (_checkTools) then { //passed argument + if (!_hasrequireditem) exitWith { //End script if required item/tool was not found + DZE_ActionInProgress = false; + cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; + _reason = "missing tools"; + }; +}; + +_passArray = [_hasrequireditem,_reason]; +_passArray //[bool,string] + diff --git a/SQF/dayz_code/actions/player_build_controls.sqf b/SQF/dayz_code/actions/player_build_controls.sqf new file mode 100644 index 000000000..6757f61db --- /dev/null +++ b/SQF/dayz_code/actions/player_build_controls.sqf @@ -0,0 +1,220 @@ +private ["_canDo","_passArray","_objHDiff","_isOk","_zheightchanged","_zheightdirection","_rotate","_dir","_object","_position","_isAllowedUnderGround","_location2","_cancel","_reason","_lastDir","_objectHelper","_objectHelperDir","_objectHelperPos"]; + +_object = _this select 0; +_isAllowedUnderGround = _this select 1; +_location1 = _this select 2; +_position = _this select 3; +_objectHelper = _this select 4; + +_passArray = []; + +_objHDiff = 0; +_isOk = true; +_cancel = false; +_reason = ""; +_dir = getDir player; //required to pass direction when building +helperDetach = false; +_canDo = (!r_drag_sqf and !r_player_unconscious); + +while {_isOk} do { + + _zheightchanged = false; + _zheightdirection = ""; + _rotate = false; + + if (DZE_Q) then { + DZE_Q = false; + _zheightdirection = "up"; + _zheightchanged = true; + }; + if (DZE_Z) then { + DZE_Z = false; + _zheightdirection = "down"; + _zheightchanged = true; + }; + if (DZE_Q_alt) then { + DZE_Q_alt = false; + _zheightdirection = "up_alt"; + _zheightchanged = true; + }; + if (DZE_Z_alt) then { + DZE_Z_alt = false; + _zheightdirection = "down_alt"; + _zheightchanged = true; + }; + if (DZE_Q_ctrl) then { + DZE_Q_ctrl = false; + _zheightdirection = "up_ctrl"; + _zheightchanged = true; + }; + if (DZE_Z_ctrl) then { + DZE_Z_ctrl = false; + _zheightdirection = "down_ctrl"; + _zheightchanged = true; + }; + if (DZE_4) then { + _rotate = true; + DZE_4 = false; + if (helperDetach) then { + _dir = -45; + } else { + _dir = 180; + }; + }; + if (DZE_6) then { + _rotate = true; + DZE_6 = false; + if (helperDetach) then { + _dir = 45; + } else { + _dir = 0; + }; + }; + + if (DZE_F and _canDo) then { + if (helperDetach) then { + _objectHelperDir = getDir _objectHelper; + _objectHelper attachTo [player]; + _objectHelper setDir _objectHelperDir-(getDir player); + helperDetach = false; + } else { + _objectHelperPos = getPosATL _objectHelper; + detach _objectHelper; + _objectHelper setPosATL _objectHelperPos; + _objectHelperDir = getDir _objectHelper; + _objectHelper setVelocity [0,0,0]; //fix sliding glitch + helperDetach = true; + }; + DZE_F = false; + }; + + if(_rotate) then { + if (helperDetach) then { + _objectHelperDir = getDir _objectHelper; + _objectHelperPos = getPosATL _objectHelper; + _objectHelper setDir _objectHelperDir+_dir; + _objectHelper setPosATL _objectHelperPos; + } else { + _objectHelper setDir _dir; + _objectHelper setPosATL _position; + }; + }; + + if(_zheightchanged) then { + if (!helperDetach) then { + detach _objectHelper; + }; + + _position = getPosATL _objectHelper; + + if(_zheightdirection == "up") then { + _position set [2,((_position select 2)+0.1)]; + _objHDiff = _objHDiff + 0.1; + }; + if(_zheightdirection == "down") then { + _position set [2,((_position select 2)-0.1)]; + _objHDiff = _objHDiff - 0.1; + }; + + if(_zheightdirection == "up_alt") then { + _position set [2,((_position select 2)+1)]; + _objHDiff = _objHDiff + 1; + }; + if(_zheightdirection == "down_alt") then { + _position set [2,((_position select 2)-1)]; + _objHDiff = _objHDiff - 1; + }; + + if(_zheightdirection == "up_ctrl") then { + _position set [2,((_position select 2)+0.01)]; + _objHDiff = _objHDiff + 0.01; + }; + if(_zheightdirection == "down_ctrl") then { + _position set [2,((_position select 2)-0.01)]; + _objHDiff = _objHDiff - 0.01; + }; + + _objectHelper setDir (getDir _objectHelper); + + if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then { + _position set [2,0]; + }; + + _objectHelper setPosATL _position; + + //diag_log format["DEBUG Change BUILDING POS: %1", _position]; + + if (!helperDetach) then { + _objectHelper attachTo [player]; + }; + }; + + sleep 0.5; + + _location2 = getPosATL player; + _objectHelperPos = getPosATL _objectHelper; + + if(DZE_5) exitWith { + _isOk = false; + detach _object; + _dir = getDir _object; + _position = getPosATL _object; + //diag_log format["DEBUG BUILDING POS: %1", _position]; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; + + if(_location1 distance _location2 > 10) exitWith { + _isOk = false; + _cancel = true; + _reason = "You've moved to far away from where you started building (within 10 meters)"; + detach _object; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; + + if(_location1 distance _objectHelperPos > 10) exitWith { + _isOk = false; + _cancel = true; + _reason = "Object is placed to far away from where you started building (within 10 meters)"; + detach _object; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; + + if(abs(_objHDiff) > 10) exitWith { + _isOk = false; + _cancel = true; + _reason = "Cannot move up or down more than 10 meters"; + detach _object; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; + + if (player getVariable["combattimeout", 0] >= time) exitWith { + _isOk = false; + _cancel = true; + _reason = (localize "str_epoch_player_43"); + detach _object; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; + + if (DZE_cancelBuilding) exitWith { + _isOk = false; + _cancel = true; + _reason = "Cancelled building."; + detach _object; + deleteVehicle _object; + detach _objectHelper; + deleteVehicle _objectHelper; + }; +}; + +_passArray = [_cancel,_reason,_position,_dir]; +_passArray //[bool,string,array,int] \ No newline at end of file diff --git a/SQF/dayz_code/actions/player_build_countNearby.sqf b/SQF/dayz_code/actions/player_build_countNearby.sqf new file mode 100644 index 000000000..c4949068f --- /dev/null +++ b/SQF/dayz_code/actions/player_build_countNearby.sqf @@ -0,0 +1,10 @@ +// disallow building if too many objects are found within 30m +private ["_cnt"]; + +_cnt = count ((getPosATL player) nearObjects ["All",30]); +if (_cnt >= DZE_BuildingLimit) exitWith { //end script if too many objects nearby + DZE_ActionInProgress = false; + cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"]; +}; + +_cnt //returns amount of total objects found nearby diff --git a/SQF/dayz_code/actions/player_build_create.sqf b/SQF/dayz_code/actions/player_build_create.sqf new file mode 100644 index 000000000..008312889 --- /dev/null +++ b/SQF/dayz_code/actions/player_build_create.sqf @@ -0,0 +1,38 @@ +//create an object for default build system style +private ["_passArray","_classname","_enableGhost","_ghost","_location","_location1","_dir","_object","_position","_objectHelper","_helperColor"]; + +_classname = _this select 0; +_ghost = _this select 1; +_offset = _this select 2; +_enableGhost = _this select 3; //pass false trough args if not using ghost preview + +_passArray = []; +_location = [0,0,0]; //create object in debug zone first +_objectHelper = objNull; + +// get inital players position +_location1 = getPosATL player; + +// if enabled, use ghost preview where available +if (_enableGhost) then { + if (_ghost != "") then { + _classname = _ghost; + }; +}; + +_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //object preview, not an actual object that will be built + +_objectHelper = "Sign_sphere10cm_EP1" createVehicle _location; +_helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)"; +_objectHelper setobjecttexture [0,_helperColor]; +_objectHelper attachTo [player,_offset]; +_object attachTo [_objectHelper,[0,0,0]]; +_position = getPosATL _objectHelper; + +if (isClass (configFile >> "SnapBuilding" >> _classname)) then { + ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; +}; + +_passArray = [_location1,_object,_position,_objectHelper]; +_passArray //[array,obj,array] + diff --git a/SQF/dayz_code/actions/player_build_getConfig.sqf b/SQF/dayz_code/actions/player_build_getConfig.sqf new file mode 100644 index 000000000..b27f01004 --- /dev/null +++ b/SQF/dayz_code/actions/player_build_getConfig.sqf @@ -0,0 +1,38 @@ +//Build an array of various variables gathered about build object from config files, only applies to legit buildable objects +private ["_passArray","_classname","_classnametmp","_require","_text","_ghost","_lockable","_requireplot","_isAllowedUnderGround","_offset","_isPole","_isLandFireDZ"]; + +_passArray = []; + +_classname = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "create"); +_classnametmp = _classname; +_require = getArray (configFile >> "cfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "require"); +_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); +_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); + +_lockable = 0; //default define if lockable not found in config file below +if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { //find out if item is lockable object + _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); // 2=lockbox, 3=combolock, 4=safe +}; + +_requireplot = DZE_requireplot; //check for plotpole requirements defined in init.sqf +if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { + _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); +}; + +_isAllowedUnderGround = 1; //check if allowed to build under terrain +if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { + _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); +}; + +_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); //check default distance offset, define if does not exist +if((count _offset) <= 0) then { + _offset = [0,1.5,0]; +}; + +_isPole = (_classname == "Plastic_Pole_EP1_DZ"); //check if item is plotpole +_isLandFireDZ = (_classname == "Land_Fire_DZ"); //check if item is campfire + +_passArray = [_classname,_classnametmp,_require,_text,_ghost,_lockable,_requireplot,_isAllowedUnderGround,_offset,_isPole,_isLandFireDZ]; //create new array to pass to caller + +_passArray //[string,string,array,string,string,int,int,int,array,bool,bool] + diff --git a/SQF/dayz_code/actions/player_build_needNearby.sqf b/SQF/dayz_code/actions/player_build_needNearby.sqf new file mode 100644 index 000000000..e6eb22bd1 --- /dev/null +++ b/SQF/dayz_code/actions/player_build_needNearby.sqf @@ -0,0 +1,45 @@ +//disallow building if required items (defined in config) are not found nearby +private ["_abort","_reason","_distance","_needNear","_isNear"]; + +_abort = false; //do not abort by default +_reason = ""; // define to avoid RPT errors +_needNear = getArray (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "neednearby"); + +{ + switch(_x) do{ + case "fire": + { + _distance = 3; + _isNear = {inflamed _x} count (getPosATL player nearObjects _distance); + if(_isNear == 0) then { + _abort = true; + _reason = "fire"; + }; + }; + case "workshop": + { + _distance = 3; + _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); + if(_isNear == 0) then { + _abort = true; + _reason = "workshop"; + }; + }; + case "fueltank": + { + _distance = 30; + _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); + if(_isNear == 0) then { + _abort = true; + _reason = "fuel tank"; + }; + }; + }; +} forEach _needNear; + +if (_abort) exitWith { + cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"]; + DZE_ActionInProgress = false; +}; + +_reason //return string to a caller diff --git a/SQF/dayz_code/actions/player_build_plotCheck.sqf b/SQF/dayz_code/actions/player_build_plotCheck.sqf new file mode 100644 index 000000000..8dc87c45b --- /dev/null +++ b/SQF/dayz_code/actions/player_build_plotCheck.sqf @@ -0,0 +1,77 @@ +//Check if nearby plotpoles exists +private ["_passArray","_isPole","_needText","_distance","_findNearestPoles","_findNearestPole","_IsNearPlot","_requireplot","_isLandFireDZ","_canBuildOnPlot","_nearestPole","_ownerID","_friendlies"]; + +//defines +_isPole = _this select 0; +_requireplot = _this select 1; +_isLandFireDZ = _this select 2; + +_needText = localize "str_epoch_player_246"; //text for when requirements not met +_canBuildOnPlot = false; +_nearestPole = objNull; +_ownerID = 0; +_friendlies = []; +_passArray = []; + +if(_isPole) then { //check if object is plotpole and adjust distance accordingly + _distance = DZE_PlotPole select 1; +} else { + _distance = DZE_PlotPole select 0; +}; + +// check for near plotpoles +_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; //create an array of nearby objects that are plotpoles, nearest will always be first in array +_findNearestPole = []; //must define an empty array to avoid problems + +{ + if (alive _x) then { //only look for non-destroyed plotpoles + _findNearestPole set [(count _findNearestPole),_x]; //build an array of live plotpoles found nearby + }; +} count _findNearestPoles; //count each item in previously created array of nearby plotpoles + +_IsNearPlot = count (_findNearestPole); //count our new array of non-destroyed plotpoles. Empty array will return 0 + +// End script early if item is plot pole and another one exists within defined radius +if(_isPole && _IsNearPlot > 0) exitWith { + DZE_ActionInProgress = false; + cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; +}; + +if(_IsNearPlot == 0) then { //No live plotpoles were found nearby + // Allow building of plot + if(_requireplot == 0 || _isLandFireDZ) then { + _canBuildOnPlot = true; + }; +} else { + // Since there are plots nearby we check for ownership && then for friend status + // check nearby plots ownership && then for friend status + _nearestPole = _findNearestPole select 0; //nearest is always first in array when using nearestObjects check + + // Find owner + _ownerID = _nearestPole getVariable ["CharacterID","0"]; + + // check if friendly to owner + if(dayz_characterID == _ownerID) then { //Keep ownership + // owner can build anything within his plot except other plots + if(!_isPole) then { + _canBuildOnPlot = true; + }; + } else { + // disallow building plot + if(!_isPole) then { + _friendlies = player getVariable ["friendlyTo",[]]; + // check if friendly to owner + if(_ownerID in _friendlies) then { + _canBuildOnPlot = true; + }; + }; + }; +}; + +if(!_canBuildOnPlot) exitWith { //end script if requirements were not met + DZE_ActionInProgress = false; + cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; +}; + +_passArray = [_IsNearPlot,_nearestPole,_ownerID,_friendlies]; //create new array and pass it to caller +_passArray //[int,Obj,int,array] diff --git a/SQF/dayz_code/actions/player_build_publish.sqf b/SQF/dayz_code/actions/player_build_publish.sqf new file mode 100644 index 000000000..dcff372ff --- /dev/null +++ b/SQF/dayz_code/actions/player_build_publish.sqf @@ -0,0 +1,220 @@ +private ["_passArray","_cancel","_position","_reason","_classnametmp","_classname","_tmpbuilt","_dir","_location","_text","_limit","_isOk","_proceed","_counter","_dis","_sfx","_started","_finished","_animState","_isMedic","_num_removed","_lockable","_combinationDisplay","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display"]; + +//defines +_cancel = _this select 0; +_position = _this select 1; +_classnametmp = _this select 2; +_isAllowedUnderGround = _this select 3; +_text = _this select 4; +_isPole = _this select 5; +_lockable = _this select 6; +_dir = _this select 7; +_reason = _this select 8; + +_passArray = []; + +_isOk = true; +_proceed = false; +_counter = 0; +_location = [0,0,0]; + +//No building on roads unless toggled +if (!DZE_BuildOnRoads) then { + if (isOnRoad _position) then { + _cancel = true; + _reason = "Cannot build on a road."; + }; +}; + +// No building in trader zones +if(!canbuild) then { + _cancel = true; + _reason = "Cannot build in a city."; +}; + +if(!_cancel) then { + + _classname = _classnametmp; + + // Start Build + _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //create actual object that will be published to database + + _tmpbuilt setdir _dir; //set direction inherited from passed args from control + + // Get position based on object + _location = _position; + + if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { //check Z axis if not allowed to build underground + _location set [2,0]; //reset Z axis to zero (above terrain) + }; + + _tmpbuilt setPosATL _location; //update position passed from args or previous if statement + + + cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; + + _limit = 3; //times it takes to build by default + + if (DZE_StaticConstructionCount > 0) then { //if count is manually overridden inside init.sqf, use that instead, else use limits configured in config files + _limit = DZE_StaticConstructionCount; + } + else { + if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { + _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); + }; + }; + + while {_isOk} do { //publish phase + + [10,10] call dayz_HungerThirst; + player playActionNow "Medic"; //animation + + //alert zombies + _dis=20; + _sfx = "repair"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + + r_interrupt = false; + r_doLoop = true; + _started = false; + _finished = false; + + while {r_doLoop} do { //while player is not interrupted, go trough animations + _animState = animationState player; + _isMedic = ["medic",_animState] call fnc_inString; + if (_isMedic) then { + _started = true; + }; + if (_started && !_isMedic) then { + r_doLoop = false; + _finished = true; + }; + if (r_interrupt || (player getVariable["combattimeout", 0] >= time)) then { + r_doLoop = false; + }; + if (DZE_cancelBuilding) exitWith { + r_doLoop = false; + }; + sleep 0.1; + }; + r_doLoop = false; + + + if(!_finished) exitWith { //exit if interrupted + _isOk = false; + _proceed = false; + }; + + if(_finished) then { //if animation finished, add to build count + _counter = _counter + 1; + }; + + cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"]; //report how many steps are done out of total limit + + if(_counter == _limit) exitWith { //if all steps done proceed with next step, otherwise cancel publish + _isOk = false; + _proceed = true; + }; + + }; + + if (_proceed) then { + + _num_removed = ([player,DZE_buildItem] call BIS_fnc_invRemove); //remove item's magazine from inventory + if(_num_removed == 1) then { + + cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; + + if (_isPole) then { //if item was a plotpole, build a visual radius around it + [] spawn player_plotPreview; + }; + + _tmpbuilt setVariable ["OEMPos",_location,true]; //store original location as a variable + + if(_lockable > 1) then { //if item has code lock on it + + _combinationDisplay = ""; //define new display + + switch (_lockable) do { //generate random combinations depending on item type + + case 2: { // 2 lockbox + _combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue + _combination_2 = floor(random 10); + _combination_3 = floor(random 10); + _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; + dayz_combination = _combination; + if (_combination_1 == 100) then { + _combination_1_Display = "Red"; + }; + if (_combination_1 == 101) then { + _combination_1_Display = "Green"; + }; + if (_combination_1 == 102) then { + _combination_1_Display = "Blue"; + }; + _combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3]; + }; + + case 3: { // 3 combolock + _combination_1 = floor(random 10); + _combination_2 = floor(random 10); + _combination_3 = floor(random 10); + _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; + dayz_combination = _combination; + _combinationDisplay = _combination; + }; + + case 4: { // 4 safe + _combination_1 = floor(random 10); + _combination_2 = floor(random 10); + _combination_3 = floor(random 10); + _combination_4 = floor(random 10); + _combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4]; + dayz_combination = _combination; + _combinationDisplay = _combination; + }; + }; + + _tmpbuilt setVariable ["CharacterID",_combination,true]; //set combination as a character ID + + //call publish precompiled function with given args and send public variable to server to save item to database + PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location],_classname]; + publicVariableServer "PVDZE_obj_Publish"; + + cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; //display new combination + + + } else { //if not lockable item + _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; + + // fire? + if(_tmpbuilt isKindOf "Land_Fire_DZ") then { //if campfire, then spawn, but do not publish to database + _tmpbuilt spawn player_fireMonitor; + } else { + PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname]; + publicVariableServer "PVDZE_obj_Publish"; + }; + }; + } else { //if magazine was not removed, cancel publish + deleteVehicle _tmpbuilt; + cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; + }; + + } else { //if player was interrupted, cancel publish and stop build animations + r_interrupt = false; + if (vehicle player == player) then { + [objNull, player, rSwitchMove,""] call RE; + player playActionNow "stop"; + }; + + deleteVehicle _tmpbuilt; + + cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; + }; + +} else { //cancel build if passed _cancel arg was true or building on roads/trader city + cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; +}; + +DZE_ActionInProgress = false; //in any case always finish last function with this to "reset" everything. \ No newline at end of file diff --git a/SQF/dayz_code/actions/player_build_states.sqf b/SQF/dayz_code/actions/player_build_states.sqf new file mode 100644 index 000000000..b79b8e98a --- /dev/null +++ b/SQF/dayz_code/actions/player_build_states.sqf @@ -0,0 +1,34 @@ +//disallow building if these conditions are not met +private ["_isFine","_onLadder","_vehicle","_inVehicle"]; + +_isFine = "ok"; //define variable to avoid RPT errors +_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; +_vehicle = vehicle player; +_inVehicle = (_vehicle != player); + +if (dayz_isSwimming) exitWith { //end script if player is swimming + DZE_ActionInProgress = false; + cutText [localize "str_player_26", "PLAIN DOWN"]; + _isFine = "Swimming"; +}; + +if (_inVehicle) exitWith { //end script if player is in vehicle + DZE_ActionInProgress = false; + cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"]; + _isFine = "In vehicle"; +}; + +if (_onLadder) exitWith { //end script if player is climbing on ladder + DZE_ActionInProgress = false; + cutText [localize "str_player_21", "PLAIN DOWN"]; + _isFine = "On ladder"; +}; + +if (player getVariable["combattimeout", 0] >= time) exitWith { //end script if player is in combat + DZE_ActionInProgress = false; + cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"]; + _isFine = "In combat"; +}; + +_isFine //returns string to caller, default is "ok" if conditions were not met + diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index 9689e0433..fcf91ec0d 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -99,7 +99,23 @@ if (!isDedicated) then { player_makeFire = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_makefire.sqf"; player_harvestPlant = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_harvestPlant.sqf"; player_goFishing = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_goFishing.sqf"; - player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf"; + + if (DZE_modularBuild) then { + player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\modular_build.sqf"; + player_build_countNearby = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_countNearby.sqf"; + player_build_states = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_states.sqf"; + player_build_needNearby = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_needNearby.sqf"; + player_build_getConfig = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_getConfig.sqf"; + player_build_plotCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_plotCheck.sqf"; + player_build_buildReq = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_buildReq.sqf"; + player_build_create = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_create.sqf"; + player_build_controls = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_controls.sqf"; + player_build_publish = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_publish.sqf"; + snap_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\snap_build.sqf"; + } else { + player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf"; + }; + player_wearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_wearClothes.sqf"; object_pickup = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_pickup.sqf"; player_flipvehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_flipvehicle.sqf"; @@ -107,12 +123,6 @@ if (!isDedicated) then { player_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf"; player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf"; - //Snap building - disabled by default, not sure about your stance towards this mod yet, feel free to edit - if (DZE_snapBuilding) then { - player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build2.sqf"; - snap_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\snap_build.sqf"; - }; - player_plotPreview = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_showPlotRadius.sqf"; player_upgradeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_upgradeVehicle.sqf"; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index c87cc6bbc..85a982f8d 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -274,6 +274,10 @@ s_player_madsci = []; s_player_parts = []; s_player_combi = []; +//Modular player_build +snapGizmos = []; +snapGizmosNearby = []; + //Initialize Medical Variables r_interrupt = false; r_doLoop = false; @@ -538,12 +542,12 @@ if(isNil "DZE_StaticConstructionCount") then { if (isNil "DZE_selfTransfuse_Values") then { DZE_selfTransfuse_Values = [12000, 15, 300]; }; -if (isNil "DZE_snapBuilding") then { - DZE_snapBuilding = false; -}; if (isNil "helperDetach") then { helperDetach = false; }; +if (isNil "DZE_modularBuild") then { + DZE_modularBuild = false; +}; // needed on server if(isNil "DZE_PlotPole") then { From 73470f1e902f2986c814231d15739c6c3b67dd95 Mon Sep 17 00:00:00 2001 From: raymix Date: Thu, 7 Aug 2014 13:22:09 +0100 Subject: [PATCH 35/36] modular player_build --- CHANGE LOG 1.0.5.2.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGE LOG 1.0.5.2.txt b/CHANGE LOG 1.0.5.2.txt index fea82d8c6..e639f67ce 100644 --- a/CHANGE LOG 1.0.5.2.txt +++ b/CHANGE LOG 1.0.5.2.txt @@ -3,7 +3,8 @@ [NEW] Use DayZ_UseSteamID = false; in your init.sqf to use the old PlayerUID, instead of SteamID @icomrade [NEW] UI Update - Graphical and code changes, enable using Dayz_Dark_UI = true; in init.sqf. @hogscraper http://epochmod.com/forum/index.php?/topic/13654-proposed-ui-change/ [NOTE] It's recommend to convert to the new SteamID system if possible, new servers should not use DayZ_UseSteamID = false; -[NEW] Snap building (disabled by default), use DZE_snapBuilding = true; in your init.sqf to enable. @raymix +[NEW] Snap building (disabled by default), use DZE_modularBuild = true; in your init.sqf to enable. @raymix +[NEW] Modular/Function based player_build for addon makers and modders. @raymix (more info and concepts - http://epochmod.com/forum/index.php?/topic/14628-modular-function-based-player-buildsqf/ ) [CHANGED] An infection chance of -1 disables self-transfusion infection. 0 is always infected. (DZE_selfTransfuse_Values) @icomrade [CHANGED] Removed weapons from Traders hands and made them stand with arms by their side. @SilvDev From 176c0372b4eb7444ba7e88ac204bef451d058648 Mon Sep 17 00:00:00 2001 From: raymix Date: Fri, 8 Aug 2014 13:30:25 +0100 Subject: [PATCH 36/36] bug fix & adjustable snap range --- SQF/dayz_code/actions/modular_build.sqf | 4 +--- SQF/dayz_code/actions/snap_build.sqf | 4 ++-- SQF/dayz_code/init/variables.sqf | 3 +++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/SQF/dayz_code/actions/modular_build.sqf b/SQF/dayz_code/actions/modular_build.sqf index d80a20db8..210a5599c 100644 --- a/SQF/dayz_code/actions/modular_build.sqf +++ b/SQF/dayz_code/actions/modular_build.sqf @@ -81,7 +81,5 @@ if (_hasrequireditem and DZE_ActionInProgress) then { _dir = _controls select 3; //int //Publish item to a database - if (!DZE_cancelBuilding) then { //double check that building was not cancelled externally - [_cancel, _position, _classnametmp,_isAllowedUnderGround, _text, _isPole, _lockable,_dir, _reason] call player_build_publish; - }; + [_cancel, _position, _classnametmp,_isAllowedUnderGround, _text, _isPole, _lockable,_dir, _reason] call player_build_publish; }; diff --git a/SQF/dayz_code/actions/snap_build.sqf b/SQF/dayz_code/actions/snap_build.sqf index 88a2f32ba..ba3d8850a 100644 --- a/SQF/dayz_code/actions/snap_build.sqf +++ b/SQF/dayz_code/actions/snap_build.sqf @@ -59,7 +59,7 @@ fnc_initSnapPoints = { fnc_initSnapPointsNearby = { _pos = getPosATL _object; _findWhitelisted = []; _pointsNearby = []; - _findWhitelisted = nearestObjects [_pos,_whitelist,_radius]-[_object]; + _findWhitelisted = nearestObjects [_pos,_whitelist,(_radius + DZE_snapExtraRange)]-[_object]; snapGizmosNearby = []; { _nearbyObject = _x; @@ -242,7 +242,7 @@ switch (snapActionState) do { [1,0,0] call fnc_snapActionCleanup; [] spawn { while {true} do { - if(!DZE_ActionInProgress) exitWith {call fnc_initSnapPointsCleanup;[0,0,0] call fnc_snapActionCleanup; ["",false] call fnc_initSnapTutorial; snapActionState = "OFF";}; + if(!DZE_ActionInProgress || DZE_cancelBuilding) exitWith {call fnc_initSnapPointsCleanup;[0,0,0] call fnc_snapActionCleanup; ["",false] call fnc_initSnapTutorial; snapActionState = "OFF";}; sleep 2; }; }; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 85a982f8d..c345e790b 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -548,6 +548,9 @@ if (isNil "helperDetach") then { if (isNil "DZE_modularBuild") then { DZE_modularBuild = false; }; +if (isNil "DZE_snapExtraRange") then { + DZE_snapExtraRange = 0; +}; // needed on server if(isNil "DZE_PlotPole") then {