AI Core

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 build

Despué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.

En esta página