AI Core
Empregos e serviçosai-jobs

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

Signature
GetMeta(src: number, key: "rep"): { hotdog?: number; [other: string]: unknown } | null
Lua
local rep = exports['ai-core']:GetMeta(source, 'rep') -- tabela ou nil

Retorno

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 spawnVehicle da lib, placa WORK<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.give da lib) com o propósito job, 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.

NomeDireçãoO que carrega
ai-jobs:startcallback do cliente(routeId): começa um turno no depósito, responde { ok }.
ai-jobs:stopcallback do cliente(): encerra o turno.
ai-jobs:arrivecallback do cliente(stopId, underwater): o trabalho da parada; o servidor roda a barra de progresso, depois paga.
ai-jobs:client:shiftservidor -> trabalhador(shift | null): a parada atual, ou null quando o turno terminou.
ai-jobs:client:attachservidor -> dono do carro guinchado(carNetId, flatbedNetId): prende o carro guinchado na plataforma.

Nesta página