Главная » Статьи » GTA:San Andreas » Скриптинг

Меню покупки и др
Меню и таблицы

Создать пустую таблицу с заголовком можно опкодом:

08D4: 1@ = create_panel_with_title 'IE09' position 31.0 180.0 width 178.0 columns 1 interactive 1 background 1 alignment 0 // - Данным опкодам создаётся панель 1@ с заголовком "IE09"(Импорт),это запись из GXT файла, позиция панели по оси X,Y: 31.0 180.0, 178.0 ширина одного столбца в панели, columns 1 количество столбцов, interactive 1 1 - по панели можно перемещать указатель для выбора одного из пунктов,0 - нельзя(просто таблица), background 1 фон: 1-есть,2-нет, alignment 0 выравнивание текста в таблице(панели):1 - по левому краю, 2 - по правому краю, 0 - посередине таблицы(панели).



Для заполнения таблицы используйте следующий опкод:

08DB: set_panel 1@ column 0 header 'BSHOP_2' data 'KNIFE' 'CEMENT' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' // - Устанавливает заполнение первого столбца в панели 1@, column 0 указывает на номер заполняемного столбца,в данном случае 0(везде отсчёт ведётся с 0,0 считается началом.), header 'BSHOP_2' устанавливает заголовок IE09

На заметку:вместо каждой записи текста из GXT в таблице можно ставить пустой блок - DUMMY.

Далее идёт блок data,после которого посточное заполнение таблицы записями из GXT файла. 'KNIFE' 'CEMENT' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY',два первых блока заполены запясями,а остальные пустые.



Следующим опкодом устанавливается активный ряд таблицы(панели)

090E: set_panel 1@ active_row 0 - Устанавливает таблице 1@ активный ряд, в данном случае он равен 0,для того чтобы сбросить,а то вдруг что=).


На заметку:Сколько бы небыло в вашей таблице столбцов,всегда пишите все 13 столбцов,просто ненужные заполняйте пустым блоком DUMMY



Для того чтобы заполнить таблицу числовыми значениями используется опкод:

0006: 0@ = 350 - Для того,чтобы записать целое числовое значение в переменную 0@.

08EE: set_panel 1@ column 1 row 0 text_1number GXT 'DOLLAR' number 0@ // $~1~ - Устанавливает панели 1@,столбцу 1(можно использовать переменную),строке 0(можно использовать переменную),текстовую запись DOLLAR(в данном случае цена), с числовым значением равным переменной 0@(также сразу подставить число)



Для того чтобы записать активную строчку в переменную,используем опкод:

08D7: $ACTIVE_ROW = panel 1@ active_row - Записывает активную строчку панели 1@ в переменную $ACTIVE_ROW

А для проверки выбранной строчки подставляем в проверку переменную,в которую записана активная строка панели:
if
$ACTIVE_ROW == 0
jf @другой лейбл
Действия....


Для удаления панели воспользуйстесь 2 опкодами:

03E6: remove_text_box Удаляет чёрный квадрат с текстом.
08DA: remove_panel 1@ Удаляет панель 1@


Для создания панели с цветами,используйте опкод:


0964: create_square_color_panel 'CARM1' position 29.0 145.0 width 25.7 columns 8 interactive 1 background 1 alignment 1 panelID $MENU_COLORS // ”BETA - Создаёт цветовую панель с заголовком CARM1,позиция по оси X,Y:29.0 145.0,ширина 25.7,столбцов 8, interactive 1 можно выбирать(активная), background 1 с фоном,alignment 1 выравнивание по левому краю,таблица бедет записана в переменную $MENU_COLORS
А для проверки активного цвета(выбранного в данный момент) используется тот же опкод,что и в простой панели.


Также для выравнивания любого столбца в любой панели-используйте опкод:

08D6: set_panel 1@ column 0 alignment 1 устанавливает панели 1@, столбцу 0, выравнивание 1(1-лево,2-право,0-центр).



Вот пример меню:

:MENU
wait 0
Model.Load(#HOTKNIFE)
Model.Load(#CEMENT)
038B: load_requested_models

:MENU_2
wait 0
if and
00E1: player 0 pressed_key 4
Model.Available(#HOTKNIFE)
Model.Available(#CEMENT)
jf @MENU_2
Player.CanMove($PLAYER_CHAR) = False
08D4: 1@ = create_panel_with_title 'IE09' position 31.0 180.0 width 178.0 columns 2 interactive 1 background 1 alignment 0 // …A?K
08DB: set_panel 1@ column 0 header 'IE09' data 'KNIFE' 'CEMENT' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' // GYM1_61
08EE: set_panel 1@ column 1 row 0 text_1number GXT 'DOLLAR' number 350 // $~1~
08EE: set_panel 1@ column 1 row 1 text_1number GXT 'DOLLAR' number 500 // $~1~

:MENU_3
090E: set_panel 1@ active_row 0

:MENU_4
wait 0
if
00E1: player 0 pressed_key 15
jf @MENU_5
03E6: remove_text_box
08DA: remove_panel 1@
Player.CanMove($PLAYER_CHAR) = True
Camera.Restore_WithJumpCut
wait 5000
jump @MENU_2

:MENU_5
wait 0
if
00E1: player 0 pressed_key 16
jf @MENU_4
03E6: remove_text_box
08D7: $ACTIVE_ROW = panel 1@ active_row
08DA: remove_panel 1@

:MENU_6
wait 0
if
$ACTIVE_ROW == 0
jf @MENU_7
04C4: store_coords $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 from_actor $PLAYER_ACTOR with_offset 0.0 3.0 0.0
01E3: show_text_1number_styled GXT 'KNIFE' number $ACTIVE_ROW time 5000 style 1
3@ = Car.Create(#HOTKNIFE, $TEMPVAR_FLOAT_1, $TEMPVAR_FLOAT_2, $TEMPVAR_FLOAT_3)
2@ = Actor.Angle($PLAYER_ACTOR)
2@ += 90.0
Car.Angle(3@) = 2@
Player.Money($PLAYER_CHAR) += -350
Player.CanMove($PLAYER_CHAR) = True
wait 5000
jump @MENU_2

:MENU_7
wait 0
if
$ACTIVE_ROW == 1
jf @MENU_6
04C4: store_coords $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 from_actor $PLAYER_ACTOR with_offset 0.0 5.0 0.0
01E3: show_text_1number_styled GXT 'CEMENT' number $ACTIVE_ROW time 5000 style 1
3@ = Car.Create(#CEMENT, $TEMPVAR_FLOAT_1, $TEMPVAR_FLOAT_2, $TEMPVAR_FLOAT_3)
2@ = Actor.Angle($PLAYER_ACTOR)
2@ += 90.0
Car.Angle(3@) = 2@
Player.Money($PLAYER_CHAR) += -500
Player.CanMove($PLAYER_CHAR) = True
wait 5000
jump @MENU_2

Обьясняю принцип работы,в игре нажмите кнопку 4(TAB),и появится меню с двумя пунктами,для выхода из меню - нажмите кнопку 15(Enter),для выбора одного из пунктов нажмите кнопку 16(Shift),перед вами появится одна из двух машин,и высветится её название.



Текст

Для создания "Текст-Бокса" используется опкод:

03E5: show_text_box 'TTUTOR' - Показывает текст-бокс с записью TTUTOR.

03E6: remove_text_box - удаляет текст-бокс

08FE: text_box_displayed - проверка:Показан ли текст-бокс

0960: toggle_player $PLAYER_CHAR stats_box_enabled 0 - Активирует - 1,и деактивирует- 0,текст бокс слево снизу(статистика).

038E: draw_box_position 320.0 224.0 size 40.0 60.0 RGBA 47 62 90 255 - Показывает бокс,позиция по оси X,Y:320.0 224.0,размер 40.0 60.0,цвет в RGB: 47 62 90, 255 прозрачность(255-не прозрачно,можно использовать и 200(оптимально) и другое.

0512: show_permanent_text_box 'HOSP_1' - Дословно говоря вывести постоянный текст-бокс с записью HOSP_1,незнаю,но вроде от обычного ничем не отличается.

0989: set_text_boxes_width 300 - устанавливает заданную длинну текст-боксу.

0A2A: text_box 'SGPUNT' displayed - проверка:высветился ли текст-бокс с записью SGPUNT.

88FE: not text_box_displayed - проверка:Не показан ли текст-бокс.

8A2A: not text_box 'AP_0003' displayed - проверка:Не показан ли текст-бокс с записью AP_0003.

0937: text_draw_box_cornerA 35.0 15.0 cornerB 200.0 45.0 GXT_reference 'DUMMY' style 0 - Создать текст бокс,координаты верхнй левой вершины 35.0 15.0,координаты правой нижней вершины 200.0 45.0,с блоком DUMMY,стиль 0(пока не тестил)
также зададим текст для примера,вот весь код:
0937: text_draw_box_cornerA 35.0 15.0 cornerB 200.0 45.0 GXT_reference 'DUMMY' style 0
0342: toggle_text_draw_centered 0
0343: set_text_draw_linewidth 230.0
0349: set_text_draw_font 1
033F: set_text_draw_letter_size 0.5 1.8
033E: set_draw_text_position 40.0 20.0 GXT 'KNIFE'

0342: toggle_text_draw_centered 1 - Устанавливает выведенному тексту выравнивание по центру,0 - Выровнить,1 - Не выравнивать.

033F: set_text_draw_letter_size 0.5 1.8 - Устанавливает размер выводимого текста,равный 0.5 1.8.

033E: set_draw_text_position 40.0 20.0 GXT 'KNIFE' - Устанавливает тексту позицию 40.0 20.0,запись KNIFE.

00BA: show_text_styled GXT 'KNIFE' time 1000 style 2 - Выводит текст с записью KNIFE на 1000 мс со стилем 2,стили описаны ниже.



Стили вывода текста на экране:
1 - - выводится по центру,как при выполнении миссии-надпись Миссия Выполнена.
2 - - выводится в правом нижнем углу,как название миссии.
3 - - выводится большими белыми буквами по центру экрана.
4 - - выводится коричнивыми буквами по центру экрана в 1 строчку.
5 - - выводится коричнивыми буквами вверху экрана в столбик.
6 - - выводится белыми буквами по центру экрана.
7 - - выводится большими голубовато-белыми буквами вверху экрана.

00BB: show_text_lowpriority GXT 'IE23' time 3000 flag 1 - выводит текст с записью IE23 на 3 секунды,флаг 1(обычно всегда равняется единице)(текст "второстипенный").

00BC: show_text_highpriority GXT 'MTIME3' time 3000 flag 1 - выводит текст с записью MTIME3 на 3 секунды,флаг 1(обычно всегда равняется единице)(текст "первостипенный").

00BE: text_clear_all - Очищает весь выведенный в данный момент текст.

01E3: show_text_1number_styled GXT 'BB_15' number $1922 time 5000 style 1 - выводит текст с записью BB_15,числовой переменной $1922(также можно просто число), на 5 секунд,стиль выводимого текста- 1.

01E4: show_text_1number_lowpriority GXT 'HJ_IS' number $HJ_STUNT_BONUS time 2000 flag 1 - выводит текст с записью HJ_IS,числовой переменной $HJ_STUNT_BONUS(также можно просто число), на 2 секунды,флаг - 1(обычно равен единице)(текст "второстипенный").

01E5: show_text_1number_highpriority GXT 'LOW_38' number 271@ time 5000 flag 1 - выводит текст с записью LOW_38,числовой переменной 271@(также можно просто число), на 5 секунд,флаг - 1(обычно равен единице)(текст "первостипенный").

02FD: show_text_2numbers_lowpriority GXT 'BB_05' numbers $1926 $1927 time 5000 flag 1 - выводит текст с записью BB_05,числовой переменной $1926 и переменной $1927(также можно просто число), на 5 секунд,флаг - 1(обычно равен единице)(текст "второстипенный").

02FF: show_text_3numbers GXT 'WHEEL02' numbers $HJ_BONUS $HJ_TWOWHEELS_DISTANCE_FEET $HJ_TWOWHEELS_TIME time 5000 flag 1 - выводит текст с записью WHEEL02,числовой переменной $HJ_BONUS и переменной $HJ_TWOWHEELS_DISTANCE_FEET и переменной $HJ_TWOWHEELS_TIME(также можно просто число), на 5 секунд,флаг - 1(обычно равен единице).

0302: show_text_4numbers GXT 'WHEEL01' numbers $HJ_BONUS $HJ_TWOWHEELS_DISTANCE_METERS_INT $HJ_TWOWHEELS_DISTANCE_METERS_REM $HJ_TWOWHEELS_TIME time 3000 flag 1 - выводит текст с записью WHEEL01,числовой переменной $HJ_BONUS и переменной $HJ_TWOWHEELS_DISTANCE_METERS_INT и переменной $HJ_TWOWHEELS_DISTANCE_METERS_REM и переменной $HJ_TWOWHEELS_TIME(также можно просто число), на 3 секунды,флаг - 1(обычно равен единице).

0303: show_text_4numbers_highpriority GXT 'QUAR_P6' numbers 208@ 209@ 210@ 211@ time 10000 flag 1 - выводит текст с записью QUAR_P6,числовой переменной 208@ и переменной 209@ и переменной 210@ и переменной 211@(также можно просто число), на 3 секунды,флаг - 1(обычно равен единице)(текст "первостипенный").

0308: show_text_6numbers GXT 'HJSTAT' numbers 1@ 2@ 3@ 4@ 5@ 6@ time 5000 flag 5 - выводит текст с записью HJSTAT,числовой переменной 1@ и переменной 2@ и переменной 3@ и переменной 4@ и переменной 5@ и переменной 6@(также можно просто число), на 5 секунд,флаг - 5(неизвестный флаг).

0340: set_text_draw_RGBA 180 180 180 255 - устанавливает выводимому тексту цвет в RGB(Red Green Blue) 180 180 180,прозрачность 255(непрозрачный).

0341: unknown_text_draw_flag 1 - устанавливает выводимиму тексту флаги(незнаю зачем и незнаю какие).

0343: set_text_draw_linewidth 640.0 - устанавливает длину выводимого текста,равную 640.0.

03E4: toggle_text_draw_align_right 0 - устанавливает выводимиму тексту выравнивание по правому краю 0 - не устанавливать,1 - устанавливает выравнивание.

0348: toggle_text_draw_proportional 1 - устанавливает что-то наподобие пропорциональности выводимого текста 0 - не устанавливает,1 - устанавливает.

0345: toggle_text_draw_background 1 - устанавливает выводимиму тексту фон, 0 - не устанавливает,1 - устанавливает.

081C: draw_text_outline 2 RGBA 0 0 0 255 - устанавливает выводимиму тексту обводку с толщиной 2,цветом по RGB 0 0 0(чёрный),прозрачность 255(непрозрачный).

0349: set_text_draw_font 3 - устанавливает шрифт 3 для выводимого текста(1 и 3 работает).

036D: show_text_2numbers_styled GXT 'TX_SEQ' numbers $8198 115@ time 5000 style 5 - выводит текст с записью TX_SEQ,числовыми переменными $8198 и переменной 115@(можно просто число),на 5000 мс,стиль текста 5.

0384: show_text_1string GXT 98@s string 100@s time 15000 1 - выводит текст с записью в стринговой переменной 98@s, и числовой стринговой переменной 100@s,на 15000 мс,и вроде флагом 1.

03C4: set_status_text $BEEFYBARON_SCORE type 1 GXT 'DOLLAR' - выводит статус-текст с числом из переменной $BEEFYBARON_SCORE(только переменная,если подставить число,вылитит из игры),тип 1(полоса(как здоровье,0-текст),с записью DOLLAR.

03D5: remove_text 'TTUTOR' - удаляет текст с записью TTUTOR.

03D6: remove_styled_text 'BOXBURG' - удаляет текст со стилем,с записью BOXBURG.

03F0: toggle_text_draw 0 - вроде как выводит текст(0-невыводит,1-выводит)

045A: draw_text_1number 320.0 155.333 GXT 'ALLRACE' number 0@ - выводит текст по координатам 320.0 155.333,с записью ALLRACE,числовой переменной 0@(можно число).

045B: draw_text_2numbers 320.0 390.0 GXT 'TIME' numbers $TIME_MINS $6228 - выводит текст по координатам 320.0 390.0, с записью TIME,с числовыми переменными $TIME_MINS, и $6228(можно просто число).

04F7: status_text $LOWR_PLAYER_POINTS type 0 line 1 GXT 'LOWR1' - выводит текст из переменной $LOWR_PLAYER_POINTS(только переменная),тип 0(1-линия,0-текст),строка - 1(0-неработает,1-первая линия под HUD'ом,2-чуть ниже,3-ещё ниже,4-максимально низко(5 уже нельзя)),с записью LOWR1.

0513: show_text_box_1number 'SLOT_02' number 14@ - выводит текст-бокс с записью SLOT_02,числовой переменной 14@(можно просто число).

060D: draw_text_shadow 2 color_RGBA 0 0 0 255 - устанавливает выводимиму тексту тень с отступом от текста 2,цветом 0 0 0,прозрачностью 255.

071A: actor 55@ current_dialogue_text == 'VYES1' - проверка:Является ли диалогом в данный момент запись VYES1 у актёра 55@.

076F: text_priority_displayed - проверка:Появился ли первостипенный текст.

03C3: set_timer_to $8007 type 1 GXT 'RM4_34' - создаёт таймер $8007,тип 1(линия вроде),с записью RM4_34.

0890: unknown_timer_or_status_text $8007 flag 3 - задаёт таймеру или статус-тексту $8007 флаг 3(незнаю что он делает)

08EF: set_panel 1@ column 0 row 3 text_2numbers GXT 'TIME' numbers 2@ 3@ - устанавливает таблице 1@,столбцу 0,ряду 3,текст с записью TIME,числовыми переменными 2@ 3@(можно просто числа).

08FE: text_box_displayed - проверка:появился ли текст-бокс

0A19: display_zone_text 'MARKS' показывает справо в нижнем углу название зоны,с записью MARKS.

  • В центр экрана
  • Свернуть
  • Восстановить
  • Закрыть окно
Категория: Скриптинг | Добавил: SKV1991 (14.07.2007) | Автор: Кирилл E W
Просмотров: 2562 | Рейтинг: 5.0/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]