Данный инклуд предназначен для реализации компаса с стиле 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_TD 7 Количество TD, которое будет использоваться в Вашем компасе MIN_UICOMPASS_STEP 5 Минимальный шаг компаса MAX_UICOMPASS_STEP 15 Максимальный шаг компаса
Применение:
Создаем коллбэк для таймера.
http://tscars.narod.ru/p-w/new/compass.png
Автор: m1n1vvPHP код:
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;
}
Скачать/Репозиторий: https://github.com/m1n1vv/UICompass
Версия: v0.7