Команда измерения дистанции до игрока

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

8

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

Идея и назначение

Игрок может узнать расстояние до другого игрока по ID.

Полезно для тактики, полиции и тренеров.


Суть реализации

1. Команда /distance принимает ID цели.

2. Получаем позиции обоих игроков.

3. Считаем дистанцию по формуле и выводим её.


Реализация

Код:
CMD:distance(playerid, params[])
{
    new target;

    if(sscanf(params, "u", target))
        return SendClientMessage(playerid, -1, "Используй: /distance [id].");

    if(!IsPlayerConnected(target))
        return SendClientMessage(playerid, -1, "Игрок не найден.");

    new Float:x1, Float:y1, Float:z1;
    new Float:x2, Float:y2, Float:z2;

    GetPlayerPos(playerid, x1, y1, z1);
    GetPlayerPos(target, x2, y2, z2);

    new Float:dx = x1 - x2;
    new Float:dy = y1 - y2;

    new Float:dist = floatsqroot(dx * dx + dy * dy);

    new msg[64];

    format(msg, sizeof msg, "Расстояние до игрока: %.2f метров.", dist);
    SendClientMessage(playerid, -1, msg);

    return 1;
}


Дополнительные идеи

1. Учитывать высоту по оси Z.

2. Показывать направление на игрока стрелкой или маркером.

3. Ограничить использование команды определёнными фракциями.
 

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

Сверху