PDA

Просмотр полной версии : [Вопрос] Почему срабатывает OnPlayerCLickTextDraw?



verteich
18.06.2019, 15:18
Если открыт текстдрав телефона и открыть через команду инвентарь, то закрывается текстдрав телефона и создается текстдрав инвентаря
Но если в OnPlayerClickTextDraw вставить проверку на ESC, то тогда инвентарь тоже закрывается, хотя ESC не был нажат.
if(_:clickedid == INVALID_TEXT_DRAW)

DeimoS
18.06.2019, 15:31
Потому что ты для закрытия вызываешь CancelSelectTextDraw (https://wiki.sa-mp.com/wiki/CancelSelectTextDraw), которая, в свою очередь:

*This function calls OnPlayerClickTextDraw with INVALID_TEXT_DRAW (65535). Using this function inside OnPlayerClickTextDraw without catching this case will cause clients to go into an infinite loop.

verteich
18.06.2019, 15:36
Потому что ты для закрытия вызываешь CancelSelectTextDraw (https://wiki.sa-mp.com/wiki/CancelSelectTextDraw), которая, в свою очередь:

Благодарю, убрав функцию CancelSelectTextDraw, все заработало как надо.

DeimoS
18.06.2019, 16:05
Благодарю, убрав функцию CancelSelectTextDraw, все заработало как надо.

Тебе не убирать её нужно, а делать дополнительные проверки в OnPlayerClickTextDraw, проверяя то, какой именно текстдрав нужно закрыть.
Например, перед вызовом CancelSelectTextDraw создавать pVar, присваивая ему определённое значение, а после в OnPlayerClickTextDraw проверять значение pVar и уже по этому значению определять то, какие именно текстдравы нужно скрыть.

А сейчас у тебя при закрытии текстдравов будет оставаться курсор.

verteich
18.06.2019, 16:33
Тебе не убирать её нужно, а делать дополнительные проверки в OnPlayerClickTextDraw, проверяя то, какой именно текстдрав нужно закрыть.
Например, перед вызовом CancelSelectTextDraw создавать pVar, присваивая ему определённое значение, а после в OnPlayerClickTextDraw проверять значение pVar и уже по этому значению определять то, какие именно текстдравы нужно скрыть.

А сейчас у тебя при закрытии текстдравов будет оставаться курсор.
Да, все окей, потому что если переключаться с телефона на инвентарь, то там тоже нужен курсор, и просто повторно вызываю функцию SelectTextDraw дабы цвет кликабетельных тд сменился)