Активный
- Тема Автор
- #1
Контекст
Решение фиксирует текущие координаты штаба, проверяет присутствие и упрощает перенос лагеря. Решение используется оперативным штабом нацгвардии.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
Решение фиксирует текущие координаты штаба, проверяет присутствие и упрощает перенос лагеря. Решение используется оперативным штабом нацгвардии.
Функциональность
- хранит актуальную зону развёрнутого штаба
- вычисляет кто находится внутри рабочей окружности
- позволяет перемещать лагерь одной командой
Внедрение
- выберите ответственных за перенос лагеря
- пропишите базовую зону по умолчанию
- согласуйте радиус охвата для контроля присутствия
- добавьте проверку посещаемости в систему допуска
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "NG_MOBILE_HQ"
new Float:NG_HQPos[3] = {1500.0, -1700.0, 13.0};
new Float:NG_HQRadius = 35.0;
stock bool:NG_IsInside(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
return floatsqroot(floatpower(x - NG_HQPos[0], 2.0) + floatpower(y - NG_HQPos[1], 2.0)) <= NG_HQRadius;
}
CMD:hqstatusng(playerid, const params[])
{
new msg[128];
format(msg, sizeof msg, "[%s] HQ: %.2f %.2f %.2f | Радиус %.1fм", MODULE_TAG, NG_HQPos[0], NG_HQPos[1], NG_HQPos[2], NG_HQRadius);
SendClientMessage(playerid, 0x20B2AAFF, msg);
format(msg, sizeof msg, "[%s] Вы %s внутри периметра.", MODULE_TAG, NG_IsInside(playerid) ? "уже" : "не");
SendClientMessage(playerid, 0x20B2AAFF, msg);
return 1;
}
CMD:hqmoveng(playerid, const params[])
{
new Float:x, Float:y, Float:z, Float:r;
if(sscanf(params, "ffff", x, y, z, r)) return SendClientMessage(playerid, -1, "Используй: /hqmoveng [x] [y] [z] [радиус]");
NG_HQPos[0] = x;
NG_HQPos[1] = y;
NG_HQPos[2] = z;
NG_HQRadius = r;
new msg[144];
format(msg, sizeof msg, "[%s] HQ перенесен в %.1f %.1f %.1f | R=%.1f", MODULE_TAG, x, y, z, r);
SendClientMessageToAll(0xF0E68CFF, msg);
return 1;
}
Тест-кейсы
- переместите штаб и сравните координаты на карте
- проверьте, что игрок вне радиуса не учитывается
- вызовите перенос в движущемся транспорте для проверки защиты
Эксплуатация
- фотографируйте зону при каждом переносе для отчета
- проверяйте привязку ко времени комендантского часа
- ежедневно синхронизируйте координаты с порталом
- отчеты автоматически попадают в нацгвардия