ai-jobs para desenvolvedores
O que o ai-jobs compartilha com outros scripts (ele não tem exports): a reputação do cachorro-quente, placas e chaves dos veículos de trabalho, motivos de registro, e seus eventos privados.
O ai-jobs não tem exports. Outros scripts nunca precisam chamá-lo: rotas e paradas são dados do painel, e tudo o que um turno faz passa pelo AI Core (dinheiro, chaves, inventário). O que outro script pode ler está listado abaixo.
Reputação do cachorro-quente
A reputação do vendedor de cachorro-quente é metadata de personagem do ai-core sob a chave rep, campo hotdog (o mesmo lugar onde o QBCore guarda PlayerData.metadata.rep). É um número inteiro de 0 até a Highest reputation do painel. O ai-jobs a lê quando uma barraca é alugada e a escreve depois de cada cachorro-quente preparado, mantendo os outros campos de rep como estão.
Lado: Servidor · Espera: não
GetMeta(src: number, key: "rep"): { hotdog?: number; [other: string]: unknown } | nulllocal rep = exports['ai-core']:GetMeta(source, 'rep') -- tabela ou nilRetorno
A tabela rep do personagem, ou null / nil quando o jogador não tem um personagem carregado ou nunca ganhou reputação. hotdog não existe até o primeiro cachorro-quente ser feito.
Exemplo
import { addCommand, notify, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// /hotdogrep mostra ao jogador a reputação de cachorro-quente dele.
addCommand("hotdogrep", { help: "Show your hot dog reputation" }, (source) => {
if (source === 0) return;
const rep = core.GetMeta(source, "rep") as { hotdog?: number } | null;
notify(source, `Hot dog reputation: ${rep?.hotdog ?? 0}`, "info");
});Escreva a reputação só com SetMeta(source, "rep", { ...old, hotdog = value }), mantendo os outros campos. Uma barraca alugada guarda o valor que leu no momento do aluguel e escreve seu próprio valor depois do próximo cachorro-quente, então uma mudança feita enquanto uma barraca está alugada é sobrescrita.
Veículos de trabalho
- Criados com o
spawnVehicleda lib, placaWORK<source>(o id do servidor do trabalhador), apagados quando o turno termina. - O trabalhador recebe as chaves pela camada de chaves do AI Core (
vehicleKeys.giveda lib) com o propósitojob, então qualquer script de chaves que estiver rodando as vê. - O carro quebrado de uma rota de guincho aparece trancado, sem chaves, e é apagado no depósito ou quando o turno termina.
Dinheiro
O pagamento da rota vai para a Pay account da rota com o motivo de registro work:<routeId> (por exemplo work:taxi). As vendas de cachorro-quente vão para Sales paid into. Os dois aparecem no histórico de transações do ai-core.
Eventos e callbacks privados
Este é o contrato cliente-servidor próprio do script (resource/common/routes.ts e resource/common/hotdog.ts). O servidor verifica cada chamada (distância, tempo, a parada atual). Eles podem mudar entre versões: não os dispare nem os escute a partir de outros recursos.
| Nome | Direção | O que carrega |
|---|---|---|
ai-jobs:start | callback do cliente | (routeId): começa um turno no depósito, responde { ok }. |
ai-jobs:stop | callback do cliente | (): encerra o turno. |
ai-jobs:arrive | callback do cliente | (stopId, underwater): o trabalho da parada; o servidor roda a barra de progresso, depois paga. |
ai-jobs:client:shift | servidor -> trabalhador | (shift | null): a parada atual, ou null quando o turno terminou. |
ai-jobs:client:attach | servidor -> dono do carro guinchado | (carNetId, flatbedNetId): prende o carro guinchado na plataforma. |
ai-jobs
Rotas de trabalho iniciadas em um depósito (táxi, ônibus, caminhoneiro, lixeiro, jornal, guincho, reciclagem, vinhedo, mergulho) e a barraca de cachorro-quente.
ai-police
Trabalho policial para policiais em serviço - algemar, escoltar, colocar no veículo, revistar, multar, mandar para a prisão e apreender - mais delegacias para entrar em serviço e alertas de disparos.