Skip to content

Commit

Permalink
prevent get out of vehicle phasing though objects
Browse files Browse the repository at this point in the history
  • Loading branch information
vbawol committed Nov 1, 2013
1 parent ad1c90e commit af36a34
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 35 deletions.
2 changes: 1 addition & 1 deletion SQF/dayz_code/init/veh_resetEH.sqf
Expand Up @@ -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;}];
};

Expand Down
22 changes: 0 additions & 22 deletions SQF/dayz_code/init/vehicle_init.sqf

This file was deleted.

45 changes: 45 additions & 0 deletions 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];
};
};
};
17 changes: 5 additions & 12 deletions SQF/dayz_server/init/server_functions.sqf
Expand Up @@ -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";

Expand Down Expand Up @@ -55,24 +57,15 @@ array_reduceSizeReverse = {
};

array_reduceSize = {

This comment has been minimized.

Copy link
@vbawol

vbawol Nov 1, 2013

Author Member

this is more optimal way of trimming array.

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 = {
Expand Down

0 comments on commit af36a34

Please sign in to comment.