Miami RP Project Играй онлайн на наших серверах СЕРВЕР MTA:SA ONLINE СЕРВЕР GTA 5 RAGE MP В РАЗРАБОТКЕ ЗАПУСК MTA RAGE MP: 0.0.0.0:00000
Ошибки FiveM — запуск, подключение, кэш и FXServer

КатегорияОшибки ресурсов FiveM — скрипты, манифесты и зависимости ОпубликованоВчера ОбновленоВчера Просмотров4

Ресурс FiveM не запускается, сервер не видит скрипт, в консоли появляется ошибка fxmanifest.lua, No such export или attempt to index a nil value? Причиной может быть неправильная структура папок, отсутствующая зависимость, ошибка порядка запуска, несовместимая версия ESX или QBCore, повреждённый архив либо неверно указанные клиентские и серверные файлы.

Карты, автомобили и интерфейсы FiveM также являются ресурсами. Для их работы недостаточно просто поместить файлы в каталог resources: сервер должен обнаружить правильный манифест, загрузить метаданные, запустить зависимости и передать клиентам все необходимые файлы.

В этой инструкции разберём диагностику fxmanifest.lua, команды refresh и ensure, порядок запуска ESX и QBCore, ошибки Lua и JavaScript, подключение базы данных, NUI, карты, транспорт, потоковые модели и клиентские файлы.

Основные ошибки ресурсов FiveM

Ошибка Как проявляется Что проверять
Couldn't find resource Команда ensure не находит указанное имя. Папку resources, название каталога, вложенность и refresh.
Failed to start resource FXServer обнаружил ресурс, но не смог его запустить. Манифест, зависимости, скрипты и серверную консоль.
No resource manifest Папка не распознаётся как полноценный ресурс. Наличие и точное название fxmanifest.lua.
Couldn't load resource metadata Не читается манифест или его директива. Синтаксис Lua, кавычки, скобки и кодировку.
Could not find dependency Не запущен обязательный ресурс. Название зависимости и порядок ensure.
No such export Скрипт вызывает отсутствующую экспортируемую функцию. Версию ресурса, его запуск и правильность имени export.
attempt to index a nil value Lua обращается к отсутствующему объекту или таблице. Инициализацию ESX/QBCore, config и результат функции.
Failed to load script Файл указан в манифесте, но отсутствует или содержит ошибку. Путь, регистр букв и синтаксис.
Не открывается NUI Пустое окно, чёрный интерфейс или ошибка JavaScript. ui_page, files, HTML-пути и консоль разработчика.
Карта не загружается Объекты отсутствуют или расположены неправильно. stream, ymap, ytyp, this_is_a_map и data_file.
Автомобиль невидим Модель появляется без текстур или не создаётся. YFT, YTD, имена модели и метафайлы.
Resource time warning Скрипт создаёт высокую нагрузку на клиент или сервер. Циклы, SQL-запросы, таймеры и обработчики событий.

Правильная структура папки resources

Ресурсы располагаются внутри каталога данных FXServer:

server-data\
├── resources\
│ ├── [cfx-default]\
│ ├── [standalone]\
│ ├── [framework]\
│ ├── [maps]\
│ ├── [vehicles]\
│ └── my_resource\
└── server.cfg

Папки в квадратных скобках являются категориями. Они помогают группировать ресурсы, но сами не считаются отдельным ресурсом без собственного манифеста.

Пример категории:

resources\
└── [jobs]\
 ├── police_job\
 │ ├── fxmanifest.lua
 │ ├── client.lua
 │ └── server.lua
 └── taxi_job\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

В server.cfg можно запустить каждый ресурс отдельно:

ensure police_job
ensure taxi_job

или всю категорию:

ensure [jobs]

Ресурс лежит не в активном server-data

На компьютере может находиться несколько профилей txAdmin и несколько папок resources. Проверьте путь активного профиля и значение каталога данных, из которого запускается текущий server.cfg.

Лишняя вложенная папка после распаковки

Одна из самых частых ошибок:

resources\
└── my_resource-main\
 └── my_resource\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

FXServer проверяет внешний каталог my_resource-main, но манифест находится уровнем ниже.

Правильно:

resources\
└── my_resource\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

Архив содержит README и отдельную папку

Не всегда нужно переносить весь распакованный каталог. Найдите папку, внутри которой непосредственно находятся fxmanifest.lua, скрипты и остальные файлы ресурса.

Проверьте название ресурса

Команда ensure должна использовать точное имя папки:

resources\[standalone]\my-police-script\

Запуск:

ensure my-police-script

Не используйте:

ensure resources/my-police-script
ensure [standalone]/my-police-script
ensure my-police-script-main

если фактическое имя отличается.

Рекомендации по названию

  • используйте латинские буквы;
  • избегайте пробелов;
  • не добавляйте лишние точки;
  • не переименовывайте зависимость без изменения обращений к ней;
  • сохраняйте имя, ожидаемое exports и другими скриптами;
  • на Linux учитывайте регистр символов.

Если скрипт обращается к:

exports['qb-core']:GetCoreObject()

переименование папки qb-core в qbcore нарушит этот вызов.

Команды refresh, ensure, restart и stop

После добавления новой папки выполните в серверной консоли:

refresh

Команда заново сканирует каталог ресурсов и считывает манифесты.

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

ensure my_resource

Другие команды:

start my_resource
stop my_resource
restart my_resource
Команда Действие
refresh Повторно сканирует папку resources и манифесты.
start Запускает остановленный ресурс.
stop Останавливает ресурс.
restart Перезапускает уже работающий ресурс.
ensure Запускает остановленный ресурс или перезапускает работающий.

После изменения fxmanifest.lua

Выполните:

refresh
ensure my_resource

Обычный restart может не перечитать изменения манифеста так, как ожидается после добавления новых файлов или изменения структуры.

Запуск ресурса через server.cfg

Чтобы ресурс запускался вместе с сервером, добавьте:

ensure my_resource

Не дублируйте одну строку в нескольких конфигурационных файлах. Проверьте, не выполняется ли дополнительный файл:

exec resources.cfg
exec framework.cfg

Resource started дважды

Повторный ensure обычно не создаёт второй независимый экземпляр, но дублирование конфигурации усложняет порядок запуска и поиск ошибок.

Храните ресурсы по разделам:

# Основные ресурсы
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager

# База данных
ensure oxmysql

# Framework
ensure es_extended

# Дополнения
ensure esx_job
ensure esx_inventory

Правильный порядок запуска ресурсов

Ресурс, предоставляющий функции, exports или базу данных, должен запуститься раньше скрипта, который их использует.

Пример общего порядка:

ensure oxmysql
ensure framework_core
ensure framework_inventory
ensure framework_target
ensure custom_jobs
ensure custom_scripts
ensure maps
ensure vehicles

Почему порядок важен

Если job-скрипт запускается раньше ESX или QBCore, он может получить nil вместо объекта framework. Если скрипт выполняет SQL-запрос до запуска oxmysql, появится ошибка export или отсутствующего объекта MySQL.

Зависимость уже указана в манифесте

Директива dependency требует загрузить другой ресурс раньше текущего. Тем не менее порядок в server.cfg должен оставаться понятным и последовательным, особенно для больших framework-сборок.

Что такое fxmanifest.lua

fxmanifest.lua находится в корне каждого ресурса и сообщает FXServer:

  • для какой игры предназначен ресурс;
  • какие скрипты выполняются на клиенте;
  • какие скрипты выполняются на сервере;
  • какие файлы выполняются на обеих сторонах;
  • какие файлы нужно передать игроку;
  • какая HTML-страница является NUI;
  • какие ресурсы должны запускаться раньше;
  • какие игровые метафайлы необходимо подключить;
  • является ли ресурс картой.

Старые ресурсы могут использовать __resource.lua. Такой формат считается устаревшим. Простое переименование файла без переноса корректных директив не всегда достаточно.

Базовый пример fxmanifest.lua

fx_version 'cerulean'
game 'gta5'

author 'Server Developer'
description 'Example FiveM resource'
version '1.0.0'

shared_scripts {
 'config.lua'
}

client_scripts {
 'client/main.lua'
}

server_scripts {
 'server/main.lua'
}

files {
 'html/index.html',
 'html/app.js',
 'html/style.css'
}

ui_page 'html/index.html'

dependencies {
 'framework_core'
}

Добавляйте только те директивы, которые действительно нужны ресурсу. Копирование огромного манифеста из другого скрипта может подключить несуществующие файлы и зависимости.

Ошибки синтаксиса fxmanifest.lua

Пропущена запятая

Неправильно:

client_scripts {
 'client/main.lua'
 'client/events.lua'
}

Правильно:

client_scripts {
 'client/main.lua',
 'client/events.lua'
}

Не закрыта фигурная скобка

files {
 'html/index.html',
 'html/app.js'

После последнего элемента должна находиться закрывающая скобка:

files {
 'html/index.html',
 'html/app.js'
}

Использованы неправильные кавычки

Текстовый редактор может заменить обычные кавычки типографскими:

fx_version ‘cerulean’

Используйте:

fx_version 'cerulean'

Файл сохранён как fxmanifest.lua.txt

Включите отображение расширений Windows и убедитесь, что полное имя файла:

fxmanifest.lua

client_scripts и server_scripts

Клиентские файлы выполняются на компьютере игрока:

client_scripts {
 'client/main.lua',
 'client/events.lua'
}

Серверные файлы выполняются внутри FXServer:

server_scripts {
 'server/main.lua',
 'server/database.lua'
}

Серверный файл указан как клиентский

Это может привести к отсутствию серверных функций, попытке вызвать недоступные API или утечке конфигурации клиенту.

Клиентский файл указан как server_script

Сервер не имеет игровых функций, доступных только клиенту, например работы с локальным Ped, камерой или NUI-фокусом.

Пути с шаблонами

client_scripts {
 'client/*.lua',
 'modules/**/client.lua'
}

После добавления нового файла через шаблон выполните refresh и перезапустите ресурс.

Осторожно используйте shared_scripts

shared_scripts выполняются на клиенте и сервере:

shared_scripts {
 'config.lua',
 'shared/*.lua'
}

В них нельзя хранить:

  • пароли базы данных;
  • секретные API-ключи;
  • Discord webhook для закрытых журналов;
  • административные токены;
  • серверные проверки безопасности;
  • данные, которые не должен получать игрок.

Клиент может получить содержимое передаваемых файлов. Закрытые параметры храните в серверном скрипте, переменных окружения или защищённой конфигурации.

Директива files

files добавляет файлы в клиентский пакет ресурса:

files {
 'html/index.html',
 'html/app.js',
 'html/style.css',
 'html/images/*.png'
}

Она нужна для:

  • NUI-страниц;
  • изображений и шрифтов;
  • JSON-конфигураций клиента;
  • игровых метафайлов;
  • некоторых аудиофайлов;
  • файлов, используемых через data_file.

Файл существует, но не загружается игроку

Проверьте:

  • указан ли он в files;
  • совпадает ли регистр букв;
  • правильный ли относительный путь;
  • не находится ли он вне папки ресурса;
  • перезапущен ли ресурс после изменения манифеста;
  • очищен ли клиентский кэш при необходимости.

Как указать зависимости ресурса

dependencies {
 'oxmysql',
 'framework_core',
 'inventory_resource'
}

Или одна зависимость:

dependency 'framework_core'

Ресурс не запустится нормально, если обязательная зависимость:

  • отсутствует;
  • называется иначе;
  • не имеет рабочего манифеста;
  • завершается с ошибкой;
  • запущена несовместимая версия;
  • не предоставляет ожидаемый export.

Директива также может задавать минимальные требования к серверной сборке, OneSync или game build, но такие ограничения следует брать из документации конкретного ресурса.

Ошибка Could not find dependency

Пример:

Could not find dependency es_extended for resource esx_example

Проверьте:

  1. Существует ли папка es_extended.
  2. Есть ли в ней fxmanifest.lua.
  3. Не появилась ли лишняя вложенная папка.
  4. Не переименован ли core.
  5. Выполнена ли команда refresh.
  6. Запускается ли зависимость самостоятельно.
  7. Нет ли ошибки в её собственной консоли.

Если зависимость запускается, но текущий ресурс продолжает её не видеть, сравните точное имя папки с записью в dependencies.

Нужно ли добавлять lua54 'yes'

В актуальных серверных сборках FiveM все Lua-скрипты уже используют Lua 5.4. Директива:

lua54 'yes'

считается устаревшей и больше не требуется.

Наличие этой строки обычно не является причиной сбоя старого ресурса, но добавлять её как универсальное решение каждой ошибки не нужно.

Старый скрипт перестал работать

Проверяйте совместимость его кода с Lua 5.4:

  • устаревшие функции;
  • работу с целыми числами;
  • форматирование строк;
  • обращение к старым библиотекам;
  • неподдерживаемые глобальные переменные;
  • версию framework.

Ресурс FiveM не запускается, сервер не видит скрипт, в консоли появляется ошибка fxmanifest.lua, No such export или attempt to index a nil value? Причиной может быть неправильная структура папок, отсутствующая зависимость, ошибка порядка запуска, несовместимая версия ESX или QBCore, повреждённый архив либо неверно указанные клиентские и серверные файлы.

Карты, автомобили и интерфейсы FiveM также являются ресурсами. Для их работы недостаточно просто поместить файлы в каталог resources: сервер должен обнаружить правильный манифест, загрузить метаданные, запустить зависимости и передать клиентам все необходимые файлы.

В этой инструкции разберём диагностику fxmanifest.lua, команды refresh и ensure, порядок запуска ESX и QBCore, ошибки Lua и JavaScript, подключение базы данных, NUI, карты, транспорт, потоковые модели и клиентские файлы.

Основные ошибки ресурсов FiveM

Ошибка Как проявляется Что проверять
Couldn't find resource Команда ensure не находит указанное имя. Папку resources, название каталога, вложенность и refresh.
Failed to start resource FXServer обнаружил ресурс, но не смог его запустить. Манифест, зависимости, скрипты и серверную консоль.
No resource manifest Папка не распознаётся как полноценный ресурс. Наличие и точное название fxmanifest.lua.
Couldn't load resource metadata Не читается манифест или его директива. Синтаксис Lua, кавычки, скобки и кодировку.
Could not find dependency Не запущен обязательный ресурс. Название зависимости и порядок ensure.
No such export Скрипт вызывает отсутствующую экспортируемую функцию. Версию ресурса, его запуск и правильность имени export.
attempt to index a nil value Lua обращается к отсутствующему объекту или таблице. Инициализацию ESX/QBCore, config и результат функции.
Failed to load script Файл указан в манифесте, но отсутствует или содержит ошибку. Путь, регистр букв и синтаксис.
Не открывается NUI Пустое окно, чёрный интерфейс или ошибка JavaScript. ui_page, files, HTML-пути и консоль разработчика.
Карта не загружается Объекты отсутствуют или расположены неправильно. stream, ymap, ytyp, this_is_a_map и data_file.
Автомобиль невидим Модель появляется без текстур или не создаётся. YFT, YTD, имена модели и метафайлы.
Resource time warning Скрипт создаёт высокую нагрузку на клиент или сервер. Циклы, SQL-запросы, таймеры и обработчики событий.

Правильная структура папки resources

Ресурсы располагаются внутри каталога данных FXServer:

server-data\
├── resources\
│ ├── [cfx-default]\
│ ├── [standalone]\
│ ├── [framework]\
│ ├── [maps]\
│ ├── [vehicles]\
│ └── my_resource\
└── server.cfg

Папки в квадратных скобках являются категориями. Они помогают группировать ресурсы, но сами не считаются отдельным ресурсом без собственного манифеста.

Пример категории:

resources\
└── [jobs]\
 ├── police_job\
 │ ├── fxmanifest.lua
 │ ├── client.lua
 │ └── server.lua
 └── taxi_job\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

В server.cfg можно запустить каждый ресурс отдельно:

ensure police_job
ensure taxi_job

или всю категорию:

ensure [jobs]

Ресурс лежит не в активном server-data

На компьютере может находиться несколько профилей txAdmin и несколько папок resources. Проверьте путь активного профиля и значение каталога данных, из которого запускается текущий server.cfg.

Лишняя вложенная папка после распаковки

Одна из самых частых ошибок:

resources\
└── my_resource-main\
 └── my_resource\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

FXServer проверяет внешний каталог my_resource-main, но манифест находится уровнем ниже.

Правильно:

resources\
└── my_resource\
 ├── fxmanifest.lua
 ├── client.lua
 └── server.lua

Архив содержит README и отдельную папку

Не всегда нужно переносить весь распакованный каталог. Найдите папку, внутри которой непосредственно находятся fxmanifest.lua, скрипты и остальные файлы ресурса.

Проверьте название ресурса

Команда ensure должна использовать точное имя папки:

resources\[standalone]\my-police-script\

Запуск:

ensure my-police-script

Не используйте:

ensure resources/my-police-script
ensure [standalone]/my-police-script
ensure my-police-script-main

если фактическое имя отличается.

Рекомендации по названию

  • используйте латинские буквы;
  • избегайте пробелов;
  • не добавляйте лишние точки;
  • не переименовывайте зависимость без изменения обращений к ней;
  • сохраняйте имя, ожидаемое exports и другими скриптами;
  • на Linux учитывайте регистр символов.

Если скрипт обращается к:

exports['qb-core']:GetCoreObject()

переименование папки qb-core в qbcore нарушит этот вызов.

Команды refresh, ensure, restart и stop

После добавления новой папки выполните в серверной консоли:

refresh

Команда заново сканирует каталог ресурсов и считывает манифесты.

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

ensure my_resource

Другие команды:

start my_resource
stop my_resource
restart my_resource
Команда Действие
refresh Повторно сканирует папку resources и манифесты.
start Запускает остановленный ресурс.
stop Останавливает ресурс.
restart Перезапускает уже работающий ресурс.
ensure Запускает остановленный ресурс или перезапускает работающий.

После изменения fxmanifest.lua

Выполните:

refresh
ensure my_resource

Обычный restart может не перечитать изменения манифеста так, как ожидается после добавления новых файлов или изменения структуры.

Запуск ресурса через server.cfg

Чтобы ресурс запускался вместе с сервером, добавьте:

ensure my_resource

Не дублируйте одну строку в нескольких конфигурационных файлах. Проверьте, не выполняется ли дополнительный файл:

exec resources.cfg
exec framework.cfg

Resource started дважды

Повторный ensure обычно не создаёт второй независимый экземпляр, но дублирование конфигурации усложняет порядок запуска и поиск ошибок.

Храните ресурсы по разделам:

# Основные ресурсы
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager

# База данных
ensure oxmysql

# Framework
ensure es_extended

# Дополнения
ensure esx_job
ensure esx_inventory

Правильный порядок запуска ресурсов

Ресурс, предоставляющий функции, exports или базу данных, должен запуститься раньше скрипта, который их использует.

Пример общего порядка:

ensure oxmysql
ensure framework_core
ensure framework_inventory
ensure framework_target
ensure custom_jobs
ensure custom_scripts
ensure maps
ensure vehicles

Почему порядок важен

Если job-скрипт запускается раньше ESX или QBCore, он может получить nil вместо объекта framework. Если скрипт выполняет SQL-запрос до запуска oxmysql, появится ошибка export или отсутствующего объекта MySQL.

Зависимость уже указана в манифесте

Директива dependency требует загрузить другой ресурс раньше текущего. Тем не менее порядок в server.cfg должен оставаться понятным и последовательным, особенно для больших framework-сборок.

Что такое fxmanifest.lua

fxmanifest.lua находится в корне каждого ресурса и сообщает FXServer:

  • для какой игры предназначен ресурс;
  • какие скрипты выполняются на клиенте;
  • какие скрипты выполняются на сервере;
  • какие файлы выполняются на обеих сторонах;
  • какие файлы нужно передать игроку;
  • какая HTML-страница является NUI;
  • какие ресурсы должны запускаться раньше;
  • какие игровые метафайлы необходимо подключить;
  • является ли ресурс картой.

Старые ресурсы могут использовать __resource.lua. Такой формат считается устаревшим. Простое переименование файла без переноса корректных директив не всегда достаточно.

Базовый пример fxmanifest.lua

fx_version 'cerulean'
game 'gta5'

author 'Server Developer'
description 'Example FiveM resource'
version '1.0.0'

shared_scripts {
 'config.lua'
}

client_scripts {
 'client/main.lua'
}

server_scripts {
 'server/main.lua'
}

files {
 'html/index.html',
 'html/app.js',
 'html/style.css'
}

ui_page 'html/index.html'

dependencies {
 'framework_core'
}

Добавляйте только те директивы, которые действительно нужны ресурсу. Копирование огромного манифеста из другого скрипта может подключить несуществующие файлы и зависимости.

Ошибки синтаксиса fxmanifest.lua

Пропущена запятая

Неправильно:

client_scripts {
 'client/main.lua'
 'client/events.lua'
}

Правильно:

client_scripts {
 'client/main.lua',
 'client/events.lua'
}

Не закрыта фигурная скобка

files {
 'html/index.html',
 'html/app.js'

После последнего элемента должна находиться закрывающая скобка:

files {
 'html/index.html',
 'html/app.js'
}

Использованы неправильные кавычки

Текстовый редактор может заменить обычные кавычки типографскими:

fx_version ‘cerulean’

Используйте:

fx_version 'cerulean'

Файл сохранён как fxmanifest.lua.txt

Включите отображение расширений Windows и убедитесь, что полное имя файла:

fxmanifest.lua

client_scripts и server_scripts

Клиентские файлы выполняются на компьютере игрока:

client_scripts {
 'client/main.lua',
 'client/events.lua'
}

Серверные файлы выполняются внутри FXServer:

server_scripts {
 'server/main.lua',
 'server/database.lua'
}

Серверный файл указан как клиентский

Это может привести к отсутствию серверных функций, попытке вызвать недоступные API или утечке конфигурации клиенту.

Клиентский файл указан как server_script

Сервер не имеет игровых функций, доступных только клиенту, например работы с локальным Ped, камерой или NUI-фокусом.

Пути с шаблонами

client_scripts {
 'client/*.lua',
 'modules/**/client.lua'
}

После добавления нового файла через шаблон выполните refresh и перезапустите ресурс.

Осторожно используйте shared_scripts

shared_scripts выполняются на клиенте и сервере:

shared_scripts {
 'config.lua',
 'shared/*.lua'
}

В них нельзя хранить:

  • пароли базы данных;
  • секретные API-ключи;
  • Discord webhook для закрытых журналов;
  • административные токены;
  • серверные проверки безопасности;
  • данные, которые не должен получать игрок.

Клиент может получить содержимое передаваемых файлов. Закрытые параметры храните в серверном скрипте, переменных окружения или защищённой конфигурации.

Директива files

files добавляет файлы в клиентский пакет ресурса:

files {
 'html/index.html',
 'html/app.js',
 'html/style.css',
 'html/images/*.png'
}

Она нужна для:

  • NUI-страниц;
  • изображений и шрифтов;
  • JSON-конфигураций клиента;
  • игровых метафайлов;
  • некоторых аудиофайлов;
  • файлов, используемых через data_file.

Файл существует, но не загружается игроку

Проверьте:

  • указан ли он в files;
  • совпадает ли регистр букв;
  • правильный ли относительный путь;
  • не находится ли он вне папки ресурса;
  • перезапущен ли ресурс после изменения манифеста;
  • очищен ли клиентский кэш при необходимости.

Как указать зависимости ресурса

dependencies {
 'oxmysql',
 'framework_core',
 'inventory_resource'
}

Или одна зависимость:

dependency 'framework_core'

Ресурс не запустится нормально, если обязательная зависимость:

  • отсутствует;
  • называется иначе;
  • не имеет рабочего манифеста;
  • завершается с ошибкой;
  • запущена несовместимая версия;
  • не предоставляет ожидаемый export.

Директива также может задавать минимальные требования к серверной сборке, OneSync или game build, но такие ограничения следует брать из документации конкретного ресурса.

Ошибка Could not find dependency

Пример:

Could not find dependency es_extended for resource esx_example

Проверьте:

  1. Существует ли папка es_extended.
  2. Есть ли в ней fxmanifest.lua.
  3. Не появилась ли лишняя вложенная папка.
  4. Не переименован ли core.
  5. Выполнена ли команда refresh.
  6. Запускается ли зависимость самостоятельно.
  7. Нет ли ошибки в её собственной консоли.

Если зависимость запускается, но текущий ресурс продолжает её не видеть, сравните точное имя папки с записью в dependencies.

Нужно ли добавлять lua54 'yes'

В актуальных серверных сборках FiveM все Lua-скрипты уже используют Lua 5.4. Директива:

lua54 'yes'

считается устаревшей и больше не требуется.

Наличие этой строки обычно не является причиной сбоя старого ресурса, но добавлять её как универсальное решение каждой ошибки не нужно.

Старый скрипт перестал работать

Проверяйте совместимость его кода с Lua 5.4:

  • устаревшие функции;
  • работу с целыми числами;
  • форматирование строк;
  • обращение к старым библиотекам;
  • неподдерживаемые глобальные переменные;
  • версию framework.

Ошибки NUI и клиентского интерфейса

Пример структуры:

my_resource\
├── fxmanifest.lua
├── client.lua
└── html\
 ├── index.html
 ├── app.js
 ├── style.css
 └── images\
 └── logo.png

Манифест:

fx_version 'cerulean'
game 'gta5'

client_script 'client.lua'

ui_page 'html/index.html'

files {
 'html/index.html',
 'html/app.js',
 'html/style.css',
 'html/images/*.png'
}

Пустое или чёрное окно NUI

Проверьте:

  • существует ли файл из ui_page;
  • указан ли он в files;
  • добавлены ли JavaScript, CSS и изображения;
  • совпадает ли регистр букв;
  • нет ли абсолютного пути с компьютера разработчика;
  • не заблокирована ли загрузка внешнего сайта;
  • не возникает ли JavaScript-ошибка;
  • вызывается ли SetNuiFocus;
  • отправляются ли сообщения через SendNUIMessage.

HTML открывается в браузере, но не в FiveM

Страница может зависеть от:

  • локального сервера разработки;
  • файлов, не добавленных в манифест;
  • неподдерживаемого пути;
  • запросов к неправильному адресу callback;
  • библиотеки, загружаемой с недоступного CDN;
  • политики безопасного контекста.

NUI callback не вызывается

JavaScript:

fetch(`https://${GetParentResourceName()}/save`, {
 method: 'POST',
 headers: {
 'Content-Type': 'application/json'
 },
 body: JSON.stringify({
 value: 10
 })
});

Lua:

RegisterNUICallback('save', function(data, cb)
 print(('[NUI] Value: %s'):format(data.value))
 cb({ ok = true })
end)

Для современного NUI callback используется адрес с https:// и именем текущего ресурса.

Интерфейс не закрывается

Проверьте сброс фокуса:

SetNuiFocus(false, false)

и отправку команды закрытия в HTML-интерфейс.

Карта FiveM не загружается

Простая структура карты:

my_map\
├── fxmanifest.lua
└── stream\
 ├── example.ymap
 ├── example.ytyp
 ├── building.ydr
 └── textures.ytd

Пример манифеста:

fx_version 'cerulean'
game 'gta5'

this_is_a_map 'yes'

files {
 'stream/*.ytyp'
}

data_file 'DLC_ITYP_REQUEST' 'stream/*.ytyp'

Когда нужен this_is_a_map

Директива сообщает FiveM, что ресурс содержит карту, и инициирует обновление хранилища карт при запуске.

Объекты карты невидимы

Проверьте:

  • присутствуют ли YDR и YTD;
  • загружен ли YTYP;
  • правильно ли указан DLC_ITYP_REQUEST;
  • совпадают ли внутренние имена;
  • рассчитаны ли extents и flags;
  • не конфликтует ли другая карта;
  • не превышены ли лимиты игры;
  • не повреждён ли файл при конвертации.

Карта находится под землёй или далеко

Проверьте координаты YMAP, исходную систему координат и положение объектов в редакторе. Перезапуск ресурса не исправит неправильные координаты внутри карты.

Коллизия отсутствует

Проверьте наличие YBN и связь коллизии с моделью. Визуальная модель и физическая коллизия могут храниться отдельно.

После установки карты пропали другие объекты

Две карты могут изменять один IPL, интерьер или одну область. Отключайте карты по одной, чтобы найти конфликт.

Автомобиль FiveM не работает

Пример структуры:

my_vehicle\
├── fxmanifest.lua
├── data\
│ ├── vehicles.meta
│ ├── handling.meta
│ ├── carcols.meta
│ └── carvariations.meta
└── stream\
 ├── mycar.yft
 ├── mycar_hi.yft
 └── mycar.ytd

Пример манифеста:

fx_version 'cerulean'
game 'gta5'

files {
 'data/vehicles.meta',
 'data/handling.meta',
 'data/carcols.meta',
 'data/carvariations.meta'
}

data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

Автомобиль не появляется

Проверьте:

  • spawn name;
  • имя модели внутри vehicles.meta;
  • имена YFT и YTD;
  • запущен ли ресурс;
  • нет ли такой же модели в другом ресурсе;
  • правильно ли указан game build;
  • не завершился ли ресурс с ошибкой метафайла.

Автомобиль невидим

Частые причины:

  • не загружен YFT;
  • не совпадает имя файла и модели;
  • архив содержит вложенную папку stream;
  • модель повреждена;
  • файл защищён Asset Escrow без лицензии;
  • ошибка конвертации;
  • клиент использует повреждённый кэш.

Автомобиль белый или без текстур

Проверьте YTD, внутренние названия текстур, размер текстурного словаря и соответствие модели.

Неправильная управляемость

В vehicles.meta имя handling должно совпадать с записью в handling.meta.

Не работают тюнинг и цвета

Проверяйте carcols.meta, carvariations.meta, mod kits и внутренние идентификаторы. Конфликт одинаковых ID между несколькими автомобилями может нарушить тюнинг.

После добавления транспорта игроки вылетают

Возможны:

  • повреждённая модель;
  • слишком тяжёлые текстуры;
  • неоптимизированные полигоны;
  • ошибочный фрагмент;
  • конфликт метафайлов;
  • превышение потоковых лимитов;
  • неподходящий game build.

Не загружается одежда или персонажи

Проверьте:

  • правильную структуру stream;
  • имена YDD, YTD и YMT;
  • тип пола и модель персонажа;
  • совместимость game build;
  • поддержку дополнительных слотов;
  • серверную политику для subdir file mapping;
  • корректность коллекции одежды;
  • конфликт индексов с другим пакетом.

Не объединяйте несколько крупных clothing-паков простым копированием файлов. Одинаковые имена и индексы могут заменять друг друга.

Не работает звук автомобиля или оружия

Аудиоресурс может требовать дополнительные файлы и директивы:

files {
 'audioconfig/*.dat151.rel',
 'audioconfig/*.dat54.rel',
 'sfx/**/*.awc'
}

data_file 'AUDIO_GAMEDATA' 'audioconfig/example_game.dat'
data_file 'AUDIO_SOUNDDATA' 'audioconfig/example_sounds.dat'
data_file 'AUDIO_WAVEPACK' 'sfx/dlc_example'

Конкретные имена и типы зависят от структуры пакета.

Звук не появился

  • не совпадает audioNameHash;
  • не подключён wavepack;
  • неверное имя каталога;
  • не указан data_file;
  • не загружен соответствующий game data;
  • другой ресурс заменяет тот же звук;
  • файлы имеют неправильные внутренние имена.

Игроки не получают клиентские файлы

Проверьте серверную консоль и клиентскую F8-консоль.

Возможные причины:

  • файл отсутствует в files;
  • ресурс не запущен;
  • манифест содержит ошибку;
  • сервер не может прочитать файл;
  • путь отличается регистром;
  • FastDL или прокси отдаёт старую версию;
  • клиентский кэш повреждён;
  • файл заблокирован защитой;
  • пакет слишком большой;
  • потеряно соединение при загрузке.

На сервере файл обновлён, а игрок получает старый

  1. Перезапустите ресурс.
  2. Проверьте дату файла на сервере.
  3. Очистите CDN или caching proxy.
  4. Проверьте, не запускается ли копия ресурса из другой категории.
  5. Очистите клиентский server-cache для теста.

Правильная очистка клиента разобрана в статье о папках cache, server-cache и server-cache-priv FiveM.

Две копии одного ресурса

На сервере могут одновременно находиться:

resources\[framework]\inventory\
resources\[standalone]\inventory\
resources\[backup]\inventory\

После refresh это создаёт конфликт одинаковых имён или запуск не той версии.

Не храните резервные копии внутри активной папки resources. Перенесите их в отдельный каталог вне server-data.

Как проверить

  • выполните поиск папки по имени;
  • проверьте категории;
  • посмотрите путь в консоли запуска;
  • удалите дублирующий ensure;
  • перезапустите FXServer после очистки.

Почему restart не всегда помогает

Перезапуск отдельного ресурса подходит для изменения обычного Lua или JavaScript-кода, но полный перезапуск сервера может потребоваться после:

  • изменения server.cfg;
  • смены game build;
  • обновления framework core;
  • обновления oxmysql;
  • изменения системных библиотек;
  • установки новых server artifacts;
  • крупного изменения карт;
  • замены защищённого ресурса;
  • изменения OneSync;
  • обновления большого набора зависимостей.

Не перезапускайте framework core на заполненном сервере без теста. Зависимые ресурсы могут сохранить некорректное состояние игроков.

Ресурс создаёт высокую нагрузку

Признаки:

  • hitch warning в серверной консоли;
  • высокие значения в resmon;
  • задержка команд;
  • долгое открытие меню;
  • телепортация игроков;
  • рост CPU;
  • падение FPS у клиентов;
  • SQL-запросы выполняются слишком долго.

Не используйте бесконечный цикл без ожидания

Плохо:

CreateThread(function()
 while true do
 CheckPlayerPosition()
 end
end)

Лучше:

CreateThread(function()
 while true do
 Wait(500)
 CheckPlayerPosition()
 end
end)

Интервал выбирается по задаче. Для действия, не требующего проверки каждый кадр, используйте более редкий вызов.

Resource Monitor

На клиенте разработчика можно использовать:

resmon true

Он показывает нагрузку ресурсов на клиенте. Доступ к команде может требовать developer mode.

Hitch warning

Проверяйте:

  • долгие SQL-запросы;
  • синхронное чтение файлов;
  • большие циклы;
  • слишком частые сохранения;
  • массовые события;
  • обработку всех игроков каждый тик;
  • неоптимизированные callback.

Отключайте ресурсы группами

Если источник нагрузки неизвестен:

  1. Сделайте резервную копию.
  2. Отключите необязательную категорию.
  3. Проверьте нагрузку.
  4. Возвращайте ресурсы небольшими группами.
  5. Найдите конкретный скрипт.

Как правильно читать ошибки ресурса

Сохраняйте первую ошибку, а не только последнюю строку.

Пример:

[script:my_resource] SCRIPT ERROR:
@my_resource/server/database.lua:21:
No such export query in resource oxmysql

[resources] Failed to start resource my_resource

Основная причина — вызов отсутствующего export, а сообщение Failed to start является следствием.

Добавляйте название ресурса в print

print('[my_resource] Configuration loaded')
print('[my_resource] Database connected')
print('[my_resource] Events registered')

Это упрощает поиск среди журналов десятков ресурсов.

txAdmin Live Console

Используйте поиск по:

  • имени ресурса;
  • SCRIPT ERROR;
  • Failed;
  • nil value;
  • No such export;
  • dependency;
  • SQL;
  • hitch warning.

Ресурс сломался после обновления

Проверьте, какие файлы изменились:

  • fxmanifest.lua;
  • config.lua;
  • структура базы данных;
  • названия exports;
  • обязательные зависимости;
  • версия framework;
  • game build;
  • server artifacts;
  • папка stream;
  • формат предметов и профессий.

Не копируйте новую версию поверх старой

Старые файлы, удалённые разработчиком, могут остаться и конфликтовать с новой структурой.

Безопасный порядок:

  1. Сохраните старую версию вне resources.
  2. Распакуйте новую версию в чистую папку.
  3. Перенесите настройки вручную.
  4. Сравните SQL-изменения.
  5. Проверьте зависимости.
  6. Запустите на тестовом сервере.
  7. Только затем замените рабочий ресурс.

Безопасность сторонних ресурсов

Перед установкой проверьте:

  • источник архива;
  • лицензию;
  • содержимое server scripts;
  • неизвестные HTTP-запросы;
  • Discord webhook;
  • обфусцированный код без объяснения;
  • автоматическую загрузку удалённых файлов;
  • скрытые команды администратора;
  • небезопасные SQL-запросы;
  • проверку клиентских событий.

Не устанавливайте «слитый» платный ресурс. Помимо нарушения лицензии, архив может содержать backdoor, майнер или кражу данных сервера.

Не доверяйте входящим событиям

Любое событие от клиента должно проверяться на сервере. Простое скрытие команды в интерфейсе не является защитой.

Последовательность исправления ресурса FiveM

  1. Сохраните ресурс и базу данных.
  2. Найдите первую ошибку в консоли.
  3. Проверьте структуру папки.
  4. Уберите лишний уровень вложенности.
  5. Проверьте точное имя ресурса.
  6. Проверьте fxmanifest.lua.
  7. Сверьте пути и регистр букв.
  8. Выполните refresh.
  9. Запустите ресурс через ensure.
  10. Проверьте обязательные зависимости.
  11. Исправьте порядок server.cfg.
  12. Запустите dependency отдельно.
  13. Проверьте Lua или JavaScript на первой ошибочной строке.
  14. Исправьте No such export.
  15. Проверьте версию ESX или QBCore.
  16. Запустите oxmysql раньше framework.
  17. Импортируйте требуемый SQL.
  18. Проверьте NUI-файлы и ui_page.
  19. Проверьте data_file для карт и транспорта.
  20. Уберите дублирующую копию ресурса.
  21. Проверьте работу на Windows и Linux с учётом регистра.
  22. Очистите клиентский кэш для теста.
  23. Проверьте нагрузку через resmon и логи.
  24. Протестируйте ресурс на отдельном сервере.
  25. Только после этого возвращайте его в рабочую сборку.

Частые вопросы

Почему FXServer не видит новый ресурс?

Проверьте папку resources, лишнюю вложенность и наличие fxmanifest.lua, затем выполните refresh.

Что означает Failed to start resource?

Это общее сообщение. Основная причина обычно указана несколькими строками выше в серверной консоли.

Нужно ли писать ensure или start?

ensure запускает остановленный ресурс и перезапускает уже работающий. Его удобно использовать в server.cfg.

Почему ресурс запускается вручную, но не при старте сервера?

Проверьте порядок строк в server.cfg, зависимости и дополнительные конфигурации через exec.

Что означает No resource manifest?

В корне папки нет правильно названного fxmanifest.lua или старого __resource.lua.

Нужна ли строка lua54 'yes'?

Нет. В актуальных сборках FiveM Lua 5.4 используется для всех Lua-ресурсов автоматически.

Почему появляется No such export?

Не запущена зависимость, изменилось имя export, переименована папка либо версии ресурсов несовместимы.

Что означает attempt to index a nil value?

Скрипт обращается к отсутствующему объекту. Проверьте инициализацию framework, результат SQL и существование требуемого ключа.

Почему ESX-скрипт не получает объект ESX?

Проверьте запуск es_extended, imports.lua и совместимость способа получения shared object с установленной версией.

Почему QBCore-ресурс не видит qb-core?

Проверьте имя папки qb-core, порядок ensure и наличие export GetCoreObject.

Почему ресурс не подключается к MySQL?

Проверьте строку подключения, запуск oxmysql, учётную запись базы и импорт SQL-файла.

Почему NUI показывает чёрный экран?

Проверьте ui_page, директиву files, пути HTML и ошибки JavaScript интерфейса.

Почему карта не загружается?

Проверьте stream, this_is_a_map, YMAP, YTYP, YBN и соответствующие data_file.

Почему автомобиль невидим?

Проверьте YFT, YTD, внутреннее имя модели, vehicles.meta и клиентский кэш.

Почему у машины нет тюнинга?

Проверьте carcols.meta, carvariations.meta, mod kit и конфликт идентификаторов.

Почему ресурс работает на Windows, но не на Linux?

Linux различает регистр букв и строже применяет права доступа к файлам.

Можно ли хранить резервную копию в resources?

Не рекомендуется. FXServer может обнаружить вторую копию или конфликтующее имя. Храните архив вне активного server-data.

Почему restart не применяет новые файлы?

После изменения манифеста или добавления нового ресурса выполните refresh, а затем ensure.

Что делать с защищённым ресурсом Asset Escrow?

Проверить лицензию, аккаунт владельца, серверный ключ и целостность архива. Зашифрованный код исправляет его разработчик.

Как найти ресурс, создающий лаги?

Проверьте resmon, hitch warnings, profiler и отключайте необязательные ресурсы небольшими группами.

Нужно ли перезапускать весь сервер?

Для обычного изменения скрипта достаточно перезапуска ресурса. После обновления framework, artifacts, OneSync или крупных зависимостей безопаснее выполнить полный контролируемый рестарт.

Заключение

Если ресурс FiveM не запускается, сначала найдите первую ошибку в серверной консоли. Затем проверьте структуру папки, точное имя ресурса, наличие fxmanifest.lua и пути к каждому клиентскому и серверному файлу.

При ошибках зависимостей исправьте порядок ensure: база данных и framework должны запускаться раньше дополнений. Скрипты ESX и QBCore необходимо использовать только с совместимыми версиями core, inventory и других обязательных модулей.

Для карт и автомобилей проверяйте каталог stream, игровые метафайлы и директивы data_file. При проблемах NUI проверьте ui_page, список files и пути HTML, JavaScript, CSS и изображений.

Ошибки самого сервера разобраны в статье о запуске ресурсов, framework и клиентских файлов FiveM. Проблемы подключения игроков находятся в руководстве о Timed Out и Connection Failed, а очистка загруженных ресурсов — в статье о правильной очистке кэша FiveM.

RSS новостей
0 комментариев 0.0 из 0 оценок