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
ApplyAppearance(ped: number, look: CharacterAppearance): booleanlocal 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
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;
});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
GetPedAppearance(ped: number): CharacterAppearance | nulllocal 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
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
OpenClothingMenu(menu: ClothingMenu): booleanlocal opened = exports['ai-core']:OpenClothingMenu(menu) -- ya da aiLib.appearance.openMenu(menu)Parametreler
Prop
Type
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
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
WearOutfit(outfit: JobOutfit): booleanlocal 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
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
ReloadSkin(): booleanlocal 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.
Hareketler ve emote’lar
Sunucu hangi emote menüsünü çalıştırırsa çalıştırsın; eller yukarıda ve işaret etmeyi kontrol et, emote’ları adıyla oynat ve durdur ve hangi emote script’inin cevap verdiğini gör.
Sağlık
Sunucu hangi ölüm script’ini çalıştırırsa çalıştırsın, yerel oyuncunun yerde (ölü ya da last stand’de) olup olmadığını söyle.