PDA

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



Prolific
02.04.2016, 18:01
Всем еще раз здрасте. Уже 2-ой день мучаюсь с текстдравом, раньше проблем с ними не было, сейчас начались какие-то аномалии. Прошу всех, кто заглянет в эту тему подумать, предложить ваши решения, если они будут, ведь это сегодня вас не касается, а завтра вы захотите инвентарь написать за пару часов и сядете в лужу.
Что я хочу сделать? Сделать прямоугольник кликабельным.
Суть проблемы:
1 Проблема. Создал текстдрав 5-го типа. Сделал его кликабельным. Выглядит он так:
http://i.imgur.com/xoE44mn.png?1
При нажимании мышкой на правую часть коробки коллбэк OnPlayerClickTextDraw вызывается (Там, где цифра 2 - коллбэк вызывается, там, где цифра 1 - не вызывается).
http://i.imgur.com/LgWq8dj.png?1
При переносе прямоугольника влево (уменьшение координаты X в TextDrawCreate) область кликабельности (область 2 на скрине) уменьшается (т.е. текстдрав сдвинул, а граница осталась).
Собственно код текстдрава:


inv_MainBox[1] = TextDrawCreate(52.474380, 149.333343, "LD_SPAC:white");
TextDrawLetterSize(inv_MainBox[1], 0.000000, 0.000000);
TextDrawTextSize(inv_MainBox[1], 173.821380, 268.916656);
TextDrawAlignment(inv_MainBox[1], 1);
TextDrawColor(inv_MainBox[1], -1);
TextDrawSetShadow(inv_MainBox[1], 0);
TextDrawSetOutline(inv_MainBox[1], 0);
TextDrawBackgroundColor(inv_MainBox[1], 102);
TextDrawFont(inv_MainBox[1], 5);
TextDrawSetPreviewModel(inv_MainBox[1], 19292);
TextDrawSetPreviewRot(inv_MainBox[1], 0.000000, 0.000000, 0.000000, 1.000000);
TextDrawSetSelectable(inv_MainBox[1], true);
2 Проблема. Аналогичный код текстдрава на другом моем скрипте запустился, НО, когда я кликаю на ТД, коллбэк OnPlayerClickTextDraw ВООБЩЕ не вызывается.


public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
SCM(playerid, -1, "Callback");
return 1;
}
В отчаянии игрался с return (менял на 0, убирал), ничего не помогло.
Короче прошу помощи, вроде подробно описал проблему.


P.S.
Самое главное то, что аналогичный прямоугольник справа (1-ий серый, на который накладываются текстдравы предметов) отлично функционирует. Вся его зона кликабельна, т.е. коллбэк идеально вызывается.

P.P.S.
При наведении мышки на любую часть прямоугольника он меняет цвет (как и надо), но вот коллбэк вызывается не всегда (см. выше).

ziggi
02.04.2016, 18:12
TextDrawTextSize(inv_MainBox[1], 173.821380, 268.916656);
173.821380 - это явно маловато, нужно увеличить.

Prolific
02.04.2016, 18:14
TextDrawTextSize(inv_MainBox[1], 173.821380, 268.916656);
173.821380 - это явно маловато, нужно увеличить.

P.S.
Самое главное то, что аналогичный прямоугольник справа (1-ий серый, на который накладываются текстдравы предметов) отлично функционирует. Вся его зона кликабельна, т.е. коллбэк идеально вызывается.

Вот код второго прямоугольника:

inv_MainBox[2] = TextDrawCreate(406.271026, 149.166732, "LD_SPAC:white");
TextDrawLetterSize(inv_MainBox[2], 0.000000, 0.000000);
TextDrawTextSize(inv_MainBox[2], 173.821380, 268.916656);
TextDrawAlignment(inv_MainBox[2], 1);
TextDrawSetShadow(inv_MainBox[2], 0);
TextDrawSetOutline(inv_MainBox[2], 0);
TextDrawBackgroundColor(inv_MainBox[2], 102);
TextDrawFont(inv_MainBox[2], 5);
TextDrawSetPreviewModel(inv_MainBox[2], 19292);
TextDrawSetPreviewRot(inv_MainBox[2], 0.000000, 0.000000, 0.000000, 1.000000);
TextDrawSetSelectable(inv_MainBox[2], true);

ziggi
02.04.2016, 18:21
P.S.
Самое главное то, что аналогичный прямоугольник справа (1-ий серый, на который накладываются текстдравы предметов) отлично функционирует. Вся его зона кликабельна, т.е. коллбэк идеально вызывается.

Вот код второго прямоугольника:

inv_MainBox[2] = TextDrawCreate(406.271026, 149.166732, "LD_SPAC:white");
TextDrawLetterSize(inv_MainBox[2], 0.000000, 0.000000);
TextDrawTextSize(inv_MainBox[2], 173.821380, 268.916656);
TextDrawAlignment(inv_MainBox[2], 1);
TextDrawSetShadow(inv_MainBox[2], 0);
TextDrawSetOutline(inv_MainBox[2], 0);
TextDrawBackgroundColor(inv_MainBox[2], 102);
TextDrawFont(inv_MainBox[2], 5);
TextDrawSetPreviewModel(inv_MainBox[2], 19292);
TextDrawSetPreviewRot(inv_MainBox[2], 0.000000, 0.000000, 0.000000, 1.000000);
TextDrawSetSelectable(inv_MainBox[2], true);

И что? Меняй значения в TextDrawTextSize, чтобы получить нужный тебе результат.

Prolific
02.04.2016, 18:38
Если менять там значение, прямоугольник будет растягиваться, мне нужно сохранить размеры.

Nash_Brigers
02.04.2016, 18:57
Я так понял, что фон текстдрава с изображением скина у тебя отдельно от бокса и прозрачен? Если так, то скорее всего он заезжает поверх текстдрава который кликабелен на половину.

Добавлено: Проверил - твои текстдравы рабочие.. Уверен, что твоя проблема в том, что ты сделал текстдрав с скином кликабельным и в обоих случаях нажимается он, а не боксы под ним..

Prolific
02.04.2016, 19:28
Ура, ребят, наконец все разрулилось. Оказывается я просто забыл удалить еще один такой же текстдрав, который делал для теста, а он лежал поверх этого. Спасибо Nash_Brigers, натолкнул на идею.