AI Core
Referência da APILib: servidor

Empregos e serviços

Alertas da polícia, prisão, registros do MDT, médicos, reviver e curar, estresse, fome e sede, definições de empregos e gangues, horário nobre.

TypeScript
import { dispatch, prison, mdt, ems, medical, stress, needs, definitions, isPrimeTime } from "@aicore-fivem/lib/server";

Cada objeto aqui passa por uma das camadas do ai-core: o script que o servidor roda para aquela tarefa (um sistema de alertas, uma prisão, um MDT, um script de morte, um HUD) responde. Seu script continua funcionando quando o dono o troca. Enquanto nenhum script desses está rodando, as chamadas falham em silêncio (false, 0, null).

dispatch

dispatch.alert

Envia um alerta da polícia (ou de outro emprego). O sistema de alertas o mostra aos membros em serviço de jobs, por padrão os empregos de polícia.

Lado: Servidor · Espera: não

Signature
dispatch.alert(alert: DispatchAlert): boolean
Lua
local ok = aiLib.dispatch.alert(alert)

DispatchAlert

Prop

Type

O tipo é DispatchAlert.

Retorno

boolean: true quando enviado. false quando nenhum sistema de alertas está rodando ou o alerta é inválido.

Exemplo

import { dispatch, coordsOf, createLocale } from "@aicore-fivem/lib/server";

const Locale = createLocale();

function storeRobbed(source: number, store: string) {
  dispatch.alert({
    code: "10-90",
    title: Locale("ALERT_STORE_ROBBERY"),
    message: store,
    coords: coordsOf(source),
    source,
    icon: "store",
    priority: "high",
  });
}

prison

Penas de prisão pelo ai-core, qualquer que seja o script de prisão rodando.

prison.jail

Manda um jogador carregado para a prisão.

Lado: Servidor · Espera: não

Signature
prison.jail(source: number, minutes: number, by?: number): boolean
Lua
local ok = aiLib.prison.jail(source, minutes, by)

Prop

Type

Retorno true quando preso, false enquanto nenhuma prisão está rodando.

if (!prison.jail(target, 15, officer)) return fail("NO_PRISON");

prison.release

Solta um jogador preso.

Lado: Servidor · Espera: não

Signature
prison.release(source: number): boolean
Lua
local ok = aiLib.prison.release(source)

Retorno true quando solto, false quando não está preso ou nenhuma prisão está rodando.

prison.release(target);

prison.timeLeft

Lado: Servidor · Espera: não

Signature
prison.timeLeft(source: number): number
Lua
local minutes = aiLib.prison.timeLeft(source)

Retorno os minutos de pena restantes, 0 quando livre.

if (prison.timeLeft(source) > 0) return fail("IN_PRISON");

mdt

Registros do MDT da polícia (multas, mandados, prisões, cadeia) pela camada de MDT do ai-core. Nada é escrito enquanto nenhum MDT está rodando.

mdt.record

Escreve um registro no MDT da polícia.

Lado: Servidor · Espera: não

Signature
mdt.record(record: MdtRecord): boolean
Lua
local ok = aiLib.mdt.record(record)

MdtRecord

Prop

Type

O tipo é MdtRecord.

Retorno true quando escrito, false quando nenhum MDT está rodando ou ele não aceita esse tipo de registro.

if (prison.jail(target, 20, officer)) mdt.record({ kind: "jail", target, by: officer, title: "Armed robbery", minutes: 20 });

mdt.provider

Lado: Servidor · Espera: não

Signature
mdt.provider(): string | null
Lua
local name = aiLib.mdt.provider()

Retorno o MDT para onde os registros vão, ou null.

if (!mdt.provider()) console.log("no MDT: records are skipped");

ems

Médicos pela camada de EMS do ai-core: a contagem e os chamados de socorro próprios de um script de EMS, senão as contagens de serviço e os alertas do ai-core.

ems.available

Quantos médicos estão livres para atender um chamado.

Lado: Servidor · Espera: não

Signature
ems.available(jobs: string[]): number
Lua
local count = aiLib.ems.available(jobs)

Prop

Type

Retorno o número de médicos em serviço em jobs, deixando de fora os ocupados quando um script de dispatch os conhece.

// Deixe os jogadores renascerem no hospital só quando nenhum médico pode vir.
const canRespawn = ems.available(["ambulance"]) === 0;

ems.distress

Envia um chamado de socorro de um jogador aos médicos de call.jobs.

Lado: Servidor · Espera: não

Signature
ems.distress(source: number, call: DistressCall): boolean
Lua
local ok = aiLib.ems.distress(source, call)

Prop

Type

O tipo é DistressCall.

Retorno true quando algo aceitou o chamado, false caso contrário.

if (!ems.distress(source, { jobs: ["ambulance"], message: "Unconscious" })) return fail("NO_MEDICS");

ems.provider

Lado: Servidor · Espera: não

Signature
ems.provider(): string | null
Lua
local name = aiLib.ems.provider()

Retorno a fonte de EMS que a camada usa, "ai-core" para as próprias contagens de serviço.

console.log(`medics through ${ems.provider()}`);

medical

Reviver, curar e o estado de caído pela camada médica do ai-core, qualquer que seja o script de morte ou de ambulância rodando. Sem equivalente em Lua: chame os exports do ai-core RevivePlayer, HealPlayer, IsPlayerDead.

medical.revive

Levanta um jogador caído onde ele está.

Lado: Servidor · Espera: não

Signature
medical.revive(source: number): boolean

Retorno true quando revivido, false quando não está caído ou nenhum script de morte está rodando.

if (!medical.revive(target)) return fail("NOT_DOWN");

medical.heal

Dá vida cheia a um jogador que não está caído.

Lado: Servidor · Espera: não

Signature
medical.heal(source: number): boolean

Retorno true quando curado, false quando nenhum script de morte está rodando.

medical.heal(source);

medical.isDead

Se o jogador está caído.

Lado: Servidor · Espera: não

Signature
medical.isDead(source: number): boolean

Retorno true quando caído; false sem um script de morte. Use em vez de ler a vida do ped.

if (medical.isDead(source)) return fail("YOU_ARE_DOWN");

medical.provider

Lado: Servidor · Espera: não

Signature
medical.provider(): string | null

Retorno o script de morte que responde (ai-death...), ou null quando nenhum está rodando.

console.log(`deaths through ${medical.provider() ?? "nothing"}`);

stress

O estresse dos jogadores (0 a 100) pela camada de estresse do ai-core, qualquer que seja o HUD que o guarda.

stress.gain

Adiciona pontos de estresse.

Lado: Servidor · Espera: não

Signature
stress.gain(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.gain(source, amount)

Prop

Type

Retorno true quando adicionado, false quando nenhum HUD com estresse está rodando.

stress.gain(source, 5); // depois de um tiroteio

stress.relieve

Tira pontos de estresse.

Lado: Servidor · Espera: não

Signature
stress.relieve(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.relieve(source, amount)

Retorno true quando tirado, false quando nenhum HUD com estresse está rodando ou amount é 0 ou menos.

inventory.registerUsableItem("cigarette", (source) => {
  stress.relieve(source, 10);
});

stress.provider

Lado: Servidor · Espera: não

Signature
stress.provider(): string | null
Lua
local name = aiLib.stress.provider()

Retorno o HUD que guarda o estresse, ou null.

if (!stress.provider()) console.log("no HUD keeps stress");

needs

needs.refill

Enche a fome e a sede ao máximo (revive de admin, hospital), pelo HUD que as guarda, ou pela metadata de personagem do ai-core quando não há um.

Lado: Servidor · Espera: não

Signature
needs.refill(source: number): boolean

Sem equivalente em Lua: chame o export do ai-core RefillNeeds(source).

Retorno true quando reabastecido, false quando o jogador não tem personagem.

if (medical.revive(target)) needs.refill(target);

Definições de empregos e gangues

definitions.job

A definição de um emprego como configurada no painel do ai-core. Cada uma é lida uma vez do ai-core e mantida até o painel mudá-la, então uma leitura é uma consulta em memória.

Lado: Servidor · Espera: não

Signature
definitions.job(name: string): JobDefinition | null

Sem equivalente em Lua: chame o export do ai-core GetJobDefinition(name).

Retorno JobDefinition (label, type, defaultDuty, listed?, grades), ou null quando esse emprego não existe.

const label = definitions.job("police")?.label ?? "police";

definitions.gang

Lado: Servidor · Espera: não

Signature
definitions.gang(name: string): GangDefinition | null

Sem equivalente em Lua: chame o export do ai-core GetGangDefinition(name).

Retorno GangDefinition (label, grades), ou null.

const gang = definitions.gang("ballas");
if (!gang) return fail("UNKNOWN_GANG");

Horário nobre

isPrimeTime

Se é horário nobre para um emprego, pela configuração de horário nobre do ai-core. As horas vêm do tgiann-policealert enquanto ele está rodando, senão das horas definidas no painel do ai-core.

Lado: Servidor · Espera: não

Signature
isPrimeTime(job?: string): boolean

Sem equivalente em Lua: chame o export do ai-core IsPrimeTime(job).

Prop

Type

Retorno true durante o horário nobre.

if (!isPrimeTime("police")) return fail("BANK_CLOSED_FOR_HEISTS");

Nesta página