shape1
shape2
shape3
shape4
shape7
shape8

Кликабельные текстдравы.


Krutihine

Участник
Пользователь
10.07.2014
546
187
0
Скриптер
В поисках чего нибудь съедобного на просторах интернета наткнулся на урок по созданию кликабельных текстдравов. То есть при нажатии на этот текстдрав будет вызываться действие.

Начнём!

Создаём переменную нашего текстдрава:
 

new Text:NAME; //Вместо NAME ваше название

В OnGameModeInit добавляем сам текстдрав:

NAME = TextDrawCreate(320.000000, 143.000000, "NAME");
TextDrawAlignment(NAME, 2);
TextDrawBackgroundColor(NAME, 255);
TextDrawFont(NAME, 2);
TextDrawLetterSize(NAME, 0.500000, 1.000000);
TextDrawColor(NAME, -1);
TextDrawSetOutline(NAME, 0);
TextDrawSetProportional(NAME, 1);
TextDrawSetShadow(NAME, 1);
TextDrawUseBox(NAME, 1);
TextDrawBoxColor(NAME, 255);
TextDrawTextSize(NAME, 45.000000, 115.000000);

Далее в OnGameModeInit делаем обычный текстдрав, кликабельным:

TextDrawSetSelectable(NAME, true);

Далее в OnGameModeExit уничтожаем их при выключении мода

TextDrawDestroy(NAME);

Вызываем наш текстдрав (это уж сами решайте когда)

TextDrawShowForPlayer(playerid, NAME);
SelectTextDraw(playerid, 0xA3B4C5FF);

Далее в public OnPlayerClickTextDraw(playerid, Text:clickedid), если нету, создаём.

public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid != INVALID_TEXT_DRAW)
{
if(clickedid == NAME)
{
// Действие если нажали NAME
}
else if(clickedid == [Следующие "кнопки"])
{
// Действие если нажал [Следующие "кнопки"]
}

TextDrawHideForPlayer(playerid, NAME);
TextDrawHideForPlayer(playerid, [Следующие "кнопки"]);
CancelSelectTextDraw(playerid);
}
return 1;
}
P.S.: Я посмотрел несколько уроков и на их основе составил свой

 
Последнее редактирование модератором:

karovas

Новичок
Пользователь
17.02.2015
3
0
0
Вопрос: а почему здесь "false" ?

Код:
TextDrawSetSelectable(NAME, false);
 

Dmitriy67Rus

Новичок
Пользователь
13.05.2014
28
3
0
@andrii, Верно заметил, если переменная стоит false , это будет означать что текстдрав не кликабелен , а если же будет true, значит кликабелен