Skip to content

Функции FH

Глобальные функции гейммода. Используйте для модификации поведения раундов, аниматроников и подарков.

Управление аниматрониками

giveKiller(ply, killer, [force]) SERVER

Назначает игрока аниматроником.

ПараметрТипОписание
plyPlayerКому выдать
killerstringИмя (например, "pill_wfreddy2")
forcebool (опц.)Если true — выдаст даже если такой же уже есть
lua
giveKiller(ply, "pill_springtrap", true)

giveKillerSilent(ply, killer, [force]) SERVER

Тоже самое что и сверху, но без оповещения в чат.

Пример использования →

TaseAnimatronic(ply) SERVER

Если игрок — аниматроник, бьёт его током (как Шокер).

lua
TaseAnimatronic(ply)

restoreAnimatronics() SERVER

Снимает роль аниматроника со всех текущих аниматроников.

restoreAnimatronic(ply) SERVER

Снимает роль аниматроника с конкретного игрока.


Подарки

doGiftSpawning() SERVER

Включает появление подарков на карте.

disableGiftSpawning() SERVER

Отключает появление подарков.


Информация о раунде

fh.GetRoundCount() SERVER

Возвращает номер текущего раунда (целое число).

fh.GetEarnedKillers(players) SERVER

Возвращает таблицу игроков, сортируя их сначала по "заслужившим" быть аниматроником в этом раунде.

lua
local candidates = fh.GetEarnedKillers(player.GetAll())

-- первый игрок в таблице зачастую дольше всех не был аниматроником.
giveKiller(candidates[1], "pill_wfreddy2")

fh.GetActiveUsedKiller(killer) SERVER

Возвращает игрока, которому был выдан указанный аниматроник.

lua
if fh.GetActiveUsedKiller("pill_wbonnie2") then
    print("Бонни уже в игре!")
end

Внимание

Если аниматроников с именем killer больше одного, то функция выдаст того, которого выдали последним.


Способности аниматроников

Где использовать

Эти функции предназначены для использования внутри пилл-паков аниматроников или своих хуков, расширяющих их.

performJumpscare(ply, ent, target, killDelay, [voiceCharacter], [jumpscareDistance], [wepClass]) SERVER

Насильно скримерит target для ply. Возвращает true если скример произошёл, а false - если нет.

ПараметрТипОписание
plyPlayerАниматроник
entEntityМодель аниматроника (pills.getMappedEnt(ply))
targetPlayerЖертва
killDelayfloatВремя убийства
voiceCharacterstring (опц.)Тех. Имя аниматроника (используется для проигрывания войслайнов)
jumpscareDistancefloat (опц.)Дистанция между аниматроником и жертвой
wepClassstring (опц.)Класс оружия рук аниматроника, для которой включится анимация scare

jumpscareEvent(ply, ent, target, [dist]) SERVER

Замораживает игрока и жертву в скримере. Вызывайте после проигрывания анимации.

ПараметрТипОписание
plyPlayerАниматроник
entEntityМодель аниматроника (pills.getMappedEnt(ply))
targetPlayerЖертва
distfloat (опц.)Дистанция между аниматроником и жертвой

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

Ищет ближайшего выжившего в радиусе.

ПараметрТипОписание
originVectorТочка поиска
radiusnumberРадиус
ignorePlayerPlayerКого игнорировать
fovnumberЕсли указано вместе с ignorePlayer — поиск только в конусе обзора

Идеально подходит для выбора цели атаки.

fh_get_nearest_players(origin, radius, ignorePlayer) SHARED

Возвращает таблицу выживших в радиусе. Используется Клоуном при ударе молотом.

fh_get_nearest_props(origin, radius) SHARED

Возвращает таблицу пропов в радиусе.


Регистрация аниматроников

killers.Register(pill, name, fullname, color, category) SHARED

Регистрирует аниматроника в базу режима. После успешной регистрации аниматроник будет доступен в Админ-Панели.

ПараметрТипОписание
pillstringНазвание пилла
namestringТехническое имя
fullnamestringПолное имя
colorcolorЦвет интерфейса аниматроника
categorystringКатегория аниматроника (Используется для сортировки в Админ-Панели)

Важно

Именно здесь режим сохраняет иконки аниматроника (для Tab-меню, или выборки аниматроников), а также портрет аниматроника, который используется в интерфейсе игрока в левом нижнем углу.

lua
-- Код из 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

Устанавливает способности аниматроника, которые будут отображаться в интерфейсе игрока.

Каждая способность в таблице должна содержать следующие данные:

ПараметрТипОписание
namestringНазвание способности
keystringКнопка спобности
hiddenboolСпрятать пока нет КД?
tokensint (опц.)Количество токенов способности
conditionfunction (опц.)Функция должна возвращать цвет, в который будет красится кнопка.

Важно

Ванильный FH нигде не использует таблицу способностей на сервере, но всё равно советуется устанавливать способности с обеих сторон.

lua
-- Код из 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

Возвращает имя аниматроника.

lua
print(killers.GetName("pill_wfreddy2")) -- freddy

killers.GetFullName(pill) SHARED

Возвращает полное имя аниматроника.

Важно

Полное имя аниматроника чаще всего хранит ключ к переводу, который можно преобразовать в нормальную строку только на клиенте. На сервере советуется получать полное имя аниматроника у модель-энтити (pills.getMappedEnt(ply)) через значение printName.

lua
print(killers.GetFullName("pill_sfreddy2")) -- fazhunt.animatronics.sfreddy

pill_makePreferable(anim, bool) SHARED

Делает аниматроника играбельным или убирает из списка играбельных.

lua
pill_makePreferable("pill_wfreddy2", true)

Важно

Эту функцию напрямую использует Админ-Панель, когда снимается или устанавливается играбельность.

pill_makeSecondary(anim, bool) SHARED

Добавляет/убирает аниматроника из списка вторичных. Чаще всего используется сразу же после регистрации аниматроника.

lua
pill_makeSecondary("pill_wbonnie2", true)