Créer un script
D’un modèle vide à un script avec panneau d’administration, à la manière d’AI Core.
Le créer à partir du modèle
bun run new garbagejob "Garbage routes with pay per stop"
bun install
cd resources/[ai]/ai-garbagejob && git init && bun run buildAjoutez ensuite ensure ai-garbagejob à server.cfg. Le modèle vous donne resource/client, resource/server, resource/common, locales/en.json, un CLAUDE.md à remplir et la configuration du build.
Ajouter le panneau
Écrivez resource/server/schema.ts (fichiers, onglets, cartes, widgets) et créez new AdminPanel(schema) sur le serveur. Les données dont le monde a besoin (lieux, blips, prix que voient les joueurs) sont en sync: "all" et lues côté client avec new AdminWorld([...]) ; tout le reste reste sur le serveur.
Utiliser la lib pour tout
// client : un lieu qu’utilisent les joueurs, affiché comme prompt ou option de target
const points = new Points();
points.add("depot", {
coords: route.depot,
label: Locale("PROMPT_START"),
icon: "truck",
canShow: () => hasJob(["garbage"]),
onPressed: () => callAction(EVENTS.start, [route.id], { fallback: "ERR_FAR" }),
});// serveur : la requête, vérifiée avant que quoi que ce soit ne change
onClientCallback(
EVENTS.start,
{ args: oneArg((v) => readText(v, 32)), guards: [hasCharacter()], lock: true },
(source, id) => {
if (!isNear(source, route.depot, 3)) return fail("ERR_FAR");
return { ok: true };
},
);Vérifier et redémarrer
bun run typecheck && bun run lint && bun run build
bun tools/rcon.ts --log ../logs/fxserver.log --wait 3 "ensure ai-garbagejob"Le plus simple est de demander à votre IA : ouvrez le dossier du serveur dans Claude Code et décrivez le script. Les règles lui font utiliser le modèle, la lib et le panneau. Voir Travailler avec l’IA.