Просветы
С обновлением 3.0.0 просвет (подсветка игроков сквозь стены) выделен в отдельную библиотеку — highlight.
Основные функции
highlight.ByDistance(ply, ent) SERVER
Автоматически просвечивает игроку ply всех выживших в радиусе, заданном консольной командой halo_radius. По умолчанию используется аниматрониками на бинд +RELOAD.
| Параметр | Тип | Описание |
|---|---|---|
ply | Player | Игрок, который просвечивает |
ent | Entity | Энтити-модель аниматроника ply (нужно для звуков) |
hook.Add("KeyPress", "MyHighlight", function(ply, key)
if key == IN_RELOAD and ply:IsAnimatronic() then
local ent = pills.getMappedEnt(ply)
if IsValid(ent) then
highlight.ByDistance(ply, ent)
end
end
end)highlight.Add(ply, players, duration, color) SERVER
Просвечивает указанных игроков для ply на заданное время, с указанным цветом.
| Параметр | Тип | Описание |
|---|---|---|
ply | Player | Кто видит просвет |
players | Player или table[Player] | Кого просвечивает |
duration | float | Длительность в секундах |
color | Color (опц.) | Цвет просвета |
Учтите
Эта функция не включает звуки оповещения о просвете. Используйте highlight.NotifyTarget() для оповещения.
addAffected(ply, duration, color) CLIENT
Просвечивает ply для локального игрока на заданное время, с указанным цветом.
| Параметр | Тип | Описание | Зн. по умолчанию |
|---|---|---|---|
ply | Player | Кто просвечен | |
duration | float (опц.) | Длительность в секундах | ConVar halo_time |
color | Color (опц.) | Цвет просвета | Color(255,0,0) |
force | bool (опц.) | Насильно просветить, даже если игрок уже просвечен | false |
removeAffected(ply, force) CLIENT
Убирает просвет для локального игрока на ply.
| Параметр | Тип | Описание | Зн. по умолчанию |
|---|---|---|---|
ply | Player | Кто просвечен | |
force | bool (опц.) | Насильно выключить просвет, если игрок был насильно просвечен | false |
Кулдауны
highlight.Cooldown(ply, duration) SERVER
Устанавливает игроку кулдаун на просвет и обновляет значение в интерфейсе.
highlight.Cooldown(ply, 15) -- 15 секунд КДINFO
Если у аниматроника нет способности «Просвет» в интерфейсе, он не узнаёт про КД.
highlight.GetCooldown(ply) SERVER
Возвращает количество секунд до следующего использования просвета.
if highlight.GetCooldown(ply) > 0 then
ply:ChatPrint("Просвет ещё не готов!")
endЗвуки просвета
highlight.AddVisionSounds(name, snd_affected, snd_unaffected) SERVER
Регистрирует звуки просвета для конкретного аниматроника.
highlight.AddVisionSounds(
"pill_wgfreddy2",
"my_anim/highlight_success.wav",
"my_anim/highlight_fail.wav"
)Важно
В путях звуков обязательно указывайте полный путь до файла, включая расширение.
highlight.GetVisionSound(ent) SERVER
Возвращает таблицу со звуками: { affected = "...", unaffected = "..." }.
highlight.NotifyTarget(target, ent, isAffected) SERVER
Включает звук просвета и накладывает визуальный эффект на экране игрока.
| Параметр | Тип | Описание |
|---|---|---|
target | Player | Кого оповестить |
ent | Entity | Модель аниматроника, который просвечивает |
isAffected | bool | true — звук успеха, false — звук провала |
highlight.NotifyTarget(survivor, pillEnt, true)