Страница 1 из 11
Форум » Программирование в Pawno » Стандартные функции » TextDrawCreate & CreatePlayerTextDraw (Всё про TextDraw'ы и что лучше использовать)
TextDrawCreate & CreatePlayerTextDraw
Добавлено 12.05.2016 в 20:10 | Сообщение №1
Сообщений: 263 Репутация: 0
Администраторы
TextDrawCreate
Создает TextDraw. TextDraw является, как заметно из названия, текстом (в основном - там могут быть блоки, спрайты и привью модели (скинов/машин/оружия/прочих предметов)) отображаемым на экране игрока.

Параметры:
(Float:x, Float:y, text[])

x — Координата X (влево/вправо) для созданного TextDraw.
y — Координата Y (вверх/вниз) для созданного TextDraw.
text[] — Текст, который будет отображаться в TextDraw. Нулевые (пустые) строки приведет к крашу, поэтому следует использовать пробел или нижнее подчёркивание, если TextDraw является не текстом.

Возвращаемые Значения:
Цитата
Возвращает ID созданного TextDraw. Идентификаторы TextDraw начинаются с 0.

Пример использования:
Код
// Эта переменная используется для хранения идентификатора TextDraw
// так что мы можем использовать её в любом месте скрипта
new Text:welcomeText;

public OnGameModeInit()
{
    // Примечание: этот textdraw создан без какого-либа форматирования.
    welcomeText = TextDrawCreate(240.0, 580.0, "Welcome to my SA-MP server");
    return 1;
}

public OnPlayerConnect(playerid)
{
    //Показываем игроку TextDraw при подключении
    TextDrawShowForPlayer(playerid, welcomeText);
}

Вариант для показа TextDraw определённым игрокам, например всем, кто имеет админку:
Код
// Эта переменная используется для хранения идентификатора TextDraw
// так что мы можем использовать её в любом месте скрипта
new Text:adminText[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    // Сканируем игроков
    for(new i, j = GetPlayerPoolSize(); i <= j; i++)
    {
        // Выделяем Админов
        if(IsPlayerAdmin(i)) {
        // Примечание: этот textdraw создан без какого-либа форматирования.
     adminText [i]= TextDrawCreate(240.0, 580.0, "Hi, Admin!");
    
     //Показываем Админам TextDraw при подключении.
     TextDrawShowForPlayer(i, adminText[i]); }
    }
}

public OnPlayerDisconnect(playerid, reason)
{
    // Сканируем игроков
    for(new i, j = GetPlayerPoolSize(); i <= j; i++)
    {
        // Выделяем Админов
        if(IsPlayerAdmin(i)) {
        // Удаляем TextDraw, созданный для игрока
        TextDrawDestroy(adminText[i]); }
    }
    return 1;
}

Важное примечание:
Если вы выбираете значения для Y меньше 1, то текст строки будет невидимым за исключением его тени.
text[] не должен быть пустым, иначе будет краш! Если вам нужен TextDraw, который ничего не показывает, то используйте " " (пробел) или _ (нижнее подчеркивание).
Если последний символ в тексте - это пробел (" "), то текст будет пустым.
Если часть текста будет находиться за пределами экрана, то цвет текста не будет отображаться, только его тень (если установлена).
Максимальная длина TextDraw - это 800 символов. Более длинный текст будет крашить клиент в старых версиях SA-MP.
Если вы используете цветовые коды (например, ~R~ ~G~) за пределами 255 символа, то клиент будет крашить при попытке отображения TextDraw.

CreatePlayerTextDraw
Цитата
Эта функция была добавлена в SA-MP 0.3e и не будет работать в более ранних версиях!

Создает TextDraw для одного игрока. Может быть использована в качестве обхода глобального лимитов обычных TextDraw.

Параметры:
(playerid, Float:x, Float:y, text[])

playerid — ID игрока, для которого необходимо создать TextDraw
x — Координата X
y — Координата Y
text[] — Текст, который будет отображаться в TextDraw

Возвращаемые Значения:
Цитата
ID созданного TextDraw

Пример использования:
Код
// Эта переменная используется для хранения идентификатора TextDraw
// так что мы можем использовать её в любом месте скрипта
new PlayerText:welcomeText[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    // Во-первых, создаём TextDraw
    welcomeText [playerid]= CreatePlayerTextDraw(playerid, 320.0, 240.0, "Welcome to my SA-MP server");

    // Теперь показываем его
    PlayerTextDrawShow(playerid, welcomeText[playerid]);
}

Советую использовать данную функцию для вывода личной информации, например скорости транспорта/вывод денег/уровня и прочего, т.к. она показывает TextDraw только одному игроку.

Примечание:
TextDraw автоматически уничтожается, когда игрок отключается.
Эта функция просто создает TextDraw, используйте PlayerTextDrawShow, чтобы показать его игроку.

Советы:
Попробуйте использовать целое число при указании позиций координат X, Y, это обеспечит лучшую совместимость на разных разрешениях экрана.
Шрифты выглядят лучше с X до Y в соотношении 1 к 4 (например, если х = 0.5, тогда Y должно быть 2).

Лимиты:
Максимум TextDrawCreate для 1 игрока — 2048
Максимум CreatePlayerTextDraw для 1 игрока — 256
Максимум спрайтов, отображаемых для 1 игрока — 100

Автор: Неизвестен


Программист любитель :)
Форум » Программирование в Pawno » Стандартные функции » TextDrawCreate & CreatePlayerTextDraw (Всё про TextDraw'ы и что лучше использовать)
Страница 1 из 11
Поиск: