AI Core
Empregos e serviçosai-death

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

Signature
medical.revive(source: number): boolean
Lua
local 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

Signature
medical.heal(source: number): boolean
Lua
local 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

Signature
medical.isDead(source: number): boolean
Lua
local 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

Signature
medical.provider(): string | null
Lua
local name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... ou nil

Retorno

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

Signature
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): void
Lua
local 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

Signature
Revive(source: number): boolean
Lua
local 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

Signature
IsDead(source: number): boolean
Lua
local down = exports['ai-death']:IsDead(source)

true enquanto o jogador está caído.

Heal

Signature
Heal(source: number): void
Lua
exports['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.

Lua
local down = Player(source).state.dead == true   -- servidor
local down = LocalPlayer.state.dead == true      -- cliente, o jogador local
TypeScript
import { 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.

NomeDireçãoO que carrega
ai-death:client:downservidor -> 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:reviveservidor -> jogador(point | null): de pé de novo em um hospital, ou onde ele está.
ai-death:respawncallback do cliente(): respawn no hospital mais próximo depois do timer (paga a taxa).
ai-death:treatcallback do cliente(hospitalId): tratamento pago em um ponto de check-in.
ai-death:distresscallback do cliente(): chama um médico; responde { ok, seconds }.

Nesta página