Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
12.11.07 23:01 |

Панель, или список товаров. Часть II.

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 9.33 (6) | Хитов 6018

Это происходит, потому что мы не указали размер столбцов и поэтому первый и второй столбец создаются с шириной равной ширине панели. Поправим это.
09DB: set_panel $Panel column 0 width 230 – установим для первого столбца ширину 230
09DB: set_panel $Panel column 1 width 70 – соответственно для второго – 70.

Теперь нам осталось добавить результат выбора строки, то есть то, что будет происходить при выборе одной из строк в нашей панели. Воспользуемся вариантом, рассмотренным в первой статье. Очень удобно применять для этих целей таблицу переходов, но для простоты эксперимента не будем отвлекаться на сложные материи. :)
Вот что у нас получилось:
Код:
:PANEL
thread 'PANEL'

:PANEL_1
wait 0
if and
0038: $ONMISSION == 0
0256: player $PLAYER_CHAR defined
0102: actor $PLAYER_ACTOR near_point 2486.2712 -1650.4073 13.4805 radius 1.0 1.0 1.0 sphere 1
jf @PANEL_1
if
010A: player $PLAYER_CHAR money > 100
jf @PANEL_5
2@ = 100
3@ = 120
4@ = 150
5@ = 200
6@ = 220
7@ = 250
8@ = 270
01B4: toggle_player $PLAYER_CHAR can_move 0
0512: show_permanent_text_box 'AMMU_H'
0581: toggle_radar 0
08D4: $PANEL = create_panel_with_title 'AMMUN' position 29.0 170.0 width 300.0 columns 2 interactive 1 background 1 alignment 1
08DB: set_panel $PANEL column 0 header 'DUMMY' data 'HOTKNIF' 'KATANA' 'BASEBAT' 'CHAINSA' 'GA_12' 'GUN8' 'GUN5' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'
08D6: set_panel $PANEL column 1 alignment 1
08EE: set_panel $Panel column 1 row 0 text_1number GXT 'DOLLAR' number 2@ // $~1~
08EE: set_panel $Panel column 1 row 1 text_1number GXT 'DOLLAR' number 3@ // x ~1~
08EE: set_panel $Panel column 1 row 2 text_1number GXT 'DOLLAR' number 4@ // $~1~
08EE: set_panel $Panel column 1 row 3 text_1number GXT 'DOLLAR' number 5@ // $~1~
08EE: set_panel $Panel column 1 row 4 text_1number GXT 'DOLLAR' number 6@ // x ~1~
08EE: set_panel $Panel column 1 row 5 text_1number GXT 'DOLLAR' number 7@ // $~1~
08EE: set_panel $Panel column 1 row 6 text_1number GXT 'DOLLAR' number 8@ // $~1~
09DB: set_panel $Panel column 0 width 230
09DB: set_panel $Panel column 1 width 70

:PANEL_2
wait 0
if
00E1: player 0 pressed_key 16 // если нажата клавиша «ПРОБЕЛ»
jf @PANEL_3
08D7: 0@ = panel $Panel active_row // записываем номер строки
gosub @PANEL_RESULT // переходим на метку PANEL_RESULT

:PANEL_3
wait 0
if
00E1: player 0 pressed_key 15
jf @PANEL_2
0581: toggle_radar 1
03E6: remove_text_box
08DA: remove_panel $PANEL
01B4: toggle_player $PLAYER_CHAR can_move 1
wait 1000
jump @PANEL_1

:PANEL_5
03D6: remove_styled_text 'NOMONEY'
00BC: text_highpriority 'NOMONEY' 3000 ms 1
0002: jump @PANEL_1

:PANEL_RESULT
010B: 14@ = player $PLAYER_CHAR money // записываем в переменную количество денег игрока
if
0@ == 0 //если выбрана первая строка
jf @PANEL_RESULT_2
if
002D: 14@ >= 2@ //количество денег у игрока больше или равно стоимости товара
jf @PANEL_RESULT_8
//если нет, то выводим надпись о том, что у игрока не достаточно денег
00BE: text_clear_all //убираем весь текст
00BA: show_text_styled GXT 'MTG02F' time 3000 style 5
1@ = 0 // вводим переменную
0062: 1@ -= 2@ //отнимаем стоимость товара
0109: player $PLAYER_CHAR money += 1@
//устанавливаем игроку общее количество денег с учетом покупки товара
jump @PANEL_RESULT_9 // переходим на метку выхода

:PANEL_RESULT_2
if
0@ == 1
jf @PANEL_RESULT_3
if
002D: 14@ >= 3@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME1' time 3000 style 5
1@ = 0
0062: 1@ -= 3@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_3
if
0@ == 2
jf @PANEL_RESULT_4
if
002D: 14@ >= 4@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME2' time 3000 style 5
1@ = 0
0062: 1@ -= 4@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_4
if
0@ == 3
jf @PANEL_RESULT_5
if
002D: 14@ >= 5@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME3' time 3000 style 5
1@ = 0
0062: 1@ -= 5@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_5
if
0@ == 4
jf @PANEL_RESULT_6
if
002D: 14@ >= 6@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME4' time 3000 style 5
1@ = 0
0062: 1@ -= 6@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_6
if
0@ == 5
jf @PANEL_RESULT_7
if
002D: 14@ >= 7@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME5' time 3000 style 5
1@ = 0
0062: 1@ -= 7@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_7
if
0@ == 6
jf @PANEL_RESULT_9
if
002D: 14@ >= 8@
jf @PANEL_RESULT_8
00BE: text_clear_all
00BA: show_text_styled GXT 'MTIME6' time 3000 style 5
1@ = 0
0062: 1@ -= 8@
0109: player $PLAYER_CHAR money += 1@
jump @PANEL_RESULT_9

:PANEL_RESULT_8 // сообщаем о нехватке наличных
03D6: remove_styled_text 'NOMONEY'
00BC: text_highpriority 'NOMONEY' 3000 ms 1

:PANEL_RESULT_9 // метка выхода
return // возвращаемся на следующую после gosub @PANEL_RESULT строку.

Смотрим результат работы нашего скрипта:
Панель, или  список товаров. Часть II
Вот собственно и все что нужно знать о панелях.


  «12

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела Основы скриптинга
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела Основы скриптинга:
» Работа со звуками в GTA San Andreas
» Директивы
» Контроль клавиатуры
» External Script – что это такое и как с ним работать?
» Панель, или список товаров. Часть II.

5 последних статей раздела Основы скриптинга:
» Директивы
» Дополнительные команды
» Ключевые слова
» Классы
» Циклы

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
Яндекс.Метрика
   
   
- Генерация страницы: 0.03 секунд -