Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7

Тема: TextDraw

  1. #1
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±

    TextDraw

    Добрый вечер. Не буду писать о-о-о-очень много лишнего текста, напишу сразу о том, что меня "волнует": есть у меня в общем система выбора внешности, выполненная на TextDraw. При нажатии на клавишу Esc пропадает стрелка, чего быть не должно. Не знаю, как решить эту проблему.
    * Открытие TextDraw находится в стоке выбора внешности.
    * Функционал этих TextDraw находится в public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid), а сами они загружаются из стока, который запускается при старте сервера.
    * Не надо писать, что на портале есть куча подобных тем. Да, я уже искал это и на портале, и в поисковой системе.
    В основном я получал что-то типа:
    PHP код:
    else if(playertextid == PlayerText:INVALID_TEXT_DRAW)
    {
         
    SelectTextDraw(playerid0xFFFFFFFF);

    Я вставлял это в OnPlayerClickPlayerTextDraw и в OnPlayerClickTextDraw, изменял только "PlayerText" на "Text" и "playertextid" на "clickedid", но эффекта никакого, а в OnPlayerClickTextDraw вообще пишет об ошибке (tag mismatch).
    Очень надеюсь на вашу помощь, заранее очень благодарен.
    Последний раз редактировалось PawnoNoob; 31.03.2016 в 20:59.

  2. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    public OnPlayerClickTextDraw(playeridText:clickedid)
    {
        if (
    clickedid == Text:INVALID_TEXT_DRAW) {
            
    SelectTextDraw(playerid0xFFFFFFFF);
            return 
    1;
        }
        return 
    0;


  3. Пользователь сказал cпасибо:
    PawnoNoob (31.03.2016)
  4. #3
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    PHP код:
    public OnPlayerClickTextDraw(playeridText:clickedid)
    {
        if (
    clickedid == Text:INVALID_TEXT_DRAW) {
            
    SelectTextDraw(playerid0xFFFFFFFF);
            return 
    1;
        }
        return 
    0;

    Спасибо, Вы мне очень сильно помогли. Я ещё совсем не знаю ничего в программировании (ну, более-мене учусь на конкретных примерах типа модов с пабликов и т.д.). Но есть вопросик: почему в конце паблика "return 0", а не 1? (очень глупый вопрос, понимаю, но всё же)

  5. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от PawnoNoob Посмотреть сообщение
    Спасибо, Вы мне очень сильно помогли. Я ещё совсем не знаю ничего в программировании (ну, более-мене учусь на конкретных примерах типа модов с пабликов и т.д.). Но есть вопросик: почему в конце паблика "return 0", а не 1? (очень глупый вопрос, понимаю, но всё же)
    Работает также, как и для OnPlayerCommandText, то есть результатом возвращения единицы в этом паблике будет не вызов этого паблика в других скриптах (FS). Собственно, об этом написано на wiki.

  6. Пользователь сказал cпасибо:
    PawnoNoob (31.03.2016)
  7. #5
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Работает также, как и для OnPlayerCommandText, то есть результатом возвращения единицы в этом паблике будет не вызов этого паблика в других скриптах (FS). Собственно, об этом написано на wiki.
    А вот ещё вопрос: после нажатия на TextDraw выбора внешности игрока телепортирует на точку спавна. Раньше стрелка пропадала при нажатии на эту кнопку, сейчас же, после вставки функции, которую Вы написали выше, стрелка просто-напросто не пропадает при нажатии на этот TextDraw. "CancelSelectTextDraw(playerid);" включается при нажатии на TextDraw выбора внешности, но теперь от него эффекта нет.

  8. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от PawnoNoob Посмотреть сообщение
    А вот ещё вопрос: после нажатия на TextDraw выбора внешности игрока телепортирует на точку спавна. Раньше стрелка пропадала при нажатии на эту кнопку, сейчас же, после вставки функции, которую Вы написали выше, стрелка просто-напросто не пропадает при нажатии на этот TextDraw. "CancelSelectTextDraw(playerid);" включается при нажатии на TextDraw выбора внешности, но теперь от него эффекта нет.
    Я забыл об одной "особенности": при вызове CancelSelectTextDraw, паблик OnPlayerClickTextDraw вызывается с clickedid = INVALID_TEXT_DRAW (то есть выглядит также как и нажатие на Esc).

    Исправляется так:
    PHP код:
    SetPVarInt(playerid"ignore_invalid_td"1);
    CancelSelectTextDraw(playerid); 
    PHP код:
    public OnPlayerClickTextDraw(playeridText:clickedid)
    {
        if (
    clickedid == Text:INVALID_TEXT_DRAW) {
            if (
    GetPVarInt(playerid"ignore_invalid_td") == 1) {
                
    DeletePVar(playerid"ignore_invalid_td");
            } else {
                
    SelectTextDraw(playerid0xFFFFFFFF);
            }
            return 
    1;
        }
        return 
    0;

    Последний раз редактировалось ziggi; 31.03.2016 в 23:51.

  9. Пользователь сказал cпасибо:
    PawnoNoob (31.03.2016)
  10. #7
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Я забыл об одной "особенности": при вызове CancelSelectTextDraw, паблик OnPlayerClickTextDraw вызывается с clickedid = INVALID_TEXT_DRAW (то есть выглядит также как и нажатие на Esc).

    Исправляется так:
    PHP код:
    SetPVarInt(playerid"ignore_invalid_td"1);
    CancelSelectTextDraw(playerid); 
    PHP код:
    public OnPlayerClickTextDraw(playeridText:clickedid)
    {
        if (
    clickedid == Text:INVALID_TEXT_DRAW) {
            if (
    GetPVarInt(playerid"ignore_invalid_td") == 1) {
                
    DeletePVar(playerid"ignore_invalid_td");
            } else {
                
    SelectTextDraw(playerid0xFFFFFFFF);
            }
            return 
    1;
        }
        return 
    0;

    Огромное спасибо за помощь, всё работает.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •