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

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

8

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

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

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

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

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

#define MODULE_TAG "MCS_HQ_COMPASS_NIGHT"

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

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

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

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

Сверху