Настройка
Почти всё находится в одном файле — config.lua. Два файла бриджа и локали тоже открыты.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл | За что отвечает | Открыт? |
|---|---|---|
config.lua | Язык, валюта, взаимодействие, лимит установки и каждый стационарный автомат с ценой | Да |
locales/*.lua | Подсказки, уведомления и надписи таргета | Да |
bridge/client_bridge.lua | Определение фреймворка, чтение денег, уведомления, текст подсказок и зоны ox-target / qb-target / drawtext | Да |
bridge/server_bridge.lua | Списание и выплата денег или жетонов, имена и идентификаторы персонажей, уведомления и используемые предметы-автоматы | Да |
items/ | Определения предметов для ox, qb и ESX, а также иконки в items/images/ | Да |
ui/ | Меню автомата и семь игр, каждая в своей папке в ui/games/ | Не под escrow |
client/data.lua | Положение камеры и экрана для каждой модели автомата | Под escrow |
mic_arcade_props/ | Модели автоматов и отрисовщик экранов | Только ассеты |
Общие настройки — config.lua
Заголовок раздела «Общие настройки — config.lua»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Locale | Какой файл из locales/ используется | 'en' |
Config.PaymentType | Чем платят за игру: cash, bank, both или item | 'item' |
Config.PaymentItem | Предмет, используемый как валюта, когда PaymentType равен item | 'arcade_coin' |
Config.Interaction | ox-target (через дефис), qb-target или drawtext | 'ox-target' |
Config.MaxArcadesPerPlayer | Сколько установленных автоматов может быть у одного персонажа сразу | 3 |
Типы оплаты
Заголовок раздела «Типы оплаты»| Значение | Что происходит |
|---|---|
cash | Оплата наличными (на ESX — со счёта money) |
bank | Оплата с банковского счёта |
both | Сначала наличные; если их не хватает, остаток берётся из банка |
item | Оплата предметом Config.PaymentItem, по одному предмету за единицу цены |
Та же валюта используется для ставок и выигрышей в DuoFight.
Автоматы и цены — Config.Arcades
Заголовок раздела «Автоматы и цены — Config.Arcades»Одна запись на каждую модель автомата. В каждой записи есть Price и, по желанию, любое количество фиксированных позиций (vec4 с x, y, z и направлением) — в каждой создаётся по одному автомату.
| Автомат | Модель | Игра | Цена | Стационарный по умолчанию |
|---|---|---|---|---|
| DuoFight | mic_arcade_duofight | Файтинг на двоих или против компьютера | 0 | Нет (закомментирован) |
| Alien | mic_arcade_alien | Alien | 100 | Нет (закомментирован) |
| Breakout | mic_arcade_brick | Breakout | 100 | Нет (закомментирован) |
| Pixel | mic_arcade_pixel | Pixel | 100 | Да |
| Race | mic_arcade_race | Race | 100 | Да |
| Tower | mic_arcade_tower | Tower | 100 | Да |
| Road | mic_arcade_road | Road | 100 | Да |
- Чтобы добавить стационарный автомат, добавьте позицию в список под нужной моделью. Встаньте туда, где он должен стоять, возьмите свои координаты и направление и впишите их.
- Чтобы убрать автомат, удалите или закомментируйте его позицию.
Priceпродолжает действовать для установленных игроками автоматов этой модели. - Цена
0делает автомат бесплатным. - Начало координат автомата Breakout расположено ниже, чем у остальных — в поставляемой позиции Breakout значение по оси z примерно на 0,7 меньше, чем у соседей. Делайте так же, когда добавляете его.
Price также определяет, сколько берёт установленный автомат этой модели.
Установленные автоматы
Заголовок раздела «Установленные автоматы»Предмет-автомат (arcade_alien, arcade_race…) запускает установку:
| Клавиша | Что делает |
|---|---|
| Осмотреться | Перемещает предпросмотр туда, куда вы смотрите |
| Колёсико мыши | Поворачивает его |
| E | Устанавливает автомат и забирает предмет |
| ESC / Backspace | Отменяет; предмет остаётся у вас |
Только владелец получает пункт Pick Up Arcade (при drawtext — вторая клавиша, указанная в подсказке). При подъёме предмет возвращается. Автомат, которым кто-то пользуется, поднять нельзя.
Config.MaxArcadesPerPlayer считает автоматы, которые персонаж установил на данный момент.
Ставки в DuoFight
Заголовок раздела «Ставки в DuoFight»При выборе режима для двоих в DuoFight запрашивается ставка: 1, 5, 25, 50 или 100 в вашей валюте. Организатор платит её и ждёт у автомата; следующему игроку, подошедшему к автомату, предлагается матч, и он платит столько же, чтобы присоединиться.
| Результат | Что происходит |
|---|---|
| Победа | Победитель получает обе ставки |
| Ничья | Каждый игрок получает свою ставку обратно |
| Игрок уходит посреди матча | Он проигрывает: другой игрок получает обе ставки |
| Организатор уходит, пока никто не присоединился | Матч отменяется; ставка организатора не возвращается |
| Игрок отключается | Матч отменяется, выплат нет |
Таблицы лидеров
Заголовок раздела «Таблицы лидеров»Каждая игра, кроме DuoFight, сохраняет лучший результат каждого персонажа в mic_arcade_leaderboard и показывает первую десятку на автомате. Имена берутся из имени персонажа в вашем фреймворке. Чтобы сбросить таблицу лидеров, очистите эту таблицу (или строки одной игры) при остановленном сервере.
В locales/ поставляются десять: en, es, fr, de, it, pt, nl, ja, ru, zh. Укажите в Config.Locale нужный код.
Чтобы добавить новый, скопируйте locales/en.lua в новый файл с названием по вашему коду, замените Locales['en'] на свой код, переведите правую часть каждой строки и задайте Config.Locale. Отсутствующий ключ отображается как Translation [xx][key] does not exist — отката на английский нет.
Файлы локалей охватывают то, что показывается в игровом мире: надписи таргета, подсказки и уведомления. Текст внутри самих игр относится к ui/games/.
| Файл | Что он охватывает |
|---|---|
bridge/client_bridge.lua | Определение фреймворка, количество денег или жетонов, показываемое игроку, Bridge.Notify, текст подсказок и зону взаимодействия на каждом автомате для ox-target, qb-target или drawtext |
bridge/server_bridge.lua | Определение фреймворка, списание и выплату денег или предметов (Bridge.RemoveMoney, Bridge.AddMoney), предметы-автоматы, имя и идентификатор персонажа, серверные уведомления и список используемых предметов-автоматов |
Другой ресурс уведомлений: измените Bridge.Notify в клиентском файле и Bridge.ServerNotify в серверном. Сообщения not enough money отправляются из Bridge.RemoveMoney.
Другой ресурс таргета: Bridge.RegisterArcadeInteraction и Bridge.RemoveArcadeInteraction в клиентском файле — единственные места, где затрагиваются таргеты.
Другой инвентарь: жетоны и предметы-автоматы читаются и удаляются через собственные функции игрока во фреймворке в server_bridge.lua. Если ваш инвентарь на них не отзывается, перенаправьте Bridge.RemoveMoney, Bridge.AddMoney, Bridge.RemoveSpecificItem, Bridge.AddSpecificItem и Bridge.GetMoney на свой инвентарь.
Новый используемый предмет для автомата: таблица UsableArcades в конце server_bridge.lua сопоставляет каждый предмет с моделью автомата.