@ox_lib/init.lua не найден и ошибки ox_lib: как исправить
Ошибки о @ox_lib/init.lua, No such export in resource ox_lib, или ox_lib не запускается: используйте выпуск, убедитесь в нём первым, добавьте shared_script, включите lua54.
Скрипт, который использует ox_lib, не загружается в вашу консоль и сообщение упоминает @ox_lib/init.lua, или он не работает с:
No such export <name> in resource ox_libили ox_lib сам никогда не запускается. Все это исходит из одних и тех же причин: неправильная загрузка, неправильное имя папки, неправильный порядок запуска или отсутствующая строка в манифесте. Вот исправление для каждого.
Что такое ox_lib
ox_lib — это общая библиотека, на которую полагаются многие скрипты: обратные вызовы, уведомления, меню, полосы прогресса, локали. Скрипт выбирается одной строкой в его манифесте:
shared_script '@ox_lib/init.lua'Префикс @ox_lib/ говорит FiveM прочитать файл из ресурса с названием ox_lib, а не из собственной папки скрипта. Поэтому ox_lib должен существовать, иметь именно это имя и быть запущен.
1. Загрузите выпуск, не исходный zip
Это причина, на которую попадает большинство людей. На GitHub зелёная кнопка Code даёт вам zip исходного кода. ox_lib имеет веб-интерфейс (меню, полосы прогресса), который построен из исходных файлов. Исходный zip не содержит встроенные файлы, поэтому ox_lib либо не загружает свой пользовательский интерфейс, либо регистрирует сообщение о том, что пользовательский интерфейс не построен.
Вместо этого:
- Откройте репозиторий ox_lib на GitHub, затем Releases.
- На последнем выпуске загрузите файл с названием
ox_lib.zipв разделе Assets. - Распакуйте. Папка внутри должна быть
ox_libиfxmanifest.luaдолжен сидеть прямо в ней.
resources/[standalone]/ox_lib/fxmanifest.luaЕсли у вас есть исходная папка с названием ox_lib-main, удалите её и вместо этого установите выпуск. Смотрите также Could not find dependency для проблем с именами папок.
2. Запустите ox_lib перед скриптами
В server.cfg, ox_lib должен быть перед любым ресурсом, который его импортирует:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
ensure my_scriptЕсли my_script убедил выше ox_lib, он может загрузиться первым и не работать. Его перемещение вниз — это исправление. Смотрите правильный порядок ensure в server.cfg.
Добавьте зависимость и в манифест скрипта, чтобы FiveM её проверил:
dependency 'ox_lib'3. Добавьте shared script и lua54
Скрипты, которые используют lib. функции, нуждаются в двух строках в fxmanifest.lua. Без импорта lib равен nil в скрипте, и вы получаете ошибки, такие как attempt to index a nil value (global 'lib'):
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
shared_script '@ox_lib/init.lua'
client_scripts { 'client/*.lua' }
server_scripts { 'server/*.lua' }Порядок имеет значение: shared_script '@ox_lib/init.lua' должно быть указано, чтобы оно загружалось перед файлами скрипта, которые вызывают lib. Поместите его выше client_scripts и server_scripts.
4. No such export in resource ox_lib
No such export <name> in resource ox_libЭто означает, что скрипт вызывает экспорт ox_lib, который не существует на вашем сервере. Есть две причины:
- Старый ox_lib. Скрипт был написан для новшей версии. Обновитесь до последней выпуска.
- ox_lib не запустился, поэтому ни один из его экспортов не существует. Посмотрите на консоль, где запускается ox_lib. Если он там напечатал ошибку, исправьте это сначала.
Проверьте, что ox_lib запускается чисто: запустите ensure ox_lib в консоли сервера и прочитайте, что печатается. Здоровый запуск не печатает никакой ошибки и никакой строки отказа.
5. Проверьте артефакт сервера
ox_lib нужна достаточно текущая сборка сервера FiveM. Если ox_lib отказывается запускаться и сообщение упоминает версию сервера, обновите ваши артефакты. Шаги находятся в обновлении артефактов сервера FiveM.
6. Сам скрипт не виноват
Если ox_lib установлен и запущен, но один скрипт всё ещё ломается, подтвердите что:
- Собственная папка скрипта названа так, как говорит его строка
ensure. - Вы не скопировали
ox_libв папку скрипта. Должен быть один ресурсox_libна верхнем уровнеresources(или в папке скобки). - Не существует никакой второй копии
ox_libв другой папке категории. Две папки с одним и тем же названием ресурса вызывают непредсказуемое поведение.
Совет: когда вы обновляете ox_lib, сначала удалите старую папку вместо распаковки над ней. Оставшиеся старые файлы могут смешаться с новыми.
Контрольный список
| Симптом | Решение |
|---|---|
@ox_lib/init.lua не работает |
Установите ox_lib с точным имя папки |
| Части пользовательского интерфейса ox_lib отсутствуют | Используйте ox_lib.zip из Releases, не исходный zip |
No such export ... in resource ox_lib |
Обновите ox_lib; проверьте его запустился без ошибок |
lib равен nil в скрипте |
Добавьте shared_script '@ox_lib/init.lua' в его манифест |
| Скрипт загружается перед ox_lib | ensure ox_lib выше скрипта в server.cfg |
| Ошибки синтаксиса Lua при загрузке | Добавьте lua54 'yes' в манифест |
Короткие ответы
Откуда я загружаю ox_lib?
Со страницы Releases репозитория ox_lib, используя файл ox_lib.zip, прикреплённый к последнему выпуску. Не используйте зелёную кнопку Code, Download ZIP, которая не имеет встроенных веб-файлов.
Почему скрипт не работает с @ox_lib/init.lua?
FiveM загружает этот файл из ресурса ox_lib. Если папка отсутствует, названа неправильно или не запускается, путь не может быть разрешён и скрипт не работает.
Нужна ли мне lua54 для ox_lib?
Да. Ресурс, который импортирует @ox_lib/init.lua, должен объявить lua54 'yes' в его манифесте, так как ox_lib сам использует Lua 5.4.
Скрипты без этой проблемы
Mic PhoneСкладной телефон, который раскладывается в планшет и работает и на настоящем телефоне игрока.Смотреть скрипт →
Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →
Quest CreatorВизуальный редактор квестов и диалогов с NPC — узел за узлом прямо в игре.Смотреть скрипт →