diff --git a/SQF/dayz_code/init/veh_resetEH.sqf b/SQF/dayz_code/init/veh_resetEH.sqf index 7eb621592..c9a760308 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 select 0),"all"] call server_updateObject;}]; + _this addEventHandler ["GetOut", {_this call server_antiWall; [(_this select 0),"all"] call server_updateObject;}]; _this addEventHandler ["GetIn", {[(_this select 0),"all"] call server_updateObject;}]; }; diff --git a/SQF/dayz_code/init/vehicle_init.sqf b/SQF/dayz_code/init/vehicle_init.sqf deleted file mode 100644 index e6c237183..000000000 --- a/SQF/dayz_code/init/vehicle_init.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/*********************************************************** -ASSIGN DAMAGE HANDLER TO A UNIT -- Function set_EH -- unit call set_EH; -************************************************************/ -private ["_unit","_eh1","_eh2","_dir","_location","_eh3","_eh4","_eh5","_eh6"]; -_unit = _this; -_dir = getdir _this; -_location = getPosATL _this; - -//Assign event handlers -_eh1 = _unit addeventhandler ["HandleDamage",{ _this call vehicle_handleDamage } ]; -_eh2 = _unit addeventhandler ["Killed",{ _this call vehicle_handleKilled } ]; - - //diag_log format ["set EH %1 for vehicle:%2", _eh1, typeOf _unit ]; - -if (isServer) then { - _eh3 = _unit addEventHandler ["GetOut", {[(_this select 0),"all"] call server_updateObject;}]; - _eh4 = _unit addEventHandler ["GetIn", {[(_this select 0),"all"] call server_updateObject;}]; - _eh5 = _unit addEventHandler ["Killed",{ _this call vehicle_handleKilled } ]; - _eh6 = _unit addeventhandler ["HandleDamage",{ _this call vehicle_handleDamage } ]; -}; \ No newline at end of file diff --git a/SQF/dayz_server/compile/server_antiWall.sqf b/SQF/dayz_server/compile/server_antiWall.sqf new file mode 100644 index 000000000..2e4528d65 --- /dev/null +++ b/SQF/dayz_server/compile/server_antiWall.sqf @@ -0,0 +1,45 @@ +/* + 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 a8be7d3f6..08aa25c0c 100644 --- a/SQF/dayz_server/init/server_functions.sqf +++ b/SQF/dayz_server/init/server_functions.sqf @@ -26,6 +26,8 @@ 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"; @@ -55,24 +57,15 @@ array_reduceSizeReverse = { }; array_reduceSize = { - private["_array1","_array","_count","_num","_newarray","_startnum","_index"]; + private ["_array1","_array","_count","_num"]; _array1 = _this select 0; _array = _array1 - ["Hatchet_Swing","Machete_Swing","Fishing_Swing","sledge_swing","crowbar_swing"]; - //diag_log format ["array_reduceSize IN: %1", _array]; - _newarray = []; _count = _this select 1; _num = count _array; if (_num > _count) then { - _startnum = _num - 1; - _index = _count - 1; - for "_i" from 0 to _index do { - _newarray set [_i,_array select _i]; - }; - _array = _newarray; - }; - //diag_log format ["array_reduceSize OUT: %1", _array]; + _array resize _count; + }; _array - }; vehicle_handleServerKilled = {