AI Core

Scripts recommandés

Comment un script gratuit entre dans la section Recommended scripts du panneau d’administration.

Le tableau de bord du panneau d’administration a une section Recommended scripts : des scripts gratuits qui valent la peine d’être installés sur un serveur AI Core. Chacun n’apparaît que tant qu’il convient au serveur (aucun script de téléphone ne tourne : un téléphone est recommandé ; le script tourne déjà : sa carte disparaît), et ceux qui apparaissent sont aussi écrits une fois dans la console du serveur 15 secondes après le démarrage. Le propriétaire masque une carte avec son X et la fait revenir dans l’onglet General, carte Recommendations.

Conditions

  • Il est gratuit. La carte affiche un badge Free.
  • Il passe par AI Core, pas par un seul framework ou un seul script. Tout ce que le script partage avec d’autres scripts passe par les couches et les exports d’AI Core, pour que chaque script ai-*, le pont ESX / QB / Qbox et les autres scripts du propriétaire fonctionnent avec lui. Par exemple :
    • donner et retirer des clés de véhicule passe par la couche des clés (lib vehicleKeys.give / vehicleKeys.remove, exports GiveVehicleKeys / RemoveVehicleKeys), jamais par les exports d’un script de clés ;
    • appliquer une apparence et recharger le skin passent par la couche d’apparence (appearance.apply, appearance.reloadSkin) ;
    • les objets passent par la couche d’inventaire (inventory.addItem, ou exports['ai-core']:AddItem(source, 'bread', 2) depuis Lua) ;
    • le carburant, les portes, les garages, le téléphone et les alertes police (dispatch.alert) passent de la même façon par leurs couches.
  • Si sa catégorie a une couche, il y a un adaptateur. Un script d’inventaire, de clés de véhicule, de vêtements, de carburant, de serrures de porte, de garage, de téléphone, de dispatch, de banque, de factures ou médical a besoin d’un adaptateur dans cette couche, pour que les autres scripts l’atteignent. Un script qui répond à une API que la couche lit déjà en demande moins : un script de carburant avec les exports client façon LegacyFuel GetFuel(vehicle) / SetFuel(vehicle, level) est une ligne dans la liste de la couche carburant.

Les couches et les scripts qu’elles prennent en charge : Couches et pont, Compatibilité, et une note par couche dans docs/compat/ du dépôt du serveur.

Être listé

Ajouter l’entrée

Forkez aifivem/ai-core et ajoutez une entrée à la liste RECOMMENDATIONS dans 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,
  // apparaît tant que le script ne tourne pas
  shows: (runs) => !runs("my-garbagejob"),
},
ChampContenu
idLe nom de ressource du script. Une carte masquée l’enregistre, il fait donc de 2 à 64 lettres minuscules, chiffres, _ ou -.
title, descClés de langue d’ai-core : le nom du script et une ligne qui dit pourquoi le serveur le veut.
urlLa page où le propriétaire obtient le script.
freetrue.
showsQuand la carte apparaît. runs(resource) vaut true tant que cette ressource est démarrée et ne s’arrête pas. Une condition peut aussi interroger une couche, comme l’entrée du téléphone : shows: () => phones.active === null (aucun téléphone ne tourne).

AI Core revérifie les conditions quand une ressource démarre ou s’arrête, quand la couche téléphone change et quand les paramètres changent. Une condition sur une autre couche branche aussi le changement de cette couche sur recommendations.refresh(), comme le fait la fin du fichier pour le téléphone (phones.onSwitch).

Ajouter les deux textes

Dans locales/en.json, à côté des autres clés 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."

Anglais uniquement : les autres langues s’ajoutent par-dessus en.json.

Ajouter l’adaptateur, si votre catégorie a une couche

Dans la même pull request :

  • le fichier d’adaptateur dans le dossier adapters/ de la couche : resource/server/<layer>/adapters/<resource>.ts, plus resource/client/<layer>/adapters/<resource>.ts quand le script n’a qu’une API client. Copiez l’adaptateur d’un script semblable ;
  • sa ligne dans la liste des adaptateurs de la couche : resource/server/<layer>/registry.ts, ou le index.ts de la couche quand elle n’a pas de registry.ts (phone, medical, prison, world).

Ouvrez ensuite une deuxième pull request sur aifivem/aicore-server qui ajoute le script à la note de la couche docs/compat/<layer>.md (par exemple vehicle-keys.md, phone.md) : version testée, statut et limites connues.

Ouvrir la pull request

Dans ai-core, lancez bun install, puis bun run typecheck, bun run lint et bun run build ; les trois doivent passer. Donnez à la pull request un titre Conventional Commit en anglais, par exemple feat(recommendations): recommend my-garbagejob. Les mainteneurs la relisent : ils vérifient que le script est gratuit et passe par les couches, puis la fusionnent ; la carte arrive avec la prochaine version d’ai-core.

Sur cette page