AI Core
Dokumentacja APIEksporty klienckie ai-core

Gesty i emotki

Sprawdzaj ręce w górze i wskazywanie, odtwarzaj i zatrzymuj emotki po nazwie i sprawdzaj, który skrypt emotek odpowiada, niezależnie od menu emotek na serwerze.

Ręce w górze, wskazywanie i emotki pochodzą ze skryptu emotek. ai-core pyta ten, który działa, więc przeszukanie przez policję ("czy ma ręce w górze?") albo animacja pracy działa z każdym z nich.

Dwie listy są trzymane osobno, bo nie każdy skrypt robi obie rzeczy:

  • Gesty (ręce w górze, wskazywanie): tgiann-emotes, codem-emotemenu, rpemotes (i rpemotes-reborn), 0r-animmenu, ai-smallresources. Odpowiada pierwszy działający w tej kolejności.
  • Emotki (odtwarzanie po nazwie, zatrzymanie): tgiann-emotes, rpemotes (i rpemotes-reborn), scully_emotemenu, dpemotes. Odpowiada pierwszy działający w tej kolejności.

IsHandsUp

Mówi, czy lokalny gracz ma ręce w górze, według skryptu emotek, który odpowiada na gesty.

Strona: Klient · Czeka: nie

Sygnatura
IsHandsUp(): boolean
Lua
local up = exports['ai-core']:IsHandsUp() -- albo aiLib.gestures.isHandsUp()

Parametry

Brak.

Zwraca

boolean: true, gdy ręce są w górze. false, gdy nie są albo gdy nie działa żaden skrypt gestów.

Przykład

resource/client/rob.ts
import { gestures, notify } from "@aicore-fivem/lib/client";
import { Locale } from "common";

RegisterCommand(
  "surrender_check",
  () => notify(Locale(gestures.isHandsUp() ? "HANDS_UP" : "HANDS_DOWN")),
  false,
);

To czyta tylko lokalnego gracza. Aby wiedzieć, czy inny gracz ma ręce w górze (napad, przeszukanie), zapytaj serwer, który pyta klienta tego gracza.

IsPointing

Mówi, czy lokalny gracz wskazuje, według skryptu emotek, który odpowiada na gesty.

Strona: Klient · Czeka: nie

Sygnatura
IsPointing(): boolean
Lua
local pointing = exports['ai-core']:IsPointing() -- albo aiLib.gestures.isPointing()

Parametry

Brak.

Zwraca

boolean: true podczas wskazywania. false, gdy nie wskazuje, gdy nie działa żaden skrypt gestów albo gdy działający nie umie tego stwierdzić (0r-animmenu nie ma sprawdzania wskazywania).

Przykład

resource/client/index.ts
import { gestures } from "@aicore-fivem/lib/client";

RegisterCommand("ispointing", () => console.log(gestures.isPointing()), false);

GetGestureProvider

Zwraca nazwę zasobu skryptu emotek, który odpowiada na ręce w górze i wskazywanie.

Strona: Klient · Czeka: nie

Sygnatura
GetGestureProvider(): string | null
Lua
local provider = exports['ai-core']:GetGestureProvider() -- albo aiLib.gestures.provider()

Parametry

Brak.

Zwraca

string: nazwa zasobu ("tgiann-emotes"). null, gdy nie działa żaden z obsługiwanych skryptów.

Przykład

resource/client/index.ts
import { gestures } from "@aicore-fivem/lib/client";

// Używaj własnego klawisza rąk w górze tylko wtedy, gdy żaden skrypt emotek go nie oferuje.
if (gestures.provider() === null) console.log("no gesture script, enabling my own hands-up key");

PlayEmote

Odtwarza emotkę działającego skryptu emotek po jej nazwie komendy, czyli nazwie, którą gracze wpisują po /e ("sit", "notepad").

Strona: Klient · Czeka: nie

Sygnatura
PlayEmote(name: string): boolean
Lua
local played = exports['ai-core']:PlayEmote(name) -- albo aiLib.gestures.playEmote(name)

Parametry

Prop

Type

Zwraca

boolean: true, gdy nazwa jest poprawna i skrypt emotek został poproszony o jej odtworzenie. false dla niepoprawnej nazwy albo gdy nie działa żaden skrypt emotek. true nie dowodzi, że emotka istnieje w tym skrypcie: nieznana nazwa po prostu niczego nie odtwarza.

Przykład

resource/client/notes.ts
import { gestures, progress } from "@aicore-fivem/lib/client";
import { Locale } from "common";

// Pisze notatkę z emotką notatnika, dopóki trwa pasek.
export async function writeNote(): Promise<boolean> {
  gestures.playEmote("notepad");
  const done = await progress({ label: Locale("WRITING"), duration: 5000, canCancel: true });
  gestures.cancelEmote();
  return done;
}

CancelEmote

Zatrzymuje emotkę, którą odtwarza lokalny gracz, w działającym skrypcie emotek. Używaj tego, gdy twój skrypt potrzebuje rąk gracza (skuwanie, powalenie, minigra).

Strona: Klient · Czeka: nie

Sygnatura
CancelEmote(): boolean
Lua
local stopped = exports['ai-core']:CancelEmote() -- albo aiLib.gestures.cancelEmote()

Parametry

Brak.

Zwraca

boolean: true, gdy skrypt emotek został poproszony o zatrzymanie (także gdy nic nie było odtwarzane), false, gdy nie działa żaden skrypt emotek.

Przykład

Zobacz przykład PlayEmote.

GetEmoteProvider

Zwraca nazwę zasobu skryptu emotek, który odtwarza emotki po nazwie.

Strona: Klient · Czeka: nie

Sygnatura
GetEmoteProvider(): string | null
Lua
local provider = exports['ai-core']:GetEmoteProvider() -- albo aiLib.gestures.emoteProvider()

Parametry

Brak.

Zwraca

string: nazwa zasobu ("rpemotes"). null, gdy nie działa żaden z obsługiwanych skryptów emotek.

Przykład

resource/client/index.ts
import { gestures, player } from "@aicore-fivem/lib/client";

// Preferuj skrypt emotek serwera, w przeciwnym razie zwykła animacja.
export function sitDown(): void {
  if (gestures.emoteProvider() !== null) gestures.playEmote("sit");
  else void player.playAnim("anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_idle_nowork");
}

Na tej stronie