00038. Рисование на экране (Часть 1 - Текст)

Рисование на экране (Часть 1 - Текст)|Начинаем наш очередной урок, и здесь вы научитесь основным командам по рисованию на экране.|wmysterio|wmysterio||||Что значит рисование? - Спросите вы. Это может быть любой текст или текстура, которые могут размещаться в любой точке экрана.

Экран как бы имеет свою координатную сетку, размер которой составляет "640.0" точек по ширине и "448.0" точек по высоте. Начальные координаты "0.0 0.0" и они находятся в правом верхнем углу. Вообще если в поисковике SB ввести слово DRAW, то вам выведется список всех команд, которые позволяют рисовать на экране. Рисование можно разбить на две большие группы:

  • рисование текста

  • рисование текстур

В этом уроке мы коснёмся только текста. Первым делом, рассмотрим опкод, который включает режим рисования:

03F0: enable_text_draw 1

Здесь: 1 - включить режим рисования. Если поставить 0 - выключить режим рисования. При смене интерьера, этот параметр сбивается на ноль, по этому его нужно снова включать.

Рассмотрим команды для рисования текста. Самый первый опкод, это:

033E: set_draw_text_position 320.0 180.333 GXT 'BJ_PUSH'

Здесь: 320.0 180.333 - координаты на экране. 1-й параметр - координата X ( по ширине ), 2-й - координата Y ( по высоте ) 'BJ_PUSH' - имя GXT-записи, то есть текст, который содержится в этой записи, будет выведен на экран по координатам

С текстом можно делать разные манипуляции: изменять его цвет и размер:

0340: set_text_draw_RGBA 0 90 180 255
033F: set_text_draw_letter_size 1.3 3.36

Здесь: 0 - количество красного цвета ( канал R, от 0 до 255 ) 90 - количество зелёного цвета ( канал G, от 0 до 255 ) 180 - количество синего цвета ( канал B, от 0 до 255 ) 255 - указывает прозрачность текста, если поставить 0, то текст не будет видно. Максимум - 255 1.3 - размер буквы по ширине 3.36 - размер буквы по высоте

Так же можно задать шрифт и обводку тексту опкодами:

0349: set_text_draw_font 0
081C: draw_text_outline 2 RGBA 10 20 30 255

Здесь: 0 - номер шрифта ( см. Стили текста - шрифт ) 2 - плотность обводки ( см. Стили текста - Обводка ) 10 - количество красного цвета ( канал R, от 0 до 255 ) 20 - количество зелёного цвета ( канал G, от 0 до 255 ) 30 - количество синего цвета ( канал B, от 0 до 255 ) 255 - указывает прозрачность текста, если поставить 0, то текст не будет видно. Максимум - 255

Кроме этого, можно указать тень текста и её цвет, установить максимальную ширину текста:

060D: draw_text_shadow 0 color_RGBA 0 0 0 255
0343: set_text_draw_linewidth 640.0

Здесь: 0 - расстояние тени от текста 0 0 0 255 - указываются цвета тени и её прозрачность ( См. Стили текста - Тени ) 640.0 - указать новую длину строки. Пример-сравнение текста по-умолчанию и текста, которому задали длину 300 символов вы также можете найти в нашей базе данных, внизу, внизу.

Есть возможность выравнивания текста:

0342: enable_text_draw_centered 1 // по-центру
03E4: enable_text_draw_align_right 1 // справа
0341: set_text_draw_align_justify 1 // расстягивает строку на максимальную длину ( пробелы кажутся более длинными )

И, напоследок, можно вывести какие то числовые переменные на экран:

045A: draw_text_1number 320.0 155.333 GXT 'ALLRACE' number 0@ // ~1~
045B: draw_text_2numbers 320.0 155.333 GXT 'TIME' numbers 0@ 0@ // ~1~ ~1~
07FC: text_draw_box_position_XY 320.0 155.333 GXT_reference 'BOAT_7' value 241@ flag 2 // value 2.43

Первый опкод выводит 1 переменную на экран. Второй опкод выводит 2 переменных на экран. Третий опкод выводит дробное число на экран.

Здесь: 320.0 155.333 - место расположения текста на экране 'ALLRACE', 'TIME', 'BOAT_7' - GXT-записи с текстом 0@ - переменная, в ней должно быть целое число ( можно указать и число, не обязательно переменную ) 241@ - переменная, в ней должно быть дробное число 2 - выводит количество символов после запятой в дробном числе× **ОЧЕНЬ ВАЖНО:** Что бы текст смог менять размеры и прочее, то манипуляции над ним должны быть перед тем, как выводить сам текст. И такие действия должны быть перед каждой записью с текстом.

Вот пример рисования:

:TEXT
thread 'TEXT'
wait 0
03F0: enable_text_draw 1

0226: $TEMP_HEALTH = actor $PLAYER_ACTOR health
0343: set_text_draw_linewidth 300.0
03E4: enable_text_draw_align_right 1
060D: draw_text_shadow 1 color_RGBA 0 0 0 255
0340: set_text_draw_RGBA 255 0 0 255
045A: draw_text_1number 30.0 10.0 GXT 'MAG_4OB' number $TEMP_HEALTH //~1~

04DD: $TEMP_ARMOUR = actor $PLAYER_ACTOR armour
0343: set_text_draw_linewidth 300.0
03E4: enable_text_draw_align_right 1
060D: draw_text_shadow 1 color_RGBA 0 0 0 255
0340: set_text_draw_RGBA 0 255 0 255
045A: draw_text_1number 60.0 10.10 GXT 'MAG_4OB' number $TEMP_ARMOUR //~1~

06AC: $TEMP_SPEED = actor $PLAYER_ACTOR movement_speed
0343: set_text_draw_linewidth 300.0
03E4: enable_text_draw_align_right 1
060D: draw_text_shadow 1 color_RGBA 0 0 0 255
0340: set_text_draw_RGBA 0 0 255 255
07FC: text_draw_1float_position_XY 90.0 10.0 GXT_reference 'MAG_4OB' value $TEMP_SPEED decimal_count 2
jump @TEXT

Как видите, всегда перед текстом пишутся параметры а потом рисуются. Если этого не сделать,то текст выведется по-умолчанию. Вот так выглядит рисованный нами текст:

Last updated