PDA

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



Dima_Tushin
06.01.2017, 13:12
Здравствуйте делал регистрацию с выбором скина на TextDraw и столкнулся с такой проблемой.
Когда выбираешь по Стрелочка < | > скин вызывается 2 действие т.е если я навел на Стрелочка ( > ) то у меня вызывается кнопка Select ( Выбор ) как сделать так чтобы когда навел на ( < ) кнопка работала именно налево и не какие другие TextDraw не совмещались можно так сказать.

На фото я навел на стрелку ( > ) и у меня загорается ( > ) и ( Select ) и вызывается кнопка не та ( > ) а ( Select ) как сделать чтобы именно загоралась на ту на которую навел и работало нормально вот сколько раз сталкивался всегда такая фигня была. Помогите может кто сталкивался.

А когда навел на левую стрелку все работает как должно

http://ihost.pro-pawn.ru/image.php?dt=DM7O (http://ihost.pro-pawn.ru/?pt=DM7O)

http://ihost.pro-pawn.ru/image.php?dt=RRXU (http://ihost.pro-pawn.ru/?pt=RRXU)

vovandolg
06.01.2017, 13:43
http://risovach.ru/upload/2013/12/mem/leonid-arkadevich-nedovolen-chto-_37454237_orig_.jpeg

а код где))

qwezert
06.01.2017, 13:43
У тебя кривой бокс для текстдрава. Кликабельность определяется границами бокса, а у тебя он походу растянут. Нужно отредактировать текстдрав стрелочки и уменьшить бокс до нужных размеров.

DeimoS
06.01.2017, 14:06
TextDrawTextSize/TextDrawLetterSize

Dima_Tushin
06.01.2017, 16:18
Сейчас попробуем

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

Сам код:


new Text:SelectKnop[2];
new Text:SelectPlayer;
new Text:CancelPlayer;
Выбор пола

TextDrawShowForPlayer(playerid, SelectPlayer);
TextDrawShowForPlayer(playerid, SelectKnop[0]);//Показали 2 стрелки < | >
TextDrawShowForPlayer(playerid, SelectKnop[1]);//Показали 2 стрелки < | >
//TextDrawShowForPlayer(playerid, CancelPlayer);
SelectTextDraw(playerid, 0x20A9FFAA);//Включили режим управление мышкой

public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(_:clickedid != _:INVALID_TEXT_DRAW)
{
if(clickedid == SelectKnop[0])
{
switch(PlayerInfo[playerid][pSex])
{
case 1:
{
TogglePlayerControllable(playerid, 0);
ChangeSkin[playerid]--;
if(ChangeSkin[playerid] <= 0) ChangeSkin[playerid] = 10;
SetPlayerSkin(playerid, SkinMen[ChangeSkin[playerid]]);
}
case 2:
{
TogglePlayerControllable(playerid, 0);
ChangeSkin[playerid]--;
if(ChangeSkin[playerid] <= 0) ChangeSkin[playerid] = 6;
SetPlayerSkin(playerid, SkinMale[ChangeSkin[playerid]]);
}
}
return 1;
}
if(clickedid == SelectKnop[1])
{
switch(PlayerInfo[playerid][pSex])
{
case 1:
{
TogglePlayerControllable(playerid, 0);
ChangeSkin[playerid]++;
if(ChangeSkin[playerid] >= 11) ChangeSkin[playerid] = 0;
SetPlayerSkin(playerid, SkinMen[ChangeSkin[playerid]]);
}
case 2:
{
TogglePlayerControllable(playerid, 0);
ChangeSkin[playerid]++;
if(ChangeSkin[playerid] >= 7) ChangeSkin[playerid] = 0;
SetPlayerSkin(playerid, SkinMale[ChangeSkin[playerid]]);
}
}
return 1;
}
if(clickedid == SelectPlayer)
{
PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
PlayerInfo[playerid][pTut] = 1;
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, COLOR_WHITE, "Поздравляем Вас с успешной регистрацией!");
PlayerPlaySound(playerid, 1069, 0.0, 0.0, 0.0);
SetSpawnInfo(playerid, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
for(new i = 0; i < 2; i++) TextDrawHideForPlayer(playerid, SelectKnop[i]);
TextDrawHideForPlayer(playerid, SelectPlayer);
CancelSelectTextDraw(playerid);
SpawnPlayer(playerid);
SaveAkk(playerid);
return 1;
}
}
return 1;
}

stock LoadTextDraws()
{
SelectPlayer = TextDrawCreate(278.750000, 375.083312, "Select");
TextDrawLetterSize(SelectPlayer, 0.449999, 1.600000);
TextDrawAlignment(SelectPlayer, 1);
TextDrawColor(SelectPlayer, -1);
TextDrawSetShadow(SelectPlayer, 0);
TextDrawSetOutline(SelectPlayer, 1);
TextDrawBackgroundColor(SelectPlayer, 51);
TextDrawFont(SelectPlayer, 1);
TextDrawSetProportional(SelectPlayer, 1);
TextDrawSetSelectable(SelectPlayer, 1);

CancelPlayer = TextDrawCreate(276.250000, 404.249969, "Cancel");
TextDrawLetterSize(CancelPlayer, 0.449999, 1.600000);
TextDrawAlignment(CancelPlayer, 1);
TextDrawColor(CancelPlayer, -1);
TextDrawSetShadow(CancelPlayer, 0);
TextDrawSetOutline(CancelPlayer, 1);
TextDrawBackgroundColor(CancelPlayer, 51);
TextDrawFont(CancelPlayer, 1);
TextDrawSetProportional(CancelPlayer, 1);
TextDrawSetSelectable(CancelPlayer, 1);

SelectKnop[0] = TextDrawCreate(163.750000, 366.333435, "LD_BEAT:left");
SelectKnop[1] = TextDrawCreate(424.375000, 366.333374, "LD_BEAT:right");
for(new i = 0; i < 2; i++)
{
TextDrawLetterSize(SelectKnop[i], 0.000000, 0.000000);
TextDrawTextSize(SelectKnop[i], 21.875000, 23.916662);
TextDrawAlignment(SelectKnop[i], 1);
TextDrawColor(SelectKnop[i], -1);
TextDrawSetShadow(SelectKnop[i], 0);
TextDrawSetOutline(SelectKnop[i], 0);
TextDrawFont(SelectKnop[i], 4);
TextDrawSetSelectable(SelectKnop[i], 1);
}
return 1;
}

DeimoS
06.01.2017, 16:21
И что нам с ним делать? За тебя подобрать координаты для TextDrawTextSize?

Dima_Tushin
06.01.2017, 16:25
нет я понял что за фигня меня попросили код я вам дал DeimoS не на езжай я понял что нужно делать) сейчас попробую изменить и напишу решил я свой вопрос/ошибку или нет)

DeimoS
06.01.2017, 17:00
Если ты создаёшь текстдрав через какой-либо редактор, то гораздо проще подобрать координаты, как сказали выше, с использованием бокса. И уже после настройки размеров можно бокс спокойно отключать: TextDrawTextSize примет нужные координаты в любом случае (ну если редактор нормальный)

Dima_Tushin
06.01.2017, 17:58
не могу исправить может я не так что то делаю сделайте кому не трудно пример чтобы я понял как это делать!

vovandolg
06.01.2017, 18:08
не могу исправить может я не так что то делаю сделайте кому не трудно пример чтобы я понял как это делать!
Скачай редактор для TD и прочитай пост выше.

DeimoS
06.01.2017, 18:16
Да какой там может быть пример?
Есть TextDrawTextSize.
Вторым параметром указывается размер кликабельной зоны по координате X (отсчёт идёт от координаты создания текстдрава)
Третьим - по координате Y.
Укажешь там 5 и у тебя получится квадрат 5 на 5. Укажешь 5 и 10 - прямоугольник 5 на 10.
Либо подбирай вручную, либо используй редакторы, типа iPLEOMAX и подбирай координаты с помощью боксов.
В одном я лишь неправ был - бокс нужно оставлять включенным. Просто нужно делать прозрачным его.

Как-то так у тебя получится

SelectKnop[0] = TextDrawCreate(163.750000, 366.333435, "LD_BEAT:left");
TextDrawTextSize(SelectKnop[0], 21.875000, 23.916662);//Размер указывай тут

SelectKnop[1] = TextDrawCreate(424.375000, 366.333374, "LD_BEAT:right");
TextDrawTextSize(SelectKnop[1], 21.875000, 23.916662);//Размер указывай тут
for(new i = 0; i < 2; i++)
{
TextDrawLetterSize(SelectKnop[i], 0.000000, 0.000000);
TextDrawAlignment(SelectKnop[i], 1);
TextDrawColor(SelectKnop[i], -1);
TextDrawSetShadow(SelectKnop[i], 0);
TextDrawSetOutline(SelectKnop[i], 0);
TextDrawFont(SelectKnop[i], 4);
TextDrawSetSelectable(SelectKnop[i], 1);
TextDrawUseBox(SelectKnop[i], true);
TextDrawBoxColor(SelectKnop[i], 0);
}

Вполне возможно, кстати, что уже сейчас всё будет работать как надо

Dima_Tushin
07.01.2017, 11:29
Да какой там может быть пример?
Есть TextDrawTextSize.
Вторым параметром указывается размер кликабельной зоны по координате X (отсчёт идёт от координаты создания текстдрава)
Третьим - по координате Y.
Укажешь там 5 и у тебя получится квадрат 5 на 5. Укажешь 5 и 10 - прямоугольник 5 на 10.
Либо подбирай вручную, либо используй редакторы, типа iPLEOMAX и подбирай координаты с помощью боксов.
В одном я лишь неправ был - бокс нужно оставлять включенным. Просто нужно делать прозрачным его.

Как-то так у тебя получится

SelectKnop[0] = TextDrawCreate(163.750000, 366.333435, "LD_BEAT:left");
TextDrawTextSize(SelectKnop[0], 21.875000, 23.916662);//Размер указывай тут

SelectKnop[1] = TextDrawCreate(424.375000, 366.333374, "LD_BEAT:right");
TextDrawTextSize(SelectKnop[1], 21.875000, 23.916662);//Размер указывай тут
for(new i = 0; i < 2; i++)
{
TextDrawLetterSize(SelectKnop[i], 0.000000, 0.000000);
TextDrawAlignment(SelectKnop[i], 1);
TextDrawColor(SelectKnop[i], -1);
TextDrawSetShadow(SelectKnop[i], 0);
TextDrawSetOutline(SelectKnop[i], 0);
TextDrawFont(SelectKnop[i], 4);
TextDrawSetSelectable(SelectKnop[i], 1);
TextDrawUseBox(SelectKnop[i], true);
TextDrawBoxColor(SelectKnop[i], 0);
}

Все я теперь допетрил как делать спасибо всем за помощь теперь глупых вопросов не будит на счет этого)))