SA:MP Lua Advance SMS Messenger - улучшенный мессенджер для Advance RP

Back1ng

Известный
Автор темы
2
11
Версия SA-MP
  1. 0.3.7 (R1)
SMS Messenger - современный мессенджер для SAMP (ARP) с интерфейсом в стиле Facebook Messenger. Скрипт перехватывает SMS-сообщения из чата игры, сохраняет историю переписки и предоставляет удобный интерфейс для управления контактами.

Основные возможности
Управление сообщениями
:
- Автоматическое сохранение всех входящих и исходящих SMS
- История переписки сохраняется между сессиями (JSON)
- Группировка по контактам с сортировкой по времени
- Индикаторы непрочитанных сообщений с анимацией пульсации
- Статус прочтения (двойная галочка для исходящих)
Управление контактами:
- Создание контактов с именами (не только по номеру телефона)
- Редактирование имени и номера телефона
- Удаление контактов с подтверждением
- Онлайн-статус контактов (проверка по игрокам на сервере)
Интерфейс:
- Две цветовые темы: светлая и темная (сохраняются в настройках)
- Адаптивный интерфейс (мобильный вид при узком окне)
- Плавные анимации открытия и сообщений
- Масштабирование шрифта (0.8x - 1.5x)
Уведомления:
- Звуковые оповещения о новых сообщениях (выбор из .wav файлов)
- Возможность скрыть SMS из игрового чата

Обязательные библиотеки:
- mimgui — интерфейс ImGui (https://www.blast.hk/threads/66959/)
- dkjson — работа с JSON
- lfs (LuaFileSystem) — работа с файловой системой
- samp.events — перехват сообщений чата
- encoding — конвертация кодировок (CP1251 ↔ UTF-8)
Тестировалось на: MoonLoader v.027.0-preview3, mimgui v.025+, dkjson 2.5

Установка
1. Скопируйте smsmenu.lua в папку moonloader/
2. Создайте папку moonloader/config/smsmenu/alerts/
3. (Опционально) Добавьте .wav файлы для звуковых уведомлений в папку alerts/
4. Убедитесь, что все необходимые библиотеки установлены
5. Запустите игру

Управление
- F3 — открыть/закрыть мессенджер
- /smsm — альтернативная команда для открытия

Техническая информация:
- Язык: Lua (MoonLoader)
- Хранилище: JSON-файлы в папке config/smsmenu/

Особенности работы:
- Каждый сервер хранит отдельную базу контактов (по IP:PORT)
- Сообщения сохраняются автоматически
- Максимум 100 сообщений на контакт (старые удаляются)
- Контакты идентифицируются по имени персонажа (не только по номеру телефона)
- Автоматическое обновление номера телефона при изменении у существующего контакта

Снимок экрана 2026-02-13 010727.pngСнимок экрана 2026-02-13 010700.png
 

Вложения

  • Снимок экрана 2026-02-13 010714.png
    Снимок экрана 2026-02-13 010714.png
    63.8 KB · Просмотры: 180
  • Снимок экрана 2026-02-13 010739.png
    Снимок экрана 2026-02-13 010739.png
    50.9 KB · Просмотры: 179
  • smsmenu.lua
    100.1 KB · Просмотры: 16
Последнее редактирование:

MrCreepTon

Неизвестный
Всефорумный модератор
2,377
5,409
Советы по UI:
  • Согласуй скругления. У тебя какие-то компоненты круглые, какие-то квадратные.
  • Выравнивания: у сообщений собеседника время отправки вроде как ниже, чем текст самого сообщения. Причем у твоих сообщений вроде как ок. Ну и ещё у поля отправки сообщения отступ на согласован с сообщениями собеседника, выглядит странно.
  • Прикрути FontAwesome. Тогда не будет нужды писать Del или типа того, что щас выглядит не очень.
  • Поисковому полю контактов очень плохо. Я понимаю, что это вероятно костыль Imgui, но это сто процентов фиксится. Как вариант не рисовать овал и внутри инпут, а на сам инпут накладывать свойства скругления и тд
В остальном вроде прикольно, успехов)
Удаление контактов с подтверждением
Это лайк, хороший паттерн UX) Не знаю, реализовано ли у тебя такое, но можно сделать отправку сообщений по Enter, а не только по кнопке. А если уже это есть то ваще молодец)
 
  • Нравится
Реакции: Deps, Back1ng и minxty

Deps

Известный
282
214
Такое чувство, что дизайном занимались 2 человека: один за квадраты, другой за круги))

1771792472859.png

1. Вместо этого лучше пиши когда последний раз он был онлайн. Да, зависимость от онлайна твоего клиента появляется, но более полезная информация, чем дубль оффлайна, а ID перенести справа от никнейма
2. Аватарки можно улучшить, добавив подгрузку картинки скина из CDN Аризоны (у них готовая фотка ебала). Ванильные скины будут, а про кастомные не знаю есть ли они вообще на Адвансе. В общем, когда игрок появляется в зоне стрима, с которым ты общался (либо можно хранить сразу всех, а потом чистить мусор со временем), записывать ID скина.
3. Серый скролл выглядит чужеродно, его тоже можно стилизовать.
4. В поиске можно выводить всех игроков на сервере (либо идея с записями всех игроков зоны стрима в историю), типо глобальный поиск как в телеграмме.
5.
1771792892985.png
кажись от этого вообще смысла нету, ибо и так понятно, что сообщение прочитано, ведь был ответ. Если есть телефон в Адвансе с "Прочитано", то можно оттуда получить.
6. 1771793204408.png перенеси "Удалить","Редактировать" внутрь профиля юзера, чтобы кнопки не мозолили глаза.
7. При звонках можно создавать запись звонка. То есть, в чате будет показываться, что вот в это время ты звонил игроку и при нажатии как бы открывается "новый" скрытый чат, в котором будет только ваще общение в этом звонке.

Ну и самое главное, это поддерживать - ебануться. Мигрируй пока не поздно (если конечно хочешь развивать скрипт) на LuBu, чтобы появилась нормальная структура, модульная, чтобы глаза не разбегались при виде 2.5к строк в 1-м файле
 
  • Нравится
Реакции: Back1ng

Back1ng

Известный
Автор темы
2
11
Спасибо за комментарии. Что-то уже сделал, что-то планирую.
Залил проект на github, разделив один lua на модули в src, в релизах публикую собранный smsmenu.lua.
История звонков звучит интересно (как внедрение в чате), добавлю.


В обновлении 1.0.1:
- Исправил ошибку с диалогами после перехода на модули.
- Убрал у поиска контактов задник, теперь там только рабочее поле ввода.
- Исправил вертикальное выравнивание времени у сообщений.
- Обновил стили для скроллов в соответствии с темой.
- Убрал отметки о прочтении, сам факт доставки сообщения означает "прочтение".
 

Вложения

  • smsmenu.lua
    110.7 KB · Просмотры: 4
Последнее редактирование: