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

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±

    Текстдравы

    Всем еще раз здрасте. Уже 2-ой день мучаюсь с текстдравом, раньше проблем с ними не было, сейчас начались какие-то аномалии. Прошу всех, кто заглянет в эту тему подумать, предложить ваши решения, если они будут, ведь это сегодня вас не касается, а завтра вы захотите инвентарь написать за пару часов и сядете в лужу.
    Что я хочу сделать? Сделать прямоугольник кликабельным.
    Суть проблемы:
    1 Проблема. Создал текстдрав 5-го типа. Сделал его кликабельным. Выглядит он так:
     скрин

    При нажимании мышкой на правую часть коробки коллбэк OnPlayerClickTextDraw вызывается (Там, где цифра 2 - коллбэк вызывается, там, где цифра 1 - не вызывается).
     Смотрите скрин

    При переносе прямоугольника влево (уменьшение координаты X в TextDrawCreate) область кликабельности (область 2 на скрине) уменьшается (т.е. текстдрав сдвинул, а граница осталась).
    Собственно код текстдрава:
    PHP код:
        inv_MainBox[1] = TextDrawCreate(52.474380149.333343"LD_SPAC:white");
        
    TextDrawLetterSize(inv_MainBox[1], 0.0000000.000000);
        
    TextDrawTextSize(inv_MainBox[1], 173.821380268.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.0000000.0000000.0000001.000000);
        
    TextDrawSetSelectable(inv_MainBox[1], true); 
    2 Проблема. Аналогичный код текстдрава на другом моем скрипте запустился, НО, когда я кликаю на ТД, коллбэк OnPlayerClickTextDraw ВООБЩЕ не вызывается.
    PHP код:
    public OnPlayerClickTextDraw(playeridText:clickedid)
    {
        
    SCM(playerid, -1"Callback");
        return 
    1;

    В отчаянии игрался с return (менял на 0, убирал), ничего не помогло.
    Короче прошу помощи, вроде подробно описал проблему.


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

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

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    TextDrawTextSize(inv_MainBox[1], 173.821380268.916656); 
    173.821380 - это явно маловато, нужно увеличить.

  3. #3
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    PHP код:
    TextDrawTextSize(inv_MainBox[1], 173.821380268.916656); 
    173.821380 - это явно маловато, нужно увеличить.
    P.S.
    Самое главное то, что аналогичный прямоугольник справа (1-ий серый, на который накладываются текстдравы предметов) отлично функционирует. Вся его зона кликабельна, т.е. коллбэк идеально вызывается.

    Вот код второго прямоугольника:
    PHP код:
        inv_MainBox[2] = TextDrawCreate(406.271026149.166732"LD_SPAC:white");
        
    TextDrawLetterSize(inv_MainBox[2], 0.0000000.000000);
        
    TextDrawTextSize(inv_MainBox[2], 173.821380268.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.0000000.0000000.0000001.000000);
        
    TextDrawSetSelectable(inv_MainBox[2], true); 

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Prolific Посмотреть сообщение
    P.S.
    Самое главное то, что аналогичный прямоугольник справа (1-ий серый, на который накладываются текстдравы предметов) отлично функционирует. Вся его зона кликабельна, т.е. коллбэк идеально вызывается.

    Вот код второго прямоугольника:
    PHP код:
        inv_MainBox[2] = TextDrawCreate(406.271026149.166732"LD_SPAC:white");
        
    TextDrawLetterSize(inv_MainBox[2], 0.0000000.000000);
        
    TextDrawTextSize(inv_MainBox[2], 173.821380268.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.0000000.0000000.0000001.000000);
        
    TextDrawSetSelectable(inv_MainBox[2], true); 
    И что? Меняй значения в TextDrawTextSize, чтобы получить нужный тебе результат.

  5. #5
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Если менять там значение, прямоугольник будет растягиваться, мне нужно сохранить размеры.

  6. #6
    Аватар для Nash_Brigers
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2016
    Адрес
    Moscow
    Сообщений
    167
    Репутация:
    44 ±
    Я так понял, что фон текстдрава с изображением скина у тебя отдельно от бокса и прозрачен? Если так, то скорее всего он заезжает поверх текстдрава который кликабелен на половину.

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

  7. Пользователь сказал cпасибо:
    Prolific (02.04.2016)
  8. #7
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Ура, ребят, наконец все разрулилось. Оказывается я просто забыл удалить еще один такой же текстдрав, который делал для теста, а он лежал поверх этого. Спасибо Nash_Brigers, натолкнул на идею.

 

 

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

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

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

Ваши права

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