FiveM: система телефона (LB Phone и аналоги)
RP-сервер без нормального телефона — это сервер, где игроки не могут написать друг другу сообщение, вызвать такси или получить звонок от диспетчера, не выходя из игры в Discord. Телефон — один из тех модов, без которого современный FiveM RP просто не воспринимается серьёзно, а выбор и настройка конкретного решения при этом умеет съесть не один вечер на зависимостях, конфигах и правах доступа. Разберём, как поставить и настроить телефон — на примере LB Phone как самого популярного варианта сейчас, — и куда смотреть, если решил взять аналог.
Содержание
Какой телефон выбрать: LB Phone и альтернативы
LB Phone (наследник более старого gksphone) — на сегодня один из самых функциональных и активно поддерживаемых телефонов для FiveM: готовый набор приложений (звонки, SMS, контакты, камера/галерея, заметки, банк, почта, доска объявлений, гараж и обычно ещё соцсеть-приложение — конкретный набор и названия чуть отличаются между версиями), гибкая система разрешений по job/gang и встроенная поддержка нескольких фреймворков через прослойку-бридж.
Из альтернатив на рынке чаще всего встречаются:
- qb-phone — телефон, который исторически шёл в комплекте с QBCore. Проще, меньше приложений «из коробки», зато минимум зависимостей и легче разобраться новичку.
- npwd (Non-Phone Widget Device) — телефон на React/NUI, framework-agnostic, ценится за производительность интерфейса и модульность, но требует чуть больше возни с интеграцией под конкретный сервер.
- Форки и клоны перечисленных решений под конкретные комьюнити — обычно урезанная или, наоборот, доработанная версия одного из трёх вариантов выше.
Если сервер уже стоит на ESX или QBCore и ты не готов тратить время на глубокую кастомизацию — LB Phone почти всегда закрывает задачу быстрее всего благодаря готовым бриджам под оба фреймворка. Если фреймворк самописный или сильно кастомный — вероятно, придётся писать свой бридж в любом случае, и тогда выбор телефона стоит делать по тому, насколько понятна его документация и структура кода, а не по количеству приложений. Если ты ещё не определился с ядром сервера — сначала посмотри сравнение ESX и QBCore, это сильно упростит выбор телефона.
Установка LB Phone с нуля: зависимости и структура
LB Phone требует пару обязательных зависимостей, которые нужно поставить и заускать раньше самого телефона в server.cfg:
ensure ox_lib
ensure oxmysql
ensure lb-phone
Порядок важен: ox_lib и oxmysql (или совместимая обёртка над MySQL, если на сервере используется другая) должны стартовать раньше телефона, иначе ресурс упадёт с ошибкой при инициализации. После распаковки архива с GitHub-репозитория в resources/[phone]/lb-phone первым делом накатывается SQL-файл, который идёт в комплекте с ресурсом — он создаёт таблицы под номера телефонов, контакты, сообщения, фото в галерее и переписку. Импортировать его можно через phpMyAdmin, HeidiSQL или консольный клиент:
mysql -u <user> -p <database> < lb-phone.sql
Дальше нужно указать используемый фреймворк и систему инвентаря — это делается либо прямым значением в config.lua, либо (в более новых версиях) через отдельные файлы бриджей в подпапке bridge/, каждый из которых отвечает за конкретный framework (ESX, QBCore, ox_core) или инвентарь (ox_inventory, qb-inventory и так далее). Если у тебя нестандартная связка — потребуется написать свой мини-бридж по образцу существующих: там обычно всего несколько функций вроде получения идентификатора игрока, баланса и предметов инвентаря.
После первого запуска стоит зайти на сервер тестовым персонажем и проверить, что телефон открывается по стандартной клавише (обычно M, но переопределяется в конфиге) и номер генерируется автоматически при создании персонажа — если экран телефона просто не открывается, в 90% случаев проблема в порядке ensure или в неприменённом SQL-дампе.
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверБазовая настройка config.lua
Основные параметры, которые стоит пройти сразу после установки, лежат в config.lua в корне ресурса. Типичный набор настроек (имена полей уточняй по актуальной версии, которую ставишь — между релизами они периодически меняются):
Config.Framework = 'qbcore' -- или 'esx', 'standalone'
Config.Inventory = 'ox_inventory' -- используемый инвентарь
Config.PhoneNumber = {
Length = 8,
Prefix = '555' -- необязательный префикс номера
}
Config.OpenKey = 'M' -- клавиша открытия телефона
Config.CanFlip = true -- анимация "выхватить телефон"
Config.DiscordLogs = {
Enabled = true,
Webhook = 'https://discord.com/api/webhooks/...' -- логи действий в админ-канал
}
Отдельно стоит сразу настроить логирование через Discord-вебхук — это не про недоверие к игрокам, а про то, что споры «мне не пришло сообщение» и жалобы на подозрительные звонки без логов разбирать почти невозможно. Если на сервере уже есть тикет-бот или модераторский канал в Discord, логично завести под телефон отдельный канал и вебхук, по аналогии с тем, как это делается для Discord-интеграции RP-сервера.
Также в конфиге обычно можно включать и отключать отдельные приложения списком (Config.Apps или аналогичная таблица) — если часть встроенных приложений сервера не нужна (например, встроенный маркетплейс дублирует уже стоящую отдельную систему объявлений), их проще выключить в конфиге, чем вычищать из кода.
Интеграция с банком: баланс, переводы, приложение «Банк»
Приложение банка в телефоне не хранит деньги само по себе — оно читает и изменяет баланс персонажа через тот же фреймворк, что и остальной сервер, обычно через бридж-функции вроде получения баланса счёта, снятия и зачисления средств. Если банковская система на сервере уже настроена по стандартной схеме ESX/QBCore (money/bank или cash/bank), интеграция в большинстве случаев работает из коробки сразу после того, как выбран правильный Config.Framework.
Переводы между игроками по номеру телефона — самая частая точка, где стоит перепроверить лимиты и логирование сразу после установки, а не когда кто-то попробует продюпать сервер:
Config.BankTransfer = {
Enabled = true,
MaxAmount = 50000, -- потолок за одну операцию
Cooldown = 30, -- секунд между переводами
LogToDiscord = true
}
Если экономика сервера уже настроена отдельно — стартовые балансы, зарплаты, штрафы и money sinks, — телефон в неё встраивается поверх, ничего не переопределяя: это просто ещё один интерфейс для тех же операций, что уже описаны в настройке экономики RP-сервера. Стоит только убедиться, что лимиты на перевод через телефон согласованы с лимитами в самой банковской системе, иначе игроки быстро найдут более щедрую из двух дыр.
Интеграция с работами и фракциями
Один из главных плюсов LB Phone и подобных решений — приложения можно ограничивать по job или gang прямо в конфиге, без правки основного кода телефона. Типичная схема — приложение видно только персонажам с нужной работой или во фракции:
Config.RestrictedApps = {
['dispatch'] = { jobs = {'police', 'ambulance'} },
['gang_chat'] = { gangs = {'ballas', 'families'} },
}
Диспетчерское приложение (911/CAD-панель) в самом телефоне обычно закрывает только базовую часть — уведомления и список активных вызовов; полноценная логика диспетчеризации (маркеры на карте, распределение вызовов между сменой) чаще всего живёт в отдельном ресурсе (например, qs-dispatch, cd_dispatch, ps-dispatch или их форки), а телефон просто подписывается на его события и показывает уведомления во встроенном приложении или push-баннером сверху экрана. Перед тем как встраивать диспетчер в телефон, стоит определиться с системой фракций и штатной структурой — если этот этап ещё не пройден, посмотри настройку системы фракций и банд.
Для обычных гражданских работ (таксист, курьер, механик) телефон обычно используется проще — как способ принять заказ через специальное приложение или получить GPS-метку точки назначения, без завязки на систему разрешений по job. Если система работ на сервере ещё не настроена — это отдельная задача, подробнее в статье про настройку работ (jobs) на RP-сервере: телефон в этой части выступает интерфейсом поверх уже существующей логики, а не заменяет её.
Кастомизация приложений
Рано или поздно захочется добавить что-то своё — брендированное приложение сервера, кастомный маркетплейс с другой логикой или интеграцию с внешним сайтом статистики. У LB Phone (и большинства современных телефонов) для этого есть система собственных приложений: разработчик кладёт свой NUI-код в отдельный ресурс и регистрирует его в телефоне через экспорт при старте:
-- клиентский код кастомного ресурса, регистрация нового приложения
exports['lb-phone']:AddCustomApp({
identifier = 'my_custom_app',
name = 'Моё приложение',
-- путь к иконке и NUI-разметке кастомного приложения
icon = 'nui://my_custom_app/icon.png',
})
Точный набор полей и способ регистрации стоит сверять по документации конкретной версии телефона, которую ставишь, — API между релизами иногда меняется. Общий принцип для всех NUI-based телефонов одинаков: своё приложение — это отдельный ресурс с HTML/CSS/JS-интерфейсом, который телефон встраивает в общую NUI-оболочку и монтирует в общий список иконок на рабочем столе.
Если параллельно ставишь и другие кастомные скрипты на сервер — общие грабли (конфликты идентификаторов ресурсов, порядок загрузки, версии зависимостей) разобраны в статье про установку кастомных скриптов на FiveM: те же принципы применимы и к кастомным приложениям телефона.
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Телефон не открывается по клавише M — что проверить в первую очередь?
Убедись, что ресурс запустился без ошибок в консоли (refresh + ensure lb-phone заново), что ox_lib и oxmysql стартуют раньше в server.cfg, и что SQL-дамп телефона реально импортирован в базу — без нужных таблиц ресурс часто падает молча или зависает на загрузке.
Можно ли перенести номера и переписку игроков при смене телефона на другой?
Обычно нет автоматического инструмента — структуры таблиц у разных телефонов разные. При переходе с одного решения на другое почти всегда придётся смириться с обнулением истории сообщений и контактов, либо писать миграционный SQL-скрипт вручную под конкретную пару систем.
LB Phone — платный или бесплатный?
На рынке одновременно существуют бесплатная и расширенная (платная, с дополнительными приложениями и поддержкой) версии — конкретные условия и набор функций каждой стоит уточнять на официальном ресурсе разработчика перед установкой, они периодически меняются.
Нагружает ли телефон сервер при большом онлайне?
Основная нагрузка идёт не от самого интерфейса, а от частых MySQL-запросов (сообщения, звонки, банковские операции). Если на сервере уже настроен нормальный пул подключений к базе и есть индексы на часто используемых полях, телефон не становится узким местом даже при плотном RP-онлайне.
Нужно ли что-то отдельно настраивать для голосовых звонков?
Голосовая связь через телефон обычно завязана на уже установленный голосовой ресурс (например, pma-voice или аналог) — сам телефон только инициирует канал звонка, а передачу голоса берёт на себя voice-система. Если голосовой чат ещё не настроен на сервере, это стоит сделать до интеграции звонков в телефоне.