AI Core

Empfohlene Skripte

Wie ein kostenloses Skript in den Bereich Recommended scripts des Admin-Panels kommt.

Das Dashboard des Admin-Panels hat einen Bereich Recommended scripts: kostenlose Skripte, die sich auf einem AI-Core-Server lohnen. Jedes erscheint nur, solange es zum Server passt (läuft kein Handy-Skript, wird ein Handy empfohlen; läuft das Skript schon, verschwindet seine Karte), und die angezeigten werden 15 Sekunden nach dem Start auch einmal in die Serverkonsole geschrieben. Der Serverbesitzer blendet eine Karte mit ihrem X aus und holt sie im Tab General, Karte Recommendations, zurück.

Voraussetzungen

  • Es ist kostenlos. Die Karte zeigt ein Free-Abzeichen.
  • Es läuft über AI Core, nicht über ein einzelnes Framework oder Skript. Alles, was das Skript mit anderen Skripten teilt, geht über die Ebenen und Exports von AI Core, damit jedes ai-*-Skript, die ESX- / QB- / Qbox-Brücke und die anderen Skripte des Besitzers damit funktionieren. Zum Beispiel:
    • Fahrzeugschlüssel geben und entziehen geht über die Fahrzeugschlüssel-Ebene (Lib vehicleKeys.give / vehicleKeys.remove, Exports GiveVehicleKeys / RemoveVehicleKeys), nie über die Exports eines Schlüsselskripts;
    • ein Aussehen anwenden und den Skin neu laden geht über die Aussehen-Ebene (appearance.apply, appearance.reloadSkin);
    • Items gehen über die Inventar-Ebene (inventory.addItem oder aus Lua exports['ai-core']:AddItem(source, 'bread', 2));
    • Treibstoff, Türen, Garagen, das Handy und Polizeimeldungen (dispatch.alert) gehen genauso über ihre Ebenen.
  • Hat seine Kategorie eine Ebene, hat es dort einen Adapter. Ein Inventar-, Fahrzeugschlüssel-, Kleidungs-, Treibstoff-, Türschloss-, Garagen-, Handy-, Dispatch-, Bank-, Rechnungs- oder Medizin-Skript braucht einen Adapter in dieser Ebene, damit die anderen Skripte es erreichen. Ein Skript, das eine API beantwortet, die die Ebene schon liest, braucht weniger: Ein Treibstoff-Skript mit Client-Exports im LegacyFuel-Stil GetFuel(vehicle) / SetFuel(vehicle, level) ist eine Zeile in der Liste der Treibstoff-Ebene.

Die Ebenen und die Skripte, die sie unterstützen: Ebenen und die Brücke, Kompatibilität und eine Notiz pro Ebene in docs/compat/ des Server-Repositorys.

In die Liste kommen

Den Eintrag hinzufügen

Forke aifivem/ai-core und füge der Liste RECOMMENDATIONS in resource/server/recommendations/index.ts einen Eintrag hinzu:

{
  id: "my-garbagejob",
  title: "ADMIN_REC_MY_GARBAGEJOB",
  desc: "ADMIN_REC_MY_GARBAGEJOB_DESC",
  url: "https://example.com/my-garbagejob",
  free: true,
  // erscheint, solange das Skript nicht läuft
  shows: (runs) => !runs("my-garbagejob"),
},
FeldInhalt
idDer Ressourcenname des Skripts. Eine ausgeblendete Karte speichert ihn, daher besteht er aus 2 bis 64 Kleinbuchstaben, Ziffern, _ oder -.
title, descSprachschlüssel von ai-core: der Name des Skripts und eine Zeile, warum der Server es will.
urlDie Seite, auf der der Besitzer das Skript bekommt.
freetrue.
showsWann die Karte erscheint. runs(resource) ist true, solange diese Ressource gestartet ist und nicht stoppt. Eine Bedingung kann auch eine Ebene fragen, wie der Handy-Eintrag: shows: () => phones.active === null (kein Handy läuft).

AI Core prüft die Bedingungen erneut, wenn eine Ressource startet oder stoppt, wenn die Handy-Ebene wechselt und wenn sich die Einstellungen ändern. Eine Bedingung auf einer anderen Ebene hängt auch deren Wechsel an recommendations.refresh(), wie es das Ende der Datei für das Handy tut (phones.onSwitch).

Die zwei Texte hinzufügen

In locales/en.json, neben den anderen ADMIN_REC_*-Schlüsseln:

"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."

Nur Englisch: Andere Sprachen kommen auf en.json obendrauf.

Den Adapter hinzufügen, wenn deine Kategorie eine Ebene hat

Im selben Pull Request:

  • die Adapterdatei im Ordner adapters/ der Ebene: resource/server/<layer>/adapters/<resource>.ts, dazu resource/client/<layer>/adapters/<resource>.ts, wenn das Skript nur eine Client-API hat. Kopiere den Adapter eines ähnlichen Skripts;
  • seine Zeile in der Adapterliste der Ebene: resource/server/<layer>/registry.ts, oder die index.ts der Ebene, wenn sie keine registry.ts hat (phone, medical, prison, world).

Öffne dann einen zweiten Pull Request auf aifivem/aicore-server, der das Skript in die Notiz der Ebene docs/compat/<layer>.md einträgt (zum Beispiel vehicle-keys.md, phone.md): getestete Version, Status und bekannte Grenzen.

Den Pull Request öffnen

Führe in ai-core bun install aus, dann bun run typecheck, bun run lint und bun run build; alle drei müssen durchlaufen. Gib dem Pull Request einen englischen Conventional-Commit-Titel, zum Beispiel feat(recommendations): recommend my-garbagejob. Die Maintainer prüfen ihn: Sie kontrollieren, dass das Skript kostenlos ist und über die Ebenen läuft, und mergen ihn dann; die Karte kommt mit dem nächsten ai-core-Release.

Auf dieser Seite