AI Core
API başvurusuLib: client

ai-core üzerinden katmanlar

medical, appearance, gestures, seatbelt, fuel, mdt, radial, world ve inventory - sunucu hangi ölüm, kıyafet, emote, kemer, yakıt, MDT, radyal, hava ya da envanter script’ini çalıştırıyorsa ona ulaşan client çağrıları.

Bu nesneler asla belirli bir script ile konuşmaz. ai-core’a sorarlar ve ai-core, sunucunun o iş için çalıştırdığı script hangisiyse ona iletir: ai-death ya da başka bir ölüm script’i, ai-appearance ya da tgiann-clothing, desteklenen herhangi bir emote ya da radyal script’i. Sahip birini değiştirdiğinde script’in çalışmaya devam eder. Katmanların nasıl çalıştığı Katmanlar ve köprü sayfasındadır.

O türden hiçbir script çalışmıyorken çağrılar, her girdinin söylediği gibi false, null ya da oyunun kendi değeriyle cevap verir.

medical

medical.isDead

Hangi ölüm script’i çalışıyorsa, yerel oyuncunun yerde (ölü ya da son nefeste) olup olmadığı. Ölüm script’leri yerdeki bir ped’i canlandırmak için canlı tutar; bu yüzden tek başına IsEntityDead onları kaçırır. İlk çağrıdan sonra bir bellek okuması.

Taraf: Client · Bekler: hayır

Signature
medical.isDead(): boolean

Lua karşılığı yok: exports['ai-core']:IsDead() çağır ve yerel ai-core:client:dead (dead) event’ini dinle.

Dönüş değeri

boolean: ai-core’un medical katmanı oyuncunun yerde olduğunu söylüyorsa ya da ped oyun için ölüyse true.

Örnek

import { medical, notify } from "@aicore-fivem/lib/client";

RegisterCommand(
  "phone",
  () => {
    if (medical.isDead()) return notify("You cannot use the phone now", "error");
    SetNuiFocus(true, true);
  },
  false,
);

medical.onChange

Yerel oyuncu yere düştüğünde ya da ayağa kalktığında bir handler çalıştırır.

Taraf: Client · Bekler: hayır

Signature
medical.onChange(fn: (dead: boolean) => void): void

Lua karşılığı yok: AddEventHandler('ai-core:client:dead', function(dead) end).

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

import { medical, Points } from "@aicore-fivem/lib/client";

const points = new Points();
medical.onChange(() => points.refresh()); // canShow’u medical.isDead()’i okuyan noktalar

appearance

Hangi kıyafet script’i çalışıyorsa, ai-core’un görünüm katmanı üzerinden ped’lerin görünümleri.

appearance.apply

Kayıtlı bir görünümü, görünümün modelindeki bir ped’e giydirir. Görünümü server’da appearance.get(charId) ile al, ped’i look.model ile oluştur, sonra uygula. Oyuncunun kendi ped’inde kıyafetlerini değiştirir.

Taraf: Client · Bekler: hayır

Signature
appearance.apply(ped: number, look: CharacterAppearance): boolean
Lua
local ok = aiLib.appearance.apply(ped, look)

Parametreler

Prop

Type

Tipi CharacterAppearance’dır.

Dönüş değeri

boolean: ped yok olduysa, model farklıysa ya da hiçbir kıyafet script’i çalışmıyorsa false.

Örnek

import { appearance, LocalPed, triggerServerCallback } from "@aicore-fivem/lib/client";
import type { CharacterAppearance } from "@aicore-fivem/shared";

// Bir karakterin, onun gibi giyinmiş uyuyan bir kopyası.
export async function showSleeper(charId: number): Promise<void> {
  const look = (await triggerServerCallback("mysleep:look", [charId]).catch(() => null)) as CharacterAppearance | null;
  if (!look) return;
  new LocalPed({
    model: look.model,
    coords: { x: 151.2, y: -1004.6, z: 29.4, heading: 90 },
    onSpawn: (ped) => appearance.apply(ped, look),
  });
}

Server’ın gönderdiğini tip dönüşümü yapmadan önce kontrol et. look.model’den başka bir modelle oluşturulan bir ped görünümü alamaz: apply false cevabını verir.

appearance.read

Bir ped’in şu an giydiği görünüm.

Taraf: Client · Bekler: hayır

Signature
appearance.read(ped: number): CharacterAppearance | null
Lua
local look = aiLib.appearance.read(ped) -- table ya da nil

Parametreler

Prop

Type

Dönüş değeri

CharacterAppearance | null: görünüm ya da kıyafet script’i bunu söyleyemiyorsa veya hiçbiri çalışmıyorsa null (Lua’da nil).

Örnek

import { appearance, cache } from "@aicore-fivem/lib/client";

const before = appearance.read(cache.ped); // daha sonra appearance.apply ile geri koy

appearance.openMenu

Kıyafet script’inin kıyafet mağazasını, berberini ya da kayıtlı kıyafetlerini oyuncu için açar.

Taraf: Client · Bekler: hayır

Signature
appearance.openMenu(menu: ClothingMenu): boolean
Lua
local ok = aiLib.appearance.openMenu(menu)

Parametreler

Prop

Type

Tipi ClothingMenu’dür.

Dönüş değeri

boolean: kıyafet script’inin böyle bir menüsü yoksa ya da hiçbiri çalışmıyorsa false.

Örnek

import { appearance, Points } from "@aicore-fivem/lib/client";

const points = new Points();
points.add("barber", {
  coords: { x: -814.3, y: -183.8, z: 37.6 },
  label: "Barber",
  onPressed: () => appearance.openMenu("barber"),
});

appearance.wearOutfit

Oyuncuya reloadSkin’e kadar bir meslek kıyafeti (bir üniforma) giydirir. Kaydedilmez: yeniden bağlanmak ya da reloadSkin oyuncunun kendi kıyafetlerini geri verir. Yalnızca listelenen parçalar değişir.

Taraf: Client · Bekler: hayır

Signature
appearance.wearOutfit(outfit: JobOutfit): boolean
Lua
local ok = aiLib.appearance.wearOutfit(outfit)

Parametreler

Prop

Type

Tipler JobOutfit ve OutfitPiece’tir.

Dönüş değeri

boolean: yapamıyorsa (kıyafet script’i yok, desteklemediği bir model) false.

Örnek

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

appearance.wearOutfit({
  components: [
    { id: 11, collection: "", index: 55, texture: 0 },
    { id: 4, collection: "", index: 35, texture: 0 },
  ],
  props: [{ id: 0, collection: "", index: -1, texture: 0 }],
});

appearance.reloadSkin

Oyuncunun kayıtlı görünümünü geri giydirir (bir meslek kıyafetini çıkarır).

Taraf: Client · Bekler: hayır

Signature
appearance.reloadSkin(): boolean
Lua
local ok = aiLib.appearance.reloadSkin()

Dönüş değeri

boolean: kıyafet script’i yoksa false.

Örnek

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

RegisterCommand("offduty", () => appearance.reloadSkin(), false);

gestures

Hangi emote script’i çalışıyorsa, ai-core üzerinden eller yukarı, işaret etme ve emote’lar.

gestures.isHandsUp

Yerel oyuncunun ellerinin yukarıda olup olmadığı.

Taraf: Client · Bekler: hayır

Signature
gestures.isHandsUp(): boolean
Lua
local up = aiLib.gestures.isHandsUp()

Dönüş değeri

boolean: çalışan emote script’inde eller yukarıdayken true.

Örnek

import { gestures, onServerCallback } from "@aicore-fivem/lib/client";

// Server bir soygundan önce kurbanın teslim olup olmadığını sorar.
onServerCallback("myrob:surrendered", () => gestures.isHandsUp());

gestures.isPointing

Yerel oyuncunun işaret edip etmediği.

Taraf: Client · Bekler: hayır

Signature
gestures.isPointing(): boolean
Lua
local pointing = aiLib.gestures.isPointing()

Dönüş değeri

boolean: işaret ederken true.

Örnek

if (gestures.isPointing()) return; // işaret etmenin üzerine bir emote başlatma

gestures.provider

Eller yukarı ve işaret etmeye cevap veren emote script’i.

Taraf: Client · Bekler: hayır

Signature
gestures.provider(): string | null
Lua
local name = aiLib.gestures.provider()

Dönüş değeri

string | null: resource adı ya da hiçbiri çalışmıyorsa null (nil).

Örnek

console.log(`hands up from ${gestures.provider() ?? "nothing"}`);

gestures.playEmote

Çalışan emote script’inde bir emote’u komut adıyla (oyuncuların e’den sonra yazdığı) oynatır.

Taraf: Client · Bekler: hayır

Signature
gestures.playEmote(name: string): boolean
Lua
local ok = aiLib.gestures.playEmote(name)

Parametreler

Prop

Type

Dönüş değeri

boolean: emote script’i yoksa false.

Örnek

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

RegisterCommand("hi", () => gestures.playEmote("wave"), false);

gestures.cancelEmote

Oyuncunun oynattığı emote’u durdurur (kelepçelendi, yere düşürüldü).

Taraf: Client · Bekler: hayır

Signature
gestures.cancelEmote(): boolean
Lua
local ok = aiLib.gestures.cancelEmote()

Dönüş değeri

boolean: emote script’i yoksa false.

Örnek

onServerEvent("mypolice:cuffed", () => gestures.cancelEmote());

gestures.emoteProvider

Emote’ları oynatan emote script’i (eller yukarıya cevap verenden farklı olabilir).

Taraf: Client · Bekler: hayır

Signature
gestures.emoteProvider(): string | null
Lua
local name = aiLib.gestures.emoteProvider()

Dönüş değeri

string | null: resource adı ya da hiçbiri çalışmıyorsa null (nil).

Örnek

if (gestures.emoteProvider() === null) console.log("no emote script: skipping the emote");

seatbelt

Hangi emniyet kemeri script’i çalışıyorsa, ai-core üzerinden yerel oyuncunun emniyet kemeri.

seatbelt.isOn

Kemerin takılı olup olmadığı. Her karede değil, gerektiğinde sor.

Taraf: Client · Bekler: hayır

Signature
seatbelt.isOn(): boolean | null
Lua
local worn = aiLib.seatbelt.isOn() -- boolean ya da nil

Dönüş değeri

boolean | null: true ya da false; hiçbir emniyet kemeri script’i cevap vermiyorsa null (nil).

Örnek

import { cache, notify, onCache, seatbelt } from "@aicore-fivem/lib/client";

onCache("vehicle", (vehicle) => {
  if (vehicle !== false && seatbelt.isOn() === false) notify("Buckle up", "warning");
});

seatbelt.onChange

Kemer değiştiğinde bir handler çalıştırır. Yalnızca değişiklikleri bildiren emniyet kemeri script’leri onu tetikler.

Taraf: Client · Bekler: hayır

Signature
seatbelt.onChange(fn: (worn: boolean | null) => void): void
Lua
aiLib.seatbelt.onChange(function(worn) end)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));

seatbelt.provider

Cevap veren emniyet kemeri script’i.

Taraf: Client · Bekler: hayır

Signature
seatbelt.provider(): string | null
Lua
local name = aiLib.seatbelt.provider()

Dönüş değeri

string | null: resource adı ya da hiçbiri cevap vermiyorsa null (nil).

Örnek

if (seatbelt.provider() === null) console.log("no seat belt script runs");

fuel

fuel.get

Bir aracın yakıt seviyesi. Server, hangi yakıt script’i çalışırsa çalışsın her araç için bir fuel state bag’i tutar; bu yüzden bu bir bellek okumasıdır; o bag yoksa oyunun depo seviyesidir.

Taraf: Client · Bekler: hayır

Signature
fuel.get(vehicle: number): number

Lua karşılığı yok: Entity(vehicle).state.fuel’i oku. Yakıt ayarlamak yalnızca server’dadır (Araçlar sayfasındaki fuel.set).

Parametreler

Prop

Type

Dönüş değeri

number: 0-100.

Örnek

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

every(1000, () => {
  if (cache.vehicle !== false) SendNUIMessage({ action: "fuel", data: Math.round(fuel.get(cache.vehicle)) });
});

mdt

mdt.open

Aktif polis MDT’sini yerel oyuncu için açar. MDT mesleği kendisi kontrol eder.

Taraf: Client · Bekler: hayır

Signature
mdt.open(): boolean
Lua
local ok = aiLib.mdt.open()

Dönüş değeri

boolean: hiçbir MDT çalışmıyorsa ya da dışarıdan açılamıyorsa false.

Örnek

import { mdt, notify } from "@aicore-fivem/lib/client";

RegisterCommand("mdt", () => {
  if (!mdt.open()) notify("No MDT available", "error");
}, false);

radial

Hangi radyal menü çalışıyorsa (ai-radialmenu ya da ai-core’un radyal katmanı üzerinden başka biri) üzerindeki öğeler. ai-core onları radyal yeniden başlatmalarında tutar ve resource’un durduğunda kaldırır: açılışta bir kez ekle.

radial.add

Çarka bir öğe ekler ya da aynı id’ye sahip öğenin yerine geçer.

Taraf: Client · Bekler: hayır

Signature
radial.add(item: RadialItem): void
Lua
aiLib.radial.add(item)

Parametreler

Prop

Type

RadialItem

Prop

Type

Tipi RadialItem’dir.

Dönüş değeri

void.

Örnek

import { cache, createLocale, hasJob, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";

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

radial.add({
  id: "myscript:engine",
  label: Locale("ENGINE"),
  icon: "power-off",
  parent: RADIAL_VEHICLE,
  keepOpen: true,
  canShow: () => cache.seat === -1,
  onPressed: () => {
    if (cache.vehicle === false) return;
    SetVehicleEngineOn(cache.vehicle, !GetIsVehicleEngineRunning(cache.vehicle), false, true);
  },
});

radial.add({
  id: "myscript:police",
  label: Locale("POLICE"),
  icon: "shield-halved",
  canShow: () => hasJob(["police"]),
  items: [
    { id: "myscript:cuff", label: Locale("CUFF"), icon: "handcuffs", onPressed: () => emitNet("mypolice:cuff") },
  ],
});

radial.remove

Öğelerinden birini kaldırır. Bilinmeyen bir id hiçbir şey yapmaz.

Taraf: Client · Bekler: hayır

Signature
radial.remove(id: string): void
Lua
aiLib.radial.remove(id)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

radial.remove("myscript:engine");

radial.refresh

Açık bir çarkın her canShow’unu yeniden okur. Çark açık olabilirken okudukları bir şey değiştikten sonra çağır.

Taraf: Client · Bekler: hayır

Signature
radial.refresh(): void
Lua
aiLib.radial.refresh()

Dönüş değeri

void.

Örnek

onMembershipChange(() => radial.refresh());

world

Hangi hava script’i çalışıyorsa onun hava ve saat senkronu; bir sebep geçerliyken duraklatılır.

world.pauseSync

Hava ve saat senkronunu bir sebeple duraklatır: bir iç mekânın içinde, bir sahne sırasında ya da script’in kendi havasını ayarlarken.

Taraf: Client · Bekler: hayır

Signature
world.pauseSync(reason: string): void
Lua
aiLib.world.pauseSync(reason)

Parametreler

Prop

Type

Dönüş değeri

void.

Örnek

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

export function enterApartment(): void {
  world.pauseSync("apartment");
  NetworkOverrideClockTime(12, 0, 0);
  SetWeatherTypeNowPersist("EXTRASUNNY");
}

export function leaveApartment(): void {
  world.resumeSync("apartment");
}

world.resumeSync

Bir duraklatma sebebini kaldırır; hiçbir sebep kalmadığında senkron yeniden çalışır.

Taraf: Client · Bekler: hayır

Signature
world.resumeSync(reason: string): void
Lua
aiLib.world.resumeSync(reason)

Parametreler

Prop

Type

Dönüş değeri

void. world.pauseSync örneğine bak.

inventory

ai-core’un envanter katmanı üzerinden yerel oyuncunun envanteri: server’ın seçtiği envanter cevap verir. Eşya vermek ve almak yalnızca server’dadır (Eşyalar).

inventory.openInventory

Oyuncunun kendi envanter ekranını açar.

Taraf: Client · Bekler: hayır

Signature
inventory.openInventory(): void
Lua
aiLib.inventory.openInventory()

Dönüş değeri

void.

Örnek

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

RegisterCommand("bag", () => inventory.openInventory(), false);

inventory.hasItem

Oyuncunun bir eşyadan en az count tane tutup tutmadığı. Oyuncunun yalnızca yapabildiklerini görmesi için canShow içinde kullan; server tekrar kontrol eder.

Taraf: Client · Bekler: hayır

Signature
inventory.hasItem(item: string, count?: number): boolean
Lua
local has = aiLib.inventory.hasItem(item, count)

Parametreler

Prop

Type

Dönüş değeri

boolean: oyuncunun yeterince varsa true.

Örnek

import { inventory, Points } from "@aicore-fivem/lib/client";

const points = new Points();
points.addVehicle("lockpick", {
  label: "Lockpick",
  icon: "unlock",
  canShow: (vehicle) => GetVehicleDoorLockStatus(vehicle) >= 2 && inventory.hasItem("lockpick"),
  onPressed: (vehicle) => emitNet("mykeys:lockpick", NetworkGetNetworkIdFromEntity(vehicle)),
});

inventory.currentWeapon

Oyuncunun elindeki silah eşyası: adı, etiketi ve resmi.

Taraf: Client · Bekler: hayır

Signature
inventory.currentWeapon(): HeldWeapon | null
Lua
local weapon = aiLib.inventory.currentWeapon() -- table ya da nil

Dönüş değeri

HeldWeapon { name: string; label: string; image?: string } (name WEAPON_PISTOL gibi, envanterin bir resmi varsa image bir nui:// url’si) ya da el boşsa null (nil).

Örnek

import { inventory, onCache } from "@aicore-fivem/lib/client";

// Silah değiştiğinde oku, asla her karede değil.
onCache("weapon", () => SendNUIMessage({ action: "weapon", data: inventory.currentWeapon() }));

Bu sayfada