Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Подсказки по управлению | Control hints

Июн
3
1
Пользователь
Control hints

Библиотека для создания подсказок управления в виде TextDraw

preview.gif


Возможности
  • Создание подсказок с указанием клавиши и описанием действия
  • Расположение: сверху или снизу относительно предыдущей подсказки
  • Выравнивание текста: по левому или правому краю
  • Анимация удержания кнопки
  • Подсветка фона на заданное время


Скачать
  • Github
  • Закрепленный файл ниже


Примеры
Код:
CreateControlHint(playerid, 20.0, 150.0, "Inventory", "I", .show = CH_SHOW_HINT, .textAlignment = CH_TEXT_ALIGN_LEFT, .selectable = 0);
CreateControlHintBelow(playerid, 0.0, 5.0, "Phone", "P", .show = CH_SHOW_HINT, .textAlignment = CH_TEXT_ALIGN_LEFT, .selectable = 0);

Пример с анимацией
Код:
new HintInventory[MAX_PLAYERS];

HintInventory[playerid] = CreateControlHint(playerid, 20.0, 150.0, "Inventory", "I", .show = CH_SHOW_HINT, .textAlignment = CH_TEXT_ALIGN_LEFT, .selectable = 0);

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {

    if(newkeys == KEY_WALK) {
        StartControlHintAnimation(playerid, HintInventory[playerid], 0xFFFFFFFF, .speed = 15.0);
        return 1;
    }

    if(oldkeys == KEY_WALK) {

        if(IsControlHintAnimating(playerid, HintInventory[playerid])) {
            StopControlHintAnimation(playerid, HintInventory[playerid]);
        }
        return 1;
    }

    return 1;
}

forward OnPlayerControlHintAnimationEnd(playerid, hintid);
public OnPlayerControlHintAnimationEnd(playerid, hintid) {
   
    if(hintid == HintInventory[playerid]) {
        SendClientMessage(playerid, 0xFF00FFAA, "Анимация завершилась");
    }
    return 1;
}


Установка
  1. Поместите загруженный файл control-hints.inc в папку /pawno/include
  2. Подключите control-hints.inc как инклуд
Код:
#include <control-hints>


Functions
Создать подсказку

Код:
CreateControlHint(playerid, Float:x, Float:y, const description[], const control[], show = CH_SHOW_HINT, textAlignment = CH_TEXT_ALIGN_LEFT, selectable = 0)

* Float:x - X-координата
* Float:y - Y-координата
* description[] - Текст описания
* control[] - Текст кнопки управления
* show - Показать подсказку
* textAlignment - Установить выравнивание текста (CH_TEXT_ALIGN_LEFT или CH_TEXT_ALIGN_RIGHT)
* selectable - Можно ли выбрать подсказку курсором

Создать подсказку ниже предыдущей

Код:
CreateControlHintBelow(playerid, Float:xOffset, Float:yOffset, const description[], const control[], show = CH_SHOW_HINT, textAlignment = CH_TEXT_ALIGN_LEFT, selectable = 0)

* Float:xOffset - Смещение X от предыдущей подсказки
* Float:yOffset - Смещение Y от предыдущей подсказки
* description[] - Текст описания
* control[] - Текст кнопки управления
* show - Показать подсказку
* textAlignment - Установить выравнивание текста (CH_TEXT_ALIGN_LEFT или CH_TEXT_ALIGN_RIGHT)
* selectable - Можно ли выбрать подсказку курсором

Создать подсказку выше предыдущей

Код:
CreateControlHintAbove(playerid, Float:xOffset, Float:yOffset, const description[], const control[], show = CH_SHOW_HINT, textAlignment = CH_TEXT_ALIGN_LEFT, selectable = 0)

* Float:xOffset - Смещение X от предыдущей подсказки
* Float:yOffset - Смещение Y от предыдущей подсказки
* description[] - Текст описания
* control[] - Текст кнопки управления
* show - Показать подсказку
* textAlignment - Установить выравнивание текста (CH_TEXT_ALIGN_LEFT или CH_TEXT_ALIGN_RIGHT)
* selectable - Можно ли выбрать подсказку курсором

Удалить подсказку

Код:
DestroyControlHint(playerid, &hintid)

* playerid - ID игрока
* hintid - ID подсказки
* Примечание: У hintid будет установлено значение 0 после удаления

Удалить все подсказки игрока

Код:
DestroyAllControlHints(playerid)

* playerid - ID игрока

Проверить, создана ли подсказка

Код:
IsControlHintValid(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки
* Возвращает true, если подсказка создана, иначе false

Показать подсказку

Код:
ShowControlHint(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки

Скрыть подсказку

Код:
HideControlHint(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки

Проверить, видима ли подсказка

Код:
IsControlHintVisible(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки
* Возвращает true, если подсказка видима, иначе false

Скрыть все подсказки игрока

Код:
HideAllControlHints(playerid, bool:remember = false)

* playerid - ID игрока
* remember - Запомнить ли скрытое состояние
* Примечание: remember - отвечает за сохранение скрытого состояния подсказок. Если установлено true, то при вызове ShowAllControlHints будут показаны только те подсказки, которые были скрыты HideAllControlHints

Показать все подсказки игрока

Код:
ShowAllControlHints(playerid)

* playerid - ID игрока

Обновить текст подсказки

Код:
UpdateControlHintText(playerid, hintid, const description[], const control[] = "", show = CH_SHOW_HINT)

* playerid - ID игрока
* hintid - ID подсказки
* description[] - Новый текст описания
* control[] - Новый текст кнопки управления
* show - Показать или скрыть подсказку после обновления

Использовать позицию X другой подсказки в качестве основы для CreateControlHintAbove/Below

Код:
SetControlHintAnchorX(playerid, hintid, Float:offset = 0.0)

* playerid - ID игрока
* hintid - ID подсказки
* offset - Смещение X от точки

Использовать позицию Y другой подсказки в качестве основы для CreateControlHintAbove/Below

Код:
SetControlHintAnchorY(playerid, hintid, Float:offset = 0.0)

* playerid - ID игрока
* hintid - ID подсказки
* offset - Смещение Y от точки

Установить позицию подсказки

Код:
SetControlHintPosition(playerid, hintid, Float:x, Float:y, show = CH_SHOW_HINT)

* playerid - ID игрока
* hintid - ID подсказки
* x - Позиция X
* y - Позиция Y
* show - Показать или скрыть подсказку после установки позиции

Получить позицию подсказки

Код:
GetControlHintPosition(playerid, hintid, &Float:x, &Float:y, Float:xOffset = 0.0, Float:yOffset = 0.0)

* playerid - ID игрока
* hintid - ID подсказки
* x - Позиция X
* y - Позиция Y
* xOffset - Смещение X от точки
* yOffset - Смещение Y от точки

Запустить анимацию подсказки

Код:
StartControlHintAnimation(playerid, hintid, backgroundColor, Float:speed = 15.0)

* playerid - ID игрока
* hintid - ID подсказки
* backgroundColor - Цвет фона анимации
* speed - Скорость анимации
* Вызывает OnPlayerControlHintAnimationEnd когда анимация заканчивается

Остановить анимацию подсказки

Код:
StopControlHintAnimation(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки

Проверить, анимируется ли подсказка

Код:
IsControlHintAnimating(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки
* Возвращает true, если подсказка анимируется, иначе false

Подсветить фон подсказки

Код:
HighlightControlHintBackground(playerid, hintid, backgroundColor, timeout = 1000)

* playerid - ID игрока
* hintid - ID подсказки
* backgroundColor - Цвет фона для подсветки
* timeout - Длительность подсветки в миллисекундах

Callbacks
Вызывается когда анимация подсказки выполнена

Код:
public OnPlayerControlHintAnimationEnd(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки

Вызывается когда было нажатие на подсказку курсором

Код:
public OnPlayerControlHintClicked(playerid, hintid)

* playerid - ID игрока
* hintid - ID подсказки

Definition
Код:
#define CH_MAX_CONTROL_HINTS 32

#define CH_DESCRIPTION_LENGTH 128
#define CH_CONTROL_LENGTH 64

#define CH_LETTER_SIZE_X 0.1598
#define CH_LETTER_SIZE_Y 0.9199
#define CH_BACKGROUND_HEIGHT 11.5
#define CH_HINT_STACK_GAP 1.0

#define CH_BACKGROUND_COLOR 0x1e1e1eFF
#define CH_FOREGROUND_COLOR 0x353535FF

#define CH_TEXT_COLOR 0xFFFFFFFF
#define CH_DESCRIPTION_COLOR 0xFFFFFFFF

#define CH_INVALID_ID 0

#define CH_TEXT_ALIGN_LEFT 1
#define CH_TEXT_ALIGN_RIGHT 3

#define CH_HIDE_HINT 0
#define CH_SHOW_HINT 1


Автор: Bren
 

Вложения

  • control-hints.inc
    30.4 KB · Просмотры: 1
Сверху