Wygląd
Nałóż wygląd postaci na peda, odczytaj wygląd, który ped nosi, otwórz sklep z ubraniami, fryzjera lub menu strojów i ubierz gracza w strój pracy, niezależnie od używanego skryptu ubrań.
Te eksporty przechodzą przez warstwę wyglądu ai-core: pracę wykonuje skrypt ubrań, którego używa serwer (ai-appearance, tgiann-clothing, illenium-appearance, qb-clothing, crm-appearance, rcore_clothing, bl_appearance). Twój skrypt nigdy nie dotyka własnego formatu skryptu ubrań, więc działa dalej, gdy właściciel serwera go zmieni.
Wygląd (CharacterAppearance) to { model, data }: hash modelu peda i własne dane skryptu ubrań. Traktuj data jak zamkniętą skrzynkę: pobierz wygląd z serwera (appearance.get(charId) w serwerowym libie, aiLib.appearance.get w Lua) lub z GetPedAppearance i oddaj go bez zmian.
ApplyAppearance
Nakłada wygląd na peda przez aktywny skrypt ubrań. Używaj tego, aby ubrać lokalnego peda jak postać (sprzedawca wyglądający jak właściciel, śpiące ciało, zdjęcie) albo aby przywrócić graczowi zapisany wygląd.
Strona: Klient · Czeka: nie
ApplyAppearance(ped: number, look: CharacterAppearance): booleanlocal ok = exports['ai-core']:ApplyAppearance(ped, look) -- albo aiLib.appearance.apply(ped, look)Parametry
Prop
Type
Zwraca
boolean: true, gdy skrypt ubrań dostał wygląd. false, gdy ped nie istnieje, jego model różni się od look.model, wygląd nie jest tabelą { model, data } albo nie działa żaden skrypt ubrań.
Przykład
import { appearance, onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Własny zapisany wygląd pytającego gracza.
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";
// Lokalna kopia gracza stojąca w punkcie, ubrana jak on.
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;
}Na własnym pedzie gracza ApplyAppearance zmienia to, co nosi teraz. Czy ta zmiana zostanie zapisana, to reguła skryptu ubrań, nie ai-core. Aby ubrać gracza w mundur, który nigdy nie jest zapisywany, użyj WearOutfit.
GetPedAppearance
Zwraca wygląd, który ped nosi w tej chwili, w tym samym kształcie { model, data }, którego używają wyglądy zapisane na serwerze.
Strona: Klient · Czeka: nie
GetPedAppearance(ped: number): CharacterAppearance | nulllocal look = exports['ai-core']:GetPedAppearance(ped) -- albo aiLib.appearance.read(ped)Parametry
Prop
Type
Zwraca
CharacterAppearance: model to hash modelu peda, data to dane skryptu ubrań. null, gdy ped nie istnieje, nie działa żaden skrypt ubrań albo skrypt ubrań nie umie odczytać tego peda (niektóre czytają tylko własnego peda lokalnego gracza).
Przykład
import { appearance, cache } from "@aicore-fivem/lib/client";
// Kopiuje to, co gracz teraz nosi, na innego peda tego samego modelu.
export function copyPlayerLook(target: number): boolean {
const look = appearance.read(cache.ped);
return look !== null && appearance.apply(target, look);
}OpenClothingMenu
Otwiera dla lokalnego gracza jedno z menu aktywnego skryptu ubrań: sklep z ubraniami, fryzjera albo jego zapisane stroje. Używaj tego dla własnych znaczników sklepów albo szafy w domu.
Strona: Klient · Czeka: nie
OpenClothingMenu(menu: ClothingMenu): booleanlocal opened = exports['ai-core']:OpenClothingMenu(menu) -- albo aiLib.appearance.openMenu(menu)Parametry
Prop
Type
Zwraca
boolean: true, gdy skrypt ubrań otworzył menu. false dla nieznanego menu, gdy nie działa żaden skrypt ubrań albo działający nie ma takiego menu.
Przykład
import { appearance, notify, Points } from "@aicore-fivem/lib/client";
import { Locale } from "common";
const points = new Points();
// Szafa w pokoju motelowym.
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
Nakłada strój pracy (mundur) na lokalnego gracza do czasu ReloadSkin. Zmieniają się tylko części, które wymienisz; reszta ubrań zostaje. Strój nigdy nie jest zapisywany jako własny wygląd gracza.
Strona: Klient · Czeka: nie
WearOutfit(outfit: JobOutfit): booleanlocal ok = exports['ai-core']:WearOutfit(outfit) -- albo aiLib.appearance.wearOutfit(outfit)Parametry
Prop
Type
JobOutfit
Prop
Type
OutfitPiece
Zobacz też OutfitPiece.
Prop
Type
Zwraca
boolean: true, gdy skrypt ubrań założył strój. false, gdy po sprawdzeniu nie została żadna poprawna część, nie działa żaden skrypt ubrań albo działający nie umie zakładać strojów. Niepoprawne części (zły zakres id, zły indeks) są odrzucane pojedynczo; poprawne i tak zostają założone.
Przykład
import { appearance } from "@aicore-fivem/lib/client";
import type { JobOutfit } from "@aicore-fivem/shared";
// Prosty mundur z części podstawowej gry: koszula, spodnie, buty, bez czapki.
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();Indeksy drawable różnią się między męskim i żeńskim modelem freemode: trzymaj jeden strój na model i wybieraj go według modelu gracza.
ReloadSkin
Przywraca lokalnemu graczowi jego zapisany wygląd. Używaj tego, aby zdjąć strój pracy.
Strona: Klient · Czeka: nie
ReloadSkin(): booleanlocal ok = exports['ai-core']:ReloadSkin() -- albo aiLib.appearance.reloadSkin()Parametry
Brak.
Zwraca
boolean: true, gdy skrypt ubrań został poproszony o ponowne wczytanie wyglądu. false, gdy nie działa żaden skrypt ubrań albo działający nie umie ponownie wczytać wyglądu.
Przykład
Zobacz przykład WearOutfit.