Как добавить дополнительных персонажей (addon peds) на FiveM: файлы stream, peds.meta, имя для спавна
Добавьте дополнительных персонажей на FiveM сервер: файлы stream (ydd, yft, ytd, ymt), peds.meta с PED_METADATA_FILE, спавнинг по имени модели и установка персонажа как модели игрока.
У вас есть пак персонажей с файлами такие как .ydd, .yft, .ytd и peds.meta, и вы хотите спавнить персонажа или играть за него. Это руководство показывает, где каждый файл находится, что нужно в манифесте, как спавнить персонажа и как установить его как модель игрока.
Что содержит пак персонажей
Персонаж состоит из нескольких файлов, которые имеют имя персонажа:
.yft: главная модель персонажа..ydd: одежда и части тела (голова, волосы, туловище, ноги). Часто помещается в подпапку с именем персонажа..ytd: текстуры..ymt: файл «ped variation», который сообщает игре, какие компоненты и текстуры имеет персонаж.peds.meta: запись данных, которая определяет персонажа (имя, тип, анимации и так далее).
Файлы моделей находятся в stream. peds.meta находится рядом с манифестом и загружается как файл данных.
Структура папок
resources/[peds]/mycop/
fxmanifest.lua
peds.meta
stream/
mycop.yft
mycop.ymt
mycop.ytd
mycop/
head_000_r.ydd
uppr_000_u.ydd
lowr_000_u.ydd
...Точные названия внутренних файлов зависят от пака. Не переименовывайте их: .ymt ссылается на них. Сохраняйте структуру, которую дал вам автор.
fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
files {
'peds.meta',
}
data_file 'PED_METADATA_FILE' 'peds.meta'Запись files делает файл доступным для игрового клиента, и data_file 'PED_METADATA_FILE' сообщает игре, что он содержит определения персонажей. Вам нужны оба. Для нескольких персонажей в одном ресурсе вы можете использовать один peds.meta с несколькими записями, или паттерн такой как '**/peds.meta' в обеих строках.
Имя персонажа находится в peds.meta:
<CPedModelInfo__InitDataList>
<InitDatas>
<Item>
<Name>mycop</Name>
<PropsName>NULL</PropsName>
...
</Item>
</InitDatas>
</CPedModelInfo__InitDataList>Здесь имя модели — mycop. Оно должно совпадать с именами файлов .yft, .ymt и .ytd.
Запустите и спавните его
ensure mycopЧтобы спавнить персонажа в скрипте, сначала запросите модель:
local model = joaat('mycop')
RequestModel(model)
while not HasModelLoaded(model) do
Wait(0)
end
local ped = CreatePed(4, model, coords.x, coords.y, coords.z, heading, true, false)
SetModelAsNoLongerNeeded(model)Если ваш сервер использует ox_lib, lib.requestModel(model) делает запрос и ожидание. Если имя модели не существует, HasModelLoaded никогда не становится true и цикл выше зависает, поэтому тайм-аут — это хорошая практика для имён, которые приходят из конфигурации.
Много меню администратора также могут спавнить персонажа по имени: введите mycop и он появится.
Установите персонажа как модель игрока
Чтобы играть как персонаж, измените модель игрока:
local model = joaat('mycop')
RequestModel(model)
while not HasModelLoaded(model) do
Wait(0)
end
SetPlayerModel(PlayerId(), model)
SetModelAsNoLongerNeeded(model)
SetPedDefaultComponentVariation(PlayerPedId())Помните, что изменение модели игрока даёт вам нового персонажа. Оружие, здоровье и некоторое состояние сбрасываются, поэтому верните их после изменения, если ваш сервер их требует.
Меню внешнего вида ESX и QBCore
Скрипты внешнего вида и персонажей — главная проблема. Они применяют персонажа freemode (mp_m_freemode_01 или mp_f_freemode_01) при спавне, и ваша модель заменяется момент позже. Варианты:
- Используйте опцию в скрипте внешнего вида. Многие скрипты внешнего вида имеют способ установить пользовательского персонажа или список допустимых персонажей. Проверьте конфигурацию скрипта.
- Установите модель после загрузки внешнего вида. На ESX, ждите
esx:playerLoadedи окончания скрипта внешнего вида. На QBCore, ждитеQBCore:Client:OnPlayerLoaded. Затем вызовитеSetPlayerModel. - Не сохраняйте дополнительного персонажа как внешний вид. Данные внешнего вида для персонажа freemode не подходят для другой модели, и сохранённый внешний вид неправильного типа может сделать загрузку персонажа неправильной. Сохраняйте выбор персонажа в отдельном поле или скрипте.
На QBox то же самое: скрипт внешнего вида решает, какую модель получит игрок, поэтому установите персонажа после него, или используйте его собственную опцию пользовательского персонажа, если она есть.
Распространённые проблемы
- Персонаж невидимый или модель по умолчанию.
peds.metaне загружен или имена различаются. Проверьте строкуdata_fileи имя в<Name>. - Персонаж без лица или белые текстуры. Файлы
.ytdили.yddотсутствуют, в неправильной папке или переименованы..ymtтребует исходных имён. - Ресурс запускается, но персонаж не может быть спавнен. Опечатка в имени спавна. Оно должно совпадать с записью
<Name>вpeds.meta. - Игра падает или streaming предупреждает. Большие файлы и много персонажей используют память потока. См. oversized assets.
- Ресурс не запускается. Путь в
filesне существует. См. не мог запустить ресурс.
Автомобили следуют той же идее файлов данных: см. как добавить дополнительные автомобили.
Контрольный список
| Проблема | Решение |
|---|---|
| Персонаж не может быть спавнен | Используйте <Name> из peds.meta; ensure ресурс |
| Персонаж невидимый или по умолчанию | Добавьте files и data_file 'PED_METADATA_FILE'; совпадите имена |
| Белые или отсутствующие текстуры | Сохраняйте имена .ydd и .ytd как в паке |
| Модель сбрасывается после спавна | Вызовите SetPlayerModel после окончания скрипта внешнего вида или персонажа |
| Оружие исчезло после изменения | Верните его после SetPlayerModel |
| Ресурс не запустится | Проверьте, что каждый путь в files существует |
Короткие ответы
Какое имя использовать для спавна дополнительного персонажа?
Имя персонажа в peds.meta, которое также является имя его файлов .ydd, .yft, .ytd и .ymt. Если файлы называются mycop, используйте mycop с joaat('mycop').
Почему мой дополнительный персонаж показывается как персонаж по умолчанию или невидимый?
Обычно peds.meta не загружен, или имя в нём не совпадает с именами файлов. Проверьте строку data_file 'PED_METADATA_FILE' и что имена совпадают.
Могу ли я использовать дополнительного персонажа как мою собственную персону?
Да, с помощью SetPlayerModel, но скрипты ESX и QBCore для внешнего вида часто переполняют модель на freemode персонажа. Вам нужно установить это после их запуска, или использовать опцию в скрипте внешнего вида.
Скрипты без этой проблемы
Parrots as PetsЧетырнадцать птиц, которые сидят на плече, летают с вами и возвращаются по зову.Смотреть скрипт →
Drug Dealer AppУличная торговля в виде приложения lb-phone: зоны, NPC-покупатели, уровни и вызовы полиции.Смотреть скрипт →
Quest CreatorВизуальный редактор квестов и диалогов с NPC — узел за узлом прямо в игре.Смотреть скрипт →