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