Вход

Просмотр полной версии : [Вопрос] Кликабельность текстдрава



PawnoNoob
21.05.2017, 00:25
Приветствую. В общем, посмотрел я пару "уроков" (хотя их так не назовёшь) и решил себе сделать кликабельный текстдрав (чисто для обучения, не более). Скачал программу (плагин?) iPLEOMAX и взялся за дело.

Создал отдельный UseBox, на него наложил текст (тоже отдельно), сделал оба кликабельными, но эффекта вообще никакого. Само собой я использовал функцию SelectTextDraw.

Решил создать обычный текстдрав и прикрепить к нему UseBox (там такая кнопочка есть), столкнулся ещё с несколькими проблемами:

Наложенный (не отдельно) UseBox не регулируется по высоте. Можно ли это как-нибудь решить?
Расширение границы этого UseBox созданием отдельного также не помогло. Используется граница наложенного (не отдельно).

Покажу наглядно, если не так выразился :fool:

http://i.imgur.com/XGKoQL9.png
Красным помечен текст и граница прикреплённого к нему UseBox (пункт 1). Кликабельным делается только та граница, помеченная красным цветом.
Зелёным же помечен дополнительный UseBox, созданный отдельно (пункт 2).

Теперь соберу в кучку вопросы, которые меня интересуют:

Как отрегулировать по высоте границу действия прикреплённого к тексту UseBox?
Если по высоте не регулируется, то как можно создать границу кликабельности отдельным UseBox?
Есть ли какие-нибудь действительно хорошие уроки по созданию кликабельных текстдравов?

DeimoS
21.05.2017, 02:05
Код покажи. У тебя у TextDrawTextSize неверные значения, скорее всего

JohnConor
21.05.2017, 11:24
Код покажи. У тебя у TextDrawTextSize неверные значения, скорее всего

А в каких пределах он должен быть? Уже наугад начал подбирать значения, бывает что работает с первого создания хорошо, а бывает что надо экспериментировать со значением

DeimoS
21.05.2017, 12:05
А в каких пределах он должен быть? Уже наугад начал подбирать значения, бывает что работает с первого создания хорошо, а бывает что надо экспериментировать со значением

Включаешь бокс > растягиваешь его до нужного размера > сохраняешь > в самом коде делаешь цвет бокса прозрачным или отключаешь (не помню точно, используют ли кликабельные текстдравы бокс)

vovandolg
21.05.2017, 12:17
А Вам не кажется что нужно сначала всю шелуху накидать(это я про бокс отдельный),
а потом поверхностно класть кликабельные тд))

PawnoNoob
21.05.2017, 14:00
Включаешь бокс > растягиваешь его до нужного размера > сохраняешь > в самом коде делаешь цвет бокса прозрачным или отключаешь (не помню точно, используют ли кликабельные текстдравы бокс)

Дело в том, что я так и делал, но в высоту этот бокс вообще никак не регулируется. И влево его вообще никак не отодвинуть, только вправо.

Long-
21.05.2017, 14:42
Дело в том, что я так и делал, но в высоту этот бокс вообще никак не регулируется. И влево его вообще никак не отодвинуть, только вправо.

Потому-что у тебя в функции TextDrawLetterSize по координате Z нулевое значение.
Немного подредактирую сообщение deimos'a

Включаешь бокс > растягиваешь его до нужного размера > сохраняешь > в самом коде просто удаляешь эту строку, далее у тебя в коде появилась еще одна функция TextDrawLetterSize, там у тебя по X есть значение, по Z - 0, устанавливаешь любое значение, можешь даже большое ибо оно всеравно не выйдет больше созданного бокса по Z координате.

PawnoNoob
21.05.2017, 14:53
Потому-что у тебя в функции TextDrawLetterSize по координате Z нулевое значение.
Немного подредактирую сообщение deimos'a

Включаешь бокс > растягиваешь его до нужного размера > сохраняешь > в самом коде просто удаляешь эту строку, далее у тебя в коде появилась еще одна функция TextDrawLetterSize, там у тебя по X есть значение, по Z - 0, устанавливаешь любое значение, можешь даже большое ибо оно всеравно не выйдет больше созданного бокса по Z координате.

А можно подробнее? (Скриншотами или же кюпримером кода)

Long-
21.05.2017, 19:23
А можно подробнее? (Скриншотами или же кюпримером кода)

Покажите ваш код создания TD, тот который хотите сделать кликабельным.

PawnoNoob
21.05.2017, 23:56
Покажите ваш код создания TD, тот который хотите сделать кликабельным.

Так, по-быстрому набросал, так как предыдущий "эксперимент" был удалён.
Вот скриншот:
http://i.imgur.com/6PT86Zk.png
В идеале я хотел бы сделать его немного больше ((по высоте) зелёный, который создан отдельно). Чёрный же был наложен к тексту, при этом я не могу отрегулировать его в высоту и влево тоже оттянуть не могу. :sorry:

Вот сам код сие "чуда":

new Text:Textdraw0;


Textdraw0 = TextDrawCreate(264.800018, 404.195556, "TEST");
TextDrawLetterSize(Textdraw0, 0.449999, 1.600000);
TextDrawTextSize(Textdraw0, 318.399963, 17.920000);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, -1);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 255);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 0);
TextDrawBackgroundColor(Textdraw0, 51);
TextDrawFont(Textdraw0, 1);
TextDrawSetProportional(Textdraw0, 1);


//Player Textdraws(Äëÿ èãðîêà):

new PlayerText:Textdraw0[MAX_PLAYERS];


Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 322.400024, 403.206665, "usebox");
PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.000000, 1.729753);
PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 240.399993, 0.000000);
PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw0[playerid], 0);
PlayerTextDrawUseBox(playerid, Textdraw0[playerid], true);
PlayerTextDrawBoxColor(playerid, Textdraw0[playerid], 564396831);
PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 0);
PlayerTextDrawFont(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetSelectable(playerid, Textdraw0[playerid], true);

Забыл для одного сделать Player, ну да ладно.:wizard:

vovandolg
22.05.2017, 00:03
Там же ещё не забывай 2 каллбека по отлову кликов, для Player и Global TD,
может ты не в том проверку поставил?

- - - Добавлено - - -


Чёрный же был наложен к тексту, при этом я не могу отрегулировать его в высоту и влево тоже оттянуть не могу.

А ты не пробовал текст выравнивать по центру?

Long-
22.05.2017, 11:31
new PlayerText:Textdraw0[MAX_PLAYERS];


Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 322.400024, 403.206665, "usebox");
PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.000000, 1.729753);
PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 240.399993, 0.000000); *Change
PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw0[playerid], 0);
//PlayerTextDrawUseBox(playerid, Textdraw0[playerid], true); *Deleted
PlayerTextDrawBoxColor(playerid, Textdraw0[playerid], 564396831);
PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 0);
PlayerTextDrawFont(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetSelectable(playerid, Textdraw0[playerid], true);

*Change - Вот и ошибка, прибавь это значение сомостоятельно т.е поставь 14.00000, и будет тебе счастье.

*Deleted - Эту строку удали, ибо она тебе не нужна, она уберет черный этот квадрат где текст, но сама кликабельность останется ибо за нее отвечает PlayerTextDrawTextSize, эти "UseBox" ты просто настраивал значения PlayerTextDrawTextSize, и все, после как настроил в коде можно эту строку удалить, надеюсь понятно объяснил.



new PlayerText:Textdraw0[MAX_PLAYERS];


Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 322.400024, 403.206665, "usebox");
PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.000000, 1.729753);
PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 240.399993, 14.000000);
PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw0[playerid], 0);
PlayerTextDrawBoxColor(playerid, Textdraw0[playerid], 564396831);
PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 0);
PlayerTextDrawFont(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetSelectable(playerid, Textdraw0[playerid], true);

PawnoNoob
22.05.2017, 12:41
*Change - Вот и ошибка, прибавь это значение сомостоятельно т.е поставь 14.00000, и будет тебе счастье.

*Deleted - Эту строку удали, ибо она тебе не нужна, она уберет черный этот квадрат где текст, но сама кликабельность останется ибо за нее отвечает PlayerTextDrawTextSize, эти "UseBox" ты просто настраивал значения PlayerTextDrawTextSize, и все, после как настроил в коде можно эту строку удалить, надеюсь понятно объяснил.



new PlayerText:Textdraw0[MAX_PLAYERS];


Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 322.400024, 403.206665, "usebox");
PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.000000, 1.729753);
PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 240.399993, 14.000000);
PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw0[playerid], 0);
PlayerTextDrawBoxColor(playerid, Textdraw0[playerid], 564396831);
PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 0);
PlayerTextDrawFont(playerid, Textdraw0[playerid], 0);
PlayerTextDrawSetSelectable(playerid, Textdraw0[playerid], true);


А можете объяснить, почему именно 14.00****? Мне ведь нужно и другие текстдравы так регулировать. А я ничего не понял:sorry:

Fallen A.
22.05.2017, 13:37
А можете объяснить, почему именно 14.00****? Мне ведь нужно и другие текстдравы так регулировать. А я ничего не понял:sorry:

Потому как есть достаточно неплохая вики для этих функций. Что мешает прочитать и разобраться?

Long-
22.05.2017, 14:00
А можете объяснить, почему именно 14.00****? Мне ведь нужно и другие текстдравы так регулировать. А я ничего не понял:sorry:

В редакторе TD такой баг что кликабельность настраивается не правильно, т.е Z координата почему то нулевая, ее всегда нужно ставить вручную, даже не кликабельность, а бокс которым ты настраиваешь кликабельность, вот он Z координату не верно ставить(всегда 0), именно ее нужно просто поднять, я всегда ставлю 27.000 - для текста это самое оно.

PawnoNoob
22.05.2017, 16:49
В редакторе TD такой баг что кликабельность настраивается не правильно, т.е Z координата почему то нулевая, ее всегда нужно ставить вручную, даже не кликабельность, а бокс которым ты настраиваешь кликабельность, вот он Z координату не верно ставить(всегда 0), именно ее нужно просто поднять, я всегда ставлю 27.000 - для текста это самое оно.

То есть значение Z можно взять из головы?

DeimoS
22.05.2017, 17:33
То есть значение Z можно взять из головы?

Нет, нужно подбирать под размер кликабельной зоны. Каким Z установишь, такой зона и будет в высоту

PawnoNoob
22.05.2017, 18:19
Нет, нужно подбирать под размер кликабельной зоны. Каким Z установишь, такой зона и будет в высоту

А можно ли как-нибудь найти эту координату Z в самом редакторе?

Long-
22.05.2017, 23:42
А можно ли как-нибудь найти эту координату Z в самом редакторе?

Когда ты юзаешь бокс, в самой игре показываются координаты, они просто в текстовом коде почему то не отображаются, а в самом редакторе при редактировании отображаются, от туда и возьми.