Вещественный трекер Trace ночного режима для МЧС

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

8

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

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

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

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

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

#define MODULE_TAG "MCS_LOCKER_TRACE_NIGHT"
#define LOCKER_CAP 48

enum e_locker
{
    bool:used,
    Float:weight,
    lastUser,
    note[48]
};
new MCS_Lockers[LOCKER_CAP][e_locker];

CMD:lockertracenstatres(playerid, const params[])
{
    new slot;
    if(sscanf(params, "i", slot)) return SendClientMessage(playerid, -1, "Используй: /lockertracenstatres [ячейка]");
    if(slot < 0 || slot >= LOCKER_CAP || !MCS_Lockers[slot][used]) return SendClientMessage(playerid, 0xDC143CFF, "[%s] Ячейка пуста.", MODULE_TAG);
    new msg[128];
    format(msg, sizeof msg, "[%s] #%d | %.1f кг | %s", MODULE_TAG, slot, MCS_Lockers[slot][weight], MCS_Lockers[slot][note]);
    SendClientMessage(playerid, 0xB0E0E6FF, msg);
    return 1;
}

CMD:lockertracenctlres(playerid, const params[])
{
    new slot, mode;
    new Float:weight;
    new text[48];
    if(sscanf(params, "ii", slot, mode)) return SendClientMessage(playerid, -1, "Используй: /lockertracenctlres [ячейка] [режим 0=очистка 1=сохранить]");
    if(mode == 0)
    {
        MCS_Lockers[slot][used] = false;
        SendClientMessage(playerid, 0xFF6347FF, "[%s] Ячейка #%d очищена.", MODULE_TAG, slot);
    }
    else
    {
        if(sscanf(params, "iifs[48]", slot, mode, weight, text)) return SendClientMessage(playerid, -1, "/lockertracenctlres [ячейка] 1 [вес] [описание]");
        if(weight > 150.0) return SendClientMessage(playerid, 0xFF0000FF, "[%s] Превышен лимит.", MODULE_TAG);
        MCS_Lockers[slot][used] = true;
        MCS_Lockers[slot][weight] = weight;
        MCS_Lockers[slot][lastUser] = playerid;
        format(MCS_Lockers[slot][note], 48, "%s", text);
        SendClientMessage(playerid, 0x32CD32FF, "[%s] Ячейка #%d обновлена.", MODULE_TAG, slot);
    }
    return 1;
}

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

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

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

Сверху