AI Core
Dokumentacja APIEksporty klienckie ai-core

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

Sygnatura
ApplyAppearance(ped: number, look: CharacterAppearance): boolean
Lua
local 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

resource/server/index.ts
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;
});
resource/client/index.ts
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

Sygnatura
GetPedAppearance(ped: number): CharacterAppearance | null
Lua
local 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

resource/client/photo.ts
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

Sygnatura
OpenClothingMenu(menu: ClothingMenu): boolean
Lua
local opened = exports['ai-core']:OpenClothingMenu(menu) -- albo aiLib.appearance.openMenu(menu)

Parametry

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

resource/client/wardrobe.ts
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

Sygnatura
WearOutfit(outfit: JobOutfit): boolean
Lua
local 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

resource/client/locker.ts
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

Sygnatura
ReloadSkin(): boolean
Lua
local 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.

Na tej stronie