Настройка
Один файл решает всё, что можно изменить: config.lua. Остальное — экраны приложения и зашифрованная (escrow) логика.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл | За что отвечает | Можно редактировать |
|---|---|---|
config.lua | Фреймворк, путь к изображениям, срок действия, платежи, расположение ломбарда, маркер, блип, продавец, чёрный список, каждый текст уведомлений, название приложения | Да |
pawnshop.sql | Три таблицы, импортируются один раз | Да |
web/index.html, web/styles.css, web/script.js | Экраны приложения, вёрстка и подписи | — |
web/assets/pawn.png | Иконка приложения | Да |
web/assets/fries.png | Картинка, которая показывается, когда у предмета нет изображения | Да |
client/main.lua, server/main.lua | Логика | Зашифрованы (escrow) |
Нет ни папки bridge, ни папки locales: фреймворк — это один из параметров ниже, а текст находится в config.lua.
| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Framework | "esx" или "qb", в нижнем регистре. На QBox используйте "qb" — QBox запускает ресурсы QBCore через свой слой совместимости | "esx" |
Config.InventoryImagePath | Папка, из которой читаются картинки предметов, в виде resource/folder/. Для qb-inventory — "qb-inventory/html/images/" | "ox_inventory/web/images/" |
Config.Expire | Сколько дней предложение остаётся активным. Изменение цены предложения запускает отсчёт заново | 7 |
Платежи
Заголовок раздела «Платежи»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Bank | true: покупатели платят из банка, а продавцы выводят деньги в банк. false: и те, и другие используют предмет из Config.Money | true |
Config.Money | Предмет инвентаря, используемый как деньги, когда Bank выключен, — money, black_money или ваш собственный | "money" |
При выключенном Bank деньги должны быть предметом инвентаря, как их хранит ox_inventory. В штатном инвентаре ESX и на QBCore наличные — это счёт, а не предмет, поэтому там оставляйте Config.Bank = true.
Деньги от продажи не попадают продавцу напрямую. Они добавляются к его балансу Pending в приложении, и он выводит их кнопкой перевода.
Продажа на прилавке
Заголовок раздела «Продажа на прилавке»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.RequireLocation | true: создание и покупку предложений нужно завершать в ломбарде | false |
Config.PawnShopLocation | Где находится ломбард: x, y, z и направление взгляда продавца | 412.17, 315.11, 103.13, heading 194.62 |
Config.InteractionDistance | Как близко, в метрах, должен быть игрок, чтобы нажать E. Сервер тоже это проверяет | 1.0 |
Config.Marker | Маркер у двери: Type, Scale (x, y, z) и Color (r, g, b, a) | Type 20, тёмный сине-серый |
Config.Blip | Блип маршрута: Sprite, Color, Scale | 480, 32, 1 |
Config.NPC | Model педа продавца и анимация передачи (Dict и Name) | a_m_m_business_01, mp_common / givetake1_a |
Как это выглядит при включённом RequireLocation: игрок заполняет предложение или нажимает «купить», телефон прокладывает маршрут до ломбарда, а маркер появляется, когда игрок оказывается в 20 метрах. Нажатие E у маркера вызывает продавца для передачи, и сделка проходит.
Блип и маркер существуют только пока у игрока есть там что-то, что нужно завершить; постоянного блипа на карте нет. При выключенном RequireLocation ничего из этого не используется.
Config.Blip.Name не используется для подписи блипа — она берётся из Config.Messages.blip_name.
Чёрный список
Заголовок раздела «Чёрный список»Config.BlackList — это список названий предметов, которые никогда нельзя выставить. Они исключаются из выбора предметов, отклоняются сервером, а любое существующее предложение с таким предметом убирается с доски — вместе с предметами — при следующем открытии приложения кем-либо. В комплекте идут burger и weapon_appistol в качестве примеров.
Текст и язык
Заголовок раздела «Текст и язык»Папки locales нет. Весь текст, который можно изменить, находится в config.lua, на английском:
| Параметр | Что содержит |
|---|---|
Config.locales.en.app_name | Название приложения на телефоне и заголовок его уведомлений |
Config.locales.en.app_description | Строка под ним в App Store |
Config.Messages | Каждое уведомление: предложение создано, куплено и удалено, не хватает полей, сбои, «идите в ломбард», подсказка E и название блипа |
Чтобы играть на другом языке, переведите эти строки на месте. Несколько ответов сервера — «Insufficient items», «Inventory full», «This item cannot be listed for sale», «You do not own this offer» и подобные — зашиты в зашифрованный серверный файл и остаются на английском.
На ESX уведомления приходят как уведомления lb-phone от приложения. На QBCore используется собственное уведомление фреймворка.
Картинки предметов
Заголовок раздела «Картинки предметов»Приложение показывает каждый предмет как <Config.InventoryImagePath><item name>.png, читая напрямую из ресурса вашего инвентаря. Если картинки нет, вместо неё показывается web/assets/fries.png; замените этот файл, чтобы изменить запасной вариант.