PDA

Просмотр полной версии : [Вопрос] Баг с размером текста в TextDraw



felix_font
15.09.2014, 02:49
На первый взгляд все кажется нормально:
http://i.imgur.com/B81bpXC.jpg

А если посмотреть на скоростях по больше, заметим неровность в конце:
http://i.imgur.com/mAtqibD.jpg

А если уж совсем приблизить, мы заметим полную неровность с самого начала и только в некоторых случаях стает ровно:
http://i.imgur.com/RgSSPGm.jpg

А теперь вопрос, почему? И как исправить?
По параметрам TextDraw'a они идентичны по всем параметрам.
Разница только в цветах.

Почему же такая неровность?
Ведь дело в том, что я сделал для каждой машины индивидуальную макс.скорость и в зависимости от макс.скорости заполняются "ячейки".
И так получается при макс. скорости заполняется не до конца (вроде 2 ячейки последние) - что полностью все портит.

Как я и говорил, отличий в стиле TextDraw никаких нету, и также косяков в коде тоже нету, используется один и тот же символ для заполнения.
Подозреваю только на то - что разные цвета, но... в других же вроде нету такого бага.. и тоже абсолютно разные цвета "ячеек" и чем оно заполняется.

Какие есть варианты исправления бага?

DeimoS
15.09.2014, 07:17
Всё же покажите код или объясните как вы всё это реализуете, ибо пока вы предлагаете нам с бубном танцевать.
Например, расскажите расскрашиваете ли вы 1 и тот же текстдрав или действуете методом наложения?

felix_font
15.09.2014, 18:32
Метод наложения.

Заполнение:

new min_speed = floatround(GetVehicleMaxSpeed(vehicleid) / 28, floatround_floor);
new curr_speed = floatround(speed / min_speed, floatround_round);
//if(curr_speed > 28) curr_speed = 28;
if(curr_speed < 1) curr_speed = 1;

if(speed == 0) PlayerTextDrawSetString(playerid, SM_Text[playerid][SM_CurSpeed], "");
else
{
format(szTemp, maxlen, "");
for(new i = 0; i < curr_speed; i++) strcat(szTemp, "l", maxlen);
PlayerTextDrawSetString(playerid, SM_Text[playerid][SM_CurSpeed], szTemp);
}

Состоит из 28 полосок, значит макс.скорость делим на 28 и округляем в меньшую сторону.
Чтобы получить текущую скорость в полосках, делю текущую скорость транспорта на минимальную скорость для 1 полоски и округляю по типу floatround_round (в ту сторону какая ближе), ну а дальше заполнение циклом.

DeimoS
15.09.2014, 18:52
А не проще ли создать 1 текстдрав и в нём уже изменять цвет нужных полосок?
Ну а вообще, скорее всего, просто нужно убрать тень текстдрава или что-то подобное, из-за чего текстдрав чуть смещается в сторону. А так же попробовать убрать собейт из запуска и посмотреть как будет без него, ибо в нём что только не изменяется...

felix_font
15.09.2014, 19:28
Собейт отключил полностью и перезапустил игру.
Результат такой же:
http://i.imgur.com/XcTvx2x.jpg

По поводу 1 texdraw, выбор цветов очень сухой, этих ~g~, ~b~, ~h~ - никак не станет, цвет получается не очень приятный.

Параметры TextDraw (серого):
LetterSize = 0.338797, 1.858844
Alignmenе = 1
Color = -2139062017
SetShadow = 0
SetOutline = 1
BackgroundColor = 51
Font = 1
SetProportional = 1

Для цветного все так же, только:
Color = 16777215

DeimoS
15.09.2014, 19:42
Попробуйте для SetOutline и SetProportional установить нуль. Да и вообще, поиграйтесь с настройками (сделайте пару команд, которыми прямо в игре меняйте значение и смотрите результат). Я с текстдравами мало работал и не помню предназначения каждой функции, так что могу лишь подсказать то, что бы делал я сам :)