From 89a0840b93004c655e37de77960501ff69fabf18 Mon Sep 17 00:00:00 2001 From: "[VB]AWOL" Date: Mon, 4 Nov 2013 08:00:27 -0600 Subject: [PATCH] player side anti wall glitch protection --- SQF/dayz_code/actions/hotwire_veh.sqf | 8 --- SQF/dayz_code/compile/player_antiWall.sqf | 54 +++++++++++++++++++++ SQF/dayz_code/init/compiles.sqf | 2 +- SQF/dayz_code/init/veh_resetEH.sqf | 2 +- SQF/dayz_server/compile/server_antiWall.sqf | 45 ----------------- SQF/dayz_server/init/server_functions.sqf | 2 - 6 files changed, 56 insertions(+), 57 deletions(-) create mode 100644 SQF/dayz_code/compile/player_antiWall.sqf delete mode 100644 SQF/dayz_server/compile/server_antiWall.sqf diff --git a/SQF/dayz_code/actions/hotwire_veh.sqf b/SQF/dayz_code/actions/hotwire_veh.sqf index 6294ae2d5..71addd45c 100644 --- a/SQF/dayz_code/actions/hotwire_veh.sqf +++ b/SQF/dayz_code/actions/hotwire_veh.sqf @@ -21,14 +21,6 @@ if (_removed == 1) then { } else { publicVariable "PVDZE_veh_Lock"; }; - - /* - player moveInDriver _vehicle; - - if (local vehicle player) then { - vehicle player engineOn true; - }; - */ }; } else { cutText ["Failed to unlock car hotwire kit broken." , "PLAIN DOWN"]; diff --git a/SQF/dayz_code/compile/player_antiWall.sqf b/SQF/dayz_code/compile/player_antiWall.sqf new file mode 100644 index 000000000..5148d8c25 --- /dev/null +++ b/SQF/dayz_code/compile/player_antiWall.sqf @@ -0,0 +1,54 @@ +/* + DayZ Epoch anti wall + Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. +*/ + +private ["_vehicle","_intersects","_vehiclePos","_position","_playerPos"]; + +// Vehicle +_vehicle = _this; + +_vehiclePos = aimpos _vehicle; + +diag_log format["Vehicle: %1", _vehiclePos]; + +/* +_veh = createVehicle ["Sign_sphere10cm_EP1", _vehiclePos, [], 0, "CAN_COLLIDE"]; +_veh setPosASL _vehiclePos; +_tagColor = "#(argb,8,8,3)color(0,1,0,0.5,ca)"; +_veh setobjecttexture [0,_tagColor]; +*/ + +_playerPos = visiblePositionASL player; +_playerPos set [2,(_playerPos select 2)+1]; + +diag_log format["Player: %1", _playerPos]; + +/* +_veh2 = createVehicle ["Sign_sphere10cm_EP1", _playerPos, [], 0, "CAN_COLLIDE"]; +_veh2 setPosASL _playerPos; +*/ + +_intersectsWith = lineIntersectsWith [_playerPos, _vehiclePos, player, _vehicle]; + +diag_log format["intersectsWith : %1", _intersectsWith]; + +_position = "driver"; + +if ((count _intersectsWith) > 0) then { + diag_log format["Player Wall glitched %1 Result: %2 - player: %3 vehicle:%4", player,_intersects,_playerPos,_vehiclePos]; + switch(true)do{ + case (_position == "driver"): { + player moveInDriver _vehicle; + }; + case (_position == "gunner"): { + player moveInGunner _vehicle; + }; + case (_position == "commander"): { + player moveInCommander _vehicle; + }; + case (_position == "cargo"): { + player moveInCargo _vehicle; + }; + }; +}; \ No newline at end of file diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index 5062e4434..fc29bf8a8 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -70,7 +70,6 @@ if (!isDedicated) then { pz_attack = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\pzombie\pz_attack.sqf"; - // dog_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dog_findTargetAgent.sqf"; @@ -103,6 +102,7 @@ if (!isDedicated) then { player_flipvehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_flipvehicle.sqf"; player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf"; player_mineOre = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_mineOre.sqf"; + player_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf"; //ui player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_selectSlot.sqf"; diff --git a/SQF/dayz_code/init/veh_resetEH.sqf b/SQF/dayz_code/init/veh_resetEH.sqf index c9a760308..7eb621592 100644 --- a/SQF/dayz_code/init/veh_resetEH.sqf +++ b/SQF/dayz_code/init/veh_resetEH.sqf @@ -12,7 +12,7 @@ _this addeventhandler ["Killed",{ _this call vehicle_handleKilled } ]; if (isServer) then { _this removeAllEventHandlers "GetOut"; _this removeAllEventHandlers "GetIn"; - _this addEventHandler ["GetOut", {_this call server_antiWall; [(_this select 0),"all"] call server_updateObject;}]; + _this addEventHandler ["GetOut", {[(_this select 0),"all"] call server_updateObject;}]; _this addEventHandler ["GetIn", {[(_this select 0),"all"] call server_updateObject;}]; }; diff --git a/SQF/dayz_server/compile/server_antiWall.sqf b/SQF/dayz_server/compile/server_antiWall.sqf deleted file mode 100644 index 2e4528d65..000000000 --- a/SQF/dayz_server/compile/server_antiWall.sqf +++ /dev/null @@ -1,45 +0,0 @@ -/* - DayZ Epoch anti wall - Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. -*/ - -private ["_vehicle","_player","_intersects","_vehiclePos","_position","_playerPos"]; - -// Vehicle -_vehicle = _this select 0; -_vehiclePos = visiblePositionASL _vehicle; - -diag_log format["Vehicle: %1", _vehiclePos]; - -// Position -_position = _this select 1; - -// Player -_player = _this select 2; - -_playerPos = visiblePositionASL _player; - -diag_log format["Player: %1", _playerPos]; - -// check if intersects anything -_intersects = lineIntersects [_playerPos, _vehiclePos, _player, _vehicle]; - -if (_intersects) then { - - diag_log format["Player Wall glitched %1 Result: %2 - player: %3 vehicle:%4", _player,_intersects,_playerPos,_vehiclePos]; - - switch(true)do{ - case (_position == "driver"): { - _player action ["getInDriver", _vehicle]; - }; - case (_position == "gunner"): { - _player action ["GetInGunner", _vehicle]; - }; - case (_position == "commander"): { - _player action ["GetInCommander", _vehicle]; - }; - case (_position == "cargo"): { - _player action ["GetInCargo", _vehicle]; - }; - }; -}; \ No newline at end of file diff --git a/SQF/dayz_server/init/server_functions.sqf b/SQF/dayz_server/init/server_functions.sqf index 08aa25c0c..a4523c335 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -26,8 +26,6 @@ server_spawnCrashSite = compile preprocessFileLineNumbers "\z\addons\dayz_se server_handleZedSpawn = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_handleZedSpawn.sqf"; server_spawnEvents = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnEvent.sqf"; -server_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_antiWall.sqf"; - fnc_plyrHit = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf"; server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf";