Функции FH
Глобальные функции гейммода. Используйте для модификации поведения раундов, аниматроников и подарков.
Управление аниматрониками
giveKiller(ply, killer, [force]) SERVER
Назначает игрока аниматроником.
| Параметр | Тип | Описание |
|---|---|---|
ply | Player | Кому выдать |
killer | string | Имя (например, "pill_wfreddy2") |
force | bool (опц.) | Если true — выдаст даже если такой же уже есть |
giveKiller(ply, "pill_springtrap", true)giveKillerSilent(ply, killer, [force]) SERVER
Тоже самое что и сверху, но без оповещения в чат.
TaseAnimatronic(ply) SERVER
Если игрок — аниматроник, бьёт его током (как Шокер).
TaseAnimatronic(ply)restoreAnimatronics() SERVER
Снимает роль аниматроника со всех текущих аниматроников.
restoreAnimatronic(ply) SERVER
Снимает роль аниматроника с конкретного игрока.
Подарки
doGiftSpawning() SERVER
Включает появление подарков на карте.
disableGiftSpawning() SERVER
Отключает появление подарков.
Информация о раунде
fh.GetRoundCount() SERVER
Возвращает номер текущего раунда (целое число).
fh.GetEarnedKillers(players) SERVER
Возвращает таблицу игроков, сортируя их сначала по "заслужившим" быть аниматроником в этом раунде.
local candidates = fh.GetEarnedKillers(player.GetAll())
-- первый игрок в таблице зачастую дольше всех не был аниматроником.
giveKiller(candidates[1], "pill_wfreddy2")fh.GetActiveUsedKiller(killer) SERVER
Возвращает игрока, которому был выдан указанный аниматроник.
if fh.GetActiveUsedKiller("pill_wbonnie2") then
print("Бонни уже в игре!")
endВнимание
Если аниматроников с именем killer больше одного, то функция выдаст того, которого выдали последним.
Способности аниматроников
Где использовать
Эти функции предназначены для использования внутри пилл-паков аниматроников или своих хуков, расширяющих их.
performJumpscare(ply, ent, target, killDelay, [voiceCharacter], [jumpscareDistance], [wepClass]) SERVER
Насильно скримерит target для ply. Возвращает true если скример произошёл, а false - если нет.
| Параметр | Тип | Описание |
|---|---|---|
ply | Player | Аниматроник |
ent | Entity | Модель аниматроника (pills.getMappedEnt(ply)) |
target | Player | Жертва |
killDelay | float | Время убийства |
voiceCharacter | string (опц.) | Тех. Имя аниматроника (используется для проигрывания войслайнов) |
jumpscareDistance | float (опц.) | Дистанция между аниматроником и жертвой |
wepClass | string (опц.) | Класс оружия рук аниматроника, для которой включится анимация scare |
jumpscareEvent(ply, ent, target, [dist]) SERVER
Замораживает игрока и жертву в скримере. Вызывайте после проигрывания анимации.
| Параметр | Тип | Описание |
|---|---|---|
ply | Player | Аниматроник |
ent | Entity | Модель аниматроника (pills.getMappedEnt(ply)) |
target | Player | Жертва |
dist | float (опц.) | Дистанция между аниматроником и жертвой |
endo.grabNeareastPlayer(ply, ent) SERVER
Используется Эндоскелетом для захвата игрока. Автоматически ищет цель поблизости.
endo.endoRelease(ply) SERVER
Заставляет аниматроника отпустить ранее схваченного игрока.
endo.releaseExactPlayer(target) SERVER
Пытается отпустить target, если его держит аниматроник с помощью одной из функций выше.
endo.isGrabbed(target) SERVER
Возвращает, держит ли кто-то игрока target.
Поиск целей
FindNearestPlayer(origin, radius, ignorePlayer, fov) SHARED
Ищет ближайшего выжившего в радиусе.
| Параметр | Тип | Описание |
|---|---|---|
origin | Vector | Точка поиска |
radius | number | Радиус |
ignorePlayer | Player | Кого игнорировать |
fov | number | Если указано вместе с ignorePlayer — поиск только в конусе обзора |
Идеально подходит для выбора цели атаки.
fh_get_nearest_players(origin, radius, ignorePlayer) SHARED
Возвращает таблицу выживших в радиусе. Используется Клоуном при ударе молотом.
fh_get_nearest_props(origin, radius) SHARED
Возвращает таблицу пропов в радиусе.
Регистрация аниматроников
killers.Register(pill, name, fullname, color, category) SHARED
Регистрирует аниматроника в базу режима. После успешной регистрации аниматроник будет доступен в Админ-Панели.
| Параметр | Тип | Описание |
|---|---|---|
pill | string | Название пилла |
name | string | Техническое имя |
fullname | string | Полное имя |
color | color | Цвет интерфейса аниматроника |
category | string | Категория аниматроника (Используется для сортировки в Админ-Панели) |
Важно
Именно здесь режим сохраняет иконки аниматроника (для Tab-меню, или выборки аниматроников), а также портрет аниматроника, который используется в интерфейсе игрока в левом нижнем углу.
-- Код из animatronics/bear5.lua
killers.Register("bear5_main", "bear5", "Bear 5", Color(0,120,255), "Freaks")
killers.Register("bear5_clone", "bearling5", "Bearling 5", Color(0,120,255), "Freaks")
killers.Register("fox4", "fox4", "Fox 4", Color(0,255,20), "Freaks")killers.SetAbilities(name, abilities) SHARED
Устанавливает способности аниматроника, которые будут отображаться в интерфейсе игрока.
Каждая способность в таблице должна содержать следующие данные:
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название способности |
key | string | Кнопка спобности |
hidden | bool | Спрятать пока нет КД? |
tokens | int (опц.) | Количество токенов способности |
condition | function (опц.) | Функция должна возвращать цвет, в который будет красится кнопка. |
Важно
Ванильный FH нигде не использует таблицу способностей на сервере, но всё равно советуется устанавливать способности с обеих сторон.
-- Код из animatronics/bear5.lua
killers.SetAbilities("bear5", {
{ name = 'highlight', key = 'R' },
{ name = 'death', key = 'RMB' },
})Управление списками аниматроников
killers.getAll() SHARED
Все зарегистрированные аниматроники.
killers.getAllSolos() SHARED
Все не вторичные аниматроники.
Важно
Не проверяет играбельность
killers.getAllPreferables(secondaries) SHARED
Все играбельные аниматроники. Если secondaries = true — включает и вторичных.
killers.getAllNonPreferables() SHARED
Все неиграбельные аниматроники.
killers.getAllSecondaries() SHARED
Все вторичные аниматроники.
killers.GetName(pill) SHARED
Возвращает имя аниматроника.
print(killers.GetName("pill_wfreddy2")) -- freddykillers.GetFullName(pill) SHARED
Возвращает полное имя аниматроника.
Важно
Полное имя аниматроника чаще всего хранит ключ к переводу, который можно преобразовать в нормальную строку только на клиенте. На сервере советуется получать полное имя аниматроника у модель-энтити (pills.getMappedEnt(ply)) через значение printName.
print(killers.GetFullName("pill_sfreddy2")) -- fazhunt.animatronics.sfreddypill_makePreferable(anim, bool) SHARED
Делает аниматроника играбельным или убирает из списка играбельных.
pill_makePreferable("pill_wfreddy2", true)Важно
Эту функцию напрямую использует Админ-Панель, когда снимается или устанавливается играбельность.
pill_makeSecondary(anim, bool) SHARED
Добавляет/убирает аниматроника из списка вторичных. Чаще всего используется сразу же после регистрации аниматроника.
pill_makeSecondary("pill_wbonnie2", true)