Экспорты
DS-Death предоставляет пару net-событий, которые можно вызвать из любого скрипта, три клиентских экспорта для проверки состояния и поднятия рядом стоящих, и набор хуков на уровне конфига, чтобы подключить свои триггеры на смерть, поднятие, респавн и прочее.
События
События — самая простая точка интеграции: вызывай их из ambulance job, телефона, мини-игры или админ-инструмента.
DS-Death:revive
Поднимает локального игрока (или указанного игрока, если вызвано с сервера). Используй это, чтобы встроить DS-Death в существующие потоки поднятия — например, в обработчик esx_ambulancejob:revive из ambulance job в ESX.
-- Client side
TriggerEvent('DS-Death:revive')
-- Server side (revives the player whose source is passed in)
TriggerClientEvent('DS-Death:revive', source)DS-Death:lockAnim
Блокирует или разблокирует анимацию смерти DS-Death. Пригодится, когда другая система (работа скорой, своя мини-игра поднятия) хочет проиграть собственную анимацию, оставив игрока в состоянии нокаута DS-Death. Передай true, чтобы заблокировать, и false, чтобы отпустить.
-- Client side
TriggerEvent('DS-Death:lockAnim', true) -- lock the death animation
TriggerEvent('DS-Death:lockAnim', false) -- release it
-- Server side (target a specific player)
TriggerClientEvent('DS-Death:lockAnim', source, true)Экспорты
Все три экспорта работают на клиенте. Проверки состояния принимают необязательный server ID: не передавай ничего, чтобы спросить про локального игрока.
ReviveNear
clientИщет вокруг локального игрока тех, кто в нокауте, и пытается поднять ближайшего. Скрипт сам берёт на себя проверку предмета, полосу прогресса и событие поднятия, так что тебе остаётся только привязать этот экспорт к удобному триггеру взаимодействия (использование предмета, опция таргета, кейбинд).
Сигнатура
exports['DS-Death']:ReviveNear()Пример
-- e.g. from a usable-item handler or a target option
exports['DS-Death']:ReviveNear()isPlayerDead
clientВозвращает, полностью ли мёртв указанный игрок (ждёт респавна). Передай server ID, чтобы спросить про другого игрока; не передавай ничего, чтобы проверить локального.
Сигнатура
exports['DS-Death']:isPlayerDead(serverId)Параметры
| Название | Тип | Описание |
|---|---|---|
| serverId? | number | Server ID игрока, о котором спрашиваешь. По умолчанию ты сам. |
Возвращает
true, пока игрок полностью мёртв, иначе false.
Пример
if exports['DS-Death']:isPlayerDead() then
-- block phone, inventory, etc.
endisPlayerKnocked
clientВозвращает, находится ли указанный игрок сейчас в нокауте (лежит, но его ещё можно поднять). Работает так же, как isPlayerDead: server ID необязателен и по умолчанию означает тебя самого.
Сигнатура
exports['DS-Death']:isPlayerKnocked(serverId)Параметры
| Название | Тип | Описание |
|---|---|---|
| serverId? | number | Server ID игрока, о котором спрашиваешь. По умолчанию ты сам. |
Возвращает
true, пока игрок в нокауте и ждёт поднятия.
Пример
local target = GetClosestPlayer()
if exports['DS-Death']:isPlayerKnocked(GetPlayerServerId(target)) then
-- show "Revive" prompt
endХуки в конфиге
Помимо событий и экспортов, в config.lua есть несколько пустых функций, которые можно расширять, не трогая защищённое escrow-ядро. Впиши свои триггеры и экспорты в любую из них.
- OnKnocked, OnDeath, OnRevive, OnRespawn: срабатывают при соответствующем переходе состояния игрока.
- CanDie: верни
false, чтобы полностью подавить цикл смерти (например, внутри мини-игры, страйкбольного раунда или PvP-арены). - EMSCall: получает координаты умирающего игрока; направь это на триггер экстренного вызова в своём телефоне.
- Notification: замени своей системой уведомлений; получает текстовое сообщение.
- CustomProgress / StopCustomProgress: подключи любую полосу прогресса (
ox_lib, свой UI и т. д.), когда в конфиге стоитProgressbar = 'CUSTOM'. - DisabledKeys: элементы управления, отключённые, пока игрок полностью мёртв. Переопредели, чтобы оставить свои клавиши рабочими.
exports['DS-Death']:isPlayerKnocked() внутри OnKnocked, чтобы ограничить другие системы (телефон, инвентарь, рация) без постоянного опроса.