AI Core
API başvurusuLib: client

Ekranlar ve kontroller

NuiScreen, hud, keyHints ve controls - kendi tam ekran NUI’n, tüm HUD’ları gizlemek, tuş yardım satırları ve devre dışı kontroller.

Kendi NUI sayfası ya da araç modu olan script’ler için yardımcılar: odak alan ve HUD’ları gizleyen tam ekran bir sayfa açmak, bir aracın tuşlarını HUD’da listelemek ve kare başı bir döngü yazmadan kontrolleri engellemek.

NuiScreen

new NuiScreen

Resource’unun tam ekran NUI sayfası tek bir nesnede. open odağı alır, tüm HUD’ları gizler (hud üzerinden) ve açılış mesajını gönderir; close odağı geri verir, HUD’ları gösterir, sayfaya { action: "close" } gönderir ve senin onClose’unu çalıştırır. Sayfanın kendi close NUI callback’i de onu kapatır. Resource başına, dosyanın en üstünde bir tane oluştur.

Taraf: Client · Bekler: hayır

Signature
new NuiScreen<M extends NuiPageMessage = NuiPageMessage>(name: string, options?: NuiScreenOptions)

Lua karşılığı yok: Lua resource’ları SetNuiFocus, aiLib.hud.hide / show ve RegisterNUICallback('close', ...) çağrılarını kendileri yapar.

Parametreler

Prop

Type

NuiScreenOptions

Prop

Type

NuiPageMessage

open ve send’in aldığı: { action: string; data?: unknown }. Her mesajı tiplemek için kendi union tipini M olarak geçir.

Üyeler

Prop

Type

Örnek

resource/client/index.ts
import { callAction, NuiScreen, ScriptCamera } from "@aicore-fivem/lib/client";
import { readText } from "@aicore-fivem/lib/shared";

type Message =
  | { action: "open"; data: { items: string[] } }
  | { action: "result"; data: boolean };

const camera = new ScriptCamera();
const screen = new NuiScreen<Message>("shop", {
  onClose: () => camera.stop(500),
});

export function openShop(items: string[]): void {
  camera.start({ x: 26.5, y: -1345.0, z: 30.2 }, { pointAt: { x: 25.7, y: -1347.3, z: 29.5 } }, 500);
  screen.open({ action: "open", data: { items } });
}

// Sayfa fetch(`https://${GetParentResourceName()}/buy`, { body: JSON.stringify("water") }) çağırır.
screen.on(
  "buy",
  (data) => readText(data, 32),
  async (item) => {
    const reply = await callAction("myshop:buy", [item], { fallback: "BUY_FAILED" });
    return { ok: reply !== null };
  },
);

Tam ekran sayfalar için NuiScreen kullan. HUD’u ekranda tutan katmanlar (bir sohbet kutusu, bir radyal çark, bir target gözü) kendi odak kodlarını korur.

hud

ai-core üzerinden HUD’lar (ai-hud ve ai-core’un desteklediği diğer HUD script’leri). Tam ekran bir arayüz açılışta onları gizler ve kapanışta gösterir. Sebepler resource başına sayılır; bu yüzden aynı anda açık iki ekran, ikisi de kapanana kadar HUD’ları gizli tutar. Herhangi bir sebep geçerliyken ai-core tüm HUD’ları ve minimap’i gizler.

hud.hide

Aynı sebeple hud.show çağrılana kadar tüm HUD’ları bir sebeple gizler.

Taraf: Client · Bekler: hayır

Signature
hud.hide(reason: string): void
Lua
aiLib.hud.hide(reason)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

import { hud } from "@aicore-fivem/lib/client";

RegisterCommand(
  "cinema",
  () => {
    if (hud.visible) hud.hide("cinema");
    else hud.show("cinema");
  },
  false,
);

hud.show

Bir gizleme sebebini kaldırır. Hiçbir resource’un sebebi kalmadığında HUD’lar geri gelir.

Taraf: Client · Bekler: hayır

Signature
hud.show(reason: string): void
Lua
aiLib.hud.show(reason)

Parametreler

Prop

Type

Dönüş değeri

void. hud.hide örneğine bak.

hud.visible

HUD’ların şu an görünüp görünmediği (açık tam ekran arayüz yok).

Taraf: Client · Bekler: hayır

Signature
hud.visible: boolean // salt okunur özellik
Lua
local visible = aiLib.hud.visible() -- Lua’da bir fonksiyon

Dönüş değeri

boolean: hiçbir resource’un gizleme sebebi geçerli değilse true.

hud.onChange

HUD’lar her gösterildiğinde ya da gizlendiğinde bir handler çalıştırır. Bir HUD script’i kendini gizlemek için bunu kullanır.

Taraf: Client · Bekler: hayır

Signature
hud.onChange(fn: (visible: boolean) => void): void

Lua karşılığı yok: yerel ai-core:client:hudVisible (visible) event’ini dinle.

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

import { hud } from "@aicore-fivem/lib/client";

hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));

keyHints

Bir script’in bir süre gösterdiği tuş yardım satırları (bir admin noclip’inin tuşları, bir minigame’in kontrolleri); HUD bunları solda, keybind’lerin hint ile bildirdiklerinin yanında listeler. Duran bir resource’un ipuçları kendiliğinden kaybolur.

keyHints.show

Bir tuş ipucu gösterir ya da aynı id’ye sahip olanı değiştirir.

Taraf: Client · Bekler: hayır

Signature
keyHints.show(id: string, hint: KeyHintRequest): void
Lua
aiLib.keyHints.show(id, hint)

Parametreler

Prop

Type

KeyHintRequest

Prop

Type

Tipi KeyHintRequest’tir.

Dönüş değeri

void.

Örnek

import { createLocale, keyHints } from "@aicore-fivem/lib/client";

const Locale = createLocale<typeof import("../../locales/en.json")>();

export function startPlacing(): void {
  keyHints.show("rotate", { label: Locale("ROTATE"), key: "Q / E", icon: "rotate" });
  keyHints.show("place", { label: Locale("PLACE"), keybind: "myscript_place", icon: "check" });
}

export function stopPlacing(): void {
  keyHints.hide("rotate");
  keyHints.hide("place");
}

keyHints.hide

Tuş ipuçlarından birini kaldırır. Bilinmeyen bir id hiçbir şey yapmaz.

Taraf: Client · Bekler: hayır

Signature
keyHints.hide(id: string): void
Lua
aiLib.keyHints.hide(id)

Parametreler

Prop

Type

Dönüş değeri

void. keyHints.show örneğine bak.

controls

Resource’unun devre dışı kontrolleri; hepsi için tek bir kare başı görevle. Her sebep (cuffed, menu, placing) kendi kontrollerini ekler ve bittiğinde onları kaldırır; görev yalnızca herhangi bir sebep aktifken çalışır. DisableControlAction ile asla kendi setTick’ini yazma.

controls.disable

controls.enable(reason) çağrılana kadar bir kontrol listesini her karede devre dışı bırakır. Aynı sebeple tekrar çağırmak o sebebin listesinin yerine geçer.

Taraf: Client · Bekler: hayır

Signature
controls.disable(reason: string, controls: readonly number[], group?: number): void
Lua
aiLib.controls.disable(reason, controls, group)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

import { controls, onServerEvent } from "@aicore-fivem/lib/client";

const CUFFED = [21, 22, 23, 24, 25, 37, 44, 140, 141, 142, 143, 257, 263, 264];

onServerEvent(
  "mypolice:cuffed",
  { args: ([on]) => (typeof on === "boolean" ? [on] : null) },
  (on) => (on ? controls.disable("cuffed", CUFFED) : controls.enable("cuffed")),
);

controls.disableAll

controls.enable(reason) çağrılana kadar, tuttukların dışında her kontrolü (girdi grupları 0, 1 ve 2) her karede devre dışı bırakır. Bir noclip ya da serbest kamera için kullan ve devre dışı tuşları IsDisabledControlPressed ile oku.

Taraf: Client · Bekler: hayır

Signature
controls.disableAll(reason: string, except?: readonly number[]): void
Lua
aiLib.controls.disableAll(reason, except)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

import { controls, every } from "@aicore-fivem/lib/client";

const fly = every(0, () => {
  if (IsDisabledControlPressed(0, 32)) console.log("forward");
}, { active: false, name: "noclip" });

export function noclip(on: boolean): void {
  if (on) controls.disableAll("noclip", [1, 2, 249]);
  else controls.enable("noclip");
  fly.set(on);
}

controls.enable

Bir sebebi bitirir: başka bir sebep onları hâlâ devre dışı bırakmıyorsa kontrolleri yeniden çalışır. Bilinmeyen bir sebep hiçbir şey yapmaz.

Taraf: Client · Bekler: hayır

Signature
controls.enable(reason: string): void
Lua
aiLib.controls.enable(reason)

Parametreler

Prop

Type

Dönüş değeri

void. Yukarıdaki örneklere bak.

controls.isDisabled

Resource’unun bir sebebinin şu an aktif olup olmadığı.

Taraf: Client · Bekler: hayır

Signature
controls.isDisabled(reason: string): boolean

Lua karşılığı yok.

Parametreler

Prop

Type

Dönüş değeri

boolean: o sebep geçerliyken true.

Örnek

import { controls } from "@aicore-fivem/lib/client";

if (controls.isDisabled("cuffed")) console.log("the player is cuffed");

Bu sayfada