Zdarzenia klienckie
Każde klienckie zdarzenie lokalne wysyłane przez ai-core - wczytanie lub zwolnienie lokalnej postaci, stan powalenia, wartości w pamięci podręcznej, widoczność HUD, synchronizacja świata, definicje prac, podpowiedzi klawiszy, pas bezpieczeństwa - z argumentami i nasłuchiwaniem.
Klient ai-core wysyła te zdarzenia przez TriggerEvent we własnej grze gracza. Słyszy je każdy kliencki zasób tego gracza; inni gracze nigdy. Opisują tylko lokalnego gracza.
ai-core:client:playerLoaded
Postać lokalnego gracza stoi w świecie. Tutaj rozpocznij kliencką pracę per postać (wartości HUD, blipy pracy, pętle).
Strona: Klient · Stała: CORE.clientPlayerLoadedEvent
Argumenty
Prop
Type
Nasłuchiwanie
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE, type AiPlayerData } from "@aicore-fivem/shared";
const core = resourceExport("ai-core");
function start(data: AiPlayerData): void {
console.log(`hello ${data.character?.firstname}, cash ${data.money.cash ?? 0}`);
}
// Obejmuje też restart zasobu, gdy gracz jest już w świecie.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);ai-core:client:playerUnloaded
Lokalna postać została zwolniona: gracz wrócił do ekranu postaci. Zatrzymaj pracę per postać i wyczyść to, co trzymałeś dla tej postaci. (Gdy gracz opuszcza serwer, jego gra się zamyka; nic nie jest wysyłane.)
Strona: Klient · Stała: CORE.clientPlayerUnloadedEvent
Argumenty
Brak.
Nasłuchiwanie
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientPlayerUnloadedEvent, () => {
SendNUIMessage({ action: "reset" });
});ai-core:client:dead
Lokalny gracz został powalony (martwy lub last stand) albo wstał, według działającego skryptu śmierci. Wysyłane tylko przy zmianie.
Strona: Klient · Stała: CORE.clientDeadEvent · Lib: medical.onChange
Argumenty
Prop
Type
Nasłuchiwanie
import { medical } from "@aicore-fivem/lib/client";
// To samo co on(CORE.clientDeadEvent, ...).
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" });
});ai-core:client:cache
Zmieniła się wartość lokalnego gracza w pamięci podręcznej. Jeden obserwator w ai-core czyta peda, pojazd, miejsce i broń dla każdego zasobu i wysyła to tylko wtedy, gdy wartość się zmienia, więc żaden zasób nie musi ich odpytywać. cache i onCache z liba (aiLib.cache i aiLib.cache.onChange w Lua) są na tym zbudowane; używaj ich.
Strona: Klient · Stała: CORE.clientCacheEvent
Argumenty
Prop
Type
Nasłuchiwanie
import { onCache } from "@aicore-fivem/lib/client";
onCache("vehicle", (vehicle, old) => {
if (vehicle !== false) console.log(`entered vehicle ${vehicle}`);
else if (old !== false) console.log("left the vehicle");
});ai-core:client:hudVisible
HUD powinien się pokazać lub ukryć: otworzyło się pełnoekranowe UI albo zamknęło się ostatnie. Nasłuchuje tego zasób HUD.
Strona: Klient · Stała: CORE.clientHudVisibleEvent · Lib: hud.onChange
Argumenty
Prop
Type
Nasłuchiwanie
import { hud } from "@aicore-fivem/lib/client";
hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));ai-core:client:worldSync
Synchronizacja pogody i czasu została wstrzymana albo działa znowu. Nasłuchuje tego skrypt pogody. Zobacz Synchronizacja pogody i czasu.
Strona: Klient · Stała: CORE.clientWorldSyncEvent
Argumenty
Prop
Type
Nasłuchiwanie
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientWorldSyncEvent, (paused: boolean) => {
console.log(paused ? "weather sync paused" : "weather sync running");
});ai-core:client:definitions
Praca lub gang zostały dodane, zmienione lub usunięte w panelu administratora. Wysyłane na każdym kliencie, raz na każdą zmienioną pracę lub gang. Używaj w parze z eksportem GetDefinitions.
Strona: Klient · Stała: CORE.clientDefinitionsEvent
Argumenty
Prop
Type
Nasłuchiwanie
Zobacz przykład GetDefinitions.
ai-core:client:characterPortrait
Obraz portretu dla karty postaci na ekranie postaci. Wysyła go skrypt ubrań (ai-appearance); ekran postaci ai-core nasłuchuje i pokazuje obraz. Wysyłaj to sam tylko wtedy, gdy piszesz skrypt ubrań.
Strona: Klient · Stała: CORE.clientCharacterPortraitEvent · Wysyła: skrypt ubrań, słucha ai-core
Argumenty
Prop
Type
Nasłuchiwanie
import { CORE } from "@aicore-fivem/shared";
// Skrypt ubrań przekazuje portret do ekranu postaci.
export function sendPortrait(charId: number, txd: string): void {
emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}ai-core:client:keyHints
Zmieniła się lista podpowiedzi klawiszy, które HUD powinien pokazać. Niesie całą nową listę. Używaj w parze z eksportem GetKeyHints.
Strona: Klient · Stała: KEY_HINTS.changedEvent
Argumenty
Prop
Type
Nasłuchiwanie
Zobacz przykład GetKeyHints.
ai-core:client:seatbelt
Zmienił się pas bezpieczeństwa lokalnego gracza, według skryptu pasów, który czyta ai-core. Wysyłane ze skryptów, które zgłaszają zmiany (ai-smallresources, qbx_seatbelt); przy własnym pasie HUD odczytuj GetSeatbelt, gdy go potrzebujesz.
Strona: Klient · Stała: CORE.clientSeatbeltEvent · Lib: seatbelt.onChange
Argumenty
Prop
Type
Nasłuchiwanie
import { seatbelt } from "@aicore-fivem/lib/client";
seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));ai-smallresources:seatbelt
Własne zdarzenie pasa bezpieczeństwa ai-smallresources. Nasłuchują go HUD, które obsługują tylko ai-smallresources. Nowy kod powinien nasłuchiwać ai-core:client:seatbelt powyżej, które działa z każdym obsługiwanym skryptem pasów.
Strona: Klient · Stała: SEATBELT_EVENT
Argumenty
Prop
Type
Nasłuchiwanie
import { SEATBELT_EVENT } from "@aicore-fivem/shared";
on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));Wewnętrzne zdarzenia klienckie
Keybind z liba rozmawia z klientem ai-core przez dwa zdarzenia lokalne. Nie wysyłaj ich i nie odpowiadaj na nie sam; używaj Keybind (TS) lub aiLib.Keybind (Lua).
| Zdarzenie | Stała | Kierunek | Argumenty |
|---|---|---|---|
ai-core:client:keybind | KEYBIND.announceEvent | lib do ai-core | (info: KeybindInfo) skrót klawiszowy czeka na swój domyślny klawisz. |
ai-core:client:keybindKey | KEYBIND.keyEvent | ai-core do liba | (resource: string, name: string, key: string) klawisz do zarejestrowania: klawisz z panelu, w przeciwnym razie własny klawisz skryptu. |
Zdarzenia serwerowe
Każde serwerowe zdarzenie lokalne wysyłane przez ai-core - postacie, pieniądze, prace, służba, gangi, metadane, definicje, przedmioty, śmierci - z argumentami i nasłuchiwaniem w TypeScript i Lua.
Zdarzenia sieciowe
Zdarzenia sieciowe, których może nasłuchiwać skrypt kliencki (kanał danych gracza ai-core), i własny ruch sieciowy ai-core, którego inne skrypty nie mogą wywoływać.