Criando um script
De um modelo vazio a um script com painel de administração, do jeito AI Core.
Crie a partir do modelo
bun run new garbagejob "Garbage routes with pay per stop"
bun install
cd resources/[ai]/ai-garbagejob && git init && bun run buildDepois adicione ensure ai-garbagejob ao server.cfg. O modelo traz resource/client, resource/server, resource/common, locales/en.json, um CLAUDE.md para preencher e a configuração de build.
Adicione o painel
Escreva resource/server/schema.ts (arquivos, abas, cartões, widgets) e crie new AdminPanel(schema) no servidor. Os dados de que o mundo precisa (lugares, blips, preços que os jogadores veem) são sync: "all" e lidos no cliente com new AdminWorld([...]); todo o resto fica no servidor.
Use a lib para tudo
// cliente: um lugar que os jogadores usam, mostrado como prompt ou opção 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" }),
});// servidor: o pedido, verificado antes de qualquer mudança
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 };
},
);Verifique e reinicie
bun run typecheck && bun run lint && bun run build
bun tools/rcon.ts --log ../logs/fxserver.log --wait 3 "ensure ai-garbagejob"O jeito mais fácil é pedir para sua IA: abra a pasta do servidor no Claude Code e descreva o script. As regras fazem ela usar o modelo, a lib e o painel. Veja Trabalhando com IA.