Przegląd
Jak zbudowany jest AI Core - repozytoria, build, zasady, których przestrzega każdy skrypt.
AI Core to TypeScript od początku do końca. Każdy zasób ma układ overextended/fivem-ts; Lua jest używane tylko w moście ESX / QB / Qbox wewnątrz ai-core i po stronie Lua w ai-lib.
Repozytoria
| Repozytorium | Co |
|---|---|
| Folder serwera | server.cfg i pozostałe pliki cfg, recipe/ (txAdmin), tools/, template/, zasady i dokumentacja dla narzędzi AI. To też katalog główny workspace bun. |
ai-core i każdy ai-* | Jedno repozytorium na skrypt. Build (dist/, fxmanifest.lua) jest commitowany, więc serwery działają bez narzędzi do budowania. |
packages | Pakiety npm: @aicore-fivem/lib (funkcje pomocnicze), @aicore-fivem/mysql (silnik bazy danych), @aicore-fivem/shared (kontrakty między zasobami), @aicore-fivem/build (kroki budowania). |
Build
bun install # w folderze serwera: linkuje pakiety i każdy zasób
bun run build # każdy zasób (około 40 s), lub: bun run build ai-core ai-fuel
bun run typecheck
bun run lintW zasobie te same skrypty działają tylko dla tego zasobu; bun run dev obserwuje zmiany. fxmanifest.lua jest generowany z package.json: nigdy nie edytuj go ręcznie. Po buildzie zrestartuj zasób (bun tools/rcon.ts "ensure ai-fuel") lub wszystko po ai-core (bun tools/restart.ts).
Zasady, których przestrzega każdy skrypt
- Serwer decyduje. Każde żądanie klienta przechodzi przez bramkę lib (
onClientEvent/onClientCallback): sprawdzenie, czy to prawdziwy gracz, limit częstotliwości, warunki (administrator, ma postać, blisko punktu), parser argumentów. Pieniądze, przedmioty i uprawnienia nigdy nie zmieniają się na kliencie. - Snapshot i delta. Dane na żywo trafiają do klientów jako jeden snapshot, potem tylko zmiany i tylko do tych, którzy ich potrzebują. Bez odpytywania, bez sygnałów „zmieniło się, pobierz ponownie”.
- Najpierw lib. Punkty interakcji, blipy, strefy, skróty klawiszowe, komendy, menu, postęp, pojazdy, state bagi i praca okresowa pochodzą z
@aicore-fivem/lib; druga, ręcznie napisana kopia to błąd. - Wszystko w panelu. Ustawienia, które dostraja właściciel serwera, są w panelu administratora (
schema.ts+data/*.json), nigdy w pliku konfiguracyjnym. - Przez AI Core. Przedmioty, klucze pojazdów, alerty, telefon, pogoda, więzienie, ubrania i śmierci idą przez warstwy AI Core, nigdy przez eksporty konkretnego skryptu.
- Najpierw skala. Kolekcje są planowane na miliony rekordów i mierzone benchmarkami.
Pełne zasady są w folderze serwera: CLAUDE.md i .claude/rules/.