AI Core
Métiers et servicesai-jobs

ai-jobs pour les développeurs

Ce qu’ai-jobs partage avec les autres scripts (il n’a aucun export) : la réputation de hot-dog, les plaques et les clés des véhicules de travail, les motifs de registre et ses events privés.

ai-jobs n’a aucun export. Les autres scripts n’ont jamais besoin de l’appeler : les tournées et les arrêts sont des données du panneau, et tout ce que fait un service passe par AI Core (argent, clés, inventaire). Ce qu’un autre script peut lire est listé ci-dessous.

Réputation de hot-dog

La réputation du vendeur de hot-dogs est une métadonnée de personnage d’ai-core sous la clé rep, champ hotdog (au même endroit que le PlayerData.metadata.rep de QBCore). C’est un nombre entier de 0 à la Highest reputation du panneau. ai-jobs la lit à la location d’un stand et l’écrit après chaque hot-dog cuisiné, en gardant les autres champs de rep tels quels.

Côté : serveur · Attend : non

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

Retour

La table rep du personnage, ou null / nil quand le joueur n’a pas de personnage chargé ou n’a jamais gagné de réputation. hotdog est absent jusqu’au premier hot-dog préparé.

Exemple

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

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

// /hotdogrep montre au joueur sa réputation de hot-dog.
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");
});

N’écrivez la réputation qu’avec SetMeta(source, "rep", { ...old, hotdog = value }), en gardant les autres champs. Un stand loué garde la valeur lue au moment de la location et écrit sa propre valeur après le hot-dog suivant, donc un changement fait pendant qu’un stand est loué est écrasé.

Véhicules de travail

  • Créés avec le spawnVehicle de la lib, plaque WORK<source> (l’id serveur du travailleur), supprimés à la fin du service.
  • Le travailleur reçoit les clés via la couche clés d’AI Core (vehicleKeys.give de la lib) avec l’usage job, donc le script de clés qui tourne, quel qu’il soit, les voit.
  • La voiture en panne d’une tournée de remorquage apparaît verrouillée, sans clés, et est supprimée au dépôt ou à la fin du service.

Argent

La paie des tournées va sur le Pay account de la tournée avec le motif de registre work:<routeId> (par exemple work:taxi). Les ventes de hot-dogs vont sur Sales paid into. Les deux apparaissent dans l’historique des transactions d’ai-core.

Events et callbacks privés

C’est le contrat client-serveur propre au script (resource/common/routes.ts et resource/common/hotdog.ts). Le serveur vérifie chaque appel (distance, timing, arrêt en cours). Ils peuvent changer d’une version à l’autre : ne les déclenchez pas et ne les écoutez pas depuis d’autres ressources.

NomDirectionCe qu’il transporte
ai-jobs:startcallback client(routeId) : commencer un service au dépôt, répond { ok }.
ai-jobs:stopcallback client() : terminer le service.
ai-jobs:arrivecallback client(stopId, underwater) : le travail de l’arrêt ; le serveur exécute la barre de progression, puis paie.
ai-jobs:client:shiftserveur -> travailleur(shift | null) : l’arrêt en cours, ou null quand le service est terminé.
ai-jobs:client:attachserveur -> propriétaire de la voiture remorquée(carNetId, flatbedNetId) : attacher la voiture remorquée au plateau.

Sur cette page