ai-death para desenvolvedores
Reanimar, curar e o estado de caído pela camada médica do AI Core, os exports do servidor do ai-death, o state bag de morto e o evento de reanimação do QB.
Para reanimar, curar ou verificar um jogador caído a partir do seu script, use o medical da lib (TypeScript) ou os exports RevivePlayer / HealPlayer / IsPlayerDead do ai-core (Lua). Eles passam pela camada médica do AI Core e funcionam com qualquer script de morte que estiver rodando (ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance...). Os exports do ai-death mais abaixo são o que essa camada chama enquanto o ai-death roda.
Funções da lib (recomendado)
medical.revive
Levanta um jogador caído onde ele está.
Lado: Servidor · Espera: não
medical.revive(source: number): booleanlocal ok = exports['ai-core']:RevivePlayer(source)Não existe aiLib.medical em Lua: chame o export do ai-core como acima.
Parâmetros
Prop
Type
Retorno
true quando o jogador estava caído e agora está de pé. false quando ele não estava caído ou nenhum script de morte está rodando.
Exemplo
import { addCommand, medical, notify } from "@aicore-fivem/lib/server";
// /revive <id> para administradores do ai-core.
addCommand(
"revive",
{ help: "Revive a player", restricted: true, params: [{ name: "id", type: "playerId" }] as const },
(source, { id }) => {
if (!medical.revive(id) && source > 0) notify(source, "That player is not down", "error");
},
);medical.heal
Vida cheia para um jogador que não está caído.
Lado: Servidor · Espera: não
medical.heal(source: number): booleanlocal ok = exports['ai-core']:HealPlayer(source)Retorno
true quando um script de morte atendeu a chamada. false quando nenhum script de morte está rodando.
Com o ai-death, curar um jogador caído levanta o ped mas mantém o estado de caído. Verifique medical.isDead(source) e chame medical.revive antes.
medical.isDead
Se um jogador está caído.
Lado: Servidor · Espera: não
medical.isDead(source: number): booleanlocal down = exports['ai-core']:IsPlayerDead(source)Retorno
true enquanto o jogador está caído. false quando ele está de pé ou nenhum script de morte está rodando.
medical.provider
O script de morte que a camada médica usa.
Lado: Servidor · Espera: não
medical.provider(): string | nulllocal name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... ou nilRetorno
O nome do recurso, ou null / nil quando nenhum script de morte suportado está rodando.
medical.isDead (client)
O estado de caído do jogador local, no cliente, qualquer que seja o script de morte rodando. Scripts de morte mantêm um ped caído vivo para animá-lo, então IsEntityDead sozinho não basta.
Lado: Cliente · Espera: não
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): voidlocal down = exports['ai-core']:IsDead()Exemplo
import { medical, notify } from "@aicore-fivem/lib/client";
RegisterCommand("emote", () => {
if (medical.isDead()) return notify("Not while down", "error");
// ... toca o emote
}, false);
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" }); // fecha sua tela quando o jogador cai
});Exports do servidor
A camada médica chama estes enquanto o ai-death roda. Tipados como AiDeathServerExports em @aicore-fivem/shared, então resourceExport("ai-death") os conhece. Revive e IsDead também respondem como exports.qbx_medical:Revive / IsDead. Cada export também responde com seu equivalente em minúsculas (revive).
Revive
Revive(source: number): booleanlocal ok = exports['ai-death']:Revive(source)Levanta um jogador caído onde ele está. true quando ele estava caído, false caso contrário.
IsDead
IsDead(source: number): booleanlocal down = exports['ai-death']:IsDead(source)true enquanto o jogador está caído.
Heal
Heal(source: number): voidexports['ai-death']:Heal(source)Vida cheia para um jogador que não está caído. Não retorna nada. Em um jogador caído, levanta o ped mas o estado de caído continua: chame Revive antes.
State bag dead
true no state bag do jogador enquanto o ai-death o mantém caído; o servidor o escreve. A chave é PLAYER_BAGS.dead em @aicore-fivem/shared.
local down = Player(source).state.dead == true -- servidor
local down = LocalPlayer.state.dead == true -- cliente, o jogador localimport { PlayerState, stateBoolean } from "@aicore-fivem/lib/server";
import { PLAYER_BAGS } from "@aicore-fivem/shared";
const dead = new PlayerState(PLAYER_BAGS.dead, stateBoolean);
const down = dead.get(source) === true;Leia-o só quando você sabe que o ai-death está rodando; medical.isDead funciona com todo script de morte.
Metadata de personagem isdead
true enquanto caído, guardado no personagem (a chave do QBCore), então um jogador que reconecta caído volta caído. Não o escreva: o ai-death o define quando o jogador cai e o limpa quando ele se levanta.
Evento de cliente hospital:client:Revive
O evento de reanimação do QBCore. Quando o servidor o envia a um jogador, o ai-death o reanima onde ele está (scripts QB e menus de administração o usam).
Lado: Servidor -> cliente · Argumentos: nenhum
emitNet("hospital:client:Revive", target);Este evento não limpa o estado de caído do servidor como o medical.revive faz. Use medical.revive(source) em código novo.
Eventos e callbacks privados
O contrato próprio do script (resource/common/death.ts). Eles podem mudar entre versões: não os dispare nem os escute a partir de outros recursos.
| Nome | Direção | O que carrega |
|---|---|---|
ai-death:client:down | servidor -> jogador | (seconds, medics, callSeconds): o jogador está caído; o respawn abre depois de seconds, medics estão livres agora, um médico pode ser chamado de novo depois de callSeconds. |
ai-death:client:revive | servidor -> jogador | (point | null): de pé de novo em um hospital, ou onde ele está. |
ai-death:respawn | callback do cliente | (): respawn no hospital mais próximo depois do timer (paga a taxa). |
ai-death:treat | callback do cliente | (hospitalId): tratamento pago em um ponto de check-in. |
ai-death:distress | callback do cliente | (): chama um médico; responde { ok, seconds }. |