You are not logged in.
Pages: 1
Вот решил переделать свой старый код автосалона. Подходишь, выбираешь из меню машину, покупаешь, рядом появляется купленная машина. Скрипт не сложный, но не оптимизированный. По сравнению с Grotti Street Autos не тормозит, т.к. все машины не грузятся разом, а только после покупки. Когда код оптитмизирую раскидаю штук 5 автосалонов по штату с разными по калибру машинами.
EDIT: Поправил весь скрипт, в CLEO работает прекрасно. Добавил вторую колонку с ценой, исправил цены, убрал глобальные переменные.
Impala это моя добавленная тачка в игру, если хотите, замените ее на что-нибудь другое
{$CLEO} :DEAL1_1 03A4: name_thread 'CHEAP' 0006: 4@ = 2132.0 // integer values 0006: 5@ = -1149.3 // integer values 0006: 6@ = 24.2 // integer values 04CE: $CDICON = create_icon_marker_without_sphere 57 at 4@ 5@ 6@ 03BC: 10@ = create_sphere 4@ 5@ 6@ 1.5 :DEAL1_2 wait 250 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false @DEAL1_2 00D6: if 0 03EE: player $PLAYER_CHAR controllable 004D: jump_if_false @DEAL1_2 00D6: if 0 0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 4@ 5@ 6@ radius 1.5 1.5 1.5 sphere 0 004D: jump_if_false @DEAL1_2 jump @DEAL1_3 return :DEAL1_3 01B4: set player $PLAYER_CHAR frozen_state 0 (frozen) 08D4: $deal1_handle = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel $deal1_handle column 0 alignment 1 09DB: set_panel $deal1_handle column 0 width 140 08DB: $deal1_handle 0 'DUMMY' 'PRIMO' 'REGINA' 'IMPALA' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' 08D6: set_panel $deal1_handle column 1 alignment 2 08DB: $deal1_handle 1 'COST' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 10@ = 4300 11@ = 6100 12@ = 4200 13@ = 6200 14@ = 6500 15@ = 5100 16@ = 4900 17@ = 500 18@ = 5300 19@ = 7400 20@ = 5300 21@ = 8000 08EE: set_panel $deal1_handle column 1 row 0 text_1number 'DOLLAR' 10@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 1 text_1number 'DOLLAR' 11@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 2 text_1number 'DOLLAR' 12@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 3 text_1number 'DOLLAR' 13@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 4 text_1number 'DOLLAR' 14@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 5 text_1number 'DOLLAR' 15@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 6 text_1number 'DOLLAR' 16@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 7 text_1number 'DOLLAR' 17@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 8 text_1number 'DOLLAR' 18@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 9 text_1number 'DOLLAR' 19@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 10 text_1number 'DOLLAR' 20@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 11 text_1number 'DOLLAR' 21@ // $~1~ :DEAL1_4 wait 0 if 0 00E1: key_pressed 0 15 004D: jump_if_false @DEAL1_5 08DA: remove_panel $deal1_handle 03E6: remove_text_box 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 0002: jump @DEAL1_END :DEAL1_5 if 0 00E1: key_pressed 0 16 004D: jump_if_false @DEAL1_4 08D7: 7@ = panel $deal1_handle active_row 08DA: remove_panel $deal1_handle 03E6: remove_text_box 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 0871: init_jump_table 7@ total_jumps 12 0 @DEAL1_6 jumps 0 @DEAL1_6 1 @DEAL1_7 2 @DEAL1_8 3 @DEAL1_9 4 @DEAL1_10 5 @DEAL1_11 6 @DEAL1_12 0872: jump_table_jumps 7 @DEAL1_13 8 @DEAL1_14 9 @DEAL1_15 10 @DEAL1_16 11 @DEAL1_17 -1 @DEAL1_6 -1 @DEAL1_6 -1 @DEAL1_6 -1 @DEAL1_6 :PICKERZ2 wait 250 03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 1 (true) 01B4: set_player $PLAYER_CHAR frozen_state 0 (frozen) 0169: set_fade_color 0 0 0 fade 0 1500 0006: 1@ = 2123.8 // integer values 0006: 2@ = -1140.3 // integer values 0006: 3@ = 26.5 // integer values :PICKERZ3 if fading else_jump @PICKERZ4 wait 0 jump @PICKERZ3 :PICKERZ4 return :DEAL1_6 // selected button 'PRIMO' (0) if 010A: player $PLAYER_CHAR money > 4299 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -4300 wait 10 gosub @PICKERZ2 jump @PRIMO :PRIMO 0247: request_model #PRIMO :PRIMO2 if 0 8248: NOT model #PRIMO available 004D: jump_if_false @PRIMO3 wait 0 jump @PRIMO :PRIMO3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #PRIMO at 1@ 2@ 3@ jump @NEXTRI :DEAL1_7 // selected button 'REGINA' (1) if 0 010A: player $PLAYER_CHAR money > 6099 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -6100 wait 10 gosub @PICKERZ2 jump @REGINA :REGINA 0247: request_model #REGINA :REGINA2 if 0 8248: NOT model #REGINA available 004D: jump_if_false @REGINA3 wait 0 jump @REGINA :REGINA3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #REGINA at 1@ 2@ 3@ jump @NEXTRI :DEAL1_8 // selected button 'IMPALA' (2) 00D6: if 0 010A: player $PLAYER_CHAR money > 5099 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -5100 wait 10 ms gosub @PICKERZ2 jump @BLISTAC :BLISTAC 0247: request_model #IMPALA :BLISTAC2 if 0 8248: NOT model #IMPALA available 004D: jump_if_false @BLISTAC3 wait 0 jump @BLISTAC :BLISTAC3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #IMPALA at 1@ 2@ 3@ jump @NEXTRI :DEAL1_9 // selected button 'BURRITO' (3) if 0 010A: player $PLAYER_CHAR money > 4199 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -4200 wait 10 gosub @PICKERZ2 jump @BURR :BURR 0247: request_model #BURRITO :BURR2 if 0 8248: NOT model #BURRITO available 004D: jump_if_false @BURR3 wait 0 ms jump @BURR :BURR3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #BURRITO at 1@ 2@ 3@ jump @NEXTRI :DEAL1_10 // selected button 'ESPERAN' (4) if 0 010A: player $PLAYER_CHAR money > 6499 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -6500 wait 10 gosub @PICKERZ2 jump @ESPER :ESPER 0247: request_model #ESPERANT :ESPER2 if 0 8248: NOT model #ESPERANT available 004D: jump_if_false @ESPER3 wait 0 jump @ESPER :ESPER3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #ESPERANT at 1@ 2@ 3@ jump @NEXTRI :DEAL1_11 // selected button 'GREENWO' (5) if 0 010A: player $PLAYER_CHAR money > 5099 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -5100 wait 10 gosub @PICKERZ2 jump @GREEN :GREEN 0247: request_model #GREENWOO :GREEN2 if 0 8248: NOT model #GREENWOO available 004D: jump_if_false @GREEN3 wait 0 jump @GREEN :GREEN3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #GREENWOO at 1@ 2@ 3@ 0002: jump @NEXTRI :DEAL1_12 // selected button 'TAHOMA' (6) if 0 010A: player $PLAYER_CHAR money > 4899 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -4900 wait 10 gosub @PICKERZ2 jump @TAHOM :TAHOM 0247: request_model #TAHOMA :TAHOM2 if 0 8248: NOT model #TAHOMA available 004D: jump_if_false @TAHOM3 wait 0 ms jump @TAHOM :TAHOM3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #TAHOMA at 1@ 2@ 3@ jump @NEXTRI :DEAL1_13 // selected button 'NEBULA' (7) if 0 010A: player $PLAYER_CHAR money > 499 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -500 wait 10 ms gosub @PICKERZ2 jump @NEBUL :NEBUL 0247: request_model #NEBULA :NEBUL2 if 0 8248: NOT model #NEBULA available 004D: jump_if_false @NEBUL3 wait 0 jump @NEBUL :NEBUL3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #NEBULA at 1@ 2@ 3@ jump @NEXTRI :DEAL1_14 // selected button 'PICADOR' (8) if 0 010A: player $PLAYER_CHAR money > 5299 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -5300 wait 10 ms gosub @PICKERZ2 jump @PICA :PICA 0247: request_model #PICADOR :PICA2 if 0 8248: NOT model #PICADOR available 004D: jump_if_false @PICA3 wait 0 jump @PICA :PICA3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #PICADOR at 1@ 2@ 3@ jump @NEXTRI :DEAL1_15 // selected button 'SABRE' (9) if 0 010A: player $PLAYER_CHAR money > 7399 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -7400 wait 10 gosub @PICKERZ2 jump @SABR :SABR 0247: request_model #SABRE :SABR2 if 0 8248: NOT model #SABRE available 004D: jump_if_false @SABR3 wait 0 jump @SABR :SABR3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #SABRE at 1@ 2@ 3@ jump @NEXTRI :DEAL1_16 // selected button 'TORNADO' (10) if 0 010A: player $PLAYER_CHAR money > 5299 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -5300 wait 10 gosub @PICKERZ2 jump @TORN :TORN 0247: request_model #TORNADO :TORN2 if 0 8248: NOT model #TORNADO available 004D: jump_if_false @TORN3 wait 0 jump @TORN :TORN3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #TORNADO at 1@ 2@ 3@ jump @NEXTRI :DEAL1_17 // selected button 'BUCCANE' (11) if 0 010A: player $PLAYER_CHAR money > 7999 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -8000 wait 10 gosub @PICKERZ2 jump @BUCC :BUCC 0247: request_model #BUCCANEE :BUCC2 if 0 8248: NOT model #BUCCANEE available 004D: jump_if_false @BUCC3 wait 0 jump @BUCC :BUCC3 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car #BUCCANEE at 1@ 2@ 3@ jump @NEXTRI :NEXTRI wait 0 0175: set_car 8@ z_angle_to 351.0 015F: set_camera_position 2127.2 -1149.4 26.2 0 0 0 0160: point_camera 1@ 2@ 3@ 2 wait 2000 fade 1 1500 :TRI_566 if 0 fading 004D: jump_if_false @TRI_576 wait 0 jump @TRI_566 :TRI_576 00A1: put_actor $PLAYER_ACTOR at 2132.3 -1147.4 24.7 0173: set_actor $PLAYER_ACTOR z_angle_to 40.4 0001: wait 1000 02EB: restore_camera_with_jumpcut 0373: set_camera_directly_behind_player :TRI_583 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0 (false) 01C3: remove_references_to_car 8@ wait 1000 jump @DEAL1_2 :NOMONEY 00BC: text_highpriority 'IE07' 2000 ms 1 wait 3000 jump @DEAL1_2 :DEAL1_END wait 250 if 0 0102: NOT actor $PLAYER_ACTOR stopped_near_point_on_foot 4@ 5@ 6@ radius 1.5 1.5 1.5 sphere 0 004D: jump_if_false @DEAL1_2 jump @DEAL1_END
Last edited by jayrocc (07-12-2007 23:26)
Offline
Хороший скрипт , только опять же , зачем использовать глобальные переменные , типа как "$498" ? Только глюков прибавит . И зачем каждая машина отдельно создается ? Ведь всё можно было вместе сделать )
Offline
вот блин, я его фигово написал, т.к. не знаю как лучше - мне просто нужно сделать перед покупкой машины проверку и вычет денег игрока...
Как я могу сделать, чтобы код создания машины был один?
а глобальные переменные поправлю.. спасибо
Offline
2Alexander:
зачем использовать глобальные переменные , типа как "$498" ? Только глюков прибавит .
Локальные не всегда работают корректно (сталкивался не раз)...
В мультимоде около 200-300 глобальных переменных и ничего - работает :-)
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
ты ведь мм делаешь сам , поэтому все с глобальными учтено , а отдельный скрипт можно вставить куда угодно , и появляется вероятность конфликта глобальных переменных . Насчет того , что локальные могут не работать - да , но не в этом скрипте. : )
Offline
2jayrocc:
Посмотри вот эти скрипты, может найдешь парочку удачных решений для себя:
http://gtacoding.nm.ru/dl/carshop409f.rar
http://www.gtaforums.com/index.php?showtopic=258016
Offline
спасибо! попробую пофиксить на досуге
Offline
Хотел все это оптимизировать но столкнулся с проблемой: не могу понять как я могу заменить количество отнмимаемых денег у игрока на переменную, которая будет браться из таблицы (10@ = 4300)
Если подставить 10@ вместо 4300 игра вылетает...
:DEAL1_6 // selected button 'PRIMO' (0) if 010A: player $PLAYER_CHAR money > 4299 004D: jump_if_false @NOMONEY 0109: player $PLAYER_CHAR money += -4300 wait 10 gosub @PICKERZ2 jump @PRIMO
Offline
дык, а чего тут не ясного то?
:DEAL1_6 // selected button 'PRIMO' (0) 10@ == 4299 if 010A: player $PLAYER_CHAR money > 10@ 004D: jump_if_false @NOMONEY 10@ == -4300 0109: player $PLAYER_CHAR money += 10@ wait 10 gosub @PICKERZ2 jump @PRIMO
Offline
Это зачем ?
10@ == 4299
И это ?
10@ == -4300
Всё просто
10@ = 4300 // убрать :DEAL1_6 // selected button 'PRIMO' (0) 010B: 33@ = player $PLAYER_CHAR money 002D: 33@ >= 10@ 004D: jump_if_false @NOMONEY 0085: 33@ = 10@ 0012: 33@ *= -1 0109: player $PLAYER_CHAR money += 33@ wait 10 gosub @PICKERZ2 jump @PRIMO
Offline
2Alexander. а зачем огород городить, с несколькими переменными, с умножениями и т. д.? в некоторых случаях лучше и так сделать, но тут человек спрашивал как заменить числа на переменные.
Offline
2 flashTrash
Понимаешь, я не могу указывать цену машины в куске скрипта с ее созданием и проверкой цены - этот кусок должен быть единственным для всех машин. Поэтому я должен указать цену машины в лейбле на который можной перейти с помощью 0871: init_jump_table.
А потом с уже загруженной переменной цены мне нужно перейти к куску создания машины и проверки денег.
2 flashTrash и Alexander
Я попробовал оба варианта, машины появляются, но проверка денег не делается - деньги не отнимаются.
{$CLEO} :DEAL1_1 03A4: name_thread 'CHEAP' 0006: 4@ = 2132.0 // integer values 0006: 5@ = -1149.3 // integer values 0006: 6@ = 24.2 // integer values 04CE: $CDICON = create_icon_marker_without_sphere 57 at 4@ 5@ 6@ 03BC: 10@ = create_sphere 4@ 5@ 6@ 1.5 :DEAL1_2 wait 250 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false @DEAL1_2 00D6: if 0 03EE: player $PLAYER_CHAR controllable 004D: jump_if_false @DEAL1_2 00D6: if 0 0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 4@ 5@ 6@ radius 1.5 1.5 1.5 sphere 0 004D: jump_if_false @DEAL1_2 jump @DEAL1_3 return :DEAL1_3 01B4: set player $PLAYER_CHAR frozen_state 0 (frozen) 08D4: $deal1_handle = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel $deal1_handle column 0 alignment 1 09DB: set_panel $deal1_handle column 0 width 140 08DB: $deal1_handle 0 'DUMMY' 'PRIMO' 'REGINA' 'IMPALA' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' 08D6: set_panel $deal1_handle column 1 alignment 2 08DB: $deal1_handle 1 'COST' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 10@ = 4300 11@ = 6100 12@ = 4200 13@ = 6200 14@ = 6500 15@ = 5100 16@ = 4900 17@ = 500 18@ = 5300 19@ = 7400 20@ = 5300 21@ = 8000 08EE: set_panel $deal1_handle column 1 row 0 text_1number 'DOLLAR' 10@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 1 text_1number 'DOLLAR' 11@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 2 text_1number 'DOLLAR' 12@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 3 text_1number 'DOLLAR' 13@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 4 text_1number 'DOLLAR' 14@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 5 text_1number 'DOLLAR' 15@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 6 text_1number 'DOLLAR' 16@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 7 text_1number 'DOLLAR' 17@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 8 text_1number 'DOLLAR' 18@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 9 text_1number 'DOLLAR' 19@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 10 text_1number 'DOLLAR' 20@ // $~1~ 08EE: set_panel $deal1_handle column 1 row 11 text_1number 'DOLLAR' 21@ // $~1~ :DEAL1_4 wait 0 if 0 00E1: key_pressed 0 15 004D: jump_if_false @DEAL1_5 08DA: remove_panel $deal1_handle 03E6: remove_text_box 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 0002: jump @DEAL1_END :DEAL1_5 if 0 00E1: key_pressed 0 16 004D: jump_if_false @DEAL1_4 08D7: 7@ = panel $deal1_handle active_row 08DA: remove_panel $deal1_handle 03E6: remove_text_box 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 0871: init_jump_table 7@ total_jumps 12 0 @PRIMO jumps 0 @PRIMO 1 @REGINA 2 @IMPALA 3 @BURRITO 4 @ESPERAN 5 @GREENWO 6 @TAHOMA 0872: jump_table_jumps 7 @NEBULA 8 @PICADOR 9 @SABRE 10 @TORNADO 11 @BUCCANE -1 @PRIMO -1 @PRIMO -1 @PRIMO -1 @PRIMO :PICKERZ2 wait 250 03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 1 (true) 01B4: set_player $PLAYER_CHAR frozen_state 0 (frozen) 0169: set_fade_color 0 0 0 fade 0 1500 0006: 1@ = 2123.8 // integer values 0006: 2@ = -1140.3 // integer values 0006: 3@ = 26.5 // integer values :PICKERZ3 if fading else_jump @PICKERZ4 wait 0 jump @PICKERZ3 :PICKERZ4 return :PRIMO wait 100 0085: 10@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :REGINA wait 100 0085: 11@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :IMPALA wait 100 0085: 12@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :BURRITO wait 100 0085: 13@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :ESPERAN wait 100 0085: 14@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :GREENWO wait 100 0085: 15@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :TAHOMA wait 100 0085: 16@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :NEBULA wait 100 0085: 17@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :PICADOR wait 100 0085: 18@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :SABRE wait 100 0085: 19@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :TORNADO wait 100 0085: 20@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :BUCCANE wait 100 0085: 21@ = 22@ 23@ = 547 // integer values jump @DEAL1_6 :DEAL1_6 010B: 33@ = player $PLAYER_CHAR money 002D: 33@ >= 22@ 004D: jump_if_false @NOMONEY 0085: 33@ = 22@ 0012: 33@ *= -1 0109: player $PLAYER_CHAR money += 33@ wait 10 gosub @PICKERZ2 jump @DEAL1_7 :DEAL1_7 Model.Load(23@) 038B: load_requested_models :DEAL1_8 if not Model.Available(23@) 004D: jump_if_false @DEAL1_9 wait 0 jump @DEAL1_7 :DEAL1_9 0395: clear_area 1 at 1@ 2@ 3@ range 2.0 00A5: 8@ = create_car 23@ at 1@ 2@ 3@ jump @NEXTRI :NEXTRI wait 0 0175: set_car 8@ z_angle_to 351.0 015F: set_camera_position 2127.2 -1149.4 26.2 0 0 0 0160: point_camera 1@ 2@ 3@ 2 wait 2000 fade 1 1500 :TRI_566 if 0 fading 004D: jump_if_false @TRI_576 wait 0 jump @TRI_566 :TRI_576 00A1: put_actor $PLAYER_ACTOR at 2132.3 -1147.4 24.7 0173: set_actor $PLAYER_ACTOR z_angle_to 40.4 wait 1000 02EB: restore_camera_with_jumpcut 0373: set_camera_directly_behind_player :TRI_583 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen) 03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0 (false) 01C3: remove_references_to_car 8@ wait 1000 jump @DEAL1_2 :NOMONEY 00BC: text_highpriority 'IE07' 2000 ms 1 wait 3000 jump @DEAL1_2 :DEAL1_END wait 250 if 0 0102: NOT actor $PLAYER_ACTOR stopped_near_point_on_foot 4@ 5@ 6@ radius 1.5 1.5 1.5 sphere 0 004D: jump_if_false @DEAL1_2 jump @DEAL1_END
Last edited by jayrocc (08-12-2007 11:41)
Offline
2jayrocc:
Я попробовал оба варианта, машины появляются, но проверка денег не делается - деньги не отнимаются.
Впринципе их можно объявить с минусами, правда в таблице тоже будут с минусами.
Накатал примерный скрипт, посмотри, может поможет, обрати внимание как можно работать с массивами.
{$CLEO} var 0@: Array 12 of Integer 20@: Array 12 of Integer end 0@ = -4300 1@ = -6100 2@ = -4200 3@ = -6200 4@ = -6500 5@ = -5100 6@ = -4900 7@ = -500 8@ = -5300 9@ = -7400 10@ = -5300 11@ = -8000 20@ = #PRIMO 21@ = #REGINA 22@ = #BULLET 23@ = #BURRITO 24@ = #ESPERANT 25@ = #GREENWOO 26@ = #TAHOMA 27@ = #NEBULA 28@ = #PICADOR 29@ = #SABRE 30@ = #TORNADO 31@ = #BUCCANEE while true wait 0 if Player.Defined($PLAYER_CHAR) then if 00E1: player 0 pressed_key 4 then Player.CanMove($PLAYER_CHAR) = False 08D4: 12@ = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel 12@ column 0 alignment 1 09DB: set_panel 12@ column 0 width 140 08DB: set_panel 12@ column 0 header 'DUMMY' data 'PRIMO' 'REGINA' 'BULLET' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' 08D6: set_panel 12@ column 1 alignment 2 08DB: set_panel 12@ column 1 header 'COST' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' for 13@ = 0 to 11 08EE: set_panel 12@ column 1 row 13@ text_1number GXT 'DOLLAR' number 0@[13@] // $~1~ end while true wait 0 if 00E1: key_pressed 0 15 then Break end if 00E1: key_pressed 0 16 then 08D7: 14@ = panel 12@ active_row Player.Money($PLAYER_CHAR) += 0@[14@] 0AA5: call 0x43A0B6 num_params 1 pop 1 20@[14@] Break end end 08DA: remove_panel 12@ 03E6: remove_text_box Player.CanMove($PLAYER_CHAR) = True end end end
И еще что за такая машина - 'IMPALA'
Offline
Очень интересно, но можно ли обойтись без минусов перед названиями?
IMPALA - это машина, которую я добавил (не заменил) в игру
Offline
Очень интересно, но можно ли обойтись без минусов перед названиями?
08D7: 14@ = panel 12@ active_row 13@ = 0@[14@] 13@ *= -1 Player.Money($PLAYER_CHAR) += 13@ 0AA5: call 0x43A0B6 num_params 1 pop 1 20@[14@]
и цены перепиши на положительные
Offline
да уж массивы для меня штука непонятная...
{$CLEO} :DEAL1_1 03A4: name_thread 'CHEAP' 0006: 4@ = 2132.0 // integer values 0006: 5@ = -1149.3 // integer values 0006: 6@ = 24.2 // integer values 04CE: $CDICON = create_icon_marker_without_sphere 57 at 4@ 5@ 6@ 03BC: 10@ = create_sphere 4@ 5@ 6@ 1.5 :DEAL1_2 wait 250 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false @DEAL1_2 00D6: if 0 03EE: player $PLAYER_CHAR controllable 004D: jump_if_false @DEAL1_2 00D6: if 0 0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 4@ 5@ 6@ radius 1.5 1.5 1.5 sphere 0 004D: jump_if_false @DEAL1_2 jump @DEAL1_3 :DEAL1_3 var 0@: Array 12 of Integer 20@: Array 12 of Integer end 0@ = 4300 1@ = 6100 2@ = 4200 3@ = 6200 4@ = 6500 5@ = 5100 6@ = 4900 7@ = 500 8@ = 5300 9@ = 7400 10@ = 5300 11@ = 8000 20@ = #PRIMO 21@ = #REGINA 22@ = #BULLET 23@ = #BURRITO 24@ = #ESPERANT 25@ = #GREENWOO 26@ = #TAHOMA 27@ = #NEBULA 28@ = #PICADOR 29@ = #SABRE 30@ = #TORNADO 31@ = #BUCCANEE while true wait 0 if Player.Defined($PLAYER_CHAR) then if 00E1: player 0 pressed_key 4 then Player.CanMove($PLAYER_CHAR) = False 08D4: 12@ = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel 12@ column 0 alignment 1 09DB: set_panel 12@ column 0 width 140 08DB: set_panel 12@ column 0 header 'DUMMY' data 'PRIMO' 'REGINA' 'BULLET' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' 08D6: set_panel 12@ column 1 alignment 2 08DB: set_panel 12@ column 1 header 'COST' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' for 13@ = 0 to 11 08EE: set_panel 12@ column 1 row 13@ text_1number GXT 'DOLLAR' number 0@[13@] // $~1~ end while true wait 0 if 00E1: key_pressed 0 15 then Break end if 00E1: key_pressed 0 16 then 08D7: 14@ = panel 12@ active_row 13@ = 0@[14@] 13@ *= -1 Player.Money($PLAYER_CHAR) += 13@ 0AA5: call 0x43A0B6 num_params 1 pop 1 20@[14@] Break end end 08DA: remove_panel 12@ 03E6: remove_text_box Player.CanMove($PLAYER_CHAR) = True end end end
в этом случае после входа в сферу нужно еще нажимать кнопку Action - не знаю как убрать
Кроме того проверки денег нет, т.е. они отнимаются в нужном объеме, но уходят в минус.
И еще машина появляется врезанной в здание
Last edited by jayrocc (10-12-2007 21:47)
Offline
да уж массивы для меня штука непонятная...
Почитай хелп, там кое-что есть.
в этом случае после входа в сферу нужно еще нажимать кнопку Action - не знаю как убрать
Убери проверку if 00E1: player 0 pressed_key 4 then … end.
Кроме того проверки денег нет, т.е. они отнимаются в нужном объеме, но уходят в минус.
И еще машина появляется врезанной в здание
Это было сделано для быстроты и кроме того у тебя в скрипте это есть, неужели сам прикрутить не смог.
{$CLEO} const iconX = 12@ iconY = 13@ iconZ = 14@ hIcon = 15@ hPanel = 16@ rowId = 17@ i = 18@ tmp = 19@ end var 0@: Array 12 of Integer 20@: Array 12 of Integer end iconX = 2132.0 iconY = -1149.3 iconZ = 24.2 02A7: hIcon = create_icon_marker_and_sphere 57 at iconX iconY iconZ 0@ = 4300 1@ = 6100 2@ = 4200 3@ = 6200 4@ = 6500 5@ = 5100 6@ = 4900 7@ = 500 8@ = 5300 9@ = 7400 10@ = 5300 11@ = 8000 20@ = #PRIMO 21@ = #REGINA 22@ = #BULLET 23@ = #BURRITO 24@ = #ESPERANT 25@ = #GREENWOO 26@ = #TAHOMA 27@ = #NEBULA 28@ = #PICADOR 29@ = #SABRE 30@ = #TORNADO 31@ = #BUCCANEE while true wait 0 if Player.Defined($PLAYER_CHAR) then if 0102: actor $PLAYER_ACTOR in_sphere iconX iconY iconZ radius 1.2 1.2 3.0 sphere 0 stopped_on_foot then Player.CanMove($PLAYER_CHAR) = False gosub @PanelCreate gosub @PanelProc gosub @PanelDestroy Player.CanMove($PLAYER_CHAR) = True Actor.PutAt($PLAYER_ACTOR, 2132.0303, -1146.5492, 24.581) Actor.Angle($PLAYER_ACTOR) = 4.7 end end end :PanelCreate 03E6: remove_text_box 08D4: hPanel = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel hPanel column 0 alignment 1 09DB: set_panel hPanel column 0 width 140 08DB: set_panel hPanel column 0 header 'DUMMY' data 'PRIMO' 'REGINA' 'BULLET' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' 08D6: set_panel hPanel column 1 alignment 2 08DB: set_panel hPanel column 1 header 'COST' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' for i = 0 to 11 08EE: set_panel hPanel column 1 row i text_1number GXT 'DOLLAR' number 0@[i] // $~1~ end 090E: set_panel hPanel active_row 0 return :PanelProc while true wait 0 if 00E1: player 0 pressed_key 15 then Break end if 00E1: player 0 pressed_key 16 then 08D7: rowId = panel hPanel active_row 0085: tmp = 0@[rowId] // (int) if not Player.Money($PLAYER_CHAR) > tmp then 00BC: show_text_highpriority GXT 'IE07' time 5000 flag 1 // ~r~You don't have enough cash! else tmp *= -1 Player.Money($PLAYER_CHAR) += tmp gosub @SpawnCar Break end end end return :PanelDestroy 03E6: remove_text_box 08DA: remove_panel hPanel return :SpawnCar 03BF: set_player $PLAYER_CHAR ignored_by_everyone 1 0169: set_fade_color_RGB 0 0 0 fade 0 1500 while fading wait 0 end Model.Load(20@[rowId]) while not Model.Available(20@[rowId]) wait 0 end 0395: clear_area 1 at 2123.8 -1140.3 26.5 radius 2.0 tmp = Car.Create(20@[rowId], 2123.8, -1140.3, 26.5) Car.Angle(tmp) = 351.0 Camera.SetPosition(2127.2, -1149.4, 26.2, 0, 0, 0) Camera.PointAt(2123.8, -1140.3, 26.5, 2) wait 2000 fade 1 1500 while fading wait 0 end wait 1000 Camera.Restore_WithJumpCut Camera.SetBehindPlayer 03BF: set_player $PLAYER_CHAR ignored_by_everyone 0 Car.RemoveReferences(tmp) Model.Destroy(20@[rowId]) wait 1000 return
Offline
EDIT: Новый код, короткий и рабочий, я еще добавил код продавца, который стоит на площаке, но после его добавления скрипт перестал работать :)
все равно в этом ничерта не просто разобраться - логика многих вещей отличается от обычного построения main'a.
[strike]Вот попробовал доработать скрипт, а) чтобы панель убиралась, когда появляется сообщение о нехватке денег б) чтобы Карл не убирался из сферы, а просто была проверка после покупки машины, стоит ли он в сфере, и пока он стоит перехода на начало скрипта не происходит. Только чего-то после выбора машины игра вылетает... ;( нашел очень мало инфы по массивам и такому построению if... then... end...[/strike]
а вообще спасибо, что помогаете, в финале раскидаю автосалоны по всему штату в виде отдельных CLEO скриптов.
{$CLEO .cs} 0000: NOP 12@ = 2132.0 13@ = -1149.3 14@ = 24.2 15@ = Marker.CreateIconAndSphere(57, 12@, 13@, 14@) 0@ = 4300 1@ = 6100 2@ = 4200 3@ = 6200 4@ = 6500 5@ = 5100 6@ = 4900 7@ = 500 8@ = 5300 9@ = 7400 10@ = 5300 11@ = 8000 20@ = 547 21@ = 479 22@ = 541 23@ = 482 24@ = 419 25@ = 492 26@ = 566 27@ = 516 28@ = 600 29@ = 475 30@ = 576 31@ = 518 :NONAME_236 wait 0 if and Player.Defined($PLAYER_CHAR) 00FE: actor $PLAYER_ACTOR 0 2132.0 -1149.3 24.2 radius 200.0 200.0 200.0 jf @NONAME_236 :NONAME_237 wait 0 Model.Load(#HMOST) 038B: load_requested_models if Model.Available(#HMOST) jf @NONAME_237 $AUTO_DEAL1 = Actor.Create(CivMale, #HMOST, 2132.0, -1149.3, 24.2) :NONAME_240 if 0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 2131.9434 2131.9434 24.4603 radius 1.0 1.0 2.0 sphere 0 jf @NONAME_239 jump @NONAME_365 :NONAME_239 if 80FE: not actor $PLAYER_ACTOR 0 2132.0 -1149.3 24.2 radius 200.0 200.0 200.0 jf @NONAME_240 Actor.DestroyWithFade($AUTO_DEAL1) :NONAME_365 Player.CanMove($PLAYER_CHAR) = False 03E6: remove_text_box 08D4: 16@ = create_panel_with_title 'DEALCAR' position 29.0 165.0 width 60.0 columns 2 interactive 1 background 1 alignment 1 08D6: set_panel 16@ column 0 alignment 1 09DB: set_panel 16@ column 0 width 140 08DB: set_panel 16@ column 0 header 'DUMMY' data 'PRIMO' 'REGINA' 'BULLET' 'BURRITO' 'ESPERAN' 'GREENWO' 'TAHOMA' 'NEBULA' 'PICADOR' 'SABRE' 'TORNADO' 'BUCCANE' // Primo // Regina // Bullet // Burrito // Esperanto // Greenwood // Tahoma // Nebula // Picador // Sabre // Tornado // Buccaneer 08D6: set_panel 16@ column 1 alignment 2 08DB: set_panel 16@ column 1 header 'COST' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' // Cost 18@ = 0 :NONAME_694 08EE: set_panel 16@ column 1 row 18@ text_1number GXT 'DOLLAR' number 0@(18@,12i) // $~1~ 18@ += 1 18@ > 11 jf @NONAME_694 090E: set_panel 16@ active_row 0 :NONAME_695 wait 0 if 0 00E1: player 0 pressed_key 15 jf @NONAME_778 08DA: remove_panel 16@ 03E6: remove_text_box jump @NONAME_1120 :NONAME_778 if 00E1: player 0 pressed_key 16 jf @NONAME_695 08D7: 17@ = panel 16@ active_row 0085: 19@ = 0@(17@,12i) // (int) if not Player.Money($PLAYER_CHAR) > 19@ jf @NONAME_857 08DA: remove_panel 16@ 03E6: remove_text_box 00BC: show_text_highpriority GXT 'IE07' time 3500 flag 1 // ~r~You don't have enough cash! jump @NONAME_1120 :NONAME_857 19@ *= -1 Player.Money($PLAYER_CHAR) += 19@ :NONAME_904 03BF: set_player $PLAYER_CHAR ignored_by_everyone 1 0169: set_fade_color_RGB 0 0 0 fade 0 1500 :NONAME_926 fading jf @NONAME_946 wait 0 jump @NONAME_926 :NONAME_946 Model.Load(20@(17@,12i)) :NONAME_955 not Model.Available(20@(17@,12i)) jf @NONAME_982 wait 0 jump @NONAME_955 :NONAME_982 wait 100 08DA: remove_panel 16@ 03E6: remove_text_box 0395: clear_area 1 at 2126.3237 -1144.1848 24.8206 radius 2.0 Actor.PutAt($PLAYER_ACTOR, 2126.3237, -1144.1848, 24.8206) Actor.Angle($PLAYER_ACTOR) = 41.6 0395: clear_area 1 at 2123.8 -1140.3 26.5 radius 2.0 19@ = Car.Create(20@(17@,12i), 2123.8, -1140.3, 26.5) Car.Angle(19@) = 351.0 Camera.SetPosition(2127.2, -1149.4, 26.2, 0, 0, 0) Camera.PointAt(2123.8, -1140.3, 26.5, 2) wait 2000 fade 1 1500 :NONAME_1097 fading jf @NONAME_1117 wait 0 jump @NONAME_1097 :NONAME_1117 wait 1000 Camera.Restore_WithJumpCut Camera.SetBehindPlayer 03BF: set_player $PLAYER_CHAR ignored_by_everyone 0 Car.RemoveReferences(19@) Model.Destroy(20@(17@,12i)) wait 1000 :NONAME_1120 wait 250 Player.CanMove($PLAYER_CHAR) = True if 0 0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 12@ 13@ 14@ radius 1.5 1.5 1.5 sphere 0 jf @NONAME_236 jump @NONAME_1120
Last edited by jayrocc (23-12-2007 18:38)
Offline
Нащёт "кучи автосалонов" магу помоч - уже записал координаты маркеров, мест спавна машины и места расположения камеры. Просто сам уже этим занялся (на более старой версии правда)
P.S. Не if/then/end, а if/then/else
P.P.S. и иконку нада 55ую а не 57ую. А лутше её перерисовать но этим я сам магу заняться
Last edited by BullDogHEMI427 (12-04-2009 17:36)
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Pages: 1