PDA

Просмотр полной версии : [Вопрос] Как сделать идеальный квадрат на текстдравах?



Scander
20.05.2021, 13:50
Я создаю функцию, которая будет динамически создавать мне пустой бокс (использую 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.

LINKINPARK
21.05.2021, 03:08
этот код https://pastebin.com/7K10J2hF создает 400 одинаковых квадратов из боксов, размером 18х16, делай по аналогии.

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

LINKINPARK
21.05.2021, 19:38
Я думаю точную формулу авто определения сделать нельзя, возможно я ошибаюсь. Кликабильную зону определяет функция 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.

DeimoS
22.05.2021, 06:59
Ладно, забудьте про этот вопрос. У меня другая проблема: я создаю текст на текстдравах и мне нужно, чтобы кликабельная зона высчитывалась автоматически . Как это сделать? Нашел инклюд одного чувака (https://github.com/kristoisberg/samp-td-string-width), высчитывающий ширину строки текстдрава, но у меня почему-то неправильно высчитывает, если установлен outline( Текст съезжает на 2-ю строку( Что делать?

Почитай описание того репозитория, что ты скинул. Там есть всё для того, чтоб и самому попробовать собрать нужные данные, и перепроверить данные в инклуде/попробовать вытащить данные из другого репозитория, ссылка на который там есть. Хотя, судя по тексту, это наоборот должен быть один из точнейших вариантов реализации. Но лично данные не проверял, если что.