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;