ai-appearance для разработчиков
Клиентские экспорты ai-appearance, формат рабочей формы и события, которые он использует с экраном персонажей AI Core.
Не вызывайте ai-appearance и не читайте его таблицу из своего скрипта. Используйте слой внешности AI Core: appearance из lib (на сервере appearance.get(charId), на клиенте appearance.apply(ped, look), appearance.read(ped), appearance.openMenu(...), appearance.wearOutfit(outfit), appearance.reloadSkin()) или aiLib.appearance в Lua. Он работает с каждым скриптом одежды, который поддерживает AI Core, поэтому владелец может заменить ai-appearance. См. справочник lib.
Клиентские экспорты
Типизированы как AiAppearanceClientExports в @aicore-fivem/shared. Их вызывает адаптер внешности AI Core.
ApplyAppearance
Надевает внешность ai-appearance на педа.
Сторона: клиент · Ожидание: нет
ApplyAppearance(ped: number, appearance: unknown): booleanlocal ok = exports['ai-appearance']:ApplyAppearance(ped, look)Параметры
Prop
Type
Возвращает
boolean: true, если внешность применена. false, если внешность неверна или модель педа не совпадает с моделью внешности.
GetPedAppearance
Читает внешность, которую носит локальный игрок.
Сторона: клиент · Ожидание: нет
GetPedAppearance(ped: number): unknownВозвращает
Appearance локального игрока или null для любого другого педа.
WearOutfit
Надевает на локального игрока рабочую форму (униформу). Меняются только перечисленные части, и форма никогда не сохраняется как собственная внешность игрока.
Сторона: клиент · Ожидание: нет
WearOutfit(outfit: JobOutfit): voidexports['ai-appearance']:WearOutfit({ components = { { id = 11, collection = '', index = 55, texture = 0 } }, props = {} })JobOutfit
Prop
Type
OutfitPiece
Prop
Type
Возвращает
Ничего.
ReloadSkin
Возвращает на локального игрока сохранённую внешность (снимает рабочую форму). Сторона: клиент · Ожидание: нет.
ReloadSkin(): voidПример
import { appearance } from "@aicore-fivem/lib/client";
import type { JobOutfit } from "@aicore-fivem/shared";
// Через AI Core: работает с ai-appearance и другими поддерживаемыми скриптами одежды.
const uniform: JobOutfit = {
components: [
{ id: 11, collection: "", index: 55, texture: 0 },
{ id: 4, collection: "", index: 35, texture: 0 },
],
props: [{ id: 0, collection: "", index: 46, texture: 0 }],
};
RegisterCommand("uniform", () => appearance.wearOutfit(uniform), false);
RegisterCommand("ownclothes", () => appearance.reloadSkin(), false);Части формы задаются названием коллекции и индексом внутри неё, а не глобальным номером drawable в GTA. Базовая игра имеет коллекцию "". Через AI Core appearance.wearOutfit и reloadSkin отвечают false, когда запущенный скрипт одежды не поддерживает рабочие формы.
События
| Событие | Сторона | Аргументы | Что это |
|---|---|---|---|
ai-core:client:characterPortrait | Клиент (локальное) | charId: number, url: string | ai-appearance отправляет портрет каждой карточки (https://nui-img/...) на экран персонажей AI Core. |
ai-appearance слушает серверное событие AI Core characterScreen (src, charIds), чтобы знать, какие портреты делать, и onCharacter из lib, чтобы одеть загруженного персонажа или запустить редактор.
База данных
Таблица ai_appearance_characters: char_id (= ai_core_characters.id) и data (JSON Appearance). Пишет в неё только ai-appearance. Адаптер AI Core читает её для GetCharacterAppearance.
Канал логов
purchases: каждый платный визит в магазин (через логи AI Core: консоль, Discord, Fivemanage, FiveM Stats, как их настроил владелец).
ai-appearance
Редактор персонажа для новых персонажей, магазины одежды, парикмахерские и портреты на экране персонажей.
ai-inventory
Инвентарь-сетка с размерами предметов, быстрыми слотами, предметами на земле, тайниками, багажниками и бардачками, магазинами, крафтом и оружием. Отвечает на API ox_inventory и qb-inventory.