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

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

8

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

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

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

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

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

#define MODULE_TAG "MUN_HQ_COMPASS_NIGHT"

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

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

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

CMD:hqcompassnigctlcity(playerid, const params[])
{
    new Float:x, Float:y, Float:z, Float:r;
    if(sscanf(params, "ffff", x, y, z, r)) return SendClientMessage(playerid, -1, "Используй: /hqcompassnigctlcity [x] [y] [z] [радиус]");
    MUN_HQPos[0] = x;
    MUN_HQPos[1] = y;
    MUN_HQPos[2] = z;
    MUN_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)

Сверху