AI Core

Polecane skrypty

Jak darmowy skrypt trafia do sekcji Recommended scripts w panelu administratora.

Dashboard panelu administratora ma sekcję Recommended scripts: darmowe skrypty, które warto zainstalować na serwerze AI Core. Każdy pojawia się tylko wtedy, gdy pasuje do serwera (nie działa żaden skrypt telefonu: polecany jest telefon; skrypt już działa: jego karta znika), a te, które się pojawiają, są też raz wypisywane w konsoli serwera 15 sekund po starcie. Właściciel ukrywa kartę jej przyciskiem X i przywraca ją w zakładce General, karta Recommendations.

Wymagania

  • Jest darmowy. Karta pokazuje znaczek Free.
  • Działa przez AI Core, nie przez jeden framework ani jeden skrypt. Wszystko, co skrypt dzieli z innymi skryptami, przechodzi przez warstwy i eksporty AI Core, więc działa z nim każdy skrypt ai-*, most ESX / QB / Qbox i pozostałe skrypty właściciela. Na przykład:
    • dawanie i odbieranie kluczyków do pojazdów przechodzi przez warstwę kluczyków (lib vehicleKeys.give / vehicleKeys.remove, eksporty GiveVehicleKeys / RemoveVehicleKeys), nigdy przez eksporty skryptu kluczyków;
    • nakładanie wyglądu i przeładowanie skina przechodzą przez warstwę wyglądu (appearance.apply, appearance.reloadSkin);
    • przedmioty przechodzą przez warstwę ekwipunku (inventory.addItem albo z Lua exports['ai-core']:AddItem(source, 'bread', 2));
    • paliwo, drzwi, garaże, telefon i zgłoszenia policyjne (dispatch.alert) tak samo przechodzą przez swoje warstwy.
  • Jeśli jego kategoria ma warstwę, ma w niej adapter. Skrypt ekwipunku, kluczyków, ubrań, paliwa, zamków drzwi, garażu, telefonu, dispatchu, banku, rachunków lub medyczny potrzebuje adaptera w tej warstwie, żeby inne skrypty do niego trafiały. Skrypt, który odpowiada na API już czytane przez warstwę, potrzebuje mniej: skrypt paliwa z eksportami klienta w stylu LegacyFuel GetFuel(vehicle) / SetFuel(vehicle, level) to jedna linia na liście warstwy paliwa.

Warstwy i obsługiwane przez nie skrypty: Warstwy i most, Kompatybilność oraz jedna notatka na warstwę w docs/compat/ repozytorium serwera.

Jak trafić na listę

Dodaj wpis

Zrób fork aifivem/ai-core i dodaj jeden wpis do listy RECOMMENDATIONS w resource/server/recommendations/index.ts:

{
  id: "my-garbagejob",
  title: "ADMIN_REC_MY_GARBAGEJOB",
  desc: "ADMIN_REC_MY_GARBAGEJOB_DESC",
  url: "https://example.com/my-garbagejob",
  free: true,
  // pokazuje się, dopóki skrypt nie działa
  shows: (runs) => !runs("my-garbagejob"),
},
PoleCo zawiera
idNazwa zasobu skryptu. Ukryta karta ją zapisuje, więc ma od 2 do 64 małych liter, cyfr, _ lub -.
title, descKlucze językowe ai-core: nazwa skryptu i jedna linia, dlaczego serwer go chce.
urlStrona, na której właściciel dostaje skrypt.
freetrue.
showsKiedy karta się pokazuje. runs(resource) jest true, dopóki ten zasób jest uruchomiony i się nie zatrzymuje. Warunek może też zapytać warstwę, jak wpis telefonu: shows: () => phones.active === null (nie działa żaden telefon).

AI Core sprawdza warunki ponownie, gdy zasób startuje lub się zatrzymuje, gdy zmienia się warstwa telefonu i gdy zmieniają się ustawienia. Warunek na innej warstwie podpina też zmianę tej warstwy do recommendations.refresh(), tak jak koniec pliku robi to dla telefonu (phones.onSwitch).

Dodaj dwa teksty

W locales/en.json, obok pozostałych kluczy ADMIN_REC_*:

"ADMIN_REC_MY_GARBAGEJOB": "My Garbage Job",
"ADMIN_REC_MY_GARBAGEJOB_DESC": "Garbage routes with pay per stop; items and vehicle keys go through ai-core's layers."

Tylko po angielsku: pozostałe języki dodaje się na wierzch en.json.

Dodaj adapter, jeśli twoja kategoria ma warstwę

W tym samym pull requeście:

  • plik adaptera w folderze adapters/ warstwy: resource/server/<layer>/adapters/<resource>.ts, plus resource/client/<layer>/adapters/<resource>.ts, gdy skrypt ma tylko API klienta. Skopiuj adapter podobnego skryptu;
  • jego linię na liście adapterów warstwy: resource/server/<layer>/registry.ts albo index.ts warstwy, gdy nie ma ona registry.ts (phone, medical, prison, world).

Potem otwórz drugi pull request do aifivem/aicore-server, który dopisuje skrypt do notatki warstwy docs/compat/<layer>.md (na przykład vehicle-keys.md, phone.md): testowana wersja, status i znane ograniczenia.

Otwórz pull request

W ai-core uruchom bun install, potem bun run typecheck, bun run lint i bun run build; wszystkie trzy muszą przejść. Nadaj pull requestowi tytuł Conventional Commit po angielsku, na przykład feat(recommendations): recommend my-garbagejob. Opiekunowie go przeglądają: sprawdzają, czy skrypt jest darmowy i działa przez warstwy, a potem go scalają; karta trafia na serwery z następnym wydaniem ai-core.

Na tej stronie