Активный
- Тема Автор
- #1
Контекст
управляет рейсами и показывает ETA держит ночные смены в курсе каждой секунды координирует спасательные штабы.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
управляет рейсами и показывает ETA держит ночные смены в курсе каждой секунды координирует спасательные штабы.
Функциональность
- отслеживает интервалы движения для городского транспорта ночного контура и наносит данные на ночную сетку Watcher
- управляет маяки Halo через панель Transit без задержек
- прогнозирует увеличенные задержки и заранее предупреждает операторов call-центра
Внедрение
- прописать каталог остановок и ночные ключи доступа перед вводом
- сверить матрицу интервалов с марки Chronos
- назначить ответственных за лист дежурных водителей и ночной резерв каналов
- загрузить сценарии шаблон SMS и ночные регламенты
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "MCS_TRANSIT_HALO_NIGHT"
#define ROUTE_CAP 14
enum e_route_info
{
bool:active,
interval,
stops,
Float:lastX,
Float:lastY,
driver
};
new MCS_Routes[ROUTE_CAP][e_route_info];
CMD:transithalonstatres(playerid, const params[])
{
new slot;
if(sscanf(params, "i", slot)) return SendClientMessage(playerid, -1, "Используй: /transithalonstatres [маршрут]");
if(slot < 0 || slot >= ROUTE_CAP || !MCS_Routes[slot][active]) return SendClientMessage(playerid, 0xDC143CFF, "[%s] Маршрут не активен.", MODULE_TAG);
new msg[144];
format(msg, sizeof msg, "[%s] #%d | Интервал %d мин | Остановок: %d | Водитель %d", MODULE_TAG, slot, MCS_Routes[slot][interval], MCS_Routes[slot][stops], MCS_Routes[slot][driver]);
SendClientMessage(playerid, 0x87CEEBFF, msg);
return 1;
}
CMD:transithalonctlres(playerid, const params[])
{
new action[8], slot, interval, stops, driver;
new Float:x, Float:y;
if(sscanf(params, "s[8]", action)) return SendClientMessage(playerid, -1, "Используй: /transithalonctlres arm/coords/driver");
if(!strcmp(action, "arm", true))
{
if(sscanf(params, "s[8]iii", action, slot, interval, stops)) return SendClientMessage(playerid, -1, "/transithalonctlres arm [слот] [интервал] [остановок]");
MCS_Routes[slot][active] = true;
MCS_Routes[slot][interval] = interval;
MCS_Routes[slot][stops] = stops;
}
else if(!strcmp(action, "coords", true))
{
if(sscanf(params, "s[8]iff", action, slot, x, y)) return SendClientMessage(playerid, -1, "/transithalonctlres coords [слот] [x] [y]");
MCS_Routes[slot][lastX] = x;
MCS_Routes[slot][lastY] = y;
}
else if(!strcmp(action, "driver", true))
{
if(sscanf(params, "s[8]ii", action, slot, driver)) return SendClientMessage(playerid, -1, "/transithalonctlres driver [слот] [id]");
MCS_Routes[slot][driver] = driver;
}
return 1;
}
Тест-кейсы
- провести испытание: пройти маршруты по всем точкам — ожидать корректного сигнала
- смоделировать отказ: обнулить интервал и проверить уведомление — убедиться что резерв подхватил
- сравнить отчёт с реестр маршрутов и подтвердить отсутствие расхождений
Эксплуатация
- каждое утро обновлять список
- еженедельно сводить статистику
- проводить ночные аудиты вместе с операторов call-центра
- держать план реагирования на увеличенные задержки актуальным
- отчёты автоматически попадают в штаб МЧС