AI Core
API-Referenz

Skript-Exports

Die Exports jedes ai-*-Skripts und die APIs anderer Skripte, die sie ersetzen.

ai-*-Skripte rufen sich für eine gemeinsame Aufgabe nie gegenseitig auf: Items, Schlüssel, Alarme, Gefängnis, Medizin, Aussehen, Radialeinträge und Wetter laufen über ai-core (die Lib), das die Exports unten aufruft. Ruf sie selbst nur für das auf, was diesem Skript eigen ist. In @aicore-fivem/shared typisierte Exports funktionieren mit resourceExport("ai-..."); die anderen mit callExport(resource, name, ...args) oder einem normalen exports[...]-Aufruf.

Wo ein Skript ein anderes ersetzt (provide), antworten auch die Export-Namen des anderen Skripts, sodass exports.ox_inventory:AddItem(...) bei ai-inventory ankommt.

ai-lib

Die gemeinsame Spieler-UI. Client-Exports, typisiert als AiLibClientExports; notify, progress, showPrompt, menu, input, skillCheck und lockpick der Lib rufen sie für dich auf.

ExportWas
Notify(notification: Notification): voidEine Benachrichtigungskarte (text, title?, kind, duration?).
ShowProgress(label: string, duration: number): voidZeigt den Fortschrittsbalken für duration ms (der Aufrufer führt die Aktion aus).
HideProgress(): voidBlendet ihn aus.
ShowPrompt(id: string, text: string, at?: { x, y, z }): voidZeigt oder aktualisiert den Prompt des Aufrufers; at zeichnet ihn über einen Punkt in der Welt.
HidePrompt(id: string): voidBlendet einen Prompt aus.
OpenMenu(requestId: number, request: MenuRequest): voidEin Menü; die Auswahl kommt als MENU_EVENTS.menuResult.
OpenInput(requestId: number, request: InputRequest): voidEin Eingabedialog; die Werte kommen als MENU_EVENTS.inputResult.
OpenMinigame(requestId: number, request: MinigameRequest): voidEin Skill-Check oder Schlossknacken; das Ergebnis kommt als MENU_EVENTS.menuResult.
CloseDialog(): voidSchließt das offene Menü oder die Eingabe des Aufrufers (mit null beantwortet).

Das Server-Event ai-lib:client:notify (LIB_UI.notifyEvent) mit einer Notification zeigt eine Karte auf dem Bildschirm dieses Spielers.

ai-inventory

Server-Exports (eigene): Andere ai-*-Skripte erreichen sie über die Inventarebene von ai-core.

ExportWas
AddItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanFügt Items hinzu.
RemoveItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanEntfernt Items.
GetItemCount(inv: number | string, item: string, metadata?): numberWie viele.
GetItems(inv: number | string): { name, label, count, slot, metadata }[]Jeder Stapel mit seinem Label.
CanCarryItem(inv: number | string, item: string, count: number, metadata?): booleanOb es passt.
RegisterUsableItem(name: string, handler: (source, item) => unknown): voidGibt handler false zurück, bleibt das Item; sonst wird seine consume-Menge genommen.
RegisterStash(name: string, label: string, slots: number, maxWeight: number, jobs?: string[], personal?: boolean): voidEin Lager.
OpenInventory(source: number, inv: number | string): booleanÖffnet ein Inventar auf dem Bildschirm eines Spielers.
ClearInventory(inv: number | string): voidLeert es.
Items(name?: string): unknownEine Item-Definition (ox-Form) oder alle.
GetWeight(inv: number | string): { weight, maxWeight } | nullGetragenes Gewicht und Limit in Gramm.

Client-Exports: OpenInventory(type, data), CloseInventory(), OpenSelf() (eigenes Inventar mit Boden, Kofferraum oder Handschuhfach daneben), GetItemCount(item), HasItem(items: string \| string[] \| Record<string, number>, amount?), GetPlayerItems().

Lokales Server-Event ai-inventory:usedItem (source, name, slot, metadata, status).

ox_inventory-API

ai-inventory providet ox_inventory und beantwortet dessen Exports (ox_inventory 2.44). Inventare heißen wie in ox: eine Spieler-Source, ein Lagername, { id, owner } für persönliche Lager, ein Kennzeichen für Kofferräume.

  • Server: AddItem (gibt success, response zurück, ruft cb auf), 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 (Lager, Spieler, Shop), CreateTemporaryStash, CustomDrop, RemoveInventory, SwapSlots.
  • Client: openInventory, closeInventory, Search, GetItemCount, GetPlayerItems, GetPlayerWeight, GetPlayerMaxWeight, Items, useSlot, getCurrentWeapon / GetCurrentWeapon; displayMetadata, weaponWheel, setStashTarget werden angenommen und tun nichts.
  • Nicht beantwortet: Hooks (registerHook, removeHooks), UpdateVehicle, ConfiscateInventory / ReturnInventory, GetContainerFromSlot, RegisterShop (Shops kommen aus dem Panel).

qb-inventory-API

ai-inventory providet qb-inventory (2.0-API). Zurückgegebene Items tragen beide Formen: count / metadata und amount / info.

  • Server: AddItem(identifier, item, amount, slot, info), RemoveItem, HasItem (Name, Liste oder { name = amount }), GetItemCount, GetItemByName, GetItemsByName, GetItemBySlot, CanAddItem, GetFreeWeight, GetSlots, ClearInventory, SetItemData, CreateInventory, OpenInventory, OpenInventoryById, RemoveInventory, CloseInventory.
  • Client: HasItem, CloseInventory.
  • Nicht beantwortet: Hooks und Listener, CreateShop / OpenShop, SetInventory, GetInventory, SaveInventory, LoadInventory, UseItem, GetFirstSlotByItem, GetSlotsByItem, GetTotalWeight.

ai-vehicles

Fahrzeuge in Besitz. Server-Exports, typisiert als AiVehiclesServerExports. VehicleOwner ist { type: "character" \| "job" \| "gang" \| "resource", id }.

ExportWas
CreateVehicle(owner: VehicleOwner, model: string, garage: string | null, props?): { id, plate } | nullRegistriert ein neues Fahrzeug in Besitz.
GetVehicle(ref: number | string): OwnedVehicle | nullEin Fahrzeug nach ID oder Kennzeichen.
GetVehicles(owner: VehicleOwner): OwnedVehicle[]Fahrzeuge eines Online-Charakters oder eine Job- oder Gang-Flotte.
IsOwnedPlate(plate: string): booleanOb ein Kennzeichen zu einem Fahrzeug in Besitz gehört.
GetVehicleIdByEntity(entity: number): number | nullDie ID eines gespawnten Fahrzeugs in Besitz.
GetPlateOwners(): [plate, type, id][]Jedes Fahrzeug in Besitz im Speicher (danach ai-vehicles:owners folgen).
GetEntity(id: number): number | nullDie gespawnte Entity eines Fahrzeugs.
SaveVehicle(id: number, change: { props?, fuel?, engine?, body?, state?, garage? }): voidSpeichert Zustand und Aussehen; das gespeicherte Tuning bleibt.
SaveTuning(id: number, props: unknown): voidSpeichert die vollen Props mit Tuning (nur Tuning-Werkstätten).
StoreVehicle(id: number, garage: string | null, state?: VehicleState): voidStellt ein Fahrzeug in eine Garage (garage, out, impound).
SetOwner(id: number, owner: VehicleOwner): voidÄndert den Besitzer.
DeleteVehicle(id: number): voidLöscht ein Fahrzeug.
SpawnVehicle(id: number, at: { x, y, z, heading }, asker: number, cb: (netId: number | null) => void, purpose?: KeyPurpose, setup?): voidErzeugt die Entity; cb bekommt ihre Net-ID.

ai-vehicles providet qbx_vehicles: GetPlayerVehicles(filters), GetPlayerVehicle(id), CreatePlayerVehicle(request), SetPlayerVehicleOwner(id, citizenid), DeletePlayerVehicles(idType, idValue), GetVehicleIdByPlate(plate), DoesPlayerVehiclePlateExist(plate), SaveVehicle(entity, options) (citizenid-Filter brauchen den Besitzer online).

ai-vehicleshop

ExportWas
GetCatalogPrice(model: string): number | nullDer Katalogpreis eines Modells (Server).

ai-vehiclekeys

Server-Exports, auch unter qbx_vehiclekeys. Ein Fahrzeug ist eine Entity oder ein Kennzeichen. Skripte geben Schlüssel über ai-core (GiveVehicleKeys, Lib vehicleKeys), das diese aufruft, solange ai-vehiclekeys das aktive Schlüsselsystem ist.

ExportWas
HasKeys(source: number, vehicle: number | string): booleanOb der Spieler die Schlüssel hat.
GiveKeys(source: number, vehicle: number | string): voidGibt Schlüssel.
RemoveKeys(source: number, vehicle: number | string): voidNimmt Schlüssel.
SetLockState(vehicle, state)Verschließt ("lock", true, 2) oder öffnet eine Fahrzeug-Entity.
IsPlayerNearVehicle(source, vehicle)Ob der Spieler nahe am Fahrzeug steht.

ai-death

Server-Exports, typisiert als AiDeathServerExports; Revive und IsDead auch unter qbx_medical. Skripte nutzen stattdessen die Medizinebene von ai-core (Lib medical).

ExportWas
Revive(source: number): booleanBringt einen niedergestreckten Spieler auf die Beine; false, wenn er nicht am Boden ist.
IsDead(source: number): booleanOb der Spieler am Boden ist.
Heal(source: number): voidVolle Gesundheit für einen Spieler, der nicht am Boden ist.

Das Client-Event hospital:client:Revive vom Server belebt den Spieler wieder.

ai-prison

Server-Exports; die Gefängnisebene von ai-core (Lib prison) ruft sie auf.

ExportWas
JailPlayer(source, minutes, by?)Sperrt einen Spieler ein; true, wenn es geklappt hat.
ReleasePlayer(source)Lässt einen eingesperrten Spieler frei.
GetJailTime(source)Verbleibende Minuten (0, wenn frei).

ai-policealert

ExportWas
DispatchAlert(alert: DispatchAlert): voidZeigt eine Alarmkarte; nur die Dispatch-Ebene von ai-core ruft es auf (Skripte nutzen SendDispatchAlert / Lib dispatch).

ai-doorlock

Server-Exports, typisiert als AiDoorlockServerExports; Türen nach ihrer Panel-ID. Beantwortet auch setDoorState und getDoor von ox_doorlock.

ExportWas
SetDoorState(id: string, locked: boolean): voidVerschließt oder öffnet eine Tür.
IsLocked(id: string): booleanOb eine Tür verschlossen ist.

ai-banking

Firmengeld für QB-Skripte (ein Konto ist ein Job-Name). Server-Exports, auch unter qb-banking; getAccountMoney, addAccountMoney, removeAccountMoney von Renewed-Banking antworten genauso.

ExportWas
GetAccountBalance(job)Der Bankstand eines Job-Kontos.
AddMoney(job, amount, reason)Zahlt darauf ein.
RemoveMoney(job, amount, reason)Nimmt davon.

ai-hud

ExportSeiteWas
OpenSettings()ClientÖffnet die HUD-Einstellungen.
SetMinimapAlways(on: boolean)ClientDer eigene Schalter eines Admins: die Minikarte zu Fuß, egal was das Panel sagt.
GetMinimapAlways(): booleanClientOb sie gehalten wird.
GetNeeds(source)Serverhunger, thirst, stress des Spielers oder null.
SetNeed(source, need, value)ServerSetzt ein Bedürfnis.
AddNeed(source, need, delta)ServerÄndert ein Bedürfnis um delta.

ai-smallresources

Client-Exports.

ExportWas
GetSeatbelt(): boolean | nullOb der Spieler angeschnallt ist; null zu Fuß oder bei ausgeschalteten Gurten. Änderungen kommen als ai-smallresources:seatbelt.
IsHandsUp(): booleanHände hoch (Skripte nutzen Lib gestures).
IsPointing(): booleanZeigen.

ai-sirens

Client-Exports für Einsatzfahrzeuge; vehicle ist standardmäßig das, in dem der Spieler sitzt. Zustandsänderungen wirken auf dem Client des Fahrers.

ExportWas
SetLights(vehicle, on)Lichter an oder aus.
ToggleLights(vehicle)Schaltet die Lichter um.
SetSirenTone(vehicle, tone)Ton 0-3 (0 = aus).
ToggleSiren(vehicle)Sirene an oder aus.
CycleTone(vehicle)Der nächste Ton.
GetSirenTone(vehicle)Der aktuelle Ton.
AreLightsOn(vehicle)Ob die Lichter an sind.
GetAirManuState(vehicle)Der Zustand des manuellen Tons.
GetLightbarModel(vehicle)Das Lichtbalken-Modell oder null.

ai-exitsleeping

ExportSeiteWas
AddCreateCheck(id, fn(source, charId, coords) => boolean)ServerGib false zurück, um keinen schlafenden Körper zu hinterlassen (eine Wohnung, eine Eventzone); entfernt, wenn die hinzufügende Ressource stoppt.
PlayerLoaded()ClientWeckt den Charakter, wenn der Weckmodus „export“ ist.
SetHidden(reason, hidden)ClientBlendet jeden schlafenden Körper auf diesem Client aus, solange ein Grund besteht (Innenräume, Shells).
SetCarryBlocked(reason, blocked)ClientBlendet die Trage-Option aus, solange ein Grund besteht.

ai-appearance

Client-Exports, typisiert als AiAppearanceClientExports; Skripte nutzen Lib appearance.

ExportWas
ApplyAppearance(ped: number, appearance: unknown): booleanLegt ein ai-appearance-Aussehen auf einen Ped seines Modells.
GetPedAppearance(ped: number): unknownDas Aussehen des lokalen Spielers, null für andere Peds.

ai-radialmenu

Eigene Client-Exports (typisiert als AiRadialClientExports): AddItem(item) (onSelect wird als onPressed angenommen), RemoveItem(id, parent?), Refresh(). Skripte nutzen Lib radial.

Es providet die APIs anderer Räder:

  • qb-radialmenu: AddOption(data, id?) gibt die ID zurück, 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

Beantwortet die ox_target-Client-API unter ai-target und ox_target: addSphereZone, addBoxZone, addPolyZone, removeZone, zoneExists, addModel, removeModel, addEntity, removeEntity, addLocalEntity, removeLocalEntity, addGlobalPed / Vehicle / Object / Player und ihre removeGlobal*, disableTargeting, isActive. addGlobalOption wird nicht angeboten (es loggt eine Warnung). Skripte nutzen Lib Points, das nach der Einstellung des Betreibers Prompt oder Target wählt.

ai-voice

Ersetzt pma-voice 7.x (providet pma-voice, mumble-voip, tokovoip, toko-voip, tokovoip_script).

  • Server, pma-voice-Namen: setPlayerRadio, setPlayerCall, getPlayersInRadioChannel / GetPlayersInRadioChannel, addChannelCheck, overrideRadioNameGetter, isValidPlayer.
  • Server, eigene: getBackend, setPlayerProximityMode(source, index), setPlayerRange(source, metres | null), getPlayerProximity(source), toggleMute(source, seconds?), addProximityCheck(fn(source, index, distance)) (false lehnt ab), addPlayerRadioListen / removePlayerRadioListen / setPlayerRadioActive(source, channel), getPlayerRadioChannels(source) ({ active, channels }), addCallCheck(fn(source, callId)) (true erlaubt), setPlayerCallSpeaker(source, on) / getPlayerCallSpeaker(source), setPlayerSubmix(source, name | null).
  • Client: die Client-Exports von pma-voice (setRadioChannel, setCallChannel, setRadioVolume, setCallVolume, setVoiceProperty, overrideProximityRange, toggleMutePlayer, toggleRadioAnim...) plus addRadioDisableBit / removeRadioDisableBit, registerCustomSubmix, setEffectSubmix; eigene addRadioChannel / removeRadioChannel / setActiveRadioChannel / getRadioChannels, setCallSpeaker / getCallSpeaker, setRadioAnimDisabled, createSubmix(name, spec) / getSubmix / editSubmix / listSubmixes, cycleProximity, getBackend, isRadioTalking.
  • Lokale Events: Client pma-voice:setTalkingMode, pma-voice:radioActive, pma-voice:toggleRadioAnim; Server pma-voice:playerMuted.

ai-weathersync

Exports unter ai-weathersync und qb-weathersync (dessen ganzer Vertrag): setWeather, setTime, setBlackout, setTimeFreeze, setDynamicWeather, nextWeatherStage, getWeatherState, getTime, getBlackoutState, getTimeFreezeState, getDynamicWeather. Skripte nutzen GetWeather / SetWeather... von ai-core (Lib world), die mit jedem Wetterskript funktionieren.

ai-chat

Ersetzt die chat-Ressource von FiveM.

  • Client: Exports addMessage(message), addSuggestion(name, help, params); Events chat:addMessage, chatMessage (author, color, text), chat:addSuggestion(s), chat:removeSuggestion, chat:addMode / chat:removeMode, chat:clear.
  • Server: Exports addMessage(target, message), registerMessageHook(fn), registerMode(data); Event chatMessage (source, author, text) vor der Zustellung (abbrechen, um die Nachricht zu verwerfen).

ai-mysql

Ersetzt oxmysql: Exports unter ai-mysql und oxmysql: query, single, scalar, insert, update, prepare, rawExecute, transaction, startTransaction, store, isReady, awaitConnection, execute, fetch, jeweils auch als <name>_async / <name>Sync. Dazu die Namen von ghmattimysql (execute, scalar, transaction, store) und mysql-async (mysql_execute, mysql_insert, mysql_fetch_all, mysql_fetch_scalar, mysql_transaction, mysql_store); Events oxmysql:error, oxmysql:transaction-error. Siehe Datenbank.

Auf dieser Seite