Электронный пропускной пункт для аэропорта

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

8

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

Контекст
Модуль управляет уровнями доступа на закрытые объекты и ведет их историю. закрывает задачи операционного центра аэропорта.

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

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

Код
Код:
#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 часа
  • рассылайте отчеты начальникам постов
  • отчеты автоматически попадают в аэропорт
 

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

Сверху