Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 19
  1. #1
    Аватар для SteveStage
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±

    Сбитая кликабельность текстдрава

    В общем, вот видео:

    https://vimeo.com/376220791

    Проблема в том, что кликабельность кнопки "SELECT SKIN" выходит за рамки текста, как это можно исправить?

    Вот код создания всех текстдравов:

    1. stock TD_SelectSkin(playerid)
    2. {
    3. td_select_skin[playerid][td_right] = TextDrawCreate(397.306640, 340.666625, "LD_BEAT:right");
    4. TextDrawLetterSize(td_select_skin[playerid][td_right], 0.000000, 0.000000);
    5. TextDrawTextSize(td_select_skin[playerid][td_right], 33.733535, 44.916667);
    6. TextDrawAlignment(td_select_skin[playerid][td_right], 2);
    7. TextDrawColor(td_select_skin[playerid][td_right], -65281);
    8. TextDrawSetShadow(td_select_skin[playerid][td_right], 0);
    9. TextDrawSetOutline(td_select_skin[playerid][td_right], 0);
    10. TextDrawBackgroundColor(td_select_skin[playerid][td_right], 255);
    11. TextDrawFont(td_select_skin[playerid][td_right], 4);
    12. TextDrawSetSelectable(td_select_skin[playerid][td_right], true);
    13.  
    14. td_select_skin[playerid][td_left] = TextDrawCreate(208.393585, 340.666625, "LD_BEAT:left");
    15. TextDrawLetterSize(td_select_skin[playerid][td_left], 0.000000, 0.000000);
    16. TextDrawTextSize(td_select_skin[playerid][td_left], 33.733535, 44.916667);
    17. TextDrawAlignment(td_select_skin[playerid][td_left], 2);
    18. TextDrawColor(td_select_skin[playerid][td_left], -65281);
    19. TextDrawSetShadow(td_select_skin[playerid][td_left], 0);
    20. TextDrawSetOutline(td_select_skin[playerid][td_left], 0);
    21. TextDrawBackgroundColor(td_select_skin[playerid][td_left], 255);
    22. TextDrawFont(td_select_skin[playerid][td_left], 4);
    23. TextDrawSetSelectable(td_select_skin[playerid][td_left], true);
    24.  
    25. td_select_skin[playerid][td_select] = TextDrawCreate(315.314941, 349.999877, "SELECT SKIN");
    26. TextDrawLetterSize(td_select_skin[playerid][td_select], 0.723146, 3.221665);
    27. TextDrawAlignment(td_select_skin[playerid][td_select], 2);
    28. TextDrawColor(td_select_skin[playerid][td_select], -65281);
    29. TextDrawSetShadow(td_select_skin[playerid][td_select], 0);
    30. TextDrawSetOutline(td_select_skin[playerid][td_select], 0);
    31. TextDrawBackgroundColor(td_select_skin[playerid][td_select], 255);
    32. TextDrawFont(td_select_skin[playerid][td_select], 0);
    33. TextDrawSetProportional(td_select_skin[playerid][td_select], 1);
    34. TextDrawSetSelectable(td_select_skin[playerid][td_select], true);
    35. }


    P.S. Использую для создания текстдравов плагин iTD

  2. #2
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Во-первых, рекомендовал бы юзать TDeditor 2.3. А во-вторых, у тебя не настроена зона кликабельности, чтобы её настроить нужно включить UseBox (на фоне текста появится черный квадрат/прямоугольник) и вручную настраивать ширину/высоту. Но насколько я помню, высоту придется настраивать вручную, ибо в редакторах коорды показывает, а бокс не двигается. Может быть, у меня какие-то баги, но всё же.

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Размер кликабельной зоны указывается в TextDrawTextSize. Так же со значением TextDrawAlignment поиграйся, если изменение TextDrawTextSize не даст результатов (не помню просто какое именно значение делает кликабельный текст нормальным).

    Для TextDrawAlignment со значением 2 вот такое примечание есть на официальной wiki
    For alignment 2 (center) the x and y values of TextSize need to be swapped, see notes at TextDrawTextSize, also position coordinate become position of center of textdraw and not left/top edges.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #4
    Аватар для SteveStage
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Игрался я с этой строкой:

    1. TextDrawTextSize(td_select_skin[playerid][td_select], 33.733535, 44.916667);


    А зона кликабельности не меняется(

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так же со значением TextDrawAlignment поиграйся, если изменение TextDrawTextSize не даст результатов (не помню просто какое именно значение делает кликабельный текст нормальным).
    Так мне нужно, чтобы выравнивание текста было по центру

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    1) Создавать глобальные текстдравы для каждого игрока - такая себе идея. Лимит быстро иссякнет =) Ну либо непонятно зачем у тебя в массиве playerid. Тут вообще хватит одной глобальной копии текстдравов на всех игроков, ибо нет какой-либо индивидуальной информации.
    2) Плохо игрался =)
    1. TextDrawLetterSize(td_select_skin[playerid][td_select], 0.5000, 3.00000);
    2. TextDrawTextSize(td_select_skin[playerid][td_select], 25.0000, 125.0000);

    Старайся максимально округлять все координаты и значения, дабы при разных разрешениях экрана твои текстдравы меньше разъезжались.
    И для TextDrawLetterSize лучше устанавливать значения 1 к 4. При таких значениях текст максимально корректно и красиво отображаться будет.
    Всё это, к слову, описано в официальной wiki =)

    Касаемо текста по центру - так а что тебе мешало бы его просто по центру расположить? Эта центровка имеет смысл когда у тебя в одном текстдраве и текст, и бокс, и тебе нужно разместить текст по центру бокса. А без бокса особых ограничений нет.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    2) Плохо игрался =)
    1. TextDrawLetterSize(td_select_skin[playerid][td_select], 0.5000, 3.00000);
    2. TextDrawTextSize(td_select_skin[playerid][td_select], 25.0000, 125.0000);
    Кликабельность слишком съехала влево и вправо, а по верху и низу норм

    Ты мне не код давай, а покажи официальную документацию по текстдравам (или объясни, за что отвечает каждое значение в TextDrawLetterSize и TextDrawTextSize), пожалуйста
    Последний раз редактировалось SteveStage; 29.11.2019 в 00:19.

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну так нажимаешь на название функций и переходишь на официальную wiki. Там, собственно, всё описано.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для SteveStage
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    https://ibb.co/rmqcr8R

    Например между центром и верхнею частью экрана по координате X координаты 160 или 480?

  9. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Steve_Stage Посмотреть сообщение
    https://ibb.co/rmqcr8R

    Например между центром и верхнею частью экрана по координате X координаты 160 или 480?
    Эмм, ну там же чёрным по белому написано, что центр экрана - это координаты 320.0 по X и 240.0 по Y. Если это координаты центра, то логично предположить, что расстояние от 0.0 и цетральной точки - 320.0, не?)
    Да и тебе это вообще, по сути, не нужно знать, ибо ты не будешь вручную координаты подбирать, а будешь работать через редактор. Тебе нужно прочитать про особенности работы функций при разных обстоятельствах: как та же TextDrawTextSize ведёт себя при разных значениях TextDrawAlignment и т.п. Либо методом тыка узнать всё то же самое, если описание в статьях wiki не понятно. А ещё есть такая штука, как гугл, с помощью которой ты можешь даже мои ответы найти на эту тему. Перед тобой открыт весь интернет :з
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  10. #10
    Аватар для SteveStage
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, ну там же чёрным по белому написано, что центр экрана - это координаты 320.0 по X и 240.0 по Y. Если это координаты центра, то логично предположить, что расстояние от 0.0 и цетральной точки - 320.0, не?)
    Эм... (как ты любишь говорить) Так это смотря, с какой стороны начинается отсчет координат - сверху или снизу?

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и тебе это вообще, по сути, не нужно знать, ибо ты не будешь вручную координаты подбирать, а будешь работать через редактор. Тебе нужно прочитать про особенности работы функций при разных обстоятельствах: как та же TextDrawTextSize ведёт себя при разных значениях TextDrawAlignment и т.п. Либо методом тыка узнать всё то же самое, если описание в статьях wiki не понятно. А ещё есть такая штука, как гугл, с помощью которой ты можешь даже мои ответы найти на эту тему. Перед тобой открыт весь интернет :з
    На вики об этом написанно максимум это:

     TextDrawTextSize Wiki Samp
    The x and y have different meanings with different TextDrawAlignment values:
    1 (left): they are the right-most corner of the box, absolute coordinates.
    2 (center): they need to inverted (switch the two) and the x value is the overall width of the box.
    3 (right): the x and y are the coordinates of the left-most corner of the box
    Using font type 4 (sprite) and 5 (model preview) converts X and Y of this function from corner coordinates to WIDTH and HEIGHT (offsets).
    The TextDraw box starts 10.0 units up and 5.0 to the left as the origin (TextDrawCreate coordinate).
    This function defines the clickable area for use with TextDrawSetSelectable, whether a box is shown or not.


    1) При аллигменте 2 координаты бокса кликабельности смещаются
    2) Начинается с 10.0 5.0
    2) Обязательно TextDrawSetSelectable true независимо от видимости бокса
    4) Если текстдрав - бокс - смещает его, если же кликабельный текст - зону кликабельности

     4)
    Change the size of a textdraw (box if TextDrawUseBox is enabled and/or clickable area for use with TextDrawSetSelectable)
    Последний раз редактировалось SteveStage; 29.11.2019 в 15:58.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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