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