Tworzenie skryptu
Od pustego szablonu do skryptu z panelem administratora, w sposób AI Core.
Utwórz go z szablonu
bun run new garbagejob "Garbage routes with pay per stop"
bun install
cd resources/[ai]/ai-garbagejob && git init && bun run buildNastępnie dodaj ensure ai-garbagejob do server.cfg. Szablon daje ci resource/client, resource/server, resource/common, locales/en.json, CLAUDE.md do uzupełnienia i konfigurację builda.
Dodaj panel
Napisz resource/server/schema.ts (pliki, zakładki, karty, widżety) i utwórz new AdminPanel(schema) na serwerze. Dane potrzebne światu (miejsca, blipy, ceny, które widzą gracze) mają sync: "all" i są czytane na kliencie przez new AdminWorld([...]); wszystko inne zostaje na serwerze.
Używaj lib do wszystkiego
// klient: miejsce, z którego korzystają gracze, pokazane jako prompt lub opcja 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" }),
});// serwer: żądanie, sprawdzane, zanim cokolwiek się zmieni
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 };
},
);Sprawdź i zrestartuj
bun run typecheck && bun run lint && bun run build
bun tools/rcon.ts --log ../logs/fxserver.log --wait 3 "ensure ai-garbagejob"Najprościej poprosić swoje AI: otwórz folder serwera w Claude Code i opisz skrypt. Zasady sprawią, że użyje szablonu, lib i panelu. Zobacz Praca z AI.