ai-death para desarrolladores
Reanimar, curar y el estado de abatido a través de la capa médica de AI Core, los exports de servidor de ai-death, el state bag dead y el evento de reanimación de QB.
Para reanimar, curar o comprobar a un jugador abatido desde tu script, usa medical de la lib (TypeScript) o los exports RevivePlayer / HealPlayer / IsPlayerDead de ai-core (Lua). Pasan por la capa médica de AI Core y funcionan con el script de muerte que esté en uso (ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance...). Los exports de ai-death de más abajo son los que llama esa capa mientras ai-death está en marcha.
Funciones de la lib (recomendado)
medical.revive
Levanta a un jugador abatido donde está tumbado.
Lado: Servidor · Espera: no
medical.revive(source: number): booleanlocal ok = exports['ai-core']:RevivePlayer(source)No hay aiLib.medical en Lua: llama al export de ai-core como arriba.
Parámetros
Prop
Type
Devuelve
true cuando el jugador estaba abatido y ahora está en pie. false cuando no estaba abatido o no hay script de muerte en marcha.
Ejemplo
import { addCommand, medical, notify } from "@aicore-fivem/lib/server";
// /revive <id> para los administradores de 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
Salud completa para un jugador que no está abatido.
Lado: Servidor · Espera: no
medical.heal(source: number): booleanlocal ok = exports['ai-core']:HealPlayer(source)Devuelve
true cuando un script de muerte aceptó la llamada. false cuando no hay script de muerte en marcha.
Con ai-death, curar a un jugador abatido levanta al ped pero mantiene el estado de abatido. Comprueba medical.isDead(source) y llama antes a medical.revive.
medical.isDead
Si un jugador está abatido.
Lado: Servidor · Espera: no
medical.isDead(source: number): booleanlocal down = exports['ai-core']:IsPlayerDead(source)Devuelve
true mientras el jugador está abatido. false cuando está en pie o no hay script de muerte en marcha.
medical.provider
El script de muerte que usa la capa médica.
Lado: Servidor · Espera: no
medical.provider(): string | nulllocal name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... o nilDevuelve
El nombre del recurso, o null / nil cuando no hay ningún script de muerte soportado en marcha.
medical.isDead (client)
El estado de abatido del jugador local, en el cliente, sea cual sea el script de muerte en uso. Los scripts de muerte mantienen vivo a un ped abatido para animarlo, así que IsEntityDead solo no basta.
Lado: Cliente · Espera: no
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): voidlocal down = exports['ai-core']:IsDead()Ejemplo
import { medical, notify } from "@aicore-fivem/lib/client";
RegisterCommand("emote", () => {
if (medical.isDead()) return notify("Not while down", "error");
// ... reproducir el emote
}, false);
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" }); // cierra tu pantalla cuando el jugador cae
});Exports de servidor
La capa médica los llama mientras ai-death está en marcha. Tipados como AiDeathServerExports en @aicore-fivem/shared, así que resourceExport("ai-death") los conoce. Revive e IsDead también responden como exports.qbx_medical:Revive / IsDead. Cada export también responde bajo su gemelo en minúsculas (revive).
Revive
Revive(source: number): booleanlocal ok = exports['ai-death']:Revive(source)Levanta a un jugador abatido donde está tumbado. true cuando estaba abatido, false en otro caso.
IsDead
IsDead(source: number): booleanlocal down = exports['ai-death']:IsDead(source)true mientras el jugador está abatido.
Heal
Heal(source: number): voidexports['ai-death']:Heal(source)Salud completa para un jugador que no está abatido. No devuelve nada. En un jugador abatido levanta al ped pero el estado de abatido se queda: llama antes a Revive.
State bag dead
true en el state bag del jugador mientras ai-death lo mantiene abatido; el servidor lo escribe. La clave es PLAYER_BAGS.dead en @aicore-fivem/shared.
local down = Player(source).state.dead == true -- servidor
local down = LocalPlayer.state.dead == true -- cliente, el jugador 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;Léelo solo cuando sepas que ai-death está en marcha; medical.isDead funciona con cualquier script de muerte.
Metadata del personaje isdead
true mientras está abatido, guardado en el personaje (la clave de QBCore), así que un jugador que se reconecta abatido vuelve abatido. No lo escribas: ai-death lo fija cuando el jugador cae y lo borra cuando se levanta.
Evento de cliente hospital:client:Revive
El evento de reanimación de QBCore. Cuando el servidor se lo envía a un jugador, ai-death lo reanima donde está (lo usan scripts de QB y menús de administración).
Lado: Servidor -> cliente · Argumentos: ninguno
emitNet("hospital:client:Revive", target);Este evento no borra el estado de abatido del servidor como hace medical.revive. Usa medical.revive(source) en código nuevo.
Eventos y callbacks privados
El contrato propio del script (resource/common/death.ts). Pueden cambiar entre versiones: no los dispares ni los escuches desde otros recursos.
| Nombre | Dirección | Qué transporta |
|---|---|---|
ai-death:client:down | servidor -> jugador | (seconds, medics, callSeconds): el jugador está abatido; la reaparición se abre tras seconds, hay medics libres ahora y se puede volver a llamar a un médico tras callSeconds. |
ai-death:client:revive | servidor -> jugador | (point | null): de nuevo en pie en un hospital, o donde está tumbado. |
ai-death:respawn | callback de cliente | (): reaparecer en el hospital más cercano tras el temporizador (paga la tarifa). |
ai-death:treat | callback de cliente | (hospitalId): tratamiento de pago en un punto de recepción. |
ai-death:distress | callback de cliente | (): llamar a un médico; responde { ok, seconds }. |