|
Форум » Программирование в Pawno » Стандартные функции » TextDrawCreate & CreatePlayerTextDraw (Всё про TextDraw'ы и что лучше использовать) |
TextDrawCreate & CreatePlayerTextDraw |
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 Автор: Неизвестен Программист любитель :) |
| |||
| |||