Мобильный штаб-компас ночного режима для полиции

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Контекст
фиксирует координаты лагеря и контролирует присутствие держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.

Функциональность
  • отслеживает радиус зоны для временного штаба ночного контура и наносит данные на ночную сетку Watcher
  • управляет маяки Compass через панель Vector без задержек
  • прогнозирует потеря людей за периметром и заранее предупреждает дежурных офицеров

Внедрение
  • прописать ключ координат и ночные ключи доступа перед вводом
  • сверить настройку радиуса с марки Chronos
  • назначить ответственных за резервную точку и ночной резерв каналов
  • загрузить сценарии шаблон развёртывания и ночные регламенты

Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

#define MODULE_TAG "PD_HQ_COMPASS_NIGHT"

new Float:PD_HQPos[3] = {1500.0, -1700.0, 13.0};
new Float:PD_HQRadius = 35.0;

stock bool:PD_IsInside(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    return floatsqroot(floatpower(x - PD_HQPos[0], 2.0) + floatpower(y - PD_HQPos[1], 2.0)) <= PD_HQRadius;
}

CMD:hqcompassnigstatpd(playerid, const params[])
{
    new msg[128];
    format(msg, sizeof msg, "[%s] HQ: %.2f %.2f %.2f | Радиус %.1fм", MODULE_TAG, PD_HQPos[0], PD_HQPos[1], PD_HQPos[2], PD_HQRadius);
    SendClientMessage(playerid, 0x20B2AAFF, msg);
    format(msg, sizeof msg, "[%s] Вы %s внутри периметра.", MODULE_TAG, PD_IsInside(playerid) ? "уже" : "не");
    SendClientMessage(playerid, 0x20B2AAFF, msg);
    return 1;
}

CMD:hqcompassnigctlpd(playerid, const params[])
{
    new Float:x, Float:y, Float:z, Float:r;
    if(sscanf(params, "ffff", x, y, z, r)) return SendClientMessage(playerid, -1, "Используй: /hqcompassnigctlpd [x] [y] [z] [радиус]");
    PD_HQPos[0] = x;
    PD_HQPos[1] = y;
    PD_HQPos[2] = z;
    PD_HQRadius = r;
    new msg[144];
    format(msg, sizeof msg, "[%s] HQ перенесен в %.1f %.1f %.1f | R=%.1f", MODULE_TAG, x, y, z, r);
    SendClientMessageToAll(0xF0E68CFF, msg);
    return 1;
}

Тест-кейсы
  • провести испытание: перенести штаб в плотной застройке — ожидать корректного сигнала
  • смоделировать отказ: проверить попадание игрока за периметр — убедиться что резерв подхватил
  • сравнить отчёт с журнал точек и подтвердить отсутствие расхождений

Эксплуатация
  • сохранять координаты после ротации
  • сводить посещаемость по сменам
  • проводить ночные аудиты вместе с дежурных офицеров
  • держать план реагирования на потеря людей за периметром актуальным
  • отчёты автоматически попадают в полиция
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху