Death·Экспорты

Экспорты

DS-Death предоставляет пару net-событий, которые можно вызвать из любого скрипта, три клиентских экспорта для проверки состояния и поднятия рядом стоящих, и набор хуков на уровне конфига, чтобы подключить свои триггеры на смерть, поднятие, респавн и прочее.

События

События — самая простая точка интеграции: вызывай их из ambulance job, телефона, мини-игры или админ-инструмента.

DS-Death:revive

Поднимает локального игрока (или указанного игрока, если вызвано с сервера). Используй это, чтобы встроить DS-Death в существующие потоки поднятия — например, в обработчик esx_ambulancejob:revive из ambulance job в ESX.

Lua
-- 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, чтобы отпустить.

Lua
-- 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

Ищет вокруг локального игрока тех, кто в нокауте, и пытается поднять ближайшего. Скрипт сам берёт на себя проверку предмета, полосу прогресса и событие поднятия, так что тебе остаётся только привязать этот экспорт к удобному триггеру взаимодействия (использование предмета, опция таргета, кейбинд).

Сигнатура

Lua
exports['DS-Death']:ReviveNear()

Пример

Lua
-- e.g. from a usable-item handler or a target option
exports['DS-Death']:ReviveNear()

isPlayerDead

client

Возвращает, полностью ли мёртв указанный игрок (ждёт респавна). Передай server ID, чтобы спросить про другого игрока; не передавай ничего, чтобы проверить локального.

Сигнатура

Lua
exports['DS-Death']:isPlayerDead(serverId)

Параметры

НазваниеТипОписание
serverId?numberServer ID игрока, о котором спрашиваешь. По умолчанию ты сам.

Возвращает

boolean

true, пока игрок полностью мёртв, иначе false.

Пример

Lua
if exports['DS-Death']:isPlayerDead() then
  -- block phone, inventory, etc.
end

isPlayerKnocked

client

Возвращает, находится ли указанный игрок сейчас в нокауте (лежит, но его ещё можно поднять). Работает так же, как isPlayerDead: server ID необязателен и по умолчанию означает тебя самого.

Сигнатура

Lua
exports['DS-Death']:isPlayerKnocked(serverId)

Параметры

НазваниеТипОписание
serverId?numberServer ID игрока, о котором спрашиваешь. По умолчанию ты сам.

Возвращает

boolean

true, пока игрок в нокауте и ждёт поднятия.

Пример

Lua
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, чтобы ограничить другие системы (телефон, инвентарь, рация) без постоянного опроса.

Всё ещё не выходит?

Открой тикет в нашем Discord, и мы поможем.

Зайти в Discord →