Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include UICompass

m1n1vv

Компетентный
UICompass v0.7


Данный инклуд предназначен для реализации компаса с стиле PUBG. Он выводит нынешнее направление включая три предыдущих и последующих.

Все направления в шкале кратны максимальному шагу, MAX_UICOMPASS_STEP. Направление выводится с интервалом. Например при [41 - 47] выведет 45. Поддерживается только нечетное количество TD!

Реализация TD на вашей стороне.


  • RoundCompassDirection - округляет направление до кратного round.

    PHP:
    RoundCompassDirection(Float:angle, round);
    • Float:angle - нынешнее направление игрока
    • round - делает число кратным указанному значению
  • CreateCompassString - создает строку с направлением игрока.

    PHP:
    CreateCompassString(angle, round);
    • angle - направление игрока полученное из RoundCompassDirection
    • round - делает число кратным указанному значению
  • CompassHeadingNorth - определяет, в каком из TD будет выведено "N".

    PHP:
    CompassHeadingNorth(angle);
    • angle - направление игрока полученное из RoundCompassDirection

ДирективыПо умолчаниюОписание
MAX_UICOMPASS_TD7Количество TD, которое будет использоваться в Вашем компасе
MIN_UICOMPASS_STEP5Минимальный шаг компаса
MAX_UICOMPASS_STEP15Максимальный шаг компаса


Применение:

Создаем коллбэк для таймера.



PHP:
forward UICompassTimer(playerid);
public UICompassTimer(playerid)
{
    static const
        step_1 = MAX_UICOMPASS_STEP * 1,
        step_2 = MAX_UICOMPASS_STEP * 2,
        step_3 = MAX_UICOMPASS_STEP * 3;
        
    static
        north,
        result,
        direction,
        Float:angle;

    //Узнаем направление игрока
    GetPlayerFacingAngle(playerid, angle);

    //Получаем максимальный шаг компаса
    result = RoundCompassDirection(angle);

    //Получаем минимальный шаг компаса
    direction = RoundCompassDirection(angle, MIN_UICOMPASS_STEP);

    //Узнаем, в каком TD будет выведено "N"
    north = CompassHeadingNorth(result);

    //Три предыдущих направления
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][0], CreateCompassString(result - step_3));
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][1], CreateCompassString(result - step_2));
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][2], CreateCompassString(result - step_1));

    //Нынешнее направление
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][3], CreateCompassString(result));

    //Три последующих направления
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][4], CreateCompassString(result + step_1));
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][5], CreateCompassString(result + step_2));
    PlayerTextDrawSetString(playerid, td_uicompass[playerid][6], CreateCompassString(result + step_3));

    //Выводим направление кратное минимальному шагу
    PlayerTextDrawSetString(playerid, td__compass_dir[playerid], CreateCompassString(direction, MIN_UICOMPASS_STEP));

    //Устанавливаем всем TD изначальный цвет (Готов выслушать предложения по упрощению)
    PlayerTextDrawColor(playerid, td_uicompass[playerid][0], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][0]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][1], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][1]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][2], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][2]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][3], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][3]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][4], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][4]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][5], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][5]);
    PlayerTextDrawColor(playerid, td_uicompass[playerid][6], 0xFFFFFFFF);
    PlayerTextDrawShow(playerid, td_uicompass[playerid][6]);
    
    //Устанавливаем нужному TD желтый цвет, где будет выведено "N"
    if (0 <= north < MAX_UICOMPASS_TD)
    {
        PlayerTextDrawColor(playerid, td_uicompass[playerid][north], 0xFFFF00FF);
        PlayerTextDrawShow(playerid, td_uicompass[playerid][north]);
    }

    return 1;
}
Версия: v0.7
Автор: m1n1vv
Скачать/Репозиторий:
 
Последнее редактирование:
Сверху Снизу