ai-smallresources für Entwickler
Client-Exports, das Sicherheitsgurt-Event, State Bags und Metadaten von ai-smallresources.
Um den Sicherheitsgurt oder Gesten aus deinem eigenen Skript zu lesen, nutze seatbelt.isOn() / seatbelt.onChange(fn) und gestures.isHandsUp() / gestures.isPointing() der Lib (Client; Lua aiLib.seatbelt, aiLib.gestures). Sie laufen über ai-core und funktionieren mit jedem laufenden Gurt- oder Emote-Skript. Die Exports unten sind das, was ai-core liest, solange ai-smallresources antwortet.
Alle drei Exports laufen auf dem Client, sind synchron und lesen den lokalen Spieler. GetSeatbelt ist als AiSmallResourcesClientExports in @aicore-fivem/shared typisiert; IsHandsUp und IsPointing sind nicht typisiert (nutze callExport).
import { resourceExport, callExport } from "@aicore-fivem/lib/client";
const small = resourceExport("ai-smallresources");Client-Exports
GetSeatbelt
Ob der lokale Spieler einen Sicherheitsgurt trägt.
Seite: Client · Wartet: nein
GetSeatbelt(): boolean | nulllocal worn = exports['ai-smallresources']:GetSeatbelt() -- true, false oder nilRückgabewert
true, wenn angeschnallt, false, wenn nicht. null, wenn die Funktion Seatbelt im Panel ausgeschaltet ist oder der Spieler nicht in einem Fahrzeug mit Sicherheitsgurt sitzt.
Beispiel
import { seatbelt } from "@aicore-fivem/lib/client";
// Das Gurtsymbol eines HUD: einmal lesen, dann Änderungen folgen.
let worn = seatbelt.isOn();
seatbelt.onChange((value) => {
worn = value;
});Lies ihn bei einer Aktion oder einem Fahrzeugwechsel, nie in jedem Frame.
IsHandsUp
Ob der lokale Spieler die Hände oben hat (die Geste X).
Seite: Client · Wartet: nein
IsHandsUp(): booleanlocal up = exports['ai-smallresources']:IsHandsUp()Rückgabewert
true, solange die Hände oben sind, sonst false.
IsPointing
Ob der lokale Spieler zeigt (die Geste B).
Seite: Client · Wartet: nein
IsPointing(): booleanlocal pointing = exports['ai-smallresources']:IsPointing()Rückgabewert
true, solange er zeigt, sonst false.
Events
ai-smallresources:seatbelt
Wird auf dem lokalen Client ausgelöst, wenn sich der Sicherheitsgurt ändert. Der Name ist SEATBELT_EVENT in @aicore-fivem/shared. ai-core gibt es als sein eigenes Gurt-Event weiter, auf das seatbelt.onChange der Lib hört; nutze lieber das.
Seite: Client (lokales Event)
Prop
Type
AddEventHandler('ai-smallresources:seatbelt', function(worn)
print('seat belt', worn)
end)Jedes andere Event von ai-smallresources ist intern (sein Client und sein Server).
State Bags und Metadaten
| Name | An | Typ | Bedeutung |
|---|---|---|---|
aiHold | Spieler | string | false | Das Nachrichten-Item, das der Spieler hält (newscam, newsmic, newsboom). |
aiCarrying | Spieler | number | Der Spieler trägt jemanden (dessen Server-ID). |
aiCarriedBy | Spieler | number | Der Spieler wird von jemandem getragen (dessen Server-ID). |
aiDiving | Spieler | boolean | Der Spieler trägt die Tauchausrüstung. |
aiRealPlate | Fahrzeug | string | Das echte Kennzeichen, solange ein falsches angebracht ist. |
aiMoored | Fahrzeug | boolean | Das Boot ist an einer Anlegestelle festgebunden. |
diveOxygen | Charakter-Metadaten (ai-core) | number | Verbleibende Sekunden Luft in der Tauchflasche. |
aiPlayerCount / aiMaxPlayers | GlobalState | number | Spieler online und Slots, gesetzt, solange Discord Rich Presence an ist. |
// Server: das echte Kennzeichen eines Fahrzeugs, falsch oder nicht.
export function realPlate(vehicle: number): string {
const real = Entity(vehicle).state.aiRealPlate as string | undefined;
return real ?? GetVehicleNumberPlateText(vehicle);
}Benutzbare Items
Über den Inventar-Layer von ai-core registriert, daher funktionieren sie mit jedem laufenden Inventar: binoculars, firework1-firework4, newscam, newsmic, newsboom, fakeplate, notepad, note (Metadaten text und description), diving_gear, diving_fill.