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.
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
dispatch.alert(alert: DispatchAlert): booleanlocal 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
prison.jail(source: number, minutes: number, by?: number): booleanlocal 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
prison.release(source: number): booleanlocal 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
prison.timeLeft(source: number): numberlocal 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
mdt.record(record: MdtRecord): booleanlocal 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
mdt.provider(): string | nulllocal 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
ems.available(jobs: string[]): numberlocal 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
ems.distress(source: number, call: DistressCall): booleanlocal 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
ems.provider(): string | nulllocal 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
medical.revive(source: number): booleanRetorno 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
medical.heal(source: number): booleanRetorno 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
medical.isDead(source: number): booleanRetorno 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
medical.provider(): string | nullRetorno 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
stress.gain(source: number, amount: number): booleanlocal 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 tiroteiostress.relieve
Tira pontos de estresse.
Lado: Servidor · Espera: não
stress.relieve(source: number, amount: number): booleanlocal 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
stress.provider(): string | nulllocal 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
needs.refill(source: number): booleanSem 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
definitions.job(name: string): JobDefinition | nullSem 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
definitions.gang(name: string): GangDefinition | nullSem 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
isPrimeTime(job?: string): booleanSem 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");