/* DayZ Epoch anti wall Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. */ private ["_vehicle","_vehiclePos","_playerPos","_activated","_id","_intersectsWith"]; _activated = false; _vehicle = _this; // position usually the drivers head area _vehiclePos = aimpos _vehicle; // works best for this type of check on players _playerPos = visiblePositionASL player; // ignore if distance is too far if((_playerPos distance _vehiclePos) > 10) exitWith {}; // Important! without this we looking at the players feet this gets us torso area _playerPos set [2,(_playerPos select 2)+1]; // Look for any intersecting objects _intersectsWith = lineIntersectsWith [_playerPos, _vehiclePos, player, _vehicle]; if ((count _intersectsWith) > 0) then { { // buildings if (_x isKindOf "Building" or _x isKindOf "DZE_Housebase") exitWith { _activated = true; }; // walls if ((typeOf _x) == "" and {["wall_", str _x, false] call fnc_inString}) exitWith { _activated = true; }; } forEach _intersectsWith; }; if(_activated) then { // this method is said to be faster than switch, lets try it. call { if (DZE_AntiWallCounter == DZE_AntiWallLimit) exitWith { cutText [(localize "str_epoch_player_9"), "PLAIN DOWN"]; _id = [player,"crushed"] spawn player_death; }; if ((_vehicle emptyPositions "driver") > 0) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_15"), "PLAIN DOWN"]; player action ["getInDriver", _vehicle]; DZE_AntiWallCounter = DZE_AntiWallCounter + 1; }; if ((_vehicle emptyPositions "gunner") > 0) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_15"), "PLAIN DOWN"]; player action ["GetInGunner", _vehicle]; DZE_AntiWallCounter = DZE_AntiWallCounter + 1; }; if ((_vehicle emptyPositions "commander") > 0) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_15"), "PLAIN DOWN"]; player action ["getInCommander", _vehicle]; DZE_AntiWallCounter = DZE_AntiWallCounter + 1; }; if ((_vehicle emptyPositions "cargo") > 0) exitWith { cutText [(localize "STR_EPOCH_ACTIONS_15"), "PLAIN DOWN"]; player action ["getInCargo", _vehicle]; DZE_AntiWallCounter = DZE_AntiWallCounter + 1; }; // kill player if none of the above are matched cutText [(localize "str_epoch_player_9"), "PLAIN DOWN"]; _id = [player,"crushed"] spawn player_death; }; } else { DZE_AntiWallCounter = 0; };