Движок и ReHLDS
В отличие от «Геймплея» эти события не требуют ReGameDLL — работают и на ванильномmp.dll. Три из них (отмечены отдельно) требуют ReHLDS.
player:use
Игрок нажал +use на чём-то с обработчиком Use — кнопке, рычаге, multi_manager.Поля события
Не отменяемое: к моменту события движковый
DispatchUse уже отработал.
player:suicide
Игрок вот-вот покончит с собой командойkill из консоли.
Поля события
Отмена.
e:cancel() — команда не срабатывает вообще, даже таймер повторного kill не сдвигается.
ents:should_collide
Движок решает, должны ли две сущности физически сталкиваться.Поля события
Не через
e:cancel() — здесь нет «отмены», это гейт с записываемым результатом: последний обработчик, тронувший e.collide, и решает. Молчание любого обработчика оставляет true — обычную физику.
Единственная реализация этого хука в принципе: ReGameDLL сам его не предоставляет, так что тут нечего «оборачивать» — какой ответ дашь, такой и будет.
ents:free
Сущность вот-вот уничтожат — последняя точка, где её ещё можно прочитать.Поля события
Не отменяемое: держать сущность после этого события всё равно нельзя, движок продолжит её разрушать сразу после.
player:cvar_value
Клиент ответил на запрос значения cvar — старый вариант API, без имени cvar и без id запроса.Поля события
Плагин, который запрашивал значение, обязан сам помнить, о каком cvar шла речь — движок это не передаёт.
Смотри также
player:cvar_value2
То же самое, но новый вариант API: с именем cvar и id запроса, чтобы сверить ответ с тем, что спрашивали.Поля события
Смотри также
server:cvar_change
Любой cvar вот-вот изменится — движковый, чужого плагина, свой.Поля события
Отмена.
e:cancel() — cvar остаётся со старым значением.
Обработчик, который сам меняет cvar изнутри этого события, войдёт в него снова — не меняй здесь тот же cvar безусловно, иначе рекурсия не остановится.