AxXe |
Дата: Пятница, 21.02.2014, 13:59 | Сообщение # 1
|
Любитель
Сообщений: 35
Статус: Offline
|
Чтобы рисовать на экране, нужно включить режим рисования опкодом 03F0: enable_text_draw 1
При первом запуске игры значение рисования не определено и текстуры будут "висеть" на экране вечно. При значении параметра 1 - текстуры будут рисоваться на несколько миллисекунд, надо их рисовать в цикле с wait 0. При значении параметра 0 - текстуры не рисуются.
ВНИМАНИЕ! В некоторых случаях (например, при входе в раздевалку) значение enable_text_draw сбрасывается в неопределённое и тогда текстуры не будут стираться, итог - вылет через две секунды. Так что во время рисования заморозьте игрока (01B4: set_player $PLAYER_CHAR can_move 0) и установите $ONMISSION в true. Либо всё время устанавливайте 03F0: enable_text_draw 1. Вывод текстур
Чтобы рисовать текстуры, надо в начале загрузить TXD файл из папки \Models\TXD опкодом 0390: load_txd_dictionary 'MY_TXD'
а после рисования выгрузить опкодом 0391: release_txd_dictionary
После загрузки нужно загрузить сами текстуры опкодом 038F: load_texture "MyTexture" as 1
Текстуры выводятся на экран опкодами: 038D: draw_texture 2 position 160.0 112.0 scale 320.0 224.0 RGBA 150 150 150 255 074B: draw_texture 2 position 160.0 112.0 scale 320.0 224.0 angle 90.0 RGBA 150 150 150 255
Второй отличается от первого тем, что можно задать угол поворота текстуры.
Итак, первый параметр - это слот текстуры, который мы задали в опкоде 038F. Пара параметров после position - это координаты текстуры (см. ниже). Пара параметров после scale - это размеры текстуры на экране (см. ниже). Параметры после RGBA - цвет в формате RGB и прозрачность текстуры (255 - не прозрачно).
Как определить координаты текстуры? Левый верхний квадрат имеет координату 0.0 0.0, а правый нижний - координату 640.0 448.0. Координаты рассчитываются от середины текстуры. С помощью калькулятора и Paint'а высчитывать координаты текстур - неприятное дело, так что проще воспользоваться программой San Andreas Texture Placer. С её помощью можно расставить текстуры как следует.
Что-бы не было пикселизации текстуры и текстура была сглаженной нужно перед рисованием текстуры поставить опкод 03E3: set_texture_to_be_drawn_antialiased 1
например: 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 2 position 160.0 112.0 size 320.0 224.0 RGBA 150 150 150 255 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 2 position 480.0 112.0 size -320.0 224.0 RGBA 150 150 150 255
Аналогично текстурам можно рисовать прямоугольники опкодом: 038E: draw_box_position 320.0 224.0 size 640.0 448.0 RGBA 255 0 0 128
Ограничения: всего в один момент времени на экран может выводиться до 128 текстур.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Рисование текста:
Основной опкод для рисования текста: 033E: set_draw_text_position 320.0 407.0 GXT 'FEM_YES' 045A: draw_text_1number 320.0 407.0 GXT 'DOLLAR' number 72 045B: draw_text_2numbers 320.0 407.0 GXT 'TIME' numbers 5 45 07FC: text_draw_1float_position_XY 10.0 10.0 GXT_reference 'BB_05' value 1@ decimal_count 3
где 320.0 407.0 - координаты. Координаты отсчитываются от левого верхнегно угла текста, как обычно. Следующие два опкода выводит целые числа, последний выводит Float число, параметр decimal_count - количество десятичных знаков после запятой (в GXT должно быть ~1~.~1~).
К тексту можно применить форматирование, для этого перед опкодом текста должны стоять опкоды: Опкод, включающий выравнивание текста по центру: 0342: enable_text_draw_centered 1
Опкод, включающий выравнивание текста по правому краю: 03E4: enable_text_draw_align_right 1
Цвет текста и его прозрачность: 0340: set_text_draw_RGBA 255 0 0 200
Параметры тени (первый параметр - расстояние тени, четыре остальных параметра - цвет и прозрачность): 060D: draw_text_shadow 1 color_RGBA 127 127 127 245
Параметры обводки текста (первый параметр - толщина обводки, четыре остальных параметра - цвет и прозрачность): 081C: draw_text_outline 1 RGBA 255 0 0 255
Опкод, включающий серый бокс (фон) (глючный): 0345: enable_text_draw_background 1
Опкод, теоретически при 1 пропорциональный, при 0 моноширинный, практически при 0 текст выглядит безобразно: 0348: enable_text_draw_proportional 0
Опкод, задающий длину одной строки: 0343: set_text_draw_linewidth 80.0
Опкод, задающий шрифт: 0349: set_text_draw_font 3 Параметр: 0 - готический (из San Andreas), 1 - обычный, 2 - шрифт из меню SA, 3 - pricedown (из GTA3). Опкод изменения ширины и высоты одного символа: 033F: set_text_draw_letter_size 1.0 3.0
Опкод, выводящий на экран прямоугольник, как и в меню: 0937: text_draw_box_cornerA 29.0 50.0 cornerB 210.6556 156.4957 GXT_reference 'POLICAR' style 4
|
|
|
|