Exports des scripts
Les exports de chaque script ai-*, et les API d’autres scripts qu’ils remplacent.
Les scripts ai-* ne s’appellent jamais entre eux pour une tâche partagée : objets, clés, alertes, prison, médical, apparences, entrées radiales et météo passent par ai-core (la lib), qui appelle les exports ci-dessous. Appelez-les vous-même seulement pour ce qui est propre à ce script. Les exports typés dans @aicore-fivem/shared fonctionnent avec resourceExport("ai-...") ; les autres avec callExport(resource, name, ...args) ou un simple appel exports[...].
Quand un script en remplace un autre (provide), les noms d’export de l’autre script répondent aussi : exports.ox_inventory:AddItem(...) arrive à ai-inventory.
ai-lib
L’interface joueur partagée. Exports client, typés AiLibClientExports ; notify, progress, showPrompt, menu, input, skillCheck et lockpick de la lib les appellent pour vous.
| Export | Rôle |
|---|---|
Notify(notification: Notification): void | Une carte de notification (text, title?, kind, duration?). |
ShowProgress(label: string, duration: number): void | Affiche la barre de progression pendant duration ms (l’appelant exécute l’action). |
HideProgress(): void | La masque. |
ShowPrompt(id: string, text: string, at?: { x, y, z }): void | Affiche ou met à jour le prompt de l’appelant ; at le dessine au-dessus d’un point du monde. |
HidePrompt(id: string): void | Masque un prompt. |
OpenMenu(requestId: number, request: MenuRequest): void | Un menu ; le choix arrive comme MENU_EVENTS.menuResult. |
OpenInput(requestId: number, request: InputRequest): void | Un dialogue de saisie ; les valeurs arrivent comme MENU_EVENTS.inputResult. |
OpenMinigame(requestId: number, request: MinigameRequest): void | Un test d’adresse ou un crochetage ; le résultat arrive comme MENU_EVENTS.menuResult. |
CloseDialog(): void | Ferme le menu ou la saisie ouverts de l’appelant (réponse null). |
L’événement serveur ai-lib:client:notify (LIB_UI.notifyEvent) avec une Notification affiche une carte sur l’écran de ce joueur.
ai-inventory
Exports serveur (propres) : les autres scripts ai-* les atteignent via la couche d’inventaire d’ai-core.
| Export | Rôle |
|---|---|
AddItem(inv: number | string, item: string, count: number, metadata?, slot?): boolean | Ajoute des objets. |
RemoveItem(inv: number | string, item: string, count: number, metadata?, slot?): boolean | Retire des objets. |
GetItemCount(inv: number | string, item: string, metadata?): number | Combien. |
GetItems(inv: number | string): { name, label, count, slot, metadata }[] | Chaque pile avec son libellé. |
CanCarryItem(inv: number | string, item: string, count: number, metadata?): boolean | Si ça rentre. |
RegisterUsableItem(name: string, handler: (source, item) => unknown): void | Si handler renvoie false, l’objet reste ; sinon sa quantité consume est retirée. |
RegisterStash(name: string, label: string, slots: number, maxWeight: number, jobs?: string[], personal?: boolean): void | Un coffre. |
OpenInventory(source: number, inv: number | string): boolean | Ouvre un inventaire sur l’écran d’un joueur. |
ClearInventory(inv: number | string): void | Le vide. |
Items(name?: string): unknown | Une définition d’objet (forme ox), ou toutes. |
GetWeight(inv: number | string): { weight, maxWeight } | null | Poids porté et limite en grammes. |
Exports client : OpenInventory(type, data), CloseInventory(), OpenSelf() (son propre inventaire avec le sol, le coffre ou la boîte à gants autour), GetItemCount(item), HasItem(items: string \| string[] \| Record<string, number>, amount?), GetPlayerItems().
Événement local serveur ai-inventory:usedItem (source, name, slot, metadata, status).
API ox_inventory
ai-inventory fait provide de ox_inventory et répond à ses exports (ox_inventory 2.44). Les inventaires sont nommés comme dans ox : une source de joueur, un nom de coffre, { id, owner } pour les coffres personnels, une plaque pour les coffres de véhicule.
- Serveur :
AddItem(renvoiesuccess, response, appellecb),RemoveItem,GetItem,GetItemCount,Search(count/slots),CanCarryItem,CanCarryWeight,CanCarryAmount,GetInventory,GetInventoryItems,GetSlot,GetSlotWithItem,GetSlotsWithItem,GetSlotIdWithItem,GetSlotIdsWithItem,GetEmptySlot,SetMetadata,SetDurability,SetMaxWeight,RegisterStash,ClearInventory,Items,ItemList,forceOpenInventory(coffre, joueur, boutique),CreateTemporaryStash,CustomDrop,RemoveInventory,SwapSlots. - Client :
openInventory,closeInventory,Search,GetItemCount,GetPlayerItems,GetPlayerWeight,GetPlayerMaxWeight,Items,useSlot,getCurrentWeapon/GetCurrentWeapon;displayMetadata,weaponWheel,setStashTargetsont acceptés et ne font rien. - Sans réponse : les hooks (
registerHook,removeHooks),UpdateVehicle,ConfiscateInventory/ReturnInventory,GetContainerFromSlot,RegisterShop(les boutiques viennent du panneau).
API qb-inventory
ai-inventory fait provide de qb-inventory (API 2.0). Les objets renvoyés portent les deux formes : count / metadata et amount / info.
- Serveur :
AddItem(identifier, item, amount, slot, info),RemoveItem,HasItem(nom, liste ou{ name = amount }),GetItemCount,GetItemByName,GetItemsByName,GetItemBySlot,CanAddItem,GetFreeWeight,GetSlots,ClearInventory,SetItemData,CreateInventory,OpenInventory,OpenInventoryById,RemoveInventory,CloseInventory. - Client :
HasItem,CloseInventory. - Sans réponse : hooks et listeners,
CreateShop/OpenShop,SetInventory,GetInventory,SaveInventory,LoadInventory,UseItem,GetFirstSlotByItem,GetSlotsByItem,GetTotalWeight.
ai-vehicles
Véhicules possédés. Exports serveur, typés AiVehiclesServerExports. VehicleOwner vaut { type: "character" \| "job" \| "gang" \| "resource", id }.
| Export | Rôle |
|---|---|
CreateVehicle(owner: VehicleOwner, model: string, garage: string | null, props?): { id, plate } | null | Enregistre un nouveau véhicule possédé. |
GetVehicle(ref: number | string): OwnedVehicle | null | Un véhicule par id ou plaque. |
GetVehicles(owner: VehicleOwner): OwnedVehicle[] | Les véhicules d’un personnage en ligne, ou la flotte d’un métier ou d’un gang. |
IsOwnedPlate(plate: string): boolean | Si une plaque appartient à un véhicule possédé. |
GetVehicleIdByEntity(entity: number): number | null | L’id d’un véhicule possédé sorti. |
GetPlateOwners(): [plate, type, id][] | Chaque véhicule possédé en mémoire (suivre ensuite ai-vehicles:owners). |
GetEntity(id: number): number | null | L’entité sortie d’un véhicule. |
SaveVehicle(id: number, change: { props?, fuel?, engine?, body?, state?, garage? }): void | Enregistre l’état et l’apparence ; le tuning enregistré reste. |
SaveTuning(id: number, props: unknown): void | Enregistre les props complètes avec le tuning (garages de tuning seulement). |
StoreVehicle(id: number, garage: string | null, state?: VehicleState): void | Range un véhicule dans un garage (garage, out, impound). |
SetOwner(id: number, owner: VehicleOwner): void | Change le propriétaire. |
DeleteVehicle(id: number): void | Supprime un véhicule. |
SpawnVehicle(id: number, at: { x, y, z, heading }, asker: number, cb: (netId: number | null) => void, purpose?: KeyPurpose, setup?): void | Crée l’entité ; cb reçoit son net id. |
ai-vehicles fait provide de qbx_vehicles : GetPlayerVehicles(filters), GetPlayerVehicle(id), CreatePlayerVehicle(request), SetPlayerVehicleOwner(id, citizenid), DeletePlayerVehicles(idType, idValue), GetVehicleIdByPlate(plate), DoesPlayerVehiclePlateExist(plate), SaveVehicle(entity, options) (les filtres par citizenid demandent que le propriétaire soit en ligne).
ai-vehicleshop
| Export | Rôle |
|---|---|
GetCatalogPrice(model: string): number | null | Le prix catalogue d’un modèle (serveur). |
ai-vehiclekeys
Exports serveur, aussi sous qbx_vehiclekeys. Un véhicule est une entité ou une plaque. Les scripts donnent les clés via ai-core (GiveVehicleKeys, lib vehicleKeys), qui appelle ceux-ci tant qu’ai-vehiclekeys est le système de clés actif.
| Export | Rôle |
|---|---|
HasKeys(source: number, vehicle: number | string): boolean | Si le joueur a les clés. |
GiveKeys(source: number, vehicle: number | string): void | Donne les clés. |
RemoveKeys(source: number, vehicle: number | string): void | Retire les clés. |
SetLockState(vehicle, state) | Verrouille ("lock", true, 2) ou déverrouille une entité véhicule. |
IsPlayerNearVehicle(source, vehicle) | Si le joueur se tient près du véhicule. |
ai-death
Exports serveur, typés AiDeathServerExports ; Revive et IsDead aussi sous qbx_medical. Les scripts utilisent plutôt la couche médicale d’ai-core (lib medical).
| Export | Rôle |
|---|---|
Revive(source: number): boolean | Relève un joueur à terre ; false s’il n’est pas à terre. |
IsDead(source: number): boolean | Si le joueur est à terre. |
Heal(source: number): void | Santé pleine pour un joueur qui n’est pas à terre. |
L’événement client hospital:client:Revive envoyé par le serveur réanime le joueur.
ai-prison
Exports serveur ; la couche prison d’ai-core (lib prison) les appelle.
| Export | Rôle |
|---|---|
JailPlayer(source, minutes, by?) | Emprisonne un joueur ; true si ça a marché. |
ReleasePlayer(source) | Libère un joueur emprisonné. |
GetJailTime(source) | Minutes restantes (0 s’il est libre). |
ai-policealert
| Export | Rôle |
|---|---|
DispatchAlert(alert: DispatchAlert): void | Affiche une carte d’alerte ; seule la couche dispatch d’ai-core l’appelle (les scripts utilisent SendDispatchAlert / lib dispatch). |
ai-doorlock
Exports serveur, typés AiDoorlockServerExports ; les portes par leur id du panneau. Répond aussi à setDoorState et getDoor d’ox_doorlock.
| Export | Rôle |
|---|---|
SetDoorState(id: string, locked: boolean): void | Verrouille ou déverrouille une porte. |
IsLocked(id: string): boolean | Si une porte est verrouillée. |
ai-banking
L’argent des sociétés pour les scripts QB (un compte est un nom de métier). Exports serveur, aussi sous qb-banking ; getAccountMoney, addAccountMoney, removeAccountMoney de Renewed-Banking répondent de même.
| Export | Rôle |
|---|---|
GetAccountBalance(job) | Le solde bancaire du compte d’un métier. |
AddMoney(job, amount, reason) | L’alimente. |
RemoveMoney(job, amount, reason) | Y prélève. |
ai-hud
| Export | Côté | Rôle |
|---|---|---|
OpenSettings() | Client | Ouvre les réglages du HUD. |
SetMinimapAlways(on: boolean) | Client | L’interrupteur propre d’un admin : la minicarte à pied, quoi que dise le panneau. |
GetMinimapAlways(): boolean | Client | Si elle est gardée. |
GetNeeds(source) | Serveur | hunger, thirst, stress du joueur, ou null. |
SetNeed(source, need, value) | Serveur | Fixe un besoin. |
AddNeed(source, need, delta) | Serveur | Change un besoin de delta. |
ai-smallresources
Exports client.
| Export | Rôle |
|---|---|
GetSeatbelt(): boolean | null | Si le joueur porte sa ceinture ; null à pied ou ceintures désactivées. Les changements arrivent comme ai-smallresources:seatbelt. |
IsHandsUp(): boolean | Mains en l’air (les scripts utilisent lib gestures). |
IsPointing(): boolean | Pointage. |
ai-sirens
Exports client pour les véhicules d’urgence ; vehicle vaut par défaut celui où le joueur est assis. Les changements d’état fonctionnent sur le client du conducteur.
| Export | Rôle |
|---|---|
SetLights(vehicle, on) | Feux allumés ou éteints. |
ToggleLights(vehicle) | Bascule les feux. |
SetSirenTone(vehicle, tone) | Tonalité 0-3 (0 = arrêt). |
ToggleSiren(vehicle) | Sirène allumée ou éteinte. |
CycleTone(vehicle) | La tonalité suivante. |
GetSirenTone(vehicle) | La tonalité actuelle. |
AreLightsOn(vehicle) | Si les feux sont allumés. |
GetAirManuState(vehicle) | L’état de la tonalité manuelle. |
GetLightbarModel(vehicle) | Le modèle de rampe lumineuse, ou null. |
ai-exitsleeping
| Export | Côté | Rôle |
|---|---|---|
AddCreateCheck(id, fn(source, charId, coords) => boolean) | Serveur | Renvoyez false pour ne laisser aucun corps endormi (un appartement, une zone d’événement) ; retiré quand la ressource qui l’a ajouté s’arrête. |
PlayerLoaded() | Client | Réveille le personnage quand le mode de réveil est « export ». |
SetHidden(reason, hidden) | Client | Masque tous les corps endormis sur ce client tant qu’un motif est posé (intérieurs, shells). |
SetCarryBlocked(reason, blocked) | Client | Masque l’option de porter tant qu’un motif est posé. |
ai-appearance
Exports client, typés AiAppearanceClientExports ; les scripts utilisent lib appearance.
| Export | Rôle |
|---|---|
ApplyAppearance(ped: number, appearance: unknown): boolean | Applique une apparence ai-appearance à un ped de son modèle. |
GetPedAppearance(ped: number): unknown | L’apparence du joueur local, null pour les autres peds. |
ai-radialmenu
Exports client propres (typés AiRadialClientExports) : AddItem(item) (onSelect est accepté comme onPressed), RemoveItem(id, parent?), Refresh(). Les scripts utilisent lib radial.
Il fait provide des API d’autres roues :
qb-radialmenu:AddOption(data, id?)renvoie l’id,RemoveOption(id).tgiann-radialmenu-target:AddMenuItem(item | items, parentId?),RemoveMenuItem(id, parentId?),ClearMenuItems(),RegisterSubMenu({ id, items }),RefreshMenu(),DisableMenu(state),IsMenuDisabled(),OpenMenu(),CloseMenu(),IsMenuOpen(),HasMenuItem(id),SetMenuItemHidden(id, state),IsMenuItemHidden(id),UpdateMenuItem(id, { label?, icon? }),ResetMenuItem(id).
ai-target
Répond à l’API client d’ox_target sous ai-target et ox_target : addSphereZone, addBoxZone, addPolyZone, removeZone, zoneExists, addModel, removeModel, addEntity, removeEntity, addLocalEntity, removeLocalEntity, addGlobalPed / Vehicle / Object / Player et leurs removeGlobal*, disableTargeting, isActive. addGlobalOption n’est pas proposé (il journalise un avertissement). Les scripts utilisent lib Points, qui choisit prompt ou target selon le réglage du propriétaire.
ai-voice
Remplace pma-voice 7.x (fait provide de pma-voice, mumble-voip, tokovoip, toko-voip, tokovoip_script).
- Serveur, noms pma-voice :
setPlayerRadio,setPlayerCall,getPlayersInRadioChannel/GetPlayersInRadioChannel,addChannelCheck,overrideRadioNameGetter,isValidPlayer. - Serveur, propres :
getBackend,setPlayerProximityMode(source, index),setPlayerRange(source, metres | null),getPlayerProximity(source),toggleMute(source, seconds?),addProximityCheck(fn(source, index, distance))(false refuse),addPlayerRadioListen/removePlayerRadioListen/setPlayerRadioActive(source, channel),getPlayerRadioChannels(source)({ active, channels }),addCallCheck(fn(source, callId))(true autorise),setPlayerCallSpeaker(source, on)/getPlayerCallSpeaker(source),setPlayerSubmix(source, name | null). - Client : les exports client de pma-voice (
setRadioChannel,setCallChannel,setRadioVolume,setCallVolume,setVoiceProperty,overrideProximityRange,toggleMutePlayer,toggleRadioAnim...) plusaddRadioDisableBit/removeRadioDisableBit,registerCustomSubmix,setEffectSubmix; propresaddRadioChannel/removeRadioChannel/setActiveRadioChannel/getRadioChannels,setCallSpeaker/getCallSpeaker,setRadioAnimDisabled,createSubmix(name, spec)/getSubmix/editSubmix/listSubmixes,cycleProximity,getBackend,isRadioTalking. - Événements locaux : client
pma-voice:setTalkingMode,pma-voice:radioActive,pma-voice:toggleRadioAnim; serveurpma-voice:playerMuted.
ai-weathersync
Exports sous ai-weathersync et qb-weathersync (tout son contrat) : setWeather, setTime, setBlackout, setTimeFreeze, setDynamicWeather, nextWeatherStage, getWeatherState, getTime, getBlackoutState, getTimeFreezeState, getDynamicWeather. Les scripts utilisent GetWeather / SetWeather... d’ai-core (lib world), qui fonctionnent avec n’importe quel script météo.
ai-chat
Remplace la ressource chat de FiveM.
- Client : exports
addMessage(message),addSuggestion(name, help, params); événementschat:addMessage,chatMessage (author, color, text),chat:addSuggestion(s),chat:removeSuggestion,chat:addMode/chat:removeMode,chat:clear. - Serveur : exports
addMessage(target, message),registerMessageHook(fn),registerMode(data); événementchatMessage (source, author, text)avant la livraison (annulez-le pour supprimer le message).
ai-mysql
Remplace oxmysql : exports sous ai-mysql et oxmysql : query, single, scalar, insert, update, prepare, rawExecute, transaction, startTransaction, store, isReady, awaitConnection, execute, fetch, chacun aussi en <name>_async / <name>Sync. Les noms de ghmattimysql (execute, scalar, transaction, store) et de mysql-async (mysql_execute, mysql_insert, mysql_fetch_all, mysql_fetch_scalar, mysql_transaction, mysql_store) aussi ; événements oxmysql:error, oxmysql:transaction-error. Voir Base de données.
Événements et état
Les événements que déclenchent ai-core et les scripts ai-*, avec leurs données, les state bags qu’ils écrivent et les événements ESX / QB que déclenche le pont.
Lib : client
@aicore-fivem/lib/client - chaque utilitaire client avec sa signature, et son jumeau Lua sur aiLib quand il existe.