Активный
- Тема Автор
- #1
Контекст
контролирует каждую створку периметра и ведёт историю допуска держит ночные смены в курсе каждой секунды поддерживает оперативные группы армии.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
контролирует каждую створку периметра и ведёт историю допуска держит ночные смены в курсе каждой секунды поддерживает оперативные группы армии.
Функциональность
- отслеживает ранги допуска для периметра энергоузла ночного контура и наносит данные на ночную сетку Watcher
- управляет RFID-блоки Sentinel через панель Iris без задержек
- прогнозирует проникновения и ошибки выдачи и заранее предупреждает охранных офицеров
Внедрение
- прописать реестр ключевых точек и ночные ключи доступа перед вводом
- сверить штатные часы постов с марки Chronos
- назначить ответственных за аварийные шлюзы и ночной резерв каналов
- загрузить сценарии таблицу разблокировок и ночные регламенты
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "ARM_BEACON_LOCK_NIGHT"
new ARM_PassLevel[MAX_PLAYERS];
new ARM_LastVisit[MAX_PLAYERS];
stock ARM_Clamp(value, minv, maxv)
{
if(value < minv) return minv;
if(value > maxv) return maxv;
return value;
}
stock ARM_CanEnter(playerid, required)
{
return ARM_PassLevel[playerid] >= required;
}
CMD:beaconlocknistatarmy(playerid, const params[])
{
new msg[128];
new last = (ARM_LastVisit[playerid] == 0 ? 0 : (GetTickCount() - ARM_LastVisit[playerid]) / 60000);
format(msg, sizeof(msg), "[%s] Уровень: %d | Последний проход: %d мин назад.", MODULE_TAG, ARM_PassLevel[playerid], last);
SendClientMessage(playerid, 0x2E8B57FF, msg);
return 1;
}
CMD:beaconlocknictlarmy(playerid, const params[])
{
new target, level;
if(sscanf(params, "ui", target, level)) return SendClientMessage(playerid, -1, "Используй: /beaconlocknictlarmy [id] [уровень 0-5]");
ARM_PassLevel[target] = ARM_Clamp(level, 0, 5);
SendClientMessage(target, 0x87CEFAFF, "[%s] Доступ обновлен до %d.", MODULE_TAG, ARM_PassLevel[target]);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK)
{
ARM_LastVisit[playerid] = GetTickCount();
}
return 1;
}
Тест-кейсы
- провести испытание: создать ложный пропуск и проверить блокировку — ожидать корректного сигнала
- смоделировать отказ: перевести створку в ручной режим — убедиться что резерв подхватил
- сравнить отчёт с журнал пропусков и подтвердить отсутствие расхождений
Эксплуатация
- сохранять выгрузку пропусков каждые сутки
- сверять отчёты с журналом постов
- проводить ночные аудиты вместе с охранных офицеров
- держать план реагирования на проникновения и ошибки выдачи актуальным
- отчёты автоматически попадают в армия