Документация PhoneHub + Pulse
PhoneHub + Pulse Phone — руководство по установке
Интегрированная редакция 1.4.6 · ZeroDev
Эта редакция объединяет Pulse Phone, здание PhoneHub, собственную PhoneHub OS, 3D-киоск с телефонами, ремонтный стол и систему склада/доставок для персонала. Это отдельный продукт, не редакция только с телефоном. Устанавливайте телефон и ресурс магазина вместе. Не запускайте две копии phone или две версии карты PhoneHub.
1. Перед установкой
- Сделайте резервную копию существующего ресурса телефона, ресурса карты, конфигурации и базы данных.
- Используйте OneSync и игровой билд GTA 2699 или новее.
- Сначала запускайте базу данных, framework, инвентарь, голосовой ресурс и screenshot-basic.
- Сохраните имена ресурсов точно такими:
phoneиzerodev_phonehub_mlo. - Уберите прежние ресурсы PhoneHub из активного каталога ресурсов и удалите дублирующиеся строки
ensure. Храните резервные копии вне этого каталога. - Держите отключённой любую другую карту, которая заменяет то же здание на Portola Drive.
- Полностью закройте FiveM и остановите сервер, прежде чем заменять файлы карты. Запустите сервер, затем снова запустите FiveM. Отключайте клиентов перед заменой или перезапуском этого стримящегося MLO. Подключённый клиент может удерживать карту, даже находясь далеко от здания; горячий перезапуск может привести к вылету этого клиента.
В этот пакет не входят лицензионный ключ сервера, framework, инвентарь или платные сторонние скрипты. После обработки в Keymaster ключ сервера должен принадлежать аккаунту, у которого есть права на этот новый объединённый ассет. Права на старую редакцию только с телефоном не дают эту новую редакцию.
2. Скопируйте ресурсы
Скопируйте папки phone и zerodev_phonehub_mlo из этой загрузки в каталог ресурсов сервера. Их можно положить в любую папку-категорию; имена папок сохраните точно.
screenshot-basic. Камере нужен screenshot-basic, запущенный раньше phone; подходит стандартный ресурс. В загрузку также входит облегчённая копия (она рисует изображение игры только во время съёмки фото, с тем же именем, экспортами и событиями). Переход на неё необязателен: сохраните старую папку как резервную копию вне resources, проверьте скрипты, которые делают скриншоты, и верните старую папку, если что-то изменится. Шаги — в быстром старте Pulse Phone, шаг 6; изменённые файлы перечислены в screenshot-basic/ZERODEV-CHANGES.md.
Добавьте эти строки после существующих зависимостей в server.cfg:
ensure phone
ensure zerodev_phonehub_mloНе копируйте старый движок или интерфейс телефона в новый пакет. При обновлении перенесите нужные настройки в новые файлы конфигурации. Сохраните базу данных, KVP-хранилище ресурса и папки media и ownermedia. Новый phone/config/phonehub_business.lua содержит настройки доставки, которых нет в редакции только с телефоном.
Настроенный прилавок магазина находится в точке -749.541, -216.952224, 36.256562, направление 210. В чистой интегрированной редакции расположение магазина уже настроено. PhoneHub — единственный магазин телефонов в этой редакции: магазин на Legion Square из пакета только с телефоном в неё не входит. config.lua, сохранённый с 1.4.4 или раньше, всё ещё указывает Legion Square; эта запись пропускается, и консоль один раз об этом сообщает. Нажмите клавишу PhoneHub (по умолчанию E) или используйте /phonehub у напольного киоска, ремонтного стола, сервисной стойки или пульта на крыше, чтобы открыть терминал PhoneHub. Киоск открывает Shop, а ремонтный стол — Repair. Клавишу можно изменить в назначениях клавиш FiveM. Команда требует такой же близости, как и клавиша; действия персонала по-прежнему требуют разрешения сервера.
3. Framework, инвентарь и другие скрипты
Начните с Config.Framework = 'auto' и автоматических настроек провайдеров в phone/config/config.lua. Отчёт о состоянии телефона при запуске называет провайдеров, которых он на самом деле выбрал. Проверьте этот отчёт, прежде чем совершать покупки.
| Framework | Настройка |
|---|---|
| ESX Legacy | Запускайте es_extended и инвентарь раньше phone. Импортируйте zerodev_phonehub_mlo/setup/phonehub_esx_jobs.sql; он добавляет недостающие ранги работы, не назначая её ни одному игроку. |
| QBCore | Добавьте прилагаемую запись работы zerodev_phonehub_mlo/setup/phonehub_qb_job.lua в общую таблицу работ вашего ядра. Зарегистрируйте предметы телефона по руководству телефона по предметам. |
| Qbox | Зарегистрируйте ту же работу/ранги через установленную у вас конфигурацию работ Qbox или поддерживаемый API регистрации работ. Используйте определения предметов ox_inventory. |
| ox_core / vRP | Настройте существующий адаптер framework телефона и провайдер работ, который возвращает работу PhoneHub и числовой ранг. Если ваша система работ их не отдаёт, используйте доступ к зданию через ACE. |
| Standalone / кастомный | Публичные покупки доступны через существующий мост телефона для standalone/кастомного режима. Для доступа персонала нужен настроенный провайдер работ или доверенный ACE администратора. |
Адаптеры инвентаря покрывают ox_inventory, поддерживаемые функции инвентаря framework и названных сторонних провайдеров, перечисленных в phone/guides/integrations.md (или в руководстве по интеграциям, входящем в ваш билд телефона). Каждому провайдеру нужны его реальные определения предметов и совместимая версия API. Недостающие предметы сообщаются проверками состояния телефона; не подавляйте эти ошибки. Примеры настройки предметов поставляются в phone/config/items/.
Редактируемые мосты телефона покрывают голос, счета организаций, банкинг, гаражи, жильё, диспетчер и другие интеграции. Оставляйте ровно одного выбранного провайдера на функцию. Закрепляйте переименованные ресурсы через Config.ResourceNames; используйте Config.Providers, чтобы выбрать провайдера явно. Произвольные сторонние экспорты не совместимы автоматически: если вашего скрипта нет в списке, реализуйте документированный кастомный мост. Адаптеры framework и автоматические контрактные тесты не означают, что каждая сторонняя версия была протестирована вживую.
Протестировано вживую для этого релиза: ESX Legacy, ox_inventory, oxmysql и pma-voice. На другом framework выполните проверки первого запуска из раздела 7, прежде чем открывать магазин.
4. Публичный магазин или бизнес игрока
Выполните одну из команд в консоли сервера:
phonehubmode public
phonehubmode businessВыбранный режим сохраняется после рестартов. Публичный режим оставляет обычные покупки. Режим бизнеса применяет сохраняемый склад и бронирования к покупкам у прилавка PhoneHub. Режим бизнеса отключает обмен с доплатой у прилавка. Та же оплата в телефоне проверяет цены, платежи и выдачу предметов.
Задайте название работы и ранги в phone/config/phonehub_business.lua:
| Ранг | Обязанности по умолчанию |
|---|---|
| 0 — стажёр | Просмотр бизнес-терминала, приём пришедших доставок, управление зданием |
| 1 — продавец | Обязанности стажёра плюс заказы у поставщика |
| 2 — техник | Заказы/приём и настроенная роль ремонта |
| 3 — менеджер | Все функции персонала плюс отмена/возврат денег за ожидающие заказы поставок |
Назначайте работы обычными инструментами администрирования вашего framework. Для управления компанией откройте на телефоне Services → My Work → PhoneHub → Staff and account. Оно использует поддерживаемые функции персонала/society выбранного framework. Объединённая редакция также поддерживает постоянное владение игроком через покупку в игре на вкладке Business или через команду назначения администратором, описанную ниже. Все цены владения — суммы во внутриигровой валюте.
Для ESX с esx_addonaccount также импортируйте zerodev_phonehub_mlo/setup/phonehub_esx_society.sql перед запуском ресурса счетов, затем перезапустите сервер. Это создаёт счёт компании society_phonehub с нулевым балансом, не заменяя существующий баланс. Если вы переименовали работу, исправьте суффикс счёта соответственно. Другим провайдерам банкинга нужна их обычная настройка счёта компании для настроенной работы. Проверьте небольшой депозит и снятие в Company, прежде чем открывать бизнес.
Операционный бюджет — это отдельный внутренний журнал закупок товара. Продажи пополняют его; заказы у поставщика списывают с него. Он не является автоматически банковским счётом society и не является наличными игрока, которые можно снять.
5. Заказы у поставщика и доставка товара
У сервисной стойки нажмите E, чтобы открыть терминал PhoneHub, затем Stock. Выберите товар, конфигурацию и количество. Сервер рассчитывает предложение поставщика и проверяет ранг сотрудника, его близость и операционный бюджет.
Доставка по умолчанию занимает 120 секунд. Она остаётся в пути после рестартов. После прибытия сотрудник выбирает Receive delivery на терминале. Значение по умолчанию destination='stock' добавляет товар в складской журнал магазина, из которого списывает касса, независимо от провайдера инвентаря покупателя. Повторные запросы на приём не могут добавить одну и ту же поставку дважды. Менеджеры могут отменить неполученную поставку с однократным возвратом в бюджет.
Конфигурация:
delivery = {
seconds = 120,
autoReceive = false,
destination = 'stock',
resource = '',
export = '',
}Для своего склада/тайника задайте destination='custom' и укажите серверный экспорт. Он получает (shipment, source) и должен использовать shipment.id как постоянный ключ дедупликации. Возвращайте true, только когда каждая строка успешно сохранена. Настройте сопоставление предметов/SKU вашего инвентаря в этом адаптере. Кастомная доставка не добавляет предметы ещё и во внутренний журнал продаж; явно подключите продажи со своего склада, чтобы избежать дублирования товара. Универсальный адаптер тайника не предполагается.
Неопределённая передача во внешнюю систему откладывается на проверку и никогда не повторяется вслепую. Проверив целевой инвентарь, используйте:
phonehubdelivery <shipment-id> delivered
phonehubdelivery <shipment-id> retryДля неопределённого бронирования при оплате покупателем проверьте записи платежей и инвентаря, прежде чем использовать phonehubresolve <reservation-id> returned|delivered.
6. Управление магазином
Нажмите E рядом с пультом сервисной зоны или пьедесталом управления на крыше.
- Space: замки входной двери и двери на крышу, свет в магазине, экран в лаунже, навес террасы (автоматически при дожде или снеге, либо открыт/закрыт), обогреватели или обдув террасы, питание террасы и 15-секундная проверка спринклеров.
- Cameras: Entrance overview, Showroom overview и Service counter. Возврат к терминалу закрывает камеру; Escape — выход.
- Stock и Business: заказы у поставщика, доставки, выручка, журнал продаж и ремонтов и доступ команды.
Для управления зданием нужна работа PhoneHub или настроенный ACE персонала/администратора. Публичный доступ к управлению террасой настраивается отдельно в systems_config.lua. Выдавайте phonehub.admin только своему доверенному principal администратора; никогда всем. Задайте phoneResource='phone' в конфигурации систем MLO.
Автоматические двери в незапертом состоянии используют датчики приближения. Их подвижные створки должны оставаться твёрдыми, в том числе в открытом положении. Мебель, стекло и освещение — проработанные ассеты карты; не у каждого декоративного объекта есть игровое взаимодействие.
7. Приёмка при первом запуске
- Запустите сервер и выполните
phone:health. Убедитесь, что определены ожидаемые провайдеры framework, инвентаря, базы данных и голоса и нет недостающих обязательных предметов. - Зайдите как обычно и посетите магазин. С выключенным noclip пройдите с тротуара через обе пары входных дверей, вверх и вниз по лестнице и через дверной проём на крышу.
- Откройте и закройте навес. Его восемь панелей должны оставаться выровненными в направляющих в любом положении. Отдельно проверьте автоматическое закрытие при дожде/снеге.
- Откройте каждый вид видеонаблюдения, переключитесь между ними и выйдите. Сцена должна быть видна, а обычный вид и фокус игрока должны вернуться.
- Заприте обе группы дверей с аккаунта сотрудника. Проверьте коллизию с обеих сторон. Отоприте и снова проверьте анимацию открытия при приближении.
- Проверьте дневное/ночное освещение, включение/выключение экрана, стекло, вывески, сиденья и все края. Пройдите и проедьте к зданию и от него, чтобы проверить переходы при стриминге.
- Купите телефон/аксессуар в публичном режиме. В режиме бизнеса проверьте списание со склада, заказ сотрудником, прибытие/приём, нехватку средств и несанкционированный доступ.
- Перезапустите сервер и убедитесь, что режим магазина, склад и ожидающие доставки сохранились. Повторите попытку двойного приёма/отмены; дублирования товара или возврата быть не должно. Убедитесь, что несколько игроков видят одинаковое состояние магазина.
phonehubcheck в клиентской консоли F8 сообщает фактическое выравнивание навеса; каждая панель должна показывать выравнивание, близкое к 1. Это диагностика, а не доказательство того, что визуальное качество или коллизии правильные. Автоматические проверки не могут удостоверить каждый ракурс камеры или все сочетания серверов.
8. Устранение неполадок и обновления
Порт 30120 занят: уже запущен другой экземпляр сервера. Остановите его через txAdmin (или панель хостинга), а не запускайте второй FXServer.
Нет элементов управления: проверьте, что оба ресурса запущены, их имена не изменены, а игрок находится у пульта. Посмотрите ошибки в клиентской F8 и на сервере.
Нет доступа персонала: проверьте настроенную работу, числовой ранг, близость к сервисной стойке и выбранный провайдер работ. Публичный режим магазина не даёт прав персонала.
Остаётся старая карта/старый интерфейс: удалите дублирующиеся ресурсы/строки ensure. Полностью закройте FiveM, остановите сервер, замените файлы, затем запустите сервер и снова запустите FiveM. Одного переподключения может не хватить: устаревшие стримящиеся ассеты могут сохраниться. Не перезагружайте MLO на лету, пока подключён клиент, даже если он далеко от здания.
Откат: остановите эти ресурсы, восстановите сохранённые папки ресурсов и конфигурацию, затем перезапустите через свой txAdmin. Сохраняйте базу данных/KVP-хранилище, если только вы сознательно не восстанавливаете согласованную резервную копию данных.
Сохраните прилагаемые хеши релиза (SHA256.json) для обращений в поддержку.
PhoneHub OS и владение
Config.PhoneHubOS в phone/config/phonehub_business.lua управляет этой редакцией. ownership='both' разрешает покупку в игре и назначение администратором. Задайте 'admin' или 'purchase', чтобы разрешить только один путь. purchasePrice — сумма во внутриигровой валюте. Администраторы используют phonehubowner <online player id> из консоли сервера или с ACE phonehub.admin. Назначение заблокировано, пока ожидается оплата покупки. Владелец сохраняется по идентификатору персонажа во framework, а не по временному номеру source игрока. Владение включает существующую постоянную систему склада и операционного бюджета.
Владельцы добавляют находящихся рядом сотрудников или менеджеров на вкладке Business. Эти независимые роли работают через мост идентификации framework; они не меняют основную работу игрока. Существующие роли работы PhoneHub и настроенный административный доступ по-прежнему работают. По умолчанию менеджеры могут заказывать поставки, а сотрудники — принимать прибывшие поставки. Товар остаётся зарезервированным, пока покупка или поставка от поставщика не подтверждены.
service='hybrid' разрешает и обслуживание с помощью персонала, и самообслуживание при оплате и ремонте. 'self' разрешает прямое обслуживание; 'staff' требует предложения от персонала, одобренного покупателем, в этом магазине. Отдельный продукт сохраняет свою существующую систему покупок.
Подойдите к напольному киоску и нажмите E. Вкладка Shop загружает настоящую защищённую модель Pulse с вращением перетаскиванием, осмотром спереди и сзади, зумом и выбранной расцветкой. Цену выдаёт сервер телефона. Оплата требует подтверждения и использует настроенные инвентарь, деньги и выдачу телефона в коробке. Таймаут не доказывает, что списание не прошло; проверьте инвентарь и журнал платежей, прежде чем пробовать снова.
Покупатели просят помощи с покупкой или ремонтом на вкладке Help и получают номер в очереди. Сотрудники выбирают покупателя рядом на вкладке Counter и готовят предложение; одобрить и оплатить его может только этот покупатель. Оба должны оставаться в том же магазине в том же routing bucket. Одобрение ремонта привязывается к выбранному уникальному устройству и его озвученной цене. Смена устройства аннулирует его.
При ремонте с помощью персонала техник открывает терминал у свободного ремонтного стола, готовит предложение ремонта для покупателя и остаётся там до его принятия. Стол резервируется до оплаты. Успешный оплаченный ремонт запускает сцену сборки с этим игроком в роли техника; при самообслуживании используется техник магазина. Ремонтом устройства управляет движок телефона, и он восстанавливает оплаченную работу после прерванной сессии сервера. Клиентские пропы никогда не создают и не заменяют телефон в инвентаре.
Вкладка Space у пультов на крыше и у стойки управляет навесом, климатом, замками, освещением и экраном. Геометрия, защита от погоды, полы и сиденья готового MLO сохраняются.