Настольный справочник и пошаговый ассистент по законодательству для сотрудников гос-фракций GTA5 RP (Majestic, сервер Memphis).
Windows (HUD-оверлей поверх игры) · iPhone (Flutter, ipa)
в комплекте актуальная база Memphis: 1400+ статей из 10 документов ·
58 регрессионных тестов · read-only, с клиентом игры не взаимодействует
Новичок в гос-фракции не знает законодательную базу: за неправильное задержание наказывают и адвокаты, и прокуратура, и администрация. Держать в голове 1400 статей, восемь процессуальных таймеров, порядок Миранды, правила обыска и потолки сроков невозможно, а лезть в форум посреди задержания некогда.
MZakon решает это иначе: он знает кодексы сам и ведёт сотрудника за руку. Добавил статьи, которые собираешься вменить, и получил готовый план конкретно под это дело: с чего начать, что сказать дословно, что изъять, куда везти и сколько просить в меню ареста.
| Протокол по статьям | Штрафной исход | Мастер для новичка |
|---|---|---|
![]() |
![]() |
![]() |
Главная фича. Из статей обвинительного листа строится пошаговый todo-план:
- Исход определяется сам: в листе только дорожные и административные составы (сроков там нет) - это штрафной протокол, никакого ареста и КПЗ; есть уголовные - арестный, с полной процедурой.
- Блоки по составам: перестрелка и подкрепление встают ДО наручников, проверка добровольной сдачи оружия и наркотиков - до обыска, экономика и должностные - после. Покрыты все главы УК: оружие, наркотики, угон, похищения, собственность, коррупция, побег, браконьерство и далее.
- Автоконтекст: статьи о должностных преступлениях сами включают обязательную процедуру задержания гос.служащего (уведомление руководства и прокурора с таймерами). Что из статей не выводится, включается чипами: ограбление, маска, задержан гос.служащий.
- Доставка и место отбывания: физически задержанного всегда везут в КПЗ (любое силовое: LSPD, LSCSD, FIB). При суммарном сроке от 3 лет протокол подскажет выбрать федеральную тюрьму в меню ареста - туда осуждённого телепортирует система. Порог - из кодекса, со ссылкой.
- Фраза задержания генерируется из листа: "Вы задержаны по подозрению в совершении: посягательство на жизнь сотрудника (УК ст.17.1); ..." - одна кнопка, скопировал, сказал в голос.
- Отметка шага запускает связанный процессуальный таймер и пишется в локальный журнал сессии.
Готовые сценарии для новичка: перестрелка на трассе, остановка транспорта, системная угонка, лицензии и документы, маска, задержанный гос.служащий, проникновение на объект. Каждый шаг: что сделать, что сказать дословно (включая Миранду из кодекса), какую статью вменить кнопкой. Блок "на что давит адвокат" в каждом сценарии.
Калькулятор итога: суммарный срок с потолком из УК, минуты посадки (механика сервера, честно помечена как не-закон), уровень розыска, залог, диапазон штрафов, юрисдикция, предупреждения о спорных местах. Рапорт о задержании с хронологией - в буфер обмена одной кнопкой.
Код, номер, часть, кодовые слова игрового жаргона (около 40: ствол, каф, угонка, состав, оборона...), русская морфология, буст совпадений в заголовке. Пустой результат честно говорит "не найдена", а не подсовывает похожее. Полные тексты всех документов читаются по главам.
33 типовых вопроса адвоката, сгруппированных по тактикам: элементы состава, доказательства, процедура, применение силы, освобождение. На каждый - ответ со ссылками на действующие нормы (все ссылки проверены тестами).
- Глобальный хоткей отмечает текущий шаг протокола или мастера прямо из игры, окно листается к нужной карточке само.
- Компакт-режим: узкая полоса поверх игры для одного монитора.
- Процессуальные таймеры со звуковой индикацией просрочки видны из любой вкладки.
- Иконка в трее, прозрачность окна колесом мыши, настраиваемые бинды.
- Избранные статьи переживают обновление кодексов.
Windows: страница Releases - скачай MZakon.exe
свежей версии. Один файл, установка не нужна. Логи и рапорты пишутся в
папку logs/ рядом с exe.
iPhone: там же лежит неподписанный MZakon.ipa - ставится через
Sideloadly или AltStore с бесплатным Apple ID. Версия под Android в планах.
data/raw/*.txt тексты законов (вставляются вручную, см. ниже)
|
parse_law_text.py парсер: статьи, части, главы, приоритеты, санкции
|
full_codes.json все статьи <- поисковый индекс
|
build_kb.py вывод ops-слоя ИЗ ТЕКСТА кодексов
|
knowledge_base.json таймеры, Миранда, залог, потолки - каждое значение
| хранит ссылку на статью-источник
+-- десктоп (tkinter HUD)
+-- build_flutter_data.py -> data.json -> мобильная версия (Flutter)
Принципы:
- Ничего не захардкожено. Потолок срока, уровень розыска за год, сумма залога, текст Миранды - всё извлекается из текста законов. Поменялся кодекс - пересобрал базу, приложение считает по-новому.
- Не выдумывать. Если значение не извлеклось из текста, оно пропускается с предупреждением, а не подставляется "по памяти". Пустой поиск возвращает "не найдена". Каждая ссылка на статью в сценариях, протоколе и контр-адвокате проверяется тестом против действующей базы.
- Игровое отдельно от закона. Конверсия лет в минуты посадки, эпинефрин,
рация - механики сервера. Они живут в отдельном файле с пометкой
codified: falseи в интерфейсе подписаны "механика, не закон". - Read-only. Приложение не читает память игры, не шлёт в клиент ни нажатия, ни текст. Глобальные хоткеи только слушают клавиатуру, и есть safe-режим, где не ставится даже слушающий хук.
58 регрессионных тестов покрывают базу законов, а не только код: каждый закрывает реальный баг, найденный на живом тексте форума (части статей слипались, звёзды приоритета читались из прозы, комментарии клеились к чужой статье, диапазон "от 1 до 5 звёзд" считался шестью звёздами). Обновление законов прогоняет их автоматически: если форум поменял формат и парсер начал терять данные, падает тест, а не сотрудник на задержании.
База законов Memphis уже в комплекте - ничего заполнять не нужно. Когда законодательство обновится (или для другого сервера Majestic), тексты вставляются вручную, форум за авторизацией. Два пути:
- Из приложения: Настройки -> "Сервер и база законов" -> выбери кодекс, скопируй текст закона с форума, кнопка "Импорт из буфера". Работает и в собранном exe.
- Файлами: положи тексты в
data/raw/по инструкции data/raw/README.md и запустиpython tools/update_laws.py- пересборка с прогоном тестов.
Там же в настройках задаётся имя сервера: база подходит любому серверу Majestic с тем же законодательством штата.
pip install -r requirements.txt
python -m src.main # запуск HUD
python -m pytest tests -q # тесты
python tools/build_exe.py # -> dist/MZakon.exe (PyInstaller, onefile)Мобильная версия (Flutter):
python tools/build_flutter_data.py
cd app
flutter create --platforms=ios --project-name mzakon .
flutter pub get
flutter build ios --release --no-codesignCI на каждый push в main гоняет тесты и flutter analyze; git-тег vX.Y.Z
собирает exe и ipa и публикует релиз этой версии.
| Слой | Технологии |
|---|---|
| Десктоп | Python 3.12, tkinter (кастомная тема), pystray, Pillow, PyInstaller |
| Мобильный | Flutter / Dart, Material 3 |
| Данные | Собственный regex-парсер форумных текстов, JSON |
| Качество | pytest (58 регрессий на законодательную базу), GitHub Actions |
Дизайн: тёмная тема "encrypted terminal" - угольный фон, волосяные рамки, единственный акцентный цвет Signal Lime, моноширинные номера статей.
Фан-проект, не аффилирован с Majestic RP. Инструмент только читает и показывает - не автоматизирует игру. Тексты законов принадлежат их авторам на форуме проекта и в репозиторий не входят; здесь только парсер и производная база для работы приложения. Спорные нормы проверяй по первоисточнику: форум всегда прав.
MIT - LICENSE.



