Назад к блогу
Scripts6 мин чтения

Agency-Phone: смартфон, созданный специально для FiveM

Узнайте, как Agency-Phone обеспечивает максимально реалистичный игровой смартфон в FiveM: от архитектуры приложений до производительности при высокой нагрузке.

Agency Scripts

Основатель и ведущий разработчик Agency Scripts

Живая демонстрация

Попробуйте Agency Phone в браузере, загрузка не требуется.

Открыть демо

Зачем создавать еще один FiveM Phone?

Мы создали Agency-Phone, потому что каждый телефон, который мы пробовали на наших серверах, либо выглядел отлично и работал плохо, либо работал хорошо и выглядел устаревшим. Рынок был полон компромиссов. Мы хотели что-то, что действительно ощущается как современный смартфон с момента открытия, и при этом использует 0.00ms ресурсов в режиме ожидания, когда лежит в кармане.

Интерфейс, который не похож на FiveM

Большинство телефонов FiveM выдают своё происхождение в течение двух секунд после открытия. Шрифты выглядят немного не так, анимации дерганые, домашний экран кажется заглушкой. Agency-Phone создан людьми, которые ежедневно пользуются настоящими смартфонами. Каждый элемент, от часов на экране блокировки до физики пружин в меню приложений, был доработан до тех пор, пока не перестал ощущаться как скрипт и не стал похож на настоящий телефон.

Архитектура приложения

Под капотом Agency-Phone использует систему ленивой загрузки приложений. Приложения инициализируют свой UI только при фактическом открытии, что поддерживает стабильное использование памяти даже при добавлении новых приложений. Событийная шина между клиентским Lua и слоем NUI имеет дебаунс, чтобы быстрые действия пользователя не перегружали игру пиками resmon. Это тот вид инженерной работы, который никто не видит, но от которого выигрывают все, когда на сервере одновременно 128 игроков.

По умолчанию независим от фреймворков

Agency-Phone поставляется с адаптерами для QBCore и ESX, но его ядро не зависит от фреймворка. Если у вас standalone-сервер с собственной системой данных игроков, подключить его можно за один вечер, реализовав четыре функции поиска. Мы отказываемся выпускать скрипты, привязывающие вас к одному фреймворку: фреймворки постоянно меняются, и за время нашей работы в сообществе мы видели как минимум три смены «теперь стандарт именно такой».

Назначение телефона в RP

Телефон FiveM в конечном итоге является социальным инструментом. Игроки используют его для координации встреч, проведения сделок с наркотиками, отправки сообщений персонажу босса, прослушивания музыки через радио-приложение. Всё, что мы добавляем или убираем из Agency Phone, оценивается по вопросу: облегчает ли это социальное взаимодействие или делает его интереснее? Поэтому мы выпустили приложение галереи раньше напоминаний в календаре, а стандартное приложение сообщений имеет индикаторы набора текста раньше, чем функцию отложенной отправки. Сначала RP, потом список функций.

Установка & настройка

Для сохранения контактов, сообщений и журнала звонков Agency-Phone требуется oxmysql. Импортируйте phone.sql в вашу базу данных, скачайте ресурс с Tebex, поместите его в директорию ресурсов и добавьте ensure agency-phone в server.cfg. Автоматическое определение фреймворка для QBCore и ESX. Для standalone-настроек реализуйте четыре функции адаптера в config.lua, обычно это занимает час или два в зависимости от вашей пользовательской слоя данных игрока.

Игроки открывают телефон нажатием на настраиваемую клавишу (по умолчанию: M) или предметом в инвентаре. Оба метода поддерживаются одновременно, некоторые серверы используют клавиатурное сокращение, другие предпочитают иммерсивный подход с предметом, который можно уронить или украсть.

Параметры конфигурации

Параметр config.lua охватывает технические и игровые настройки:

  • Клавиша телефона", клавиша для открытия/закрытия телефона. По умолчанию: M.",
  • Телефон как предмет", переключить необходимость наличия предмета телефона в инвентаре. По умолчанию: отключено (только клавиша).
  • Формат номера , как отображаются и автоматически генерируются номера телефонов для новых персонажей.
  • Дальность звонка", максимальное физическое расстояние для звонков в зоне действия и вне зоны действия (голосовая почта). По умолчанию: неограниченно для звонков в рамках персонажа.",
  • Интеграция Twitter/LifeInvader подключите Agency-LifeInvader, если установлено, для социального приложения.
  • Интеграция радио-приложения настройте доступные радиопотоки для музыкального плеера.
  • Банковское приложение подключите банковские системы QBCore, ESX или кастомный банковский обработчик.
  • GPS приложение кастомные категории путевых точек для серверных локаций (больницы, полицейские участки, бизнесы).
  • Маршрутизация уведомлений", какие внешние скрипты могут отправлять уведомления на телефон и как они отображаются.

Совместимость с фреймворками

Agency-Phone поставляется с адаптерами для QBCore и ESX. Адаптер отвечает за отображение денег, предмет инвентаря (если включена опция телефона как предмета), данные о работе для показа приложений, доступных определённым профессиям, и отображение имени персонажа. Для standalone действует та же схема с четырьмя функциями. После написания адаптера для одного скрипта Agency те же функции можно использовать в остальных скриптах.

Почему это важно для ролевой игры

Телефон , самый личный реквизит персонажа. Игроки взаимодействуют с ним каждый сеанс: звонят, отправляют сообщения, проверяют баланс в банке, смотрят карту. Когда это взаимодействие ощущается как настоящий телефон, RP-сессии с использованием телефона становятся более реалистичными. Сделка с наркотиками, согласованная через SMS-приложение Agency-Phone с подтверждениями прочтения и индикаторами набора, , это качественно другая (лучше) сцена, чем та же сделка через командный чат.

Функция социальной координации , самая важная роль телефона для RP. Большинство значимых RP-событий начинается с коммуникации: кто-то связывается, договаривается о встрече, предоставляет координаты, подтверждает время. Вся эта коммуникация становится более погружённой, когда происходит через каналы в персонаже, а не через Discord или OOC чат. Приложения звонков и SMS в Agency-Phone покрывают 95% этой потребности в социальной координации нативно.

Использование ресурсов в режиме ожидания 0.00ms , это не просто техническая заметка, это то, что делает телефон возможным как всегда открытый ресурс. Скрипты, которые потребляют 0.02ms в режиме ожидания на сервере с 128 игроками, в сумме создают нагрузку в 2.56ms на всю популяцию. Вклад Agency-Phone в использование ресурсов в режиме ожидания равен нулю. Это важно для производительности сервера так же, как и любой общий ресурс: пропорционально количеству игроков.

Галерея в версии 2 и внутриигровая возможность делать скриншоты создали неожиданный RP-сценарий: фотографирование улик от лица персонажа. Полицейские персонажи делают скриншоты мест преступлений камерой телефона и делятся ими во внутреннем чате департамента. Журналисты фотографируют события и публикуют их на LifeInvader. Камера превращает телефон из средства связи в инструмент документации с реальным RP-применением.

Часто задаваемые вопросы

Могут ли телефонные номера сохраняться после вайпов сервера?

Номера телефонов хранятся в oxmysql с привязкой к идентификатору персонажа. Пока идентификатор персонажа сохраняется после вайпа, номер сохраняется. Большинство вайпов сервера очищают прогресс персонажа, но сохраняют идентификаторы, поэтому номера обычно остаются. Для полных вайпов с сбросом идентификаторов доступен экспорт сохранения номеров, который сохраняет и восстанавливает номер персонажа отдельно от основного вайпа.

Может ли полиция отслеживать звонки и сообщения в реальном времени?

Да. Включите систему отслеживания в config.lua. Полицейские с необходимым флагом разрешения могут открыть панель отслеживания и искать по номеру. Активные источники вызовов отображаются на карте. Метаданные сообщений (время, пара номеров) сохраняются в таблице логов и доступны через Agency-Admin. Полное отслеживание содержимого сообщений по умолчанию отключено из соображений конфиденциальности, включайте его явно, если правила RP вашего сервера это поддерживают.

Как телефон обрабатывает звонки, когда игрок мертв или под стражей?

Настройте состояние смерти и состояние в наручниках в config.lua. Мертвые игроки могут быть настроены так, чтобы сразу попадать на голосовую почту, иметь отключенный телефон или разрешены только экстренные вызовы. Игроки в наручниках могут быть полностью заблокированы от использования телефона или ограничены только просмотром GPS (чтобы полиция видела, что они не вызывают подкрепление). Эти состояния определяются через экспортированные функции из ваших скриптов deathscreen и handcuff.

Какие радиостанции доступны в музыкальном приложении?

Стандартный список радиостанций включает восемь URL потоков общих жанров. Добавьте свои, добавив URL потоков в Config.RadioStations. Сервера часто добавляют собственную серверную радиостанцию, где персонал транслирует новости в роли. Нет DRM или интеграции со стриминговыми сервисами, любой общедоступный URL аудиопотока работает.

Требования

  • Сервер FiveM (QBCore, ESX или standalone)
  • oxmysql
  • аккаунт cfx.re с действующей лицензией Agency-Phone
  • Опционально: Agency-LifeInvader (для интеграции социального приложения)
  • Опционально: Agency-Pad (для синхронизации данных между устройствами)

Подходящий скрипт

Готов для твоего сервера, обновления включены.

Готовы начать?

Возьмите скрипты в нашем магазине или заходите в Discord за поддержкой, обновлениями и анонсами.