PDA

Просмотр полной версии : [Вопрос] TextDrawSetPreviewModel



Айболит
18.07.2014, 18:54
Здравствуйте уважаемые форумчане, п-п.р. Такая проблема с TextDrawSetPreviewModel, что если нажать ESP, то не закрывает превью игрока, а хотя остальные нормально закрываются. http://i.imgur.com/Zjh69KU.png
Помогите пожалуйста.

Функция вызова.

if (strcmp("/m", cmdtext, true, 10) == 0)
{

TextMenu4 = TextDrawCreate(171.000000, 132.000000, "New Textdraw");
TextDrawFont(TextMenu4, TEXT_DRAW_FONT_MODEL_PREVIEW);
TextDrawLetterSize(TextMenu4, 0.500000, 1.000000);
TextDrawSetPreviewModel(TextMenu4,Player[playerid][pSkin]);
TextDrawTextSize(TextMenu4, -191.000000, 194.000000);
TextDrawSetPreviewRot( TextMenu4, 0, 0, -30, 1); // вращение обьекта
TextDrawBackgroundColor(TextMenu4, 0x00000000);
TextDrawShowForPlayer(playerid, TextMenu0);// показываем TD игроку
TextDrawShowForPlayer(playerid, TextMenu1);// показываем TD игроку
TextDrawShowForPlayer(playerid, TextMenu2);// показываем TD игроку
TextDrawShowForPlayer(playerid, TextMenu3);// показываем TD игроку
TextDrawShowForPlayer(playerid, TextMenu4);// показываем TD игроку
TextDrawShowForPlayer(playerid, TextMenuClose);// показываем TD игроку
SelectTextDraw(playerid, -1); //
return 1;
}

Функция закрытие

CancelSelectTextDraw(playerid);
SendClientMessage(playerid, -1, "Вы закрыли меню");
ShowPlayerDialog(playerid, -1, 0, " ", " ", " ", "");
TextDrawHideForPlayer(playerid, TextMenu0);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu1);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu2);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu3);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu4);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenuClose);// скрывает TD игроку
TextDrawFont(TextMenu4, 0xffffff00);

DmX
18.07.2014, 19:29
В паблик клика текдрава!


if(!(_:clickedid ^ 0xFFFF))
{
TextDrawHideForPlayer(playerid, name);
SendClientMessage(playerid, -1, "Вы нажали ESC.");
}

Если я тебя правильно понял)

Spectrum
18.07.2014, 19:35
TextDrawFont(TextMenu4, 0xffffff00);
чего?

Айболит
18.07.2014, 19:44
В паблик клика текдрава!


if(!(_:clickedid ^ 0xFFFF))
{
TextDrawHideForPlayer(playerid, name);
SendClientMessage(playerid, -1, "Вы нажали ESC.");
}

Если я тебя правильно понял)

Не не выходит(

L0ndl3m
18.07.2014, 19:53
Что если

CancelSelectTextDraw(playerid);
поставить не в начало а в конец кода?

Айболит
18.07.2014, 20:01
Что если

CancelSelectTextDraw(playerid);
поставить не в начало а в конец кода?

Попробовал нечего, я уже все пробовал но не как :shock:

L0ndl3m
18.07.2014, 20:03
Покажите весь паблик автовызываемой функции OnPlayerClickTextDraw.

Айболит
18.07.2014, 20:13
Покажите весь паблик автовызываемой функции OnPlayerClickTextDraw.




if(_:clickedid == INVALID_TEXT_DRAW)
{
if(Player[playerid][pTextMenu] == 1)
{
SendClientMessage(playerid, -1, "Вы закрыли меню");
ShowPlayerDialog(playerid, -1, 0, " ", " ", " ", "");
TextDrawHideForPlayer(playerid, TextMenu0);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu1);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu2);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu3);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu4);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenuClose);// скрывает TD игроку
TextDrawFont(TextMenu4, 0xffffff00);
Player[playerid][pTextMenu] = 0;
CancelSelectTextDraw(playerid);
}

Spectrum
18.07.2014, 20:15
if(_:clickedid == INVALID_TEXT_DRAW)
{
if(Player[playerid][pTextMenu] == 1)
{
SendClientMessage(playerid, -1, "Вы закрыли меню");
ShowPlayerDialog(playerid, -1, 0, " ", " ", " ", "");
TextDrawHideForPlayer(playerid, TextMenu0);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu1);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu2);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu3);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu4);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenuClose);// скрывает TD игроку
TextDrawFont(TextMenu4, 0xffffff00);
Player[playerid][pTextMenu] = 0;
CancelSelectTextDraw(playerid);
}

это весь паблик?

Айболит
18.07.2014, 20:22
это весь паблик?

А что?, что-то смущает? :D да весь

MR_BEN
18.07.2014, 21:11
if(_:clickedid != INVALID_TEXT_DRAW)
{
if(Player[playerid][pTextMenu] == 1)
{
SendClientMessage(playerid, -1, "Вы закрыли меню");
ShowPlayerDialog(playerid, -1, 0, " ", " ", " ", "");
TextDrawHideForPlayer(playerid, TextMenu0);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu1);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu2);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu3);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu4);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenuClose);// скрывает TD игроку
TextDrawFont(TextMenu4, 0xffffff00);
Player[playerid][pTextMenu] = 0;
CancelSelectTextDraw(playerid);
}

Пробуй

Айболит
18.07.2014, 21:16
if(_:clickedid != INVALID_TEXT_DRAW)
{
if(Player[playerid][pTextMenu] == 1)
{
SendClientMessage(playerid, -1, "Вы закрыли меню");
ShowPlayerDialog(playerid, -1, 0, " ", " ", " ", "");
TextDrawHideForPlayer(playerid, TextMenu0);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu1);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu2);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu3);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenu4);// скрывает TD игроку
TextDrawHideForPlayer(playerid, TextMenuClose);// скрывает TD игроку
TextDrawFont(TextMenu4, 0xffffff00);
Player[playerid][pTextMenu] = 0;
CancelSelectTextDraw(playerid);
}

Пробуй

Теперь не закрывает вообще :)

MR_BEN
18.07.2014, 21:18
Не имею понятия:(

L0ndl3m
18.07.2014, 21:21
Пробуйте удалять текстдрав, ибо при вводе команды создаётся новый текстдрав, два раза ввели команду - создалось 2 текстдрава, нажали отменить, - один текстдрав скрылся, а копия осталась ( не уверен, что всё так и есть, просто предположение ).


TextDrawHideForPlayer(playerid, TextMenu4);
на

TextDrawDestroy(TextMenu4);

Айболит
18.07.2014, 21:42
Пробуйте удалять текстдрав, ибо при вводе команды создаётся новый текстдрав, два раза ввели команду - создалось 2 текстдрава, нажали отменить, - один текстдрав скрылся, а копия осталась ( не уверен, что всё так и есть, просто предположение ).


TextDrawHideForPlayer(playerid, TextMenu4);
на

TextDrawDestroy(TextMenu4);

Вообщем за помощь поставлю +, но увы не сработало, если ввести 2 раза /m как вы и сказали создается 2 копии, и удалить нельзя.

L0ndl3m
18.07.2014, 22:22
Остальные текстдравы тоже в процессе создаются? ( Я про TextDrawCreate )

MR_BEN
18.07.2014, 22:23
Ты создаёшь TD4 прямо в команде, если она у тебя уже есть в моде, то ты можешь просто ставить её модель и поворот.

Spectrum
18.07.2014, 22:53
сделай команду, которая скрывать ТД будет, или сделай специальный ТД (типа крестика), а на ESC cделай выдачу сообщения "Нажмите на крестик или введите команду"

Айболит
19.07.2014, 12:23
сделай команду, которая скрывать ТД будет, или сделай специальный ТД (типа крестика), а на ESC cделай выдачу сообщения "Нажмите на крестик или введите команду"

У меня это и есть, я же не такой уже глупый.

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


Остальные текстдравы тоже в процессе создаются? ( Я про TextDrawCreate )

Не только Превью игрока, а остальные создается при включение сервера, но показывает только при команде.

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

Ура, ну не прошло и 3 лет как я решил данную проблему, вообщем сделал вот так :

OnGameModeInit()



////TextDraw//
// 0xffffff00 Прозрачный фон
TextMenu4 = TextDrawCreate(171.000000, 132.000000, "New Textdraw");
TextDrawFont(TextMenu4, TEXT_DRAW_FONT_MODEL_PREVIEW);
TextDrawLetterSize(TextMenu4, 0.500000, 1.000000);
TextDrawTextSize(TextMenu4, -191.000000, 194.000000);
TextDrawSetPreviewRot( TextMenu4, 0, 0, -30, 1); // вращение объекта
TextDrawBackgroundColor(TextMenu4, 0x00000000);

А в команде просто сделал вот так


TextDrawFont(TextMenu4, TEXT_DRAW_FONT_MODEL_PREVIEW);
TextDrawSetPreviewModel(TextMenu4,Player[playerid][pSkin]);

Спасибо всем кто помогал, постараюсь поставить +.

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

/// Тему можно закрывать..