Crear un script
De una plantilla vacía a un script con panel de administración, al estilo de AI Core.
Créalo a partir de la plantilla
bun run new garbagejob "Garbage routes with pay per stop"
bun install
cd resources/[ai]/ai-garbagejob && git init && bun run buildDespués añade ensure ai-garbagejob a server.cfg. La plantilla te da resource/client, resource/server, resource/common, locales/en.json, un CLAUDE.md para rellenar y la configuración de compilación.
Añade el panel
Escribe resource/server/schema.ts (archivos, pestañas, tarjetas, widgets) y crea new AdminPanel(schema) en el servidor. Los datos que necesita el mundo (lugares, blips, precios que ven los jugadores) son sync: "all" y se leen en el cliente con new AdminWorld([...]); todo lo demás se queda en el servidor.
Usa la lib para todo
// cliente: un lugar que usan los jugadores, mostrado como prompt o como opción 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: la petición, comprobada antes de que cambie nada
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 };
},
);Comprueba y reinicia
bun run typecheck && bun run lint && bun run build
bun tools/rcon.ts --log ../logs/fxserver.log --wait 3 "ensure ai-garbagejob"Lo más fácil es pedírselo a tu IA: abre la carpeta del servidor en Claude Code y describe el script. Las reglas hacen que use la plantilla, la lib y el panel. Consulta Trabajar con IA.