__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), одинаковы. Что изменяется, так это заголовок.

Старый манифест выглядит так:

lua
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 на две строки:

lua
fx_version 'cerulean'
game 'gta5'

fx_version обязателен. Он выбирает поведение манифеста, а cerulean — это версия, которую используют текущие скрипты. game 'gta5' говорит, что ресурс для GTA V. Старый UUID в resource_manifest_version заменяется на fx_version: вам не нужно переводить его на конкретное старое имя версии, просто удалите его.

Полный конвертированный файл

lua
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:

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 из папки. Оставление обоих файлов в месте сбивает с толку тех, кто позже сохраняет сервер, и только один из них должен описывать ресурс.

Затем перезагрузите ресурс:

text
refresh
ensure my_script

refresh необходим, потому что манифест изменился. Если манифест имеет ошибку, ресурс не запустится: см. 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Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →

Читайте также