Files
DayZ-Epoch/SQF/dayz_code/system/antihack.sqf
2013-10-22 10:16:20 -05:00

47 lines
1.7 KiB
Plaintext

/*
Anti-Teleport
Created By Razor
Refactored By Alby
*/
private ["_curpos","_lastpos","_curheight","_lastheight","_terrainHeight","_curtime","_lasttime","_distance","_difftime","_speed","_topSpeed","_debug"];
waitUntil {vehicle player == player};
_lastpos = getPosATL (vehicle player);
_lastheight = (ATLtoASL _lastpos) select 2;
_lasttime = time;
while {alive player} do
{
_curpos = getPosATL (vehicle player);
_curheight = (ATLtoASL _curpos) select 2;
_curtime = time;
_distance = _lastpos distance _curpos;
_difftime = (_curtime - _lasttime) max 0.001;
_speed = _distance / _difftime;
_topSpeed = 10;
if (vehicle player != player) then {
_topSpeed = getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "maxSpeed");
};
_terrainHeight = getTerrainHeightASL [_curpos select 0, _curpos select 1];
//diag_log format["DEBUG: terrain: %1 current: %2", _terrainHeight, _curheight];
//diag_log format["DEBUG: all: %1 player: %2 fall: %3 terrain: %4", !((vehicle player == player) && (_curheight < _lastheight) && ((_curheight - _terrainHeight) > 1)), (vehicle player == player), (_curheight < _lastheight), (_curheight - _terrainHeight) > 1];
_debug = getMarkerPos "respawn_west";
if ((_speed > _topSpeed) && (alive player) && ((driver (vehicle player) == player) or (isNull (driver (vehicle player)))) && (_debug distance _lastpos > 3000) && !((vehicle player == player) && (_curheight < _lastheight) && ((_curheight - _terrainHeight) > 1))) then {
(vehicle player) setpos _lastpos;
atp = [name player, dayz_characterID, _lastpos, _curPos, getPosATL player];
publicVariableServer "atp";
} else {
_lastpos = _curpos;
_lastheight = _curheight;
};
_lasttime = _curtime;
sleep 0.5;
};