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

    Статус
    Оффлайн
    Регистрация
    19.05.2021
    Сообщений
    24
    Репутация:
    2 ±

    Как сделать идеальный квадрат на текстдравах?

    Я создаю функцию, которая будет динамически создавать мне пустой бокс (использую TextDrawUseBox и убираю текст).
    Как мне задать текстдраву точные размеры?

    Я могу задать точную ширину этому боксу через TextDrawTextSize(tdid, 0, ширина) (x ни на что не влияет, поэтому 0).
    Для изменения высоты нужно использовать TextDrawLetterSize(tdid, 0, высота). Но проблема в том, что тут высота задается по каким-то другим правилам: если задать ширину 150 через TextDrawTextSize и такую же высоту через TextDrawLetterSize квадрат не получится.

    Как настроить TextDrawLetterSize?
    Передавать туда значение с каким-то заранее вычисленным коэффициентом или есть другой выход?

    - - - Добавлено - - -

    Есть какое-то примечание на wiki:

    When using this function purely for the benefit of affecting the TextDraw box, multiply 'Y' by 0.135 to convert to TextDrawTextSize-like measurements. Hint: it is easier and extremely precise to use LD_SPAC:white sprite for box-only textdraws, TextDrawTextSize will have regular offsets.

    Но я не совсем понимаю. Используя спрайт все равно не получается ровный квадрат (проврял линейкой). Это странно, потому что я посмотрел файл этого спрайта и его размеры ровные - 8х8.
    Последний раз редактировалось Scander; 20.05.2021 в 14:56.

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

    Статус
    Оффлайн
    Регистрация
    24.01.2014
    Сообщений
    27
    Репутация:
    10 ±
    этот код https://pastebin.com/7K10J2hF создает 400 одинаковых квадратов из боксов, размером 18х16, делай по аналогии.

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

    Статус
    Оффлайн
    Регистрация
    19.05.2021
    Сообщений
    24
    Репутация:
    2 ±
    Ладно, забудьте про этот вопрос. У меня другая проблема: я создаю текст на текстдравах и мне нужно, чтобы кликабельная зона высчитывалась автоматически . Как это сделать? Нашел инклюд одного чувака (https://github.com/kristoisberg/samp-td-string-width), высчитывающий ширину строки текстдрава, но у меня почему-то неправильно высчитывает, если установлен outline( Текст съезжает на 2-ю строку( Что делать?
    Последний раз редактировалось Scander; 21.05.2021 в 16:28.

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

    Статус
    Оффлайн
    Регистрация
    24.01.2014
    Сообщений
    27
    Репутация:
    10 ±
    Я думаю точную формулу авто определения сделать нельзя, возможно я ошибаюсь. Кликабильную зону определяет функция TextDrawTextSize она же задаёт размер боксу текстдрава, если он включен.
    По координате Х + 20.0 значит текстдрав будет кликабельным на 20 единиц вправо, X - 20.0 лево, Y работает немного по другому и только в положительную сторону, если X в функции TextSize начинает отсчёт от координаты X которая указана в TextDrawCreate то Y не зависима и начинается с 0 , то есть
    TextDrawTextSize (X + 20, 20) будет кликабельным на 20 вправо и 20 вниз от тех координат по которым создан. По рекамендациям вики, при таких значениях, Y в TextDrawLetterSize примерно должна равняться 20.0*0.135

    Возможно Y из LetterSize деленное на 0.135 и есть то правильное значение Y для TextSize.
    Последний раз редактировалось LINKINPARK; 21.05.2021 в 20:42.

  6. Пользователь сказал cпасибо:
    Scander (22.05.2021)
  7. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Scander Посмотреть сообщение
    Ладно, забудьте про этот вопрос. У меня другая проблема: я создаю текст на текстдравах и мне нужно, чтобы кликабельная зона высчитывалась автоматически . Как это сделать? Нашел инклюд одного чувака (https://github.com/kristoisberg/samp-td-string-width), высчитывающий ширину строки текстдрава, но у меня почему-то неправильно высчитывает, если установлен outline( Текст съезжает на 2-ю строку( Что делать?
    Почитай описание того репозитория, что ты скинул. Там есть всё для того, чтоб и самому попробовать собрать нужные данные, и перепроверить данные в инклуде/попробовать вытащить данные из другого репозитория, ссылка на который там есть. Хотя, судя по тексту, это наоборот должен быть один из точнейших вариантов реализации. Но лично данные не проверял, если что.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    Scander (22.05.2021)
 

 

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

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

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

Ваши права

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