Просмотр полной версии : [Вопрос] TextDrawSetPreviewModel
Здравствуйте уважаемые форумчане, п-п.р. Такая проблема с 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);
В паблик клика текдрава!
if(!(_:clickedid ^ 0xFFFF))
{
TextDrawHideForPlayer(playerid, name);
SendClientMessage(playerid, -1, "Вы нажали ESC.");
}
Если я тебя правильно понял)
Spectrum
18.07.2014, 19:35
TextDrawFont(TextMenu4, 0xffffff00);
чего?
В паблик клика текдрава!
if(!(_:clickedid ^ 0xFFFF))
{
TextDrawHideForPlayer(playerid, name);
SendClientMessage(playerid, -1, "Вы нажали ESC.");
}
Если я тебя правильно понял)
Не не выходит(
Что если
CancelSelectTextDraw(playerid);
поставить не в начало а в конец кода?
Что если
CancelSelectTextDraw(playerid);
поставить не в начало а в конец кода?
Попробовал нечего, я уже все пробовал но не как :shock:
Покажите весь паблик автовызываемой функции OnPlayerClickTextDraw.
Покажите весь паблик автовызываемой функции 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);
}
это весь паблик?
это весь паблик?
А что?, что-то смущает? :D да весь
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);
}
Пробуй
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);
}
Пробуй
Теперь не закрывает вообще :)
Пробуйте удалять текстдрав, ибо при вводе команды создаётся новый текстдрав, два раза ввели команду - создалось 2 текстдрава, нажали отменить, - один текстдрав скрылся, а копия осталась ( не уверен, что всё так и есть, просто предположение ).
TextDrawHideForPlayer(playerid, TextMenu4);
на
TextDrawDestroy(TextMenu4);
Пробуйте удалять текстдрав, ибо при вводе команды создаётся новый текстдрав, два раза ввели команду - создалось 2 текстдрава, нажали отменить, - один текстдрав скрылся, а копия осталась ( не уверен, что всё так и есть, просто предположение ).
TextDrawHideForPlayer(playerid, TextMenu4);
на
TextDrawDestroy(TextMenu4);
Вообщем за помощь поставлю +, но увы не сработало, если ввести 2 раза /m как вы и сказали создается 2 копии, и удалить нельзя.
Остальные текстдравы тоже в процессе создаются? ( Я про TextDrawCreate )
Ты создаёшь TD4 прямо в команде, если она у тебя уже есть в моде, то ты можешь просто ставить её модель и поворот.
Spectrum
18.07.2014, 22:53
сделай команду, которая скрывать ТД будет, или сделай специальный ТД (типа крестика), а на ESC cделай выдачу сообщения "Нажмите на крестик или введите команду"
сделай команду, которая скрывать ТД будет, или сделай специальный ТД (типа крестика), а на 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]);
Спасибо всем кто помогал, постараюсь поставить +.
- - - Добавлено - - -
/// Тему можно закрывать..
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot