diff --git a/CHANGE LOG 1.0.5.txt b/CHANGE LOG 1.0.5.txt
index 4548cf5ff..886637dd4 100644
--- a/CHANGE LOG 1.0.5.txt
+++ b/CHANGE LOG 1.0.5.txt
@@ -1,3 +1,4 @@
+[ADDED] Updated Sauerland map V1.80.01 by Falconsan http://epochmod.com/forum/index.php?/topic/6365-dayz-epoch-sauerland-changelog
[ADDED] More enterable buildings thanks to @Tansien and the DayZero crew.
[ADDED] Latest version of Napf 1.0.1 by Momo
[ADDED] Classname C130J_US_EP1_DZ Weapon: 50 Magazine: 400 Backpack: 10 @Fank
@@ -16,6 +17,9 @@
[FIXED] Load patient into vehicle now working. @SilvDev
[FIXED] Fix invalid str format for player skin class. @Sandbird https://github.com/vbawol/DayZ-Epoch/commit/55d49c279bfd1e03d3802bfe4fdf55f2335f8f47
[FIXED] Check trade requirements before animation. @Cornyfisch
+[FIXED] Undefined variable in expression in "fill_nearestVehicle.sqf" @Namindu
+[FIXED] Fix infinite knockout @icomrade
+[FIXED] Fixed typo in "player_tagFriendly.sqf" @Namindu
[CHANGED] Crafting lumber or plywood packs no longer require workbench. @vbawol
[CHANGED] Force mouse to center of screen on gear open. @vbawol
diff --git a/SQF/dayz_code/Configs/CfgVehicles/AIR/CH53.hpp b/SQF/dayz_code/Configs/CfgVehicles/AIR/CH53.hpp
index 3103a97a5..ee2148f5f 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/AIR/CH53.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/AIR/CH53.hpp
@@ -1,7 +1,7 @@
class USEC_ch53_E;
class CH53_DZE : USEC_ch53_E {
- displayname = "USEC CH53E DZ";
- displaynameshort = "CH53_DZ";
+ displayname = "USEC CH53E DZE";
+ displaynameshort = "CH53_DZE";
enablemanualfire = 0;
scope = 2;
side = 2;
diff --git a/SQF/dayz_code/Configs/CfgWeapons.hpp b/SQF/dayz_code/Configs/CfgWeapons.hpp
index 577ea26bb..2832a8e54 100644
--- a/SQF/dayz_code/Configs/CfgWeapons.hpp
+++ b/SQF/dayz_code/Configs/CfgWeapons.hpp
@@ -274,7 +274,7 @@ class CfgWeapons {
#include "CfgWeapons\Weapon\Sniper\KSVK.hpp"
#include "CfgWeapons\Weapon\Sniper\DMR_DZ.hpp"
- #include "CfgWeapons\Weapon\Pistol\MakerovSD.hpp"
+ #include "CfgWeapons\Weapon\Pistol\MakarovSD.hpp"
#include "CfgWeapons\Weapon\LMG\m240_scoped.hpp"
#include "CfgWeapons\Weapon\LMG\M249_EP1.hpp"
#include "CfgWeapons\Weapon\LMG\M249_m145_EP1.hpp"
diff --git a/SQF/dayz_code/Configs/CfgWeapons/Weapon/Pistol/MakerovSD.hpp b/SQF/dayz_code/Configs/CfgWeapons/Weapon/Pistol/MakarovSD.hpp
similarity index 100%
rename from SQF/dayz_code/Configs/CfgWeapons/Weapon/Pistol/MakerovSD.hpp
rename to SQF/dayz_code/Configs/CfgWeapons/Weapon/Pistol/MakarovSD.hpp
diff --git a/SQF/dayz_code/Configs/cfgVehicles.hpp b/SQF/dayz_code/Configs/cfgVehicles.hpp
index 691374614..99319d543 100644
--- a/SQF/dayz_code/Configs/cfgVehicles.hpp
+++ b/SQF/dayz_code/Configs/cfgVehicles.hpp
@@ -215,6 +215,8 @@ class CfgVehicles {
#include "CfgVehicles\AIR\UH1.hpp"
#include "CfgVehicles\AIR\AH6.hpp"
#include "CfgVehicles\AIR\C130.hpp"
+ #include "CfgVehicles\AIR\CH53.hpp"
+
// LAND (Armed)
#include "CfgVehicles\LAND\HMMWV.hpp"
diff --git a/SQF/dayz_code/actions/player_build.sqf b/SQF/dayz_code/actions/player_build.sqf
index c8d0f388b..c393f005f 100644
--- a/SQF/dayz_code/actions/player_build.sqf
+++ b/SQF/dayz_code/actions/player_build.sqf
@@ -153,7 +153,7 @@ if(_IsNearPlot == 0) then {
_nearestPole = _findNearestPole select 0;
// Find owner
- _ownerID = _nearestPole getVariable["CharacterID","0"];
+ _ownerID = _nearestPole getVariable ["CharacterID","0"];
// diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];
@@ -183,7 +183,7 @@ _missing = "";
_hasrequireditem = true;
{
_hastoolweapon = _x in weapons player;
- if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); }
+ if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); };
} count _require;
_hasbuilditem = _this in magazines player;
diff --git a/SQF/dayz_code/actions/player_craftItem.sqf b/SQF/dayz_code/actions/player_craftItem.sqf
index 3b2957990..4bbb7153c 100644
--- a/SQF/dayz_code/actions/player_craftItem.sqf
+++ b/SQF/dayz_code/actions/player_craftItem.sqf
@@ -37,7 +37,8 @@ _abort = false;
_distance = 3;
_reason = "";
_waterLevel = 0;
-
+_outputWeapons = [];
+_selectedRecipeOutput = [];
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
@@ -95,7 +96,7 @@ if (_canDo) then {
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _craft_doLoop = false; _missingTools = true; _missing = _x; };
- } count _selectedRecipeTools;
+ } forEach _selectedRecipeTools;
if(!_missingTools) then {
@@ -173,7 +174,7 @@ if (_canDo) then {
};
};
};
- } count magazines player;
+ } forEach magazines player;
{
_configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
@@ -205,15 +206,13 @@ if (_canDo) then {
_num_removed_weapons = 0;
{
_num_removed_weapons = _num_removed_weapons + ([player,_x] call BIS_fnc_invRemove);
- } count _inputWeapons;
+ } forEach _inputWeapons;
if (_num_removed_weapons == (count _inputWeapons)) then {
if(_randomOutput == 1) then {
- _outputWeapons = [];
if (!isNil "_outputWeapons" && count _outputWeapons > 0) then {
_selectedWeapon = _outputWeapons call BIS_fnc_selectRandom;
_outputWeapons = [_selectedWeapon];
};
- _selectedRecipeOutput = [];
if (!isNil "_selectedRecipeOutput" && count _selectedRecipeOutput > 0) then {
_selectedMag = _selectedRecipeOutput call BIS_fnc_selectRandom;
_selectedRecipeOutput = [_selectedMag];
@@ -223,7 +222,7 @@ if (_canDo) then {
};
{
player addWeapon _x;
- } count _outputWeapons;
+ } forEach _outputWeapons;
{
_itemOut = _x select 0;
@@ -250,14 +249,14 @@ if (_canDo) then {
// sleep here
sleep 1;
- } count _selectedRecipeOutput;
+ } forEach _selectedRecipeOutput;
_tradeComplete = _tradeComplete+1;
};
} else {
// Refund parts since we failed
- {player addMagazine _x;} count _temp_removed_array;
+ {player addMagazine _x; } forEach _temp_removed_array;
cutText [format[(localize "str_epoch_player_151"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
diff --git a/SQF/dayz_code/actions/player_tagFriendly.sqf b/SQF/dayz_code/actions/player_tagFriendly.sqf
index 4205c6a7b..43cdc3950 100644
--- a/SQF/dayz_code/actions/player_tagFriendly.sqf
+++ b/SQF/dayz_code/actions/player_tagFriendly.sqf
@@ -5,18 +5,19 @@ _caller = _this select 1;
call fnc_usec_medic_removeActions;
r_action = false;
-_callerID = _caller getVariable "CharacterID";
-_targetID = _target getVariable "CharacterID";
+_callerID = _caller getVariable ["CharacterID", "0"];
+_targetID = _target getVariable ["CharacterID", "0"];
+if ((_callerID != "0") && (_targetID != "0")) then {
+ _friendlies = _caller getVariable ["friendlies", []];
+ _friendlies set [count _friendlies, _targetID];
+ _caller setVariable ["friendlies", _friendlies, true];
-_friendlies = _caller getVariable ["friendlies", []];
-_friendlies set [count _friendlies, _targetID];
-_caller setVariable ["friendlies", _friendlies, true];
+ _rfriendlies = _target getVariable ["friendlies", []];
-_rfriendlies = _target getVariable ["friendlies", []];
-
-if !(_callerID in _rfriendlies) then {
- titleText [(localize "STR_EPOCH_ACTIONS_8"), "PLAIN DOWN"]; //To Caller
- /* PVS/PVC - Skaronator */
- PVDZE_send = [_target,"tagFriendly",[_target]]; //To Target
- publicVariableServer "PVDZE_send";
+ if !(_callerID in _rfriendlies) then {
+ titleText [(localize "STR_EPOCH_ACTIONS_8"), "PLAIN DOWN"]; //To Caller
+ /* PVS/PVC - Skaronator */
+ PVDZE_send = [_target,"tagFriendly",[_target]]; //To Target
+ publicVariableServer "PVDZE_send";
+ };
};
diff --git a/SQF/dayz_code/compile/BIS_fnc/fn_selectRandom.sqf b/SQF/dayz_code/compile/BIS_fnc/fn_selectRandom.sqf
index 8184cacc2..c261a6cc7 100644
--- a/SQF/dayz_code/compile/BIS_fnc/fn_selectRandom.sqf
+++ b/SQF/dayz_code/compile/BIS_fnc/fn_selectRandom.sqf
@@ -15,9 +15,10 @@ private "_ret";
if(count _this > 0) then
{
- _ret = count _this; //number of elements in the array
+ //_ret = count _this; //number of elements in the array
//_ret = [0, _ret] call BIS_fnc_randomInt; //choose random index
- _ret = floor(random _ret);
+ _ret = floor(random(count _this));
_ret = _this select _ret; //get the element, return it
};
-_ret
+
+_ret;
\ No newline at end of file
diff --git a/SQF/dayz_code/compile/fn_unconscious.sqf b/SQF/dayz_code/compile/fn_unconscious.sqf
index c9d4bca4d..4884f6e7f 100644
--- a/SQF/dayz_code/compile/fn_unconscious.sqf
+++ b/SQF/dayz_code/compile/fn_unconscious.sqf
@@ -1,14 +1,13 @@
-private ["_nul","_timeout","_isOnDeck","_isInLocation","_inVehicle","_bloodLow","_isHospital","_totalTimeout","_display","_ctrl1","_ctrl1Pos"];
+private ["_totalTimeout","_timeout","_bloodLow","_display","_ctrl1","_ctrl1Pos"];
disableSerialization;
if ((!r_player_handler1) && (r_handlerCount == 0)) then {
- //Unconscious Meter
+ if (r_player_cardiac) then {r_player_timeout = r_player_timeout max 300;};
_totalTimeout = r_player_timeout;
- if (_totalTimeout == 0) then { _totalTimeout = 1; }; //Fix for zero divisor
+ if (_totalTimeout == 0) then { _totalTimeout = 1; };
4 cutRsc ["playerStatusWaiting", "PLAIN",0];
_display = uiNamespace getVariable 'DAYZ_GUI_waiting';
_ctrl1 = _display displayCtrl 1400;
_ctrl1Pos = ctrlPosition _ctrl1;
-
_timeout = 0;
r_handlerCount = r_handlerCount + 1;
r_player_handler1 = true;
@@ -17,27 +16,16 @@ if ((!r_player_handler1) && (r_handlerCount == 0)) then {
"colorCorrections" ppEffectEnable true;"colorCorrections" ppEffectEnable true;"colorCorrections" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 0.1], [1, 1, 1, 0.0]];"colorCorrections" ppEffectCommit 0;
0 fadeSound 0.05;
disableUserInput true;
- //waitUntil{USEC_MotherInbox == ""};
- //["MED001",0,"Unconscious"] call fnc_usec_recordEventClient;
- //diag_log "CLIENT: Unconscious...";
- while {(r_player_unconscious)} do {
+ while {r_player_unconscious} do {
_ctrl1 ctrlSetPosition [(_ctrl1Pos select 0),(_ctrl1Pos select 1),(_ctrl1Pos select 2),((0.136829 * safezoneH) * (1 -(r_player_timeout / _totalTimeout)))];
_ctrl1 ctrlCommit 1;
playSound "heartbeat_1";
sleep 1;
- _isOnDeck = false; //getPos player in LHA_Deck;
- _isInLocation = false; //getPos player in LHA_Location;
- _inVehicle = (vehicle player != player);
_bloodLow = ((r_player_blood/r_player_bloodTotal) < 0.5);
- if ((surfaceIsWater (getPosASL player)) && !_isOnDeck && !_inVehicle) then {
- player setpos [(getPosASL player select 0),(getPosASL player select 1),0.3];
- };
if(_timeout == 0) then {
if (!r_player_dead && !_bloodLow && r_player_injured) then {
_timeout = 10;
- //_animType = (USEC_WoundAnim select (floor(random (count USEC_WoundAnim))));
- //player playActionNow _anim;
};
} else {
_timeout = _timeout - 1;
@@ -46,54 +34,10 @@ if ((!r_player_handler1) && (r_handlerCount == 0)) then {
if (r_player_timeout > 0) then {
r_player_timeout = r_player_timeout - 1;
} else {
- if ((!r_player_dead) && (!r_player_cardiac)) then {
+ if (!r_player_dead) then {
_nul = [] spawn fnc_usec_recoverUncons;
};
};
- //Check if near field hospital
- _isHospital = false; //(count( nearestObjects [player, ["USMC_WarfareBFieldhHospital"], 8]) > 0);
- if (_isHospital || _isOnDeck || _isInLocation) then {
-
- waitUntil {!(player getVariable ["NORRN_unit_dragged", false])};
-
- cutText[localize "str_medical_healing", "PLAIN", 2];
- sleep 5;
-
- r_player_inpain = false;
- r_player_dead = false;
- r_player_injured = false;
- r_player_cardiac = false;
-
- //Give Blood
- r_player_blood = r_player_bloodTotal;
- player setVariable["USEC_lowBlood",false,true];
-
- //Self Healing
- _id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medMorphine.sqf";
- player setVariable ["hit_legs",0,false];
- player setVariable ["hit_hands",0,false];
- player setVariable["medForceUpdate",true];
-
- _id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medBandaged.sqf";
- player setVariable["medForceUpdate",true];
-
- /* REMOVED USE THAT ABOVE
- usecMorphine = [player,player];
- publicVariable "usecMorphine";
-
- usecBandage = [player,player];
- publicVariable "usecBandage";
- */
-
- player setVariable ["USEC_inPain", false, true];
- player setdamage 0;
- {player setVariable[_x,false,true];} count USEC_woundHit;
- player setVariable ["USEC_injured",false,true];
-
- sleep 1;
- r_player_handler = false;
- _nul = [] spawn fnc_usec_recoverUncons;
- };
if (!(player getVariable ["NORRN_unconscious", true])) then {
_nul = [] spawn fnc_usec_recoverUncons;
};
@@ -102,10 +46,7 @@ if ((!r_player_handler1) && (r_handlerCount == 0)) then {
};
};
4 cutRsc ["default", "PLAIN",1];
- //diag_log "CLIENT: Conscious...";
disableUserInput false;
- //waitUntil{USEC_MotherInbox == ""};
- //["MED001",0,"Conscious"] call fnc_usec_recordEventClient;
if (!r_player_injured && ((r_player_blood/r_player_bloodTotal) >= 0.5)) then {
10 fadeSound 1;
"dynamicBlur" ppEffectAdjust [0]; "dynamicBlur" ppEffectCommit 5;
diff --git a/SQF/dayz_code/compile/player_death.sqf b/SQF/dayz_code/compile/player_death.sqf
index 1a0ef2984..98b44dcd1 100644
--- a/SQF/dayz_code/compile/player_death.sqf
+++ b/SQF/dayz_code/compile/player_death.sqf
@@ -2,7 +2,9 @@ private ["_display","_body","_playerID","_array","_source","_method","_canHitFre
disableSerialization;
if (deathHandled) exitWith {};
deathHandled = true;
-
+if ((alive player) && {isNil {dayz_playerName}}) then {
+ dayz_playerName = name player;
+};
//Prevent client freezes
_display = findDisplay 49;
if(!isNull _display) then {_display closeDisplay 0;};
diff --git a/SQF/dayz_code/compile/player_updateGui.sqf b/SQF/dayz_code/compile/player_updateGui.sqf
index 7dcd68766..aef15cdac 100644
--- a/SQF/dayz_code/compile/player_updateGui.sqf
+++ b/SQF/dayz_code/compile/player_updateGui.sqf
@@ -1,4 +1,4 @@
-private ["_display","_ctrlBlood","_ctrlBleed","_bloodVal","_humanityName","_ctrlFood","_ctrlThirst","_thirstVal","_foodVal","_ctrlTemp","_tempVal","_combatVal","_array","_ctrlEar","_ctrlEye","_ctrlCombat","_ctrlFracture","_visualText","_visual","_audibleText","_audible","_blood","_thirstLvl","_foodLvl","_tempImg","_thirst","_food","_temp","_bloodLvl","_tempLvl","_color","_string","_humanity","_size","_friendlies","_charID","_rcharID","_rfriendlies","_rfriendlyTo","_distance","_targetControl","_humanityTarget"];
+private ["_display","_ctrlBlood","_ctrlBleed","_bloodVal","_humanityName","_ctrlFood","_ctrlThirst","_thirstVal","_foodVal","_ctrlTemp","_tempVal","_combatVal","_array","_ctrlEar","_ctrlEye","_ctrlCombat","_ctrlFracture","_visualText","_visual","_audibleText","_audible","_blood","_thirstLvl","_foodLvl","_tempImg","_thirst","_food","_temp","_bloodLvl","_tempLvl","_color","_string","_humanity","_size","_friendlies","_charID","_rcharID","_rfriendlies","_rfriendlyTo","_distance","_targetControl"];
disableSerialization;
_foodVal = 1 - (dayz_hunger / SleepFood);
@@ -6,7 +6,7 @@ _thirstVal = 1 - (dayz_thirst / SleepWater);
_tempVal = 1 - ((dayz_temperatur - dayz_temperaturmin)/(dayz_temperaturmax - dayz_temperaturmin)); // Normalise to [0,1]
_combatVal = 1 - dayz_combat; // May change later to be a range of red/green to loosely indicate 'time left in combat'
-if (uiNamespace getVariable ['DZ_displayUI', 0] == 1) exitWith {
+if (uiNamespace getVariable ["DZ_displayUI", 0] == 1) exitWith {
_array = [_foodVal,_thirstVal];
_array
};
@@ -139,12 +139,11 @@ if (r_player_injured) then {
/*
Opt-in tag system with friend tagging
*/
-_targetControl = _display displayCtrl 1199;
_string = "";
_humanityTarget = cursorTarget;
if (!isNull _humanityTarget && isPlayer _humanityTarget && alive _humanityTarget) then {
- _distance = (player distance _humanityTarget);
+ _distance = player distance _humanityTarget;
if (_distance < DZE_HumanityTargetDistance) then {
@@ -157,24 +156,19 @@ if (!isNull _humanityTarget && isPlayer _humanityTarget && alive _humanityTarget
_rcharID = _humanityTarget getVariable ["CharacterID", "0"];
_rfriendlies = _humanityTarget getVariable ["friendlies", []];
_rfriendlyTo = _humanityTarget getVariable ["friendlyTo", []];
-
+
if ((_rcharID in _friendlies) && (_charID in _rfriendlies)) then {
- if (!(_charID in _rfriendlyTo)) then {
-
+ if !(_charID in _rfriendlyTo) then {
// diag_log format["IS FRIENDLY: %1", _player];
_rfriendlyTo set [count _rfriendlyTo, _charID];
_humanityTarget setVariable ["friendlyTo", _rfriendlyTo, true];
-
- // titleText [format[(localize "STR_EPOCH_ACTIONS_17"), (name _humanityTarget)], "PLAIN DOWN"];
-
};
//
Humanity: %3
_color = "color='#339933'";
- _humanityName = if (alive _humanityTarget) then {name _humanityTarget; } else { "Dead Player";};
- _string = format["%1",_humanityName,_color,_size];
+ _string = format["%1",(name _humanityTarget),_color,_size];
} else {
@@ -190,8 +184,7 @@ if (!isNull _humanityTarget && isPlayer _humanityTarget && alive _humanityTarget
};
};
if((_humanityTarget getVariable ["DZE_display_name", false]) || (DZE_ForceNameTagsInTrader && isInTraderCity)) then {
- _humanityName = if (alive _humanityTarget) then {name _humanityTarget; } else { "Dead Player";};
- _string = format["%1",_humanityName,_color,_size];
+ _string = format["%1",(name _humanityTarget),_color,_size];
};
};
};
@@ -199,6 +192,7 @@ if (!isNull _humanityTarget && isPlayer _humanityTarget && alive _humanityTarget
// update gui if changed
if (dayz_humanitytarget != _string) then {
+ _targetControl = _display displayCtrl 1199;
_targetControl ctrlSetStructuredText (parseText _string);
dayz_humanitytarget = _string;
};
diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf
index 22e9b9737..59ba6e25a 100644
--- a/SQF/dayz_code/init/variables.sqf
+++ b/SQF/dayz_code/init/variables.sqf
@@ -549,7 +549,7 @@ if(isNil "dayz_zedsAttackVehicles") then {
};
// update objects
-dayz_updateObjects = ["Plane","Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage","LockboxStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ","Scaffolding_DZ"];
+dayz_updateObjects = ["Plane","Tank","Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage","LockboxStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","GunRack_DZ","WoodCrate_DZ","Scaffolding_DZ"];
dayz_disallowedVault = ["TentStorage", "BuiltItems","ModularItems","DZE_Base_Object"];
dayz_reveal = ["AllVehicles","WeaponHolder","Land_A_tent","BuiltItems","ModularItems","DZE_Base_Object"];
dayz_allowedObjects = ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","BagFenceRound_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","Plastic_Pole_EP1_DZ","Generator_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","FireBarrel_DZ","WoodCrate_DZ","Scaffolding_DZ"];
@@ -671,7 +671,6 @@ if(!isDedicated) then {
dayz_guiHumanity = -90000;
dayz_firstGroup = group player;
dayz_originalPlayer = player;
- dayz_playerName = name player;
dayz_sourceBleeding = objNull;
dayz_clientPreload = false;
dayz_authed = false;
diff --git a/SQF/dayz_code/system/antihack.sqf b/SQF/dayz_code/system/antihack.sqf
index 3bba37335..dda7587ce 100644
--- a/SQF/dayz_code/system/antihack.sqf
+++ b/SQF/dayz_code/system/antihack.sqf
@@ -2,7 +2,7 @@
Anti-Teleport - Created By Razor / Refactored By Alby & CopyPasted to Epoch by Skaronator
*/
-private ["_log","_playerName","_playerUID","_al1veOnce","_debug","_lastpos","_lastheight","_lasttime","_lastVehicle","_v","_h","_topv","_toph","_curpos","_distance","_curtime","_difftime","_plant","_curheight","_speed","_topSpeed","_terrainHeight","_differenceCheck","_lastPosVar","_safetyVehicle","_curPos"];
+private ["_log","_playerName","_playerUID","_al1veOnce","_debug","_lastpos","_lastheight","_lasttime","_lastVehicle","_v","_h","_topv","_toph","_curpos","_distance","_acceptableDistance","_curtime","_difftime","_plant","_curheight","_speed","_topSpeed","_terrainHeight","_differenceCheck","_lastPosVar","_safetyVehicle","_curPos"];
waitUntil {vehicle player == player};
@@ -34,7 +34,29 @@ waitUntil {vehicle player == player};
sleep 10;
};
-_al1veOnce = false;
+[] spawn {
+ _al1veOnce = false;
+ if (!_al1veOnce) then {
+ private [ "_loc", "_plant","_debug"];
+ _debug = getMarkerpos "respawn_west";
+ // check that plants libs are properly loaded
+ // thanks to Tansien the great
+ // run only once per character life
+ {
+ _plant = _x createVehicleLocal _debug;
+ sleep 0.1;
+ if (sizeOf _x == 0) exitWith {
+ PVDZE_atp = "Plants texture hack for type " + _x;
+ publicVariableServer "PVDZE_atp";
+ endMission "LOSER";
+ };
+ deleteVehicle _plant;
+ } count ["grass", "prunus", "picea", "fallentree", "phragmites", "acer", "amygdalusn", "Brush", "fiberplant", "amygdalusc", "boulder"];
+ diag_log format [ "%1: Plants libs tests done!", __FILE__];
+ };
+ _al1veOnce = true;
+};
+
while {1 == 1} do {
_debug = getMarkerpos "respawn_west";
_lastpos = getPosATL (vehicle player);
@@ -53,71 +75,37 @@ while {1 == 1} do {
_distance = _lastpos distance _curpos;
_curtime = diag_ticktime;
_difftime = _curtime - _lasttime;
+ _acceptableDistance = if (_lastVehicle isKindOf "Plane") then { 15; } else { 10; };
- if ((_distance > 10) || {(_difftime > 1)}) then {
- if (!_al1veOnce) then {
- private [ "_loc", "_plant"];
- // check that plants libs are properly loaded
- // thanks to Tansien the great
- // run only once per character life
- {
- _plant = _x createVehicleLocal _debug;
- sleep 0.1;
- if (sizeOf _x == 0) exitWith {
- PVDZE_atp = "Plants texture hack for type " + _x;
- publicVariableServer "PVDZE_atp";
- endMission "LOSER";
- };
- deleteVehicle _plant;
- } count ["grass", "prunus", "picea", "fallentree", "phragmites", "acer", "amygdalusn", "Brush", "fiberplant", "amygdalusc", "boulder"];
- diag_log format [ "%1: Plants libs tests done!", __FILE__];
- };
- _al1veOnce = true;
+ if ((_distance > _acceptableDistance) || {(_difftime > 1)}) then {
_curheight = (ATLtoASL _curpos) select 2;
_speed = _distance / _difftime;
- _topSpeed = 10;
-
+ _topSpeed = if (_acceptableDistance == 15) then { 20; } else { 10; };
if (vehicle player != player) then {
- _topSpeed = (getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "maxSpeed")) min 500;
+ if (_acceptableDistance == 15) then {
+ _topSpeed = (getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "maxSpeed")) max 500;
+ } else {
+ _topSpeed = (getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "maxSpeed")) min 500;
+ };
};
-
_terrainHeight = getTerrainHeightASL [_curpos select 0, _curpos select 1];
-
_safetyVehicle = vehicle player;
-
if (_lastVehicle == vehicle player) then {
if ((_speed > _topSpeed) && (alive player) && ((driver (vehicle player) == player) || (isNull (driver (vehicle player)))) && (_debug distance _lastpos > 3000) && !((vehicle player == player) && (_curheight < _lastheight) && ((_curheight - _terrainHeight) > 1))) then {
(vehicle player) setposATL _lastpos;
- //PVDZE_atp = [name player, dayz_characterID, _lastpos, _curPos, getPosATL player];
PVDZE_atp = format["TELEPORT REVERT for player UID#%1 from %2 to %3, %4 meters, now at %5", getPlayerUID player, _lastpos, _curPos, round(_lastpos distance _curpos), getPosATL player];
publicVariableServer "PVDZE_atp";
} else {
_lastpos = _curpos;
_lastheight = _curheight;
};
-
_lasttime = _curtime;
};
-
if (_safetyVehicle == vehicle player) then {
_lastVehicle = vehicle player;
};
};
- /*if ((animationState player) != "HaloFreeFall_non") then {
- // freefall detection:
- _v = -((velocity player) select 2);
- _h = (getPosATL player) select 2;
- if (_v > 4 && _h > 3) then {
- _topv = _topv max _v;
- _toph = _toph max _h;
- Dayz_freefall = [ time, _toph, _topv ];
- }
- else {
- _topv = 0;
- _toph = 0;
- };
- };*/
sleep 0.25;
};
sleep 0.1;
diff --git a/SQF/dayz_code/system/player_monitor.fsm b/SQF/dayz_code/system/player_monitor.fsm
index e48188405..8990ec5c8 100644
--- a/SQF/dayz_code/system/player_monitor.fsm
+++ b/SQF/dayz_code/system/player_monitor.fsm
@@ -169,8 +169,8 @@ link85[] = {75,57};
link86[] = {76,78};
link87[] = {77,76};
link88[] = {78,57};
-globals[] = {25.000000,1,0,0,0,640,480,1,143,6316128,1,-406.882782,405.863464,1403.492432,827.797180,864,612,1};
-window[] = {0,-1,-1,-1,-1,940,182,1671,182,1,882};
+globals[] = {25.000000,1,0,0,0,640,480,1,143,6316128,1,-280.065002,277.754272,1315.142944,920.020874,864,612,1};
+window[] = {0,-1,-1,-1,-1,966,208,1697,208,1,882};
*//*%FSM*/
class FSM
{
@@ -1198,6 +1198,7 @@ class FSM
"player allowDamage true;" \n
"player enableSimulation true;" \n
"0 cutText ["""", ""BLACK IN"",3];" \n
+ "dayz_playerName = name player;" \n
"" \n
"//Add core tools" \n
"player addWeapon ""Loot"";" \n
diff --git a/SQF/dayz_server/compile/server_playerDied.sqf b/SQF/dayz_server/compile/server_playerDied.sqf
index ecddabe73..8c17c7d4c 100644
--- a/SQF/dayz_server/compile/server_playerDied.sqf
+++ b/SQF/dayz_server/compile/server_playerDied.sqf
@@ -5,8 +5,11 @@ _minutes = _this select 1;
_newObject = _this select 2;
_playerID = _this select 3;
_infected = _this select 4;
-_victimName = _this select 5;
-
+if (((count _this) >= 6) && {(typeName (_this select 5)) == "STRING"} && {(_this select 5) != ""}) then {
+ _victimName = _this select 5;
+} else {
+ _victimName = if (alive _newObject) then {name _newObject;} else {"";};
+};
_victim = _newObject;
_newObject setVariable ["bodyName", _victimName, true];
diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf
index a0f696983..95eb9e334 100644
--- a/SQF/dayz_server/init/server_functions.sqf
+++ b/SQF/dayz_server/init/server_functions.sqf
@@ -146,7 +146,9 @@ eh_localCleanup = {
_unit removeAllEventHandlers "Local";
clearVehicleInit _unit;
deleteVehicle _unit;
- deleteGroup _myGroupUnit;
+ if ((count (units _myGroupUnit) == 0) && (_myGroupUnit != grpNull)) then {
+ deleteGroup _myGroupUnit;
+ };
//_unit = nil;
// diag_log ("CLEANUP: DELETED A " + str(_type) );
};
@@ -622,6 +624,7 @@ dayz_recordLogin = {
dayz_perform_purge = {
if(!isNull(_this)) then {
+ _group = group _this;
_this removeAllMPEventHandlers "mpkilled";
_this removeAllMPEventHandlers "mphit";
_this removeAllMPEventHandlers "mprespawn";
@@ -634,7 +637,9 @@ dayz_perform_purge = {
_this removeAllEventHandlers "Local";
clearVehicleInit _this;
deleteVehicle _this;
- deleteGroup (group _this);
+ if ((count (units _group) == 0) && (_group != grpNull)) then {
+ deleteGroup _group;
+ };
};
};
@@ -695,7 +700,7 @@ dayz_perform_purge_player = {
{
_holder addMagazineCargoGlobal [_x, 1];
} count _magazines;
-
+ _group = group _this;
_this removeAllMPEventHandlers "mpkilled";
_this removeAllMPEventHandlers "mphit";
_this removeAllMPEventHandlers "mprespawn";
@@ -708,13 +713,16 @@ dayz_perform_purge_player = {
_this removeAllEventHandlers "Local";
clearVehicleInit _this;
deleteVehicle _this;
- deleteGroup (group _this);
+ if ((count (units _group) == 0) && (_group != grpNull)) then {
+ deleteGroup _group;
+ };
// _this = nil;
};
dayz_removePlayerOnDisconnect = {
if(!isNull(_this)) then {
+ _group = group _this;
_this removeAllMPEventHandlers "mphit";
deleteVehicle _this;
deleteGroup (group _this);
@@ -780,7 +788,7 @@ server_cleanupGroups = {
if(!isNil "DZE_DYN_GroupCleanup") exitWith { DZE_DYN_AntiStuck3rd = DZE_DYN_AntiStuck3rd + 1;};
DZE_DYN_GroupCleanup = true;
{
- if (count units _x == 0) then {
+ if ((count (units _x) == 0) && (_x != grpNull)) then {
deleteGroup _x;
};
sleep 0.001;