Активный
- Тема Автор
- #1
Контекст
учитывает ячейки хранения уликов и их заполненность держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
учитывает ячейки хранения уликов и их заполненность держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
- отслеживает занятый вес для кластера хранения ночного контура и наносит данные на ночную сетку Watcher
- управляет сейф-модули Trace через панель Custody без задержек
- прогнозирует перегруз ячеек и заранее предупреждает хранителей склада
Внедрение
- прописать инвентарные карточки и ночные ключи доступа перед вводом
- сверить график пломбировки с марки Chronos
- назначить ответственных за режим блокировки и ночной резерв каналов
- загрузить сценарии регламент выдачи и ночные регламенты
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "PD_LOCKER_TRACE_NIGHT"
#define LOCKER_CAP 48
enum e_locker
{
bool:used,
Float:weight,
lastUser,
note[48]
};
new PD_Lockers[LOCKER_CAP][e_locker];
CMD:lockertracenstatpd(playerid, const params[])
{
new slot;
if(sscanf(params, "i", slot)) return SendClientMessage(playerid, -1, "Используй: /lockertracenstatpd [ячейка]");
if(slot < 0 || slot >= LOCKER_CAP || !PD_Lockers[slot][used]) return SendClientMessage(playerid, 0xDC143CFF, "[%s] Ячейка пуста.", MODULE_TAG);
new msg[128];
format(msg, sizeof msg, "[%s] #%d | %.1f кг | %s", MODULE_TAG, slot, PD_Lockers[slot][weight], PD_Lockers[slot][note]);
SendClientMessage(playerid, 0xB0E0E6FF, msg);
return 1;
}
CMD:lockertracenctlpd(playerid, const params[])
{
new slot, mode;
new Float:weight;
new text[48];
if(sscanf(params, "ii", slot, mode)) return SendClientMessage(playerid, -1, "Используй: /lockertracenctlpd [ячейка] [режим 0=очистка 1=сохранить]");
if(mode == 0)
{
PD_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, "/lockertracenctlpd [ячейка] 1 [вес] [описание]");
if(weight > 150.0) return SendClientMessage(playerid, 0xFF0000FF, "[%s] Превышен лимит.", MODULE_TAG);
PD_Lockers[slot][used] = true;
PD_Lockers[slot][weight] = weight;
PD_Lockers[slot][lastUser] = playerid;
format(PD_Lockers[slot][note], 48, "%s", text);
SendClientMessage(playerid, 0x32CD32FF, "[%s] Ячейка #%d обновлена.", MODULE_TAG, slot);
}
return 1;
}
Тест-кейсы
- провести испытание: внести предмет с превышением веса — ожидать корректного сигнала
- смоделировать отказ: сбросить пломбу ячейки — убедиться что резерв подхватил
- сравнить отчёт с реестр уликов и подтвердить отсутствие расхождений
Эксплуатация
- ежедневно выгружать журнал доступа
- еженедельно проводить ревизию
- проводить ночные аудиты вместе с хранителей склада
- держать план реагирования на перегруз ячеек актуальным
- отчёты автоматически попадают в полиция