AI Core
API başvurusuai-core client export’ları

Görünüm

Hangi kıyafet script’i çalışıyorsa çalışsın; bir karakterin görünümünü bir ped’e giydir, bir ped’in giydiği görünümü oku, kıyafet dükkanını, berberi ya da kıyafetler menüsünü aç ve oyuncuya bir meslek kıyafeti giydir.

Bu export’lar ai-core’un görünüm katmanı üzerinden gider: işi sunucunun çalıştırdığı kıyafet script’i yapar (ai-appearance, tgiann-clothing, illenium-appearance, qb-clothing, crm-appearance, rcore_clothing, bl_appearance). Script’in asla bir kıyafet script’inin kendi biçimine dokunmaz, bu yüzden sunucu sahibi onu değiştirdiğinde çalışmaya devam eder.

Bir görünüm (CharacterAppearance) { model, data }’dır: ped model hash’i ve kıyafet script’inin kendi verisi. data’yı kapalı bir kutu gibi ele al: bir görünümü server’dan (server lib’inde appearance.get(charId), Lua’da aiLib.appearance.get) ya da GetPedAppearance’tan al ve değiştirmeden geri ver.

ApplyAppearance

Aktif kıyafet script’i üzerinden bir ped’e bir görünüm giydirir. Yerel bir ped’i bir karakter gibi giydirmek için (sahibine benzeyen bir dükkancı, uyuyan bir beden, bir fotoğraf) ya da kayıtlı bir görünümü oyuncuya geri giydirmek için kullan.

Taraf: Client · Bekler: hayır

İmza
ApplyAppearance(ped: number, look: CharacterAppearance): boolean
Lua
local ok = exports['ai-core']:ApplyAppearance(ped, look) -- ya da aiLib.appearance.apply(ped, look)

Parametreler

Prop

Type

Dönüş değeri

boolean: görünüm kıyafet script’ine verildiğinde true. Ped yoksa, modeli look.model’den farklıysa, görünüm bir { model, data } tablosu değilse ya da hiçbir kıyafet script’i çalışmıyorsa false.

Örnek

resource/server/index.ts
import { appearance, onClientCallback, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Soran oyuncunun kendi kayıtlı görünümü.
onClientCallback("myscript:myLook", async (source) => {
  const character = core.GetCharacter(source);
  return character ? await appearance.get(character.id) : null;
});
resource/client/index.ts
import { appearance, requestModel, triggerServerCallback } from "@aicore-fivem/lib/client";
import { toCharacterAppearance } from "@aicore-fivem/shared";

// Oyuncunun bir noktada duran, onun gibi giyinmiş yerel bir kopyası.
export async function spawnLookalike(x: number, y: number, z: number): Promise<number> {
  const look = toCharacterAppearance(await triggerServerCallback("myscript:myLook", []));
  if (!look) return 0;
  await requestModel(look.model);
  const ped = CreatePed(4, look.model, x, y, z, 0, false, false);
  SetModelAsNoLongerNeeded(look.model);
  appearance.apply(ped, look);
  return ped;
}

Oyuncunun kendi ped’inde ApplyAppearance şu an giydiklerini değiştirir. Bu değişikliğin kaydedilip kaydedilmeyeceği ai-core’un değil, kıyafet script’inin kuralıdır. Oyuncuya asla kaydedilmeyen bir üniforma giydirmek için WearOutfit kullan.

GetPedAppearance

Bir ped’in şu an giydiği görünümü, server’ın kayıtlı görünümlerinin kullandığı aynı { model, data } şeklinde döndürür.

Taraf: Client · Bekler: hayır

İmza
GetPedAppearance(ped: number): CharacterAppearance | null
Lua
local look = exports['ai-core']:GetPedAppearance(ped) -- ya da aiLib.appearance.read(ped)

Parametreler

Prop

Type

Dönüş değeri

CharacterAppearance: model ped’in model hash’i, data kıyafet script’inin verisi. Ped yoksa, hiçbir kıyafet script’i çalışmıyorsa ya da kıyafet script’i o ped’i okuyamıyorsa (bazıları yalnızca yerel oyuncunun kendi ped’ini okur) null.

Örnek

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

// Oyuncunun şu an giydiklerini aynı modelden başka bir ped’e kopyalar.
export function copyPlayerLook(target: number): boolean {
  const look = appearance.read(cache.ped);
  return look !== null && appearance.apply(target, look);
}

OpenClothingMenu

Yerel oyuncu için aktif kıyafet script’inin menülerinden birini açar: kıyafet dükkanı, berber ya da kayıtlı kıyafetleri. Kendi dükkan işaretlerin ya da bir evdeki gardırop için kullan.

Taraf: Client · Bekler: hayır

İmza
OpenClothingMenu(menu: ClothingMenu): boolean
Lua
local opened = exports['ai-core']:OpenClothingMenu(menu) -- ya da aiLib.appearance.openMenu(menu)

Parametreler

Dönüş değeri

boolean: kıyafet script’i menüyü açtığında true. Bilinmeyen bir menu için, hiçbir kıyafet script’i çalışmıyorsa ya da çalışanın böyle bir menüsü yoksa false.

Örnek

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

const points = new Points();

// Bir motel odasında bir gardırop.
points.add("motel_wardrobe", {
  coords: { x: 151.3, y: -1001.2, z: -99.0 },
  label: Locale("WARDROBE"),
  onPressed: () => {
    if (!appearance.openMenu("outfits")) notify(Locale("NO_WARDROBE"), "error");
  },
});

WearOutfit

Yerel oyuncuya ReloadSkin’e kadar bir meslek kıyafeti (üniforma) giydirir. Yalnızca listelediğin parçalar değişir; kıyafetlerinin geri kalanı kalır. Kıyafet asla oyuncunun kendi görünümü olarak kaydedilmez.

Taraf: Client · Bekler: hayır

İmza
WearOutfit(outfit: JobOutfit): boolean
Lua
local ok = exports['ai-core']:WearOutfit(outfit) -- ya da aiLib.appearance.wearOutfit(outfit)

Parametreler

Prop

Type

JobOutfit

Prop

Type

OutfitPiece

Ayrıca bkz. OutfitPiece.

Prop

Type

Dönüş değeri

boolean: kıyafet script’i kıyafeti giydirdiğinde true. Kontrolden sonra geçerli parça kalmadıysa, hiçbir kıyafet script’i çalışmıyorsa ya da çalışan kıyafet giydiremiyorsa false. Geçersiz parçalar (yanlış id aralığı, kötü indeks) tek tek atılır; geçerli olanlar yine de giyilir.

Örnek

resource/client/locker.ts
import { appearance } from "@aicore-fivem/lib/client";
import type { JobOutfit } from "@aicore-fivem/shared";

// Temel oyun parçalarından düz bir üniforma: gömlek, pantolon, ayakkabı, şapka yok.
const UNIFORM: JobOutfit = {
  components: [
    { id: 11, collection: "", index: 55, texture: 0 },
    { id: 4, collection: "", index: 35, texture: 0 },
    { id: 6, collection: "", index: 25, texture: 0 },
  ],
  props: [{ id: 0, collection: "", index: -1, texture: 0 }],
};

export const putOnUniform = (): boolean => appearance.wearOutfit(UNIFORM);
export const takeOffUniform = (): boolean => appearance.reloadSkin();

Drawable indeksleri erkek ve kadın freemode modelleri arasında farklıdır: model başına bir kıyafet tut ve oyuncunun modeline göre seç.

ReloadSkin

Yerel oyuncunun kayıtlı görünümünü geri giydirir. Bir meslek kıyafetini çıkarmak için kullan.

Taraf: Client · Bekler: hayır

İmza
ReloadSkin(): boolean
Lua
local ok = exports['ai-core']:ReloadSkin() -- ya da aiLib.appearance.reloadSkin()

Parametreler

Yok.

Dönüş değeri

boolean: kıyafet script’inden görünümü yeniden yüklemesi istendiğinde true. Hiçbir kıyafet script’i çalışmıyorsa ya da çalışan yeniden yükleyemiyorsa false.

Örnek

WearOutfit örneğine bak.

Bu sayfada