__resource.lua в fxmanifest.lua: как конвертировать старый скрипт
Старый скрипт FiveM всё ещё использует __resource.lua и показывает предупреждение об устаревшем? Как конвертировать его в fxmanifest.lua с fx_version, game, lua54, ui_page и files.
Вы запускаете старый скрипт и консоль предупреждает, что он всё ещё использует __resource.lua, который устарел. Скрипт может по-прежнему работать, но он остаётся на старом формате манифеста и не может использовать новые опции, такие как Lua 5.4. Это руководство конвертирует его в fxmanifest.lua за несколько минут.
Что изменилось
Каждый ресурс нуждается в манифесте, который говорит FiveM, какие файлы загружать. Старый формат был __resource.lua. Текущий формат — fxmanifest.lua. Директивы, которые вы знаете (client_script, server_script, ui_page, files), одинаковы. Что изменяется, так это заголовок.
Старый манифест выглядит так:
resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937'
client_script 'client.lua'
server_script 'server.lua'
ui_page 'html/index.html'
files {
'html/index.html',
'html/script.js',
'html/style.css',
}Новый заголовок
Замените строку resource_manifest_version на две строки:
fx_version 'cerulean'
game 'gta5'fx_version обязателен. Он выбирает поведение манифеста, а cerulean — это версия, которую используют текущие скрипты. game 'gta5' говорит, что ресурс для GTA V. Старый UUID в resource_manifest_version заменяется на fx_version: вам не нужно переводить его на конкретное старое имя версии, просто удалите его.
Полный конвертированный файл
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
author 'Your name'
description 'What the resource does'
version '1.0.0'
client_scripts {
'client.lua',
}
server_scripts {
'server.lua',
}
ui_page 'html/index.html'
files {
'html/index.html',
'html/script.js',
'html/style.css',
}Примечания по каждой части:
client_scriptsиserver_scriptsберут список. Единственное числоclient_script 'file.lua'по-прежнему работает для одного файла.shared_scriptsзагружает с обеих сторон. Импорт фреймворка, такой как'@ox_lib/init.lua', идёт туда.ui_pageуказывает на HTML файл NUI. Каждый файл, который загружает страница (JS, CSS, изображения, шрифты), должен быть вfiles, иначе он не отправляется игроку. Работают подстановочные знаки:'html/**/*'.filesтакже, где вы перечисляете данные, которые нужны клиенту, но не выполняются, такие как мета-файлы.author,descriptionиversionопциональны и только информативны.
Lua 5.4
lua54 'yes' заставляет ресурс работать на Lua 5.4. Многие текущие ресурсы требуют этого. Включение его для старого скрипта обычно безопасно, но проверьте две вещи: скрипт, который полагается на старое поведение Lua 5.3, может потребоваться небольшое исправление, и скрипты, которые используют ox_lib, требуют включённого Lua 5.4. Оставьте его, если старый скрипт ведёт себя по-другому, и протестируйте его.
Карты, файлы данных и потоковые активы
Если старый манифест содержит строки data_file для мета автомобиля или оружия, оставьте их. У них одинаковый синтаксис в fxmanifest.lua:
files {
'data/vehicles.meta',
'data/handling.meta',
}
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'Потоковые модели и текстуры в папке stream не требуют никакой записи вообще. Для ресурса только с картой добавьте также this_is_a_map 'yes'.
Удалите старый файл
После конвертирования удалите __resource.lua из папки. Оставление обоих файлов в месте сбивает с толку тех, кто позже сохраняет сервер, и только один из них должен описывать ресурс.
Затем перезагрузите ресурс:
refresh
ensure my_scriptrefresh необходим, потому что манифест изменился. Если манифест имеет ошибку, ресурс не запустится: см. Couldn't start resource для чтения ошибки выше этой строки.
Частые ошибки после конвертирования
- Отсутствующий
fx_versionилиgame. Манифест отклоняется. - Пропущенная запятая внутри
{ }. Каждая запись в списке разделена запятой. - Файлы отсутствуют из
files. NUI загружается, но изображения или скрипты пусты, потому что страница запросила то, что не было отправлено. Проверьте консоль F8 и NUI devtools для неудачных запросов. - Зависимость, которая не объявлена. Добавьте
dependency 'ox_lib', если скрипт её использует, чтобы порядок запуска был проверен. См. Could not find dependency.
Внимание: не устанавливайте
fx_versionна очень старое имя, скопированное из руководства 2019 года, чтобы совпадать возрастом скрипта. Используйтеceruleanи исправьте всё, что ломается.
Чеклист
| Симптом | Исправление |
|---|---|
Консоль предупреждает о __resource.lua |
Создайте fxmanifest.lua, удалите старый файл |
Строка resource_manifest_version |
Замените на fx_version 'cerulean' и game 'gta5' |
| NUI пуста после конвертирования | Перечислите каждый NUI файл под files и сохраните ui_page |
Функции ox_lib отсутствуют |
Добавьте lua54 'yes' и общий скрипт @ox_lib/init.lua |
| Ресурс не найден после изменения | Запустите refresh, затем ensure |
| Ресурс не запускается | Прочитайте строки выше Couldn't start resource |
Короткие ответы
Поддерживается ли __resource.lua?
FiveM всё ещё читает его для старых ресурсов, но это устарело и печатает предупреждение. Новые функции, такие как lua54, существуют только в fxmanifest.lua, поэтому конвертируйте его.
Какой fx_version я должен использовать?
cerulean — это обычный выбор сегодня. Это версия, которую объявляют большинство текущих скриптов, и она работает на текущем артефакте сервера.
Должен ли я хранить resource_manifest_version?
Нет. fx_version его заменяет. Удалите строку resource_manifest_version при конвертировании.
Скрипты без этой проблемы
Clothing DesignerСоздавайте одежду прямо в FiveM — кисть, слои, импорт изображений и ИИ — и носите её.Смотреть скрипт →
Drag RopeТащите игроков на верёвке и привязывайте их к машинам, длина верёвки меняется вживую.Смотреть скрипт →
Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →