Активный
- Тема Автор
- #1
Контекст
Готовое решение следит за расходом топлива служебного транспорта и автоматически уведомляет диспетчеров. сопровождает ситуационный центр связи в дельтовой зоне.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
Готовое решение следит за расходом топлива служебного транспорта и автоматически уведомляет диспетчеров. сопровождает ситуационный центр связи в дельтовой зоне.
Функциональность
- считает расход топлива по каждому авто в реальном времени
- фиксирует и обновляет персональные квоты экипажей
- выдает предупреждения при риске остановки транспорта
Внедрение
- подключить модуль к OnPlayerStateChange для фиксации посадки
- прописать лимиты квот в конфигурационном файле
- назначить ответственных за выдачу дополнительных литров
- включить уведомления в радиосвязи диспетчерской
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "TELD_KONTROL_TOPLIVA"
new Float:TELD_VehicleFuel[MAX_VEHICLES];
new TELD_FuelQuota[MAX_PLAYERS];
forward InitTELDFuelCore();
public InitTELDFuelCore()
{
for(new pid = 0; pid < MAX_PLAYERS; pid++)
{
TELD_FuelQuota[pid] = 120;
}
printf("[%s] Квоты установлены для %s.", MODULE_TAG, "дельтовая зона телеком-оператор");
return 1;
}
stock TELD_UpdateFuel(vehicleid, Float:diff)
{
TELD_VehicleFuel[vehicleid] = floatmax(0.0, TELD_VehicleFuel[vehicleid] - diff);
if(TELD_VehicleFuel[vehicleid] < 5.0)
{
new driver = TELD_GetVehicleDriver(vehicleid);
if(driver != INVALID_PLAYER_ID)
{
SendClientMessage(driver, 0xFFA500FF, "[%s] Резерв почти пуст.", MODULE_TAG);
}
}
return 1;
}
stock TELD_GetVehicleDriver(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && GetPlayerVehicleID(i) == vehicleid) return i;
}
return INVALID_PLAYER_ID;
}
CMD:fuelpanelteldl(playerid, const params[])
{
new msg[96];
format(msg, sizeof(msg), "[%s] Остаток квоты: %d л.", MODULE_TAG, TELD_FuelQuota[playerid]);
SendClientMessage(playerid, 0x1E90FFFF, msg);
return 1;
}
CMD:fuelquotateldl(playerid, const params[])
{
new target, amount;
if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, 0xDC143CFF, "Используй: /fuelquotateldl [id] [литры]");
TELD_FuelQuota[target] = amount;
SendClientMessage(target, 0x32CD32FF, "[%s] Квота обновлена до %d.", MODULE_TAG, amount);
return 1;
}
Тест-кейсы
- симуляция длительного патруля и проверка обнуления квоты
- принудительное уменьшение топлива до 5% и проверка алерта
- выдача новой квоты через команду и проверка синхронизации
Эксплуатация
- создавать недельные отчеты, экспортируя квоты в CSV
- держать шаблон команд для дежурных контролеров
- ежемесячно пересматривать допустимые лимиты
- отчеты автоматически попадают в дельтовая зона телеком-оператор