AI Core
Referência da APIAI Core: exports de servidor

EMS

Quantos médicos estão livres para atender um chamado e os chamados de socorro de jogadores caídos, pelo script de EMS que estiver rodando ou pelo próprio ai-core.

A camada de EMS responde a duas perguntas para qualquer script: "quantos médicos podem atender um chamado?" e "envie um chamado de socorro aos médicos". O ai-core pergunta à fonte de EMS que a configuração EMS source do painel escolhe, ou ao primeiro script de EMS que estiver rodando. O que esse script não consegue responder, o ai-core responde ele mesmo: médicos livres a partir das próprias contagens de quem está em serviço, e um chamado de socorro como alerta de alta prioridade aos empregos pela camada de dispatch.

GetEmsSystem

A fonte de EMS em uso.

Lado: Servidor · Espera: não · Lib: ems.provider()

Assinatura
GetEmsSystem(): string | null
Lua
local system = exports['ai-core']:GetEmsSystem() -- 'ai-core' ou o nome de um script

Parâmetros

Nenhum.

Retorno

string | null: o nome do recurso do script de EMS, ou "ai-core" quando a parte própria do ai-core responde (nenhum script de EMS rodando). A parte própria do ai-core está sempre lá, então na prática isto nunca é null.

Exemplo

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

addCommand("emssystem", { help: "Shows the EMS source", restricted: true }, () => {
  console.log(core.GetEmsSystem());
});

GetAvailableMedics

Quantos médicos nos empregos informados podem atender um chamado agora. Um script de EMS com dispatch próprio deixa de fora os médicos ocupados; a resposta própria do ai-core é todo mundo em serviço.

Lado: Servidor · Espera: não · Lib: ems.available

Assinatura
GetAvailableMedics(jobs: string[]): number
Lua
local medics = exports['ai-core']:GetAvailableMedics({ 'ambulance' })

Parâmetros

Prop

Type

Retorno

number: médicos livres. 0 para nenhum, uma lista vazia ou um valor que não é lista. Quando o script de EMS falha, a contagem própria do ai-core de quem está em serviço responde.

Exemplo

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");
const EMS_JOBS = ["ambulance"];

// O botão "renascer no hospital" só funciona enquanto nenhum médico pode vir.
onClientCallback("myscript:respawn", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (core.GetAvailableMedics(EMS_JOBS) > 0) return fail("MEDICS_AVAILABLE");
  // ... leve o jogador ao hospital e reviva
  return { ok: true };
});

SendDistress

Envia o chamado de socorro de um jogador caído aos médicos. Com um script de EMS que aceita chamados, o chamado vai para ele; senão o ai-core envia um alerta de alta prioridade (código 10-52, um ícone de kit médico, a posição do jogador) aos membros em serviço de jobs pelo sistema de alertas ativo.

Lado: Servidor · Espera: não · Lib: ems.distress

Assinatura
SendDistress(source: number, call: DistressCall): boolean
Lua
local sent = exports['ai-core']:SendDistress(source, { jobs = { 'ambulance' }, message = 'Unconscious' })

Parâmetros

Prop

Type

DistressCall

Prop

Type

Veja DistressCall.

Retorno

boolean: true quando algo aceitou o chamado. false quando o jogador não está online, jobs está vazio, o script de EMS o recusou ou o alerta próprio do ai-core não encontrou nenhum sistema de alertas rodando.

Exemplo

import { onClientCallback, Cooldowns, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
import { Locale } from "common";

const core = resourceExport("ai-core");
const cooldowns = new Cooldowns();

// O botão "chamar um médico" na tela de morte, uma vez por minuto.
onClientCallback("myscript:distress", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (!cooldowns.take(source, 60_000)) return fail("WAIT");
  const sent = core.SendDistress(source, { jobs: ["ambulance"], message: Locale("DISTRESS_UNCONSCIOUS") });
  return sent ? { ok: true } : fail("NO_MEDICS");
});

Nesta página