Установка
Десять минут: один SQL-файл, одно разрешение и три строки config.lua, которые стоит проверить.
Перед началом
Заголовок раздела «Перед началом»| Что нужно | Зачем |
|---|---|
| ESX, QBCore или QBox | Деньги, работы, предметы и уведомления берутся из фреймворка |
| oxmysql | Всё, что помнят магазины, хранится в вашей базе данных |
| ox_target или qb-target | Необязательно. По умолчанию используется ox_target; без обоих игрокам показывается подсказка и они нажимают E |
| screenshot-basic | Необязательно, для скриншотов в логах Discord. Нужен, если оставить Config.Screenshot включённым |
1. Поместите папку на место
Заголовок раздела «1. Поместите папку на место»Скачайте mic_shopcreator из ваших Cfx.re granted assets и положите папку в ресурсы, например resources/[mic]/mic_shopcreator.
2. Запустите его после того, на что он опирается
Заголовок раздела «2. Запустите его после того, на что он опирается»В server.cfg строка ensure mic_shopcreator должна стоять ниже oxmysql, вашего фреймворка (es_extended, qb-core или qbx_core), вашего инвентаря, вашего ресурса target и screenshot-basic.
Всё сработало, если ресурс запускается без красных строк и без сообщения Locale file not found.
3. База данных
Заголовок раздела «3. База данных»Импортируйте mic_shopcreator.sql один раз. Он создаёт девять таблиц:
| Таблица | Что в ней хранится |
|---|---|
mic_shopcreator | Магазины с их настройками блипа, работ, ограбления, владения и webhook |
mic_shopcreator_locations | Где стоит каждый продавец, его модель, одежда и когда его в последний раз грабили |
mic_shopcreator_products | Товары магазинов, которые ведёт сервер |
mic_shopcreator_owner_products | Товары магазинов игроков, с их запасами |
mic_shopcreator_jobs | Какие работы и ранги могут пользоваться магазином |
mic_shopcreator_rewards | Что выплачивается за ограбление |
mic_shopcreator_owners | Кто чем владеет |
mic_shopcreator_employees | Кто где работает, его комиссия и личный сейф |
mic_shopcreator_vaults | Баланс чистых и чёрных денег каждого магазина игрока |
Обновляетесь со старой версии? update.sql вам не нужен: при каждом запуске ресурс проверяет столбцы, добавленные с тех пор (clothes в locations, min_amount и max_amount в rewards), и добавляет их, если их нет. Когда это происходит, консоль один раз выводит Added clothes column to mic_shopcreator_locations table..
4. Предметы
Заголовок раздела «4. Предметы»Собственных нет. Магазин продаёт предметы, которые уже существуют в вашем инвентаре, — их названия вы вводите при добавлении товара. Картинки товаров берутся из папки с картинками вашего инвентаря, см. шаг 5.
5. Фреймворк, target и картинки
Заголовок раздела «5. Фреймворк, target и картинки»Откройте config.lua и проверьте:
| Параметр | Значение |
|---|---|
Config.Framework | 'esx' (по умолчанию) или 'qbcore'. Автоматически не определяется. На QBox используйте 'qbcore' — QBox запускает ресурсы QBCore через слой совместимости |
Config.Interaction | 'ox_target' (по умолчанию), 'qb-target' или 'default' (подсказка и E) |
Config.InventoryImagePath | Где ваш инвентарь хранит картинки предметов. По умолчанию указывает на nui://ox_inventory/web/images/ |
Config.IdentifierType | Как распознаются владельцы и сотрудники. По умолчанию 'discord'; см. ниже |
Config.IdentifierType определяет, что попадает в список владельцев и что хранится в таблице сотрудников:
| Значение | Игроков распознают по | Используйте, когда |
|---|---|---|
'discord' | Discord ID — число без discord: | Все подключаются с привязанным Discord |
'license' | Лицензия Rockstar, целиком license:… | Вы не требуете Discord |
'esx' | Собственный идентификатор ESX с префиксом персонажа | ESX с мультиперсонажами — у каждого персонажа свои владения |
'citizenid' | Citizen ID из QBCore | QBCore или QBox — у каждого персонажа свои владения |
Выберите его до того, как кто-либо станет владельцем магазина или начнёт в нём работать. Если изменить его позже, придётся заново вводить всех владельцев, а существующие сотрудники перестанут распознаваться.
6. Выдайте панель себе
Заголовок раздела «6. Выдайте панель себе»Панель закрыта ACE-разрешением mic_shop.open (а не mic_shopcreator.open). Выдайте его в server.cfg строкой add_ace — одному человеку, например add_ace identifier.discord:YOUR_DISCORD_ID mic_shop.open allow, или группе, например add_ace group.admin mic_shop.open allow.
Всё сработало, если /shopcreator открывает Shop Creator. Без разрешения вы получите уведомление об отсутствии прав.
7. Первая проверка
Заголовок раздела «7. Первая проверка»- Введите
/shopcreator, создайте магазин и дайте ему название. - Добавьте локацию. Предпросмотр продавца следует за вашим взглядом: колесо мыши поворачивает его, ↑ / ↓ поднимают и опускают, E ставит, X отменяет.
- Добавьте товар: предмет, существующий в вашем инвентаре, цену, категорию и способ оплаты. Сохраните.
Всё сработало, если продавец стоит там, где вы его поставили, разговор с ним открывает магазин с вашим товаром и его картинкой, а покупка забирает деньги и выдаёт предмет.
Перед открытием города
Заголовок раздела «Перед открытием города»Config.IdentifierTypeменять потом нельзя. Решите это сейчас; по нему хранятся владельцы и сотрудники.mic_shop.openтолько у администраторов. С ним можно создавать, изменять и удалять все магазины.- Оставляйте
Config.Screenshotвключённым, только еслиscreenshot-basicзапущен. Иначе логи не будут отправляться. - Кулдауны ограблений задаются для каждого магазина, в минутах — задайте его для каждого магазина, который можно грабить.
- Купите что-нибудь на обычном персонаже в каждом магазине с ограничением по работе, чтобы проверить заданный вами ранг.