Модификация сервера
Данная статья описывает установку ресурсов на сервер FiveM, настройку базы данных MySQL/MariaDB, подключение фреймворков ESX или QBCore, порядок загрузки ресурсов и частые ошибки при установке скриптов.
Что такое ресурсы FiveM
Ресурсы — это скрипты и дополнения для FiveM-сервера. Они могут добавлять работы, транспорт, HUD, инвентарь, экономику, автосалоны, фракции, админ-инструменты, карты, одежду, оружие и другие функции.
Обычно ресурсы размещаются в каталоге:
resources/Запуск ресурсов настраивается в файле:
server.cfgПеред установкой ресурсов
Перед установкой новых скриптов убедитесь, что:
- сервер FiveM уже установлен и запускается;
- указан действительный
FIVEM_LICENSE; - есть рабочий
server.cfg; - известен путь к каталогу
resources/; - если используется база данных, она создана во вкладке «Databases»;
- перед изменениями создана резервная копия.
Установка ресурса
- Скачайте ресурс из надёжного источника: GitHub, Cfx.re Forum, Tebex или сайта разработчика.
- Распакуйте архив, если ресурс скачан в ZIP/RAR/7z.
- Найдите настоящую папку ресурса.
- Загрузите папку ресурса в каталог
resources/. - Откройте
server.cfg. - Добавьте строку запуска ресурса.
- Перезапустите сервер или загрузите ресурс через txAdmin.
Строка запуска ресурса
Для запуска ресурса используется команда:
ensure resource-nameПример:
ensure my-new-resourceВнимание: имя в строке ensure должно совпадать с названием папки ресурса.
Если папка называется:
my-carsто строка в server.cfg должна быть:
ensure my-carsПравильная структура ресурса
Внутри папки ресурса должен находиться манифест.
Современный вариант:
fxmanifest.luaСтарый вариант:
__resource.luaПравильная структура:
resources/my-resource/fxmanifest.lua
resources/my-resource/client.lua
resources/my-resource/server.luaНеправильная структура:
resources/my-resource/my-resource/fxmanifest.luaЕсли после распаковки получилась двойная вложенность папок, перенесите внутреннюю папку ресурса напрямую в resources/.
Манифест ресурса
FiveM использует манифест для понимания того, какие файлы должен загрузить ресурс.
Пример простого fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
client_script 'client.lua'
server_script 'server.lua'Если в ресурсе нет fxmanifest.lua или __resource.lua, сервер не сможет его загрузить.
Порядок загрузки ресурсов
Ресурсы загружаются в том порядке, в котором они указаны в server.cfg.
Если один ресурс зависит от другого, зависимость должна быть выше.
Пример правильного порядка:
ensure oxmysql
ensure es_extended
ensure esx_basicneeds
ensure esx_jobs
ensure esx_vehicleshopВ этом примере сначала загружается база данных, затем фреймворк, затем ресурсы, которые зависят от фреймворка.
Частая ошибка порядка загрузки
Неправильно:
ensure esx_jobs
ensure esx_basicneeds
ensure es_extended
ensure oxmysqlВ таком порядке ресурсы могут пытаться обратиться к базе данных или фреймворку до их загрузки. Это приведёт к ошибкам в консоли.
Организация ресурсов по папкам
В каталоге resources/ можно создавать папки-категории.
Пример структуры:
resources/
[standalone]/
chat/
hud/
[esx]/
es_extended/
esx_jobs/
[cars]/
police-car/
sport-car/Чтобы загрузить все ресурсы из категории, можно использовать:
ensure [standalone]
ensure [esx]
ensure [cars]Это удобно для группировки ресурсов, но на больших сборках лучше явно контролировать порядок важных зависимостей.
Горячая загрузка ресурсов через txAdmin
Если txAdmin включён, новый ресурс не всегда требует полного перезапуска сервера.
После загрузки папки ресурса выполните в Live Console:
refresh
ensure my-new-resourcerefresh заставляет сервер заново просканировать каталог ресурсов.
ensure запускает ресурс.
Внимание: если ресурс требует базу данных, фреймворк или изменение server.cfg, надёжнее выполнить полноценный перезапуск.
Остановка и перезапуск ресурса
Через консоль сервера или txAdmin можно управлять отдельными ресурсами.
| Команда | Назначение |
|---|---|
ensure resource-name |
Запустить ресурс, если он ещё не запущен. |
start resource-name |
Запустить ресурс. |
stop resource-name |
Остановить ресурс. |
restart resource-name |
Перезапустить ресурс. |
refresh |
Обновить список ресурсов. |
Настройка базы данных
Многие FiveM-сборки используют MySQL или MariaDB. База данных нужна для хранения игроков, транспорта, домов, инвентаря, денег, фракций, бизнесов и других данных.
Чаще всего база подключается через ресурс:
oxmysqlБолее старые сборки могут использовать:
mysql-async
ghmattimysqlГде взять данные базы данных
- Откройте сервер в панели управления.
- Перейдите во вкладку «Databases».
- Создайте базу данных, если она ещё не создана.
- Скопируйте хост, порт, имя базы, имя пользователя и пароль.
Внимание: не используйте localhost или 127.0.0.1, если база данных находится на отдельном сервере. Используйте хост, указанный во вкладке «Databases».
Строка подключения MySQL
Строка подключения обычно задаётся в server.cfg.
Формат:
set mysql_connection_string "mysql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?charset=utf8mb4"Пример:
set mysql_connection_string "mysql://u123_fivem:MyPassword@database.example.net:3306/s123_fivem?charset=utf8mb4"Специальные символы в пароле
Если пароль базы данных содержит специальные символы, их нужно URL-кодировать.
| Символ | Код |
|---|---|
@ |
%40 |
# |
%23 |
% |
%25 |
: |
%3A |
/ |
%2F |
Пример: если пароль выглядит так:
My@Password#1в строке подключения он должен быть:
My%40Password%231Подключение oxmysql
Ресурс oxmysql должен загружаться до фреймворка и ресурсов, которые используют базу данных.
Пример:
set mysql_connection_string "mysql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?charset=utf8mb4"
ensure oxmysql
ensure qb-core
ensure my-resourceЕсли используется ESX:
set mysql_connection_string "mysql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?charset=utf8mb4"
ensure oxmysql
ensure es_extended
ensure esx_basicneeds
ensure esx_jobsВыбор MySQL-ресурса
| Ресурс | Статус | Когда использовать |
|---|---|---|
oxmysql |
Рекомендуется | Современные сборки ESX, QBCore и большинство новых ресурсов. |
mysql-async |
Устаревший | Старые ESX-сборки и ресурсы, которые не были обновлены под oxmysql. |
ghmattimysql |
Устаревший | Старые сборки, где этот ресурс прямо указан в документации. |
Не устанавливайте несколько MySQL-ресурсов одновременно без необходимости. Это может привести к конфликтам и ошибкам подключения.
Фреймворки FiveM
Фреймворк — это основа RP-сервера. Он отвечает за игроков, деньги, профессии, инвентарь, транспорт, дома, фракции и другие базовые системы.
| Фреймворк | Основной ресурс | Описание |
|---|---|---|
| ESX | es_extended |
Популярный RP-фреймворк с большим количеством готовых ресурсов. |
| QBCore | qb-core |
Современный RP-фреймворк с активной экосистемой ресурсов. |
Внимание: не смешивайте ESX и QBCore в одной сборке. Ресурсы ESX обычно не работают на QBCore, а ресурсы QBCore — на ESX.
Порядок загрузки ESX
Пример базового порядка для ESX:
set mysql_connection_string "mysql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?charset=utf8mb4"
ensure oxmysql
ensure es_extended
ensure esx_menu_default
ensure esx_menu_list
ensure esx_menu_dialog
ensure esx_basicneeds
ensure esx_status
ensure esx_jobs
ensure esx_vehicleshopТочный порядок зависит от версии ESX и документации конкретной сборки.
Порядок загрузки QBCore
Пример базового порядка для QBCore:
set mysql_connection_string "mysql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?charset=utf8mb4"
ensure oxmysql
ensure qb-core
ensure qb-smallresources
ensure qb-inventory
ensure qb-garages
ensure qb-policejob
ensure qb-ambulancejobТочный порядок зависит от версии QBCore и установленных ресурсов.
Импорт SQL-файлов
Некоторые ресурсы требуют импортировать SQL-файл в базу данных.
Обычно SQL-файл находится в папке ресурса и называется:
install.sql
database.sql
.sqlПеред запуском ресурса импортируйте SQL в вашу базу данных через доступный инструмент управления базой.
Если SQL не импортирован, ресурс может выдавать ошибки вида:
Unknown table
Unknown column
Table doesn't existЧастые ошибки ресурсов
| Ошибка | Причина | Решение |
|---|---|---|
| Resource not found | Неверное имя папки или строка ensure. |
Проверьте название папки в resources/. |
| No fxmanifest.lua found | В папке ресурса нет манифеста. | Проверьте структуру архива и уберите двойную вложенность. |
| Failed to load script | Ошибка Lua/JS/C# или отсутствующий файл. | Проверьте консоль и файлы, указанные в манифесте. |
| attempt to index a nil value | Ресурс обратился к незагруженной зависимости. | Поставьте зависимость выше в server.cfg. |
| Unknown table | Не импортирован SQL-файл. | Импортируйте SQL ресурса в базу данных. |
Ресурс не видит фреймворк
Если ресурс пишет, что не найден ESX, QBCore или shared object, проверьте:
- фреймворк установлен;
- фреймворк запускается выше зависимого ресурса;
- ресурс совместим с вашим фреймворком;
- используется правильная версия ресурса;
- в конфигурации ресурса выбран правильный framework.
Ресурс не видит базу данных
Проверьте:
- создана база данных;
- строка
mysql_connection_stringуказана доensure oxmysql; oxmysqlустановлен и запускается;- используется правильный хост базы данных;
- не используется
localhost; - логин, пароль и имя базы указаны верно;
- специальные символы в пароле закодированы.
Резервное копирование перед установкой
Перед установкой крупных ресурсов, фреймворка или обновлением сборки сделайте резервную копию.
Минимально сохраните:
server.cfg
resources/
txData/
logs/Если используется база данных, также сделайте дамп базы.
Рекомендуемый порядок установки нового ресурса
- Сделайте резервную копию
server.cfg. - Сделайте резервную копию базы данных, если ресурс её использует.
- Загрузите ресурс в
resources/. - Проверьте наличие
fxmanifest.lua. - Импортируйте SQL, если он есть.
- Добавьте
ensure resource-nameвserver.cfg. - Проверьте зависимости и порядок загрузки.
- Перезапустите сервер или выполните
refreshиensure resource-name. - Проверьте консоль на ошибки.
Рекомендации
- добавляйте новые ресурсы по одному;
- не устанавливайте ресурсы из неизвестных источников без проверки;
- проверяйте манифест ресурса перед загрузкой;
- не смешивайте ESX и QBCore;
- загружайте
oxmysqlперед фреймворком; - держите важные зависимости выше зависимых ресурсов;
- не используйте
localhostдля внешней базы данных; - после ошибок всегда проверяйте последние строки консоли;
- перед установкой крупных скриптов создавайте резервную копию.
Файлы и каталоги, которые чаще всего используются при установке ресурсов:
server.cfg
resources/
resources/[standalone]/
resources/[esx]/
resources/[qb]/
txData/
logs/