Игровые события
Игровые события сервера (player_death, player_hurt, round_start и другие) приходят как одноимённые события events. Аргумент — таблица ключей события. События приходят через очередь, в начале следующего кадра.
<имя игрового события>#
Подписка по имени события игры, например events.player_hurt.
| Аргумент | Тип | Описание |
|---|---|---|
e |
table |
ключи события; набор зависит от события |
Значения ключей по типу:
| Тип ключа в игре | Значение в таблице |
|---|---|
| строка | string (пусто — "") |
| float, long, short, byte | number (нет значения — 0) |
| bool | boolean (нет значения — false) |
| uint64 | 64-битное целое (cdata) |
| дескриптор сущности | ключ — entity (если сущность была жива), ключ_raw — число; пустой дескриптор — ключа нет |
| игрок (слот контроллера) | ключ_raw — число; если игрок найден, ещё ключ — entity контроллера и ключ_slot — номер слота; пусто — ключа нет |
Сущности в таблице снимаются в момент события, а не при раздаче.
events.player_death:set(function(e)
local me = entity.local_controller()
if e.attacker == me and e.userid ~= me then
print("Вы убили: ", e.userid and e.userid:name() or "?", e.headshot and " (в голову)" or "")
end
end)
game_event#
Приходит сразу после раздачи каждого игрового события по имени. Удобно, чтобы узнать, какие события вообще приходят.
| Аргумент | Тип | Описание |
|---|---|---|
name |
string |
имя игрового события |
local seen = {}
events.game_event:set(function(name)
if not seen[name] then
seen[name] = true
print("Новое игровое событие: ", name)
end
end)