diff --git a/SQF/dayz_code/compile/player_switchModel.sqf b/SQF/dayz_code/compile/player_switchModel.sqf index f460dcb2c..591b8efcc 100644 --- a/SQF/dayz_code/compile/player_switchModel.sqf +++ b/SQF/dayz_code/compile/player_switchModel.sqf @@ -1,4 +1,4 @@ -//private ["_class","_position","_dir","_group","_oldUnit","_newUnit","_currentWpn","_muzzles","_currentAnim","_playerUID","_weapons","_magazines","_primweapon","_secweapon","_newBackpackType","_backpackWpn","_backpackMag","_backpackWpnTypes","_backpackWpnQtys","_countr","_backpackmagTypes","_backpackmagQtys","_display","_createSafePos","_wpnType","_ismelee","_rndx","_rndy"]; +//private ["_class","_position","_dir","_group","_oldUnit","_newUnit","_currentWpn","_muzzles","_currentAnim","_playerUID","_weapons","_magazines","_primweapon","_secweapon","_newBackpackType","_backpackWpn","_backpackMag","_backpackWpnTypes","_backpackWpnQtys","_countr","_backpackmagTypes","_backpackmagQtys","_display","_wpnType","_ismelee","_rndx","_rndy"]; private ["_weapons","_backpackWpn","_backpackMag","_currentWpn","_isWeapon","_backpackWpnTypes","_backpackWpnQtys","_countr","_class","_position","_dir","_currentAnim","_playerUID","_countMags","_magazines","_primweapon","_secweapon","_newBackpackType","_muzzles","_oldUnit","_group","_newUnit","_oldGroup","_idc","_display","_switchUnit","_leader"]; _class = _this; if (gear_done) then {disableUserInput true;disableUserInput true;}; @@ -74,7 +74,7 @@ _leader = (player == leader _oldGroup); //Create New Character //[player] joinSilent grpNull; _group = createGroup west; -_newUnit = _group createUnit [_class,getMarkerPos "respawn_west",[],0,"NONE"]; +_newUnit = _group createUnit [_class,respawn_west_original,[],0,"NONE"]; _newUnit setDir _dir; {_newUnit removeMagazine _x;} count magazines _newUnit; removeAllWeapons _newUnit; @@ -110,12 +110,10 @@ _switchUnit = { setPlayable _newUnit; selectPlayer _newUnit; //Switch the units - //_createSafePos = [(getMarkerPos "respawn_west"), 2, 100, 0, 1, 20, 0] call BIS_fnc_findSafePos; - _createSafePos = getMarkerPos "respawn_west"; _rndx = floor(random 100); _rndy = floor(random 100); - _oldUnit setPosATL [(_createSafePos select 0) + _rndx, (_createSafePos select 1) + _rndy, 0]; - if (surfaceIsWater _createSafePos) then { + _oldUnit setPosATL [(respawn_west_original select 0) + _rndx, (respawn_west_original select 1) + _rndy, 0]; + if (surfaceIsWater respawn_west_original) then { //Prevent swimming in ground glitch if respawn is in water _newUnit setPosATL [_position select 0,_position select 1,(_position select 2)+.1]; } else { diff --git a/SQF/dayz_code/compile/player_traderCity.sqf b/SQF/dayz_code/compile/player_traderCity.sqf index 0fc32020d..34f892809 100644 --- a/SQF/dayz_code/compile/player_traderCity.sqf +++ b/SQF/dayz_code/compile/player_traderCity.sqf @@ -5,7 +5,7 @@ _showText = _this select 1; _enterORleave = _this select 2; // Do not show cutText when player changes clothes in trader area -if ((dayz_lastClothesChange + 3 > diag_tickTime) or (player distance getMarkerPos "respawn_west" < 15)) then { +if ((dayz_lastClothesChange + 3 > diag_tickTime) or (player distance respawn_west_original < 100)) then { _showText = false; }; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index ceca9264d..5402e1d30 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -492,6 +492,8 @@ switch (dayz_presets) do { }; }; +respawn_west_original = getMarkerPos "respawn_west"; //Prevent problems caused by cheaters moving respawn_west marker with setMarkerPos or deleteMarker + switch (toLower worldName) do { case "napf"; case "sauerland" : {dayz_minpos = -1000; dayz_maxpos = 26000;}; diff --git a/SQF/dayz_code/system/player_spawn_2.sqf b/SQF/dayz_code/system/player_spawn_2.sqf index b33c6c059..8d095b692 100644 --- a/SQF/dayz_code/system/player_spawn_2.sqf +++ b/SQF/dayz_code/system/player_spawn_2.sqf @@ -3,7 +3,6 @@ disableSerialization; _timeOut = 0; _messTimer = 0; _lastTemp = dayz_temperatur; -_debug = getMarkerpos "respawn_west"; _isPZombie = player isKindOf "PZombie_VB"; _radTimer = 0; @@ -48,7 +47,7 @@ while {1 == 1} do { //reset position _randomSpot = true; _tempPos = getPosATL player; - _distance = _debug distance _tempPos; + _distance = respawn_west_original distance _tempPos; if (_distance < 2000) then { _randomSpot = false; }; diff --git a/SQF/dayz_code/system/scheduler/sched_antiTeleport.sqf b/SQF/dayz_code/system/scheduler/sched_antiTeleport.sqf index 60691ac98..4488ded0d 100644 --- a/SQF/dayz_code/system/scheduler/sched_antiTeleport.sqf +++ b/SQF/dayz_code/system/scheduler/sched_antiTeleport.sqf @@ -7,7 +7,7 @@ sched_antiTP_init = { if (dayz_antihack == 1) then { diag_log [ diag_ticktime, __FILE__, "Anti Teleport inited"]; }; - [dayz_antihack == 1, [], 0, 0, objNull] + [dayz_antihack == 1, [], 0, 0, objNull, respawn_west_original] }; sched_antiTP = { @@ -19,6 +19,7 @@ sched_antiTP = { _lastheight = _this select 2; _lasttime = _this select 3; _lastVehicle = _this select 4; + _debug = _this select 5; if (((_antihack) and {(typeName player == "OBJECT")}) AND {((player in playableUnits) AND {(alive player)})}) then { if (count _lastpos != 3) then { @@ -31,7 +32,6 @@ sched_antiTP = { _distance = _lastpos distance _curpos; _curtime = diag_ticktime; _difftime = _curtime - _lasttime; - _debug = getMarkerpos "respawn_west"; if ((_distance > 10) OR {(_difftime > 1)}) then { _curheight = (ATLtoASL _curpos) select 2; diff --git a/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf b/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf index f1ed44a67..741cf80ee 100644 --- a/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf +++ b/SQF/dayz_server/compile/server_onPlayerDisconnect.sqf @@ -60,7 +60,7 @@ if (_characterID != "?") then { */ //Punish combat log - if (_inCombat && _playerPos distance (getMarkerPos "respawn_west") > 1500) then { + if (_inCombat && _playerPos distance respawn_west_original > 1500) then { // Moved setVariables to server_playerSync since they are high priority // Messages are low priority. Player object not needed diag_log format["PLAYER COMBAT LOGGED: %1(%3) at location %2",_playerName,_playerPos,_playerUID]; diff --git a/SQF/dayz_server/compile/server_playerSetup.sqf b/SQF/dayz_server/compile/server_playerSetup.sqf index d554d6cd0..96410a90f 100644 --- a/SQF/dayz_server/compile/server_playerSetup.sqf +++ b/SQF/dayz_server/compile/server_playerSetup.sqf @@ -1,4 +1,4 @@ -private ["_characterID","_playerObj","_spawnSelection","_inventory","_playerID","_dummy","_worldspace","_state","_doLoop","_key","_primary","_medical","_stats","_humanity","_randomSpot","_position","_debug","_distance","_fractures","_score","_findSpot","_mkr","_j","_isIsland","_w","_clientID","_lastInstance"]; +private ["_characterID","_playerObj","_spawnSelection","_inventory","_playerID","_dummy","_worldspace","_state","_doLoop","_key","_primary","_medical","_stats","_humanity","_randomSpot","_position","_distance","_fractures","_score","_findSpot","_mkr","_j","_isIsland","_w","_clientID","_lastInstance"]; _characterID = _this select 0; _playerObj = _this select 1; @@ -69,10 +69,9 @@ if (count _Achievements == 0) then {_Achievements = [0,0,0,0,0,0,0,0,0,0,0,0,0,0 if (count _worldspace > 0) then { _position = _worldspace select 1; - if (count _position < 3) then {_randomSpot = true;}; //prevent debug world! + if (count _position < 3) exitWith {_randomSpot = true;}; //prevent debug world! - _debug = getMarkerpos "respawn_west"; - _distance = _debug distance _position; + _distance = respawn_west_original distance _position; if (_distance < 2000) then {_randomSpot = true;}; _distance = [0,0,0] distance _position; diff --git a/SQF/dayz_server/compile/server_playerSync.sqf b/SQF/dayz_server/compile/server_playerSync.sqf index 665e21f54..f2e11347d 100644 --- a/SQF/dayz_server/compile/server_playerSync.sqf +++ b/SQF/dayz_server/compile/server_playerSync.sqf @@ -15,7 +15,7 @@ _isInVehicle = vehicle _character != _character; _timeSince = 0; _humanity = 0; _name = if (alive _character) then {name _character} else {"Dead Player"}; -_distance = (getMarkerpos "respawn_west" distance _charPos) < 1500; +_distance = (respawn_west_original distance _charPos) < 1500; if (_character isKindOf "Animal") exitWith { diag_log ("ERROR: Cannot Sync Character " + _name + " is an Animal class"); diff --git a/SQF/dayz_server/system/scheduler/sched_corpses.sqf b/SQF/dayz_server/system/scheduler/sched_corpses.sqf index 2cfcec2eb..4a829974d 100644 --- a/SQF/dayz_server/system/scheduler/sched_corpses.sqf +++ b/SQF/dayz_server/system/scheduler/sched_corpses.sqf @@ -44,13 +44,13 @@ sched_corpses = { if (_x getVariable["bodyName",""] != "") then { _deathTime = _x getVariable ["sched_co_deathTime", -1]; if (_deathTime == -1) then { - _deathPos = _x getVariable [ "deathPos", getMarkerPos "respawn_west" ]; - _cpos = getPosATL _x; + _deathPos = _x getVariable ["deathPos",respawn_west_original]; + /*_cpos = getPosATL _x; // forbid a move further than 50 meters, or burried body (antihack) if (_deathPos distance _cpos > 50 or _deathPos select 2 < -0.2) then { diag_log [ __FILE__, "Corpse should have been moved! CID#",(_x getVariable["characterID", "?"]),"from:", _cpos, "to:", _deathPos ]; //_x setPosATL _deathPos; - }; + };*/ _deathTime = diag_tickTime; _x setVariable ["sched_co_deathTime", _deathTime]; _x setVariable ["sched_co_fliesAdded", true]; diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index 9a22011a2..bc819c39d 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -503,8 +503,7 @@ if (_hiveLoaded) then { [] spawn server_spawnEvents; /* //Causes issues with changing clothes -_debugMarkerPosition = getMarkerPos "respawn_west"; -_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1]; +_debugMarkerPosition = [(respawn_west_original select 0),(respawn_west_original select 1),1]; _vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"]; _vehicle_0 setPos _debugMarkerPosition; _vehicle_0 setVariable ["ObjectID","1",true]; diff --git a/Server Files/Battleye/scripts.txt b/Server Files/Battleye/scripts.txt index 71e10bd1b..f2b278651 100644 --- a/Server Files/Battleye/scripts.txt +++ b/Server Files/Battleye/scripts.txt @@ -12,7 +12,7 @@ 5 createDialog !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !="createDialog 'RscDisplayCraftingMenu';" !="createDialog \"DAYZ_PADLOCK\";" !="createDialog \"horde_journal_front_cover\";" !="createDialog 'horde_journal_front_cover';" !="createDialog 'horde_journal_pages_headshots';" !="createDialog 'horde_journal_pages_murders';" !="createDialog 'horde_journal_pages_journal_humanity';" !="createDialog 'horde_journal_pages_zombies';" !="createDialog 'horde_journal_pages_bandits';" !="createDialog 'horde_journal_pages_humanity_art';" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_trader_data = (_this select 3);\n\n_dialog = createdialog \"TraderDialog\";" !="_ok = createdialog \"SafeKeyPad\";" !="_ok = createdialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";" 5 createDisplay 5 createMarker !"\"createMarkerLocal\",\n\"setMarkerPosLocal\"," !="rcreateMarkerLocal = 'createMarkerLocal'" !"rcreateMarkerLocalcode" !"\"createMarkerLocal\", \"createSimpleTask\"," !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" !="_marker = createMarkerLocal [\"MyBody\",_pos];" -5 createUnit !="_newUnit = _group createUnit [_class,getMarkerPos \"respawn_west\",[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" +5 createUnit !="_newUnit = _group createUnit [_class,respawn_west_original,[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" 5 createVehicleLocal !="_object = (_x select 1) createVehicleLocal [0,0,0];" !"_o = _type createVehicleLocal _pos;\n_o setDir _dir;" !="_Crater= \"CraterLong\" createvehiclelocal [_pos select 0, _pos select 1, 0];" !="_plant = _x createVehicleLocal (getMarkerPos \"center\");" !="_point = \"Logic\" createVehicleLocal getPosATL _unit;" !="_obj = _class createVehicleLocal _new;" !="_obj = _class createVehicleLocal (getMarkerpos \"respawn_west\");" !" = \"#lightpoint\" createVehicleLocal " !" = \"#particlesource\" createVehicleLocal " !="_object = _ghost createVehicleLocal getMarkerpos \"respawn_west\";" !="_cursorTarget = _upgrade createVehicleLocal getMarkerpos \"respawn_west\";" !="_sign = \"Sign_arrow_down_large_EP1\" createVehicleLocal [0,0,0];" !="_obj = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !="_obj = _model createVehicleLocal [0,0,0];" !="_objectSnapGizmo = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !"_object = _type createVehicleLocal [0,0,0];\n_object setDir (_x select 2);" 5 ctrlAddEventHandler 5 ctrlRemoveAllEventHandlers