Ebenen und die Brücke
Wie AI Core zwischen den Skripten sitzt - Integrationsebenen, Stellvertreter und die ESX- / QB- / Qbox-Brücke.
Integrationsebenen
Ein Skript ruft für eine gemeinsame Aufgabe nie die Exports eines anderen Skripts auf. Es ruft die Lib auf, die Lib ruft AI Core auf, und AI Core leitet an das Skript weiter, das der Server für diese Aufgabe betreibt. Jede Ebene wählt ihren Adapter beim Start (das Admin-Panel kann die Wahl überschreiben) und erneut, wenn ein Kandidat startet oder stoppt.
| Ebene | Lib | Adapter |
|---|---|---|
| Inventar | inventory | ai-inventory, ox_inventory, qb-inventory, tgiann-inventory und mehr |
| Fahrzeugschlüssel | vehicleKeys | ai-vehiclekeys, qbx_vehiclekeys und andere |
| Dispatch | dispatch.alert | ai-policealert und Alarm-Skripte |
| Handy | phone | tgiann-phone, lb-phone |
| Wetter und Zeit | world | die qb-weathersync-API (ai-weathersync, qb-weathersync, Renewed), cd_easytime; Pausen pro Grund gezählt |
| Gefängnis | prison | ai-prison, qb-prison |
| Aussehen | appearance | ai-appearance, tgiann-clothing |
| Medizin | medical | ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, ars_ambulancejob |
| Radialmenü | radial | ai-radialmenu, qb-radialmenu, ox_lib |
| Gesten | gestures | ai-smallresources, tgiann-emotes |
| HUD | hud, keyHints | ai-hud, tgiann-lumihud |
| Prime Time | isPrimeTime | tgiann-policealert, sonst die Stunden aus dem Panel |
Ein Skript zu einer Ebene hinzuzufügen ist eine Adapterdatei und eine Zeile in der Registry.
Die Brücke
ai-core stellt per provide es_extended, qb-core und qbx_core bereit und beantwortet ihre APIs aus Lua-Dateien in bridge/:
- Core-Objekte (
exports['qb-core']:GetCoreObject(),ESX = exports.es_extended:getSharedObject(), die alten Events), Qbox-Exports; - Spielerobjekte (
xPlayer, QB-Player), gespiegelt aus den Änderungs-Events von AI Core, nie durch eine Anfrage an AI Core bei jedem Lesen; PlayerDataauf dem Client, gebaut aus dem eigenen Spielerdaten-Kanal von AI Core;- Framework-Events mit denselben Argumenten und demselben Timing (
QBCore:Client:OnPlayerLoaded,esx:setJob...); - Callbacks, nutzbare Items, Befehle (im Panel aufgelistet), Benachrichtigungen, Menüs, Textaufforderungen und Fortschrittsbalken, gezeichnet mit der UI von AI Core;
- Datei-Includes (
@qb-core/shared/locale.lua,@es_extended/imports.lua,@qbx_core/modules/playerdata.lua).
Die Brücke läuft auf einer Kopie der Lua-Seite von ai-lib, sodass Framework-Helfer (Streaming, Zonen, Keybinds, Fortschritt, Rate-Limits) den Code der Lib teilen.