Настройка
Почти всё, что относится к квесту — кто его выдаёт, что говорит и что происходит дальше, — создаётся в редакторе и сохраняется в вашей базе данных. Файлы нужны лишь для нескольких вещей, одинаковых для всех квестов.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл | За что отвечает | Открыт? |
|---|---|---|
config.lua | Фреймворк, язык, способ общения игроков с NPC, цвет диалога, /cancelquest, скриншоты | Да |
bridge/bridge_server.lua | Деньги, предметы, данные игрока, колбэки и проверка разрешения | Да |
bridge/bridge_client.lua | Уведомления, подсказки, данные игрока и способ воскрешения игрока | Да |
locales/*.lua | Весь текст: редактор, окно диалога, уведомления, логи webhook | Да |
install.sql | Восемь таблиц, импортируются один раз | Да |
web/ | Редактор, окно диалога, мини-игра и индикатор выполнения (HTML, CSS, JS) | Читаемый |
client/, server/ | Движок квестов | Escrow |
client/game_data/*.lua | Списки для выбора в редакторе: педы, машины, кости, анимации, частицы, звуки, экранные эффекты | Escrow |
config.lua
Заголовок раздела «config.lua»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Framework | С каким фреймворком работать: 'esx' или 'qbcore'. Автоматически не определяется. На QBox используйте 'qbcore' — QBox запускает ресурсы QBCore через слой совместимости | 'esx' |
Config.Locale | Язык редактора, окна диалога и уведомлений. См. Языки | 'en' |
Config.Debug | Есть в файле; в этой версии никакого дополнительного вывода не даёт | true |
Общение с квестодателями
Заголовок раздела «Общение с квестодателями»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.InteractionType | 'ox_target', 'qb-target' или 'drawtext' (3D-текст и клавиша) | 'ox_target' |
Config.InteractionDistance | На каком расстоянии (в метрах) игрок должен находиться, чтобы поговорить с NPC | 2.5 |
Config.InteractionKey | Клавиша для 'drawtext' и для узла Interact in Area. 38 — это E | 38 |
Config.ThemeColor | Акцентный цвет окна диалога: blue, pink, yellow, red, green, purple, orange, cyan, white или black | "purple" |
Отмена квеста
Заголовок раздела «Отмена квеста»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.EnableCancelQuest | Регистрирует команду, позволяющую игроку отказаться от активного квеста | true |
Config.CancelQuestCommand | Название команды без слэша | "cancelquest" |
Отмена сбрасывает сохранённый прогресс игрока по этому квесту и удаляет всё, что тот создал.
Скриншоты
Заголовок раздела «Скриншоты»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.ScreenshotBasic | Позволяет узлу Send Webhook прикреплять скриншот, если отмечена соответствующая галочка. Требует запущенного screenshot-basic | true |
Команды и разрешения
Заголовок раздела «Команды и разрешения»| Команда | Кто может использовать | Что делает |
|---|---|---|
/questcreator | Любой, у кого есть ACE mic_questcreator.open | Открывает Quest & Event Creator |
/cancelquest | Все игроки, пока включён Config.EnableCancelQuest | Отменяет активный квест. Переименовывается через Config.CancelQuestCommand |
Это же разрешение защищает всё, что редактор сохраняет, удаляет, импортирует и экспортирует: проверка выполняется на сервере, а не только при открытии меню. Выдайте его строкой add_ace для идентификатора или группы; сама проверка находится в Bridge.Server.IsPlayerAllowed в bridge/bridge_server.lua, если вы хотите привязать её к собственной админ-системе.
В locales/ лежат тринадцать файлов: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, nl и cs. Укажите в Config.Locale имя файла без .lua.
Как добавить язык:
- Скопируйте
locales/en.luaи назовите копию по коду вашего языка, напримерlocales/pl.lua. - Внутри замените название таблицы с
'en'на ваш код и переведите текст справа в каждой строке. Ключи слева и любые%sне трогайте. - Добавьте свой файл в
shared_scriptsвfxmanifest.lua— вместе с остальными файлами локализации и вышеconfig.lua. - Укажите свой код в
Config.Locale, затем выполнитеrefreshи перезапустите ресурс.
Если в вашем файле не хватает какого-либо ключа, в игре появится Translation [xx][key] does not exist — по этому сообщению сразу видно, какую строку нужно добавить.
Реплики NPC, названия квестов и тексты уведомлений в файлах локализации не хранятся — вы вводите их в редакторе на любом языке.
Между движком квестов и остальным сервером находятся два открытых файла.
bridge/bridge_server.lua
| Функция | Для чего нужна |
|---|---|
Bridge.Server.Initialize | Получает fmLib и объект ESX или QBCore при запуске ресурса |
Bridge.Server.RegisterServerCallback | Регистрирует колбэки через ESX или QBCore |
Bridge.Server.GetPlayer, GetPlayerParams | Игрок через fmLib, а также его идентификатор, имя и работа |
Bridge.Server.GetMoney, AddMoney, RemoveMoney | Деньги через fmLib |
Bridge.Server.GetItem, AddItem, RemoveItem | Предметы через fmLib — с любым инвентарём, с которым работает fmLib |
Bridge.Server.IsPlayerAllowed | Кто может открывать редактор и пользоваться им. Проверяет ACE mic_questcreator.open |
bridge/bridge_client.lua
| Функция | Для чего нужна |
|---|---|
Bridge.Client.ShowNotification | Все уведомления. Замените тело функции, чтобы использовать собственный ресурс уведомлений |
Bridge.Client.ShowHelpNotification | Подсказка в левом верхнем углу |
Bridge.Client.GetPlayerData, IsPlayerLoaded | Данные игрока, используются в проверках Has Job и Is Night/Day |
Bridge.Client.TriggerServerCallback | Колбэки через ESX или QBCore |
Bridge.Client.RevivePlayer | Используется обработчиком смерти. Вызывает esx_ambulancejob:revive на ESX или hospital:client:Revive на QBCore, а затем воскрешает средствами игры, если игрок всё ещё мёртв |
Используете другой скрипт скорой помощи? Замените событие в Bridge.Client.RevivePlayer на то, которое слушает ваш скрипт. Другой ресурс уведомлений? Измените Bridge.Client.ShowNotification. Названия функций оставьте как есть — движок вызывает их по имени.
Экспорты
Заголовок раздела «Экспорты»Два клиентских экспорта позволяют другому ресурсу использовать мини-игру и индикатор выполнения из Quest Creator.
| Экспорт | Аргументы | Что делает |
|---|---|---|
StartMinigame | сложность (1–5), скорость (1–5), раунды, колбэк | Открывает мини-игру в стиле взлома отмычкой. Колбэк получает true или false |
StartProgressBar | длительность в миллисекундах, надпись | Показывает встроенный индикатор выполнения |
Вызывайте их у mic_questcreator из клиентского скрипта.
События сообщества и экспорт
Заголовок раздела «События сообщества и экспорт»Community Events в редакторе показывает список событий, которыми поделились другие серверы; импортируйте любое — и оно добавится к вашим событиям как обычное. Список скачивается с GitHub, поэтому для его загрузки серверу нужен выход в интернет.
Export Event запрашивает название, описание и автора, а затем записывает событие в JSON-файл внутри папки ресурса, в exports/. Эта папка в ресурсе не поставляется — сначала создайте пустую папку exports в mic_questcreator, иначе файл попадёт в корень ресурса как export_<name>.json.