Можно ли как-то создать слушатель стандартных армовских функций, конкретный пример - читак телепортует всех в одну точку
Слушатель функций
Лучший Ответ SteelRat , 14 May 2014 - 20:43
но всё же хотелось предотвратить
Предотвратить вы можете только запретом исполнять команду
_unit setPos _position
Что ни в каком сценарии не приемлемо. По этому мониторинг, а если есть возможность то и отмена нежелательного эффекта, с телепортом это реализуемо. Только как и говорил коду выше нужна будет редакция , обращайтесь если что.
Перейти к сообщению#1 OFFLINE
Отправлено 11 May 2014 - 00:04
#2 OFFLINE
Отправлено 11 May 2014 - 14:38
Можно ли как-то создать слушатель стандартных армовских функций, конкретный пример - читак телепортует всех в одну точку
В фильтр баттлая можно внести списко разрешённых скриптов, насколько я знаю.
#3 OFFLINE
Отправлено 11 May 2014 - 20:51
Анти телепорт оригинального DayZ мода, активируете на каждом клиенте, если кто то сам или читачёк устроит телепорт, всех откинет на исходные позиции, вероятно придётся по редактировать код, пробуйте.
/* Anti-Teleport Created By Razor Refactored By Alby */ private["_curpos","_lastpos","_curheight","_lastheight","_terrainHeight","_curtime","_lasttime","_distance","_difftime","_speed","_topSpeed"]; 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; };
#4 OFFLINE
Отправлено 14 May 2014 - 00:25
Анти телепорт оригинального DayZ мода, активируете на каждом клиенте, если кто то сам или читачёк устроит телепорт, всех откинет на исходные позиции, вероятно придётся по редактировать код, пробуйте.
/* Anti-Teleport Created By Razor Refactored By Alby */ private["_curpos","_lastpos","_curheight","_lastheight","_terrainHeight","_curtime","_lasttime","_distance","_difftime","_speed","_topSpeed"]; 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; };
спасибо, это тоже буду использовать в проекте, но всё же хотелось предотвратить
#5 OFFLINE
Отправлено 14 May 2014 - 20:43 Лучший Ответ
но всё же хотелось предотвратить
Предотвратить вы можете только запретом исполнять команду
_unit setPos _position
Что ни в каком сценарии не приемлемо. По этому мониторинг, а если есть возможность то и отмена нежелательного эффекта, с телепортом это реализуемо. Только как и говорил коду выше нужна будет редакция , обращайтесь если что.
#6 OFFLINE
Отправлено 20 May 2014 - 01:43
но всё же хотелось предотвратить
Предотвратить вы можете только запретом исполнять команду
_unit setPos _positionЧто ни в каком сценарии не приемлемо. По этому мониторинг, а если есть возможность то и отмена нежелательного эффекта, с телепортом это реализуемо. Только как и говорил коду выше нужна будет редакция , обращайтесь если что.
спасибо, как будут вопросы сразу к вам )