#1 07-03-2009 09:25

Vlad
Registered: 07-03-2009
Posts: 12

Скрипт такси

Один из моих первых скриптов=)

{$CLEO .cs}

0000: NOP 

:TAXI
wait 0 
if
player.Defined($player_char)
jf @TAXI
if and
$ONMISSION == 0 // integer values
not Actor.Driving($PLAYER_ACTOR)
0AB0:   key_pressed 120 
jf @TAXI
077E: $ACTIVE_INTERIOR = active_interior 
if
0038: $ACTIVE_INTERIOR == 0 
jf @TAXI 
if
010A:   player $PLAYER_CHAR money >= 10000 
jf @TAXI_6
25@ = 100 
26@ = 10000 
29@=0
0581: toggle_radar 0 
08D4: 9@ = create_panel_with_title 'TAXIST' position 29.0 170.0 width 300.0 columns 2 interactive 1 background 1 alignment 1
08DB: set_panel 9@ column 0 header 'DUMMY' data 'DUMMY' 'TAXI' 'STRETCH' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  
08D6: set_panel 9@ column 1 alignment 1 
08EE: set_panel 9@ column 1 row 1 text_1number GXT 'DOLLAR' number 25@
08EE: set_panel 9@ column 1 row 2 text_1number GXT 'DOLLAR' number 26@
090E: set_panel 9@ active_row 1
01B4: toggle_player $PLAYER_CHAR can_move 0 
09DB: set_panel 9@ column 0 width 230 
09DB: set_panel 9@ column 1 width 70

:TAXI_0
wait 0
if 
00E1: player 0 pressed_key 16
jf @TAXI_01
08D7: 28@ = panel 9@ active_row
0581: toggle_radar 1
player.Money($player_char)+=-100
gosub @TAXI_RESULT 

:TAXI_01
wait 0
if
00E1:   player 0 pressed_key 15         
jf @TAXI_0
0581: toggle_radar 1 
03E6: remove_text_box 
08DA: remove_panel 9@ 
01B4: toggle_player $PLAYER_CHAR can_move 1 
wait 1000 
jump @TAXI


:TAXI_RESULT
wait 0
if
 28@ == 1
jf @TAXI_RESULT_2
17@ = 420
19@=220
13@ = 0
18@ = 3
23@ =-1.5 
24@ = 0.5 
29@+=-100
jump @TAXI_03

:TAXI_RESULT_2
wait 0
if
 28@ == 2
jf @TAXI_RESULT_2
17@ = 409
19@=61
13@ = 2
18@ = 5
23@ =-2.5 
24@ =0.5 
29@+=-10000
jump @TAXI_03

:TAXI_03
08DA: remove_panel 9@ 
01B4: toggle_player $PLAYER_CHAR can_move 1 
Model.Load(17@)
Model.Load(19@)
Model.Load(#CELLPHONE) 
038B: load_requested_models 

:TAXI_1
wait 0 
if and
model.Available(17@)
model.Available(19@)
model.Available(#CELLPHONE)
jf @TAXI_1
04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 20.0 20.0 0.0 
04C4: store_coords_to 10@ 11@ 12@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 
02C1: store_to 3@ 4@ 5@ car_path_coords_closest_to 0@ 1@ 2@
02C1: store_to 14@ 15@ 16@ car_path_coords_closest_to 10@ 11@ 12@
car.Create(6@, 17@, 3@, 4@, 5@)
0229: set_car 6@ primary_color_to 6 secondary_color_to 6
car.SetImmunities(6@,1,1,1,1,1)
0129: 7@ = create_actor 4 19@ in_car 6@ driverseat  
054A: set_actor 7@ immune_to_car_headshots 1
Player.CanMove($PLAYER_CHAR) = False
0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
wait 500
car.DriveTo(6@,14@, 15@, 16@)
car.SetMaxSpeed(6@,10.0)
marker.CreateAboveCar(27@,6@)
marker.SetColor(27@,8)
car.ToggleTaxiLight(6@)=true


:TAXI_11
wait 5000 
0729: AS_actor $PLAYER_ACTOR hold_cellphone 0
wait 1000
Player.CanMove($PLAYER_CHAR) = true
 
:TAXI_2
wait 0
if
0103: actor 7@ stopped_near_point_in_car 14@ 15@ 16@ radius 10.0 10.0 10.0 sphere 1
jf @TAXI_22
0AB6: store_target_marker_coords_to 20@ 21@ 22@ // IF and SET
04E4: unknown_refresh_game_renderer_at 20@ 21@
05CA: AS_actor $PLAYER_ACTOR enter_car 6@ passenger_seat 13@ 30000 ms 
0657: car 6@ open_component 18@ 
marker.Disable(27@)
jump @TAXI_3

:TAXI_22 
wait 0
if
0AB0:   key_pressed 120 
jf @TAXI_2
jump @TAXI_7

:TAXI_3
wait 500
if
actor.InCar($PLAYER_ACTOR,6@)
jf @TAXI_3
0679: put_camera_on_vehicle 6@ offset 0.0 23@ 24@ rotation 0.0 10.0 0.0 0.0 2
player.Money($player_char)+=29@
car.DriveTo(6@,20@, 21@, 22@)
car.SetMaxSpeed(6@,60.0)
car.DoorStatus(6@)=2
car.ToggleTaxiLight(6@)=false
00AE: unknown_set_car 6@ to_ignore_traffic_lights 2
model.Destroy(17@)
model.Destroy(19@)
model.Destroy(#CELLPHONE)

:TAXI_4
wait 0
if or
0AB0:   key_pressed 120 
actor.Dead(7@)
not player.Defined($player_char)
0103: actor 7@ stopped_near_point_in_car 20@ 21@ 22@ radius 20.0 20.0 1000.0 sphere 1
jf @TAXI_5
03E5: show_text_box 'prie1'
car.SetToNormalDriver(6@)
05CD: AS_actor $PLAYER_ACTOR exit_car 6@
wait 5000
car.DriveTo(6@,3@, 4@, 5@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
jump @TAXI

:TAXI_5
wait 0
if
0AB0:   key_pressed 32
jf @TAXI_4  
02A3: toggle_widescreen 1
fade 0 500
22@+=100
wait 1000
car.PutAt(6@,20@, 21@, 22@)
wait 1000
fade 1 500
wait 500
02A3: toggle_widescreen 0
03E5: show_text_box 'prie1'
car.SetToNormalDriver(6@)
05CD: AS_actor $PLAYER_ACTOR exit_car 6@
wait 5000
car.DriveTo(6@,3@, 4@, 5@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
jump @TAXI

:TAXI_6
00BA: text_styled 'NOMONEY' 2000 ms 2
jump @TAXI

:TAXI_7
00BA: text_styled 'prie3' 2000 ms 2
car.DriveTo(6@,0.0, 0.0, 0.0)
car.SetToNormalDriver(6@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
model.Destroy(17@)
model.Destroy(19@)
model.Destroy(#CELLPHONE)
marker.Disable(27@)
jump @TAXI

Не забудьте скачать текст Cleo_text.rar
Код постоянно меняю.
Использывание:
1.Выбераем на карте точку;
2.Нажимаем Ф9 выбераем такси/лимузин;
3.1.едем;-)
3.2.Если нажать пробел - пропустим поездку

Last edited by Vlad (08-03-2009 18:09)

Offline

#2 07-03-2009 11:05

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Скрипт такси

Не могу убрать с руки CJя телефон

Открой поиск опкодов, и найди опкод, который содержит " hold_cellphone ".


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#3 07-03-2009 12:39

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

Gyr, если ты про

0729: AS_actor $PLAYER_ACTOR hold_cellphone 0

то он такой же, как и

0729: unknown_action_sequence $PLAYER_ACTOR 0

тоесть телефон все равно не пропадает

Last edited by Vlad (07-03-2009 12:40)

Offline

#4 07-03-2009 13:58

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Скрипт такси

Я понял в чем проблема: попробуй после 0729: AS_actor $PLAYER_ACTOR hold_cellphone 0 подождать немного (WAIT 500). У тебя актёр просто не успевает убрать телефон в карман. Блок :TAXI_11

P.S.: А такси начинает тупить, когда точка назначение очень далеко (например GROOVE_STREET ==> Werdant Meadows), я прав?

Last edited by Gyr (07-03-2009 14:01)


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#5 07-03-2009 14:38

GTASA
Registered: 13-09-2008
Posts: 476

Re: Скрипт такси

А можете сделать так, чтобы тебя везла тача в которой сидишь, кнопки теже.

Offline

#6 07-03-2009 15:10

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

А можете сделать так, чтобы тебя везла тача в которой сидишь, кнопки теже.

В смысле? Чтоб тебя машина без водителя везла?

Я понял в чем проблема: попробуй после 0729: AS_actor $PLAYER_ACTOR hold_cellphone 0 подождать немного (WAIT 500). У тебя актёр просто не успевает убрать телефон в карман. Блок :TAXI_11

Я попробывал, все равно телефон в руке, но спс за мысль=)

P.S.: А такси начинает тупить, когда точка назначение очень далеко (например GROOVE_STREET ==> Werdant Meadows), я прав?

Да. Ты прав, такси тупит когда путь далек:crazy:

Last edited by Vlad (07-03-2009 15:14)

Offline

#7 07-03-2009 16:18

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Скрипт такси

Порылся в старых скриптах. Короче ждать надо минимум секунду, лучше полторы


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#8 07-03-2009 16:30

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Скрипт такси

Скрипт такси уже есть, еще существует вариант где можно вызвать машину или вертолет. У вертолета, конечно, есть преимущество - он "не тупит", т.к. в воздухе нет препятствий. Думаю, что в варианте с автомобилем можно решить эту проблему - например создать на карте сеть ориентировочных точек. От точки к точке машина сможет проехать по любому маршруту.

Offline

#9 07-03-2009 16:39

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

Gyr
Скрипт таксиПорылся в старых скриптах. Короче ждать надо минимум секунду, лучше полторы

Я ставил задержку 3 секунды и не пошло

Den_spb
Скрипт такси уже есть, еще существует вариант где можно вызвать машину или вертолет.

Я знаю что есть, но хоьел сделать свой, потренироватся в скриптинге

У вертолета, конечно, есть преимущество - он "не тупит", т.к. в воздухе нет препятствий.

у вертолета будут проблемы с приземлением, а в воздухе много небоскребов=)

Думаю, что в варианте с автомобилем можно решить эту проблему - например создать на карте сеть ориентировочных точек. От точки к точке машина сможет проехать по любому маршруту.

Так можно было бы сделать, если бы такси ехало в уже готовые точки, а тут каждый раз точки разные, так как такси едет туда, куда покажеш на карте. И еще, машина тупит еще сильнее если игратся путями;-)(проверял много раз)

Offline

#10 07-03-2009 16:48

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Скрипт такси

у вертолета будут проблемы с приземлением, а в воздухе много небоскребов

Нет, я испытывал тот скрипт - проблем с приземлением не было. Кроме того, автор установил вертолету иммунитеты для защиты от повреждений.

Так можно было бы сделать, если бы такси ехало в уже готовые точки, а тут каждый раз точки разные, так как такси едет туда, куда покажеш на карте.

Можно, как вариант, создать точки в тех местах, где начинаются междугородние шоссе. Тогда сначала такси выедет из города на эту точку, а потом уже по шоссе приедет в другой город. На шоссе значительно меньше препятствий, чем в городе.

Last edited by Den_spb (07-03-2009 16:50)

Offline

#11 07-03-2009 17:27

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

Можно, как вариант, создать точки в тех местах, где начинаются междугородние шоссе. Тогда сначала такси выедет из города на эту точку, а потом уже по шоссе приедет в другой город. На шоссе значительно меньше препятствий, чем в городе.

Идея хорошая, можно будет проверить;-)
Забыл выложить ссылку на текст:blush: Извеняюсь:blush:

НАШЕЛ.

0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
Player.CanMove($PLAYER_CHAR) = False

Нельзя выполнять действия над актером до того, как он уберет с руки телефон, тоесть надо поставить так:

Player.CanMove($PLAYER_CHAR) = False
0729: AS_actor $PLAYER_ACTOR hold_cellphone 1

Код поменял, еще добавил приятную камеру в салоне( ну может кому-то и не приятную=))

Last edited by Vlad (07-03-2009 21:08)

Offline

#12 08-03-2009 11:53

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Скрипт такси

{$CLEO .cs}

0000: NOP 

:TAXI
wait 0 
if
player.Defined($player_char)
jf @TAXI
if
//$ONMISSION == 0 // integer values
not Actor.Driving($PLAYER_ACTOR)
0AB0:   key_pressed 57 
jf @TAXI
077E: $ACTIVE_INTERIOR = active_interior 
if
0038: $ACTIVE_INTERIOR == 0 
jf @TAXI 
if
010A:   player $PLAYER_CHAR money >= 10000 
jf @TAXI_6
25@ = 100 
26@ = 10000 
29@=0
0581: toggle_radar 0 
08D4: 9@ = create_panel_with_title 'TAXIST' position 29.0 170.0 width 300.0 columns 2 interactive 1 background 1 alignment 1
08DB: set_panel 9@ column 0 header 'DUMMY' data 'DUMMY' 'TAXI' 'STRETCH' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  
08D6: set_panel 9@ column 1 alignment 1 
08EE: set_panel 9@ column 1 row 1 text_1number GXT 'DOLLAR' number 25@
08EE: set_panel 9@ column 1 row 2 text_1number GXT 'DOLLAR' number 26@
090E: set_panel 9@ active_row 1
01B4: toggle_player $PLAYER_CHAR can_move 0 
09DB: set_panel 9@ column 0 width 230 
09DB: set_panel 9@ column 1 width 70

:TAXI_0
wait 0
if 
00E1: player 0 pressed_key 16
jf @TAXI_01
08D7: 28@ = panel 9@ active_row
0581: toggle_radar 1
player.Money($player_char)+=-100
gosub @TAXI_RESULT 

:TAXI_01
wait 0
if
00E1:   player 0 pressed_key 15         
jf @TAXI_0
0581: toggle_radar 1 
03E6: remove_text_box 
08DA: remove_panel 9@ 
01B4: toggle_player $PLAYER_CHAR can_move 1 
wait 1000 
jump @TAXI


:TAXI_RESULT
wait 0
if
 28@ == 1
jf @TAXI_RESULT_2
17@ = 420
19@=220
13@ = 0
18@ = 3
23@ =-1.5 
24@ = 0.5 
29@+=-100
jump @TAXI_03

:TAXI_RESULT_2
wait 0
if
 28@ == 2
jf @TAXI_RESULT_2
17@ = 409
19@=61
13@ = 2
18@ = 5
23@ =-2.5 
24@ =0.5 
29@+=-10000
jump @TAXI_03

:TAXI_03
08DA: remove_panel 9@ 
01B4: toggle_player $PLAYER_CHAR can_move 1 
Model.Load(17@)
Model.Load(19@)
Model.Load(#CELLPHONE) 
038B: load_requested_models 

:TAXI_1
wait 0 
if and
model.Available(17@)
model.Available(19@)
model.Available(#CELLPHONE)
jf @TAXI_1
04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 20.0 20.0 0.0 
04C4: store_coords_to 10@ 11@ 12@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 
02C1: store_to 3@ 4@ 5@ car_path_coords_closest_to 0@ 1@ 2@
02C1: store_to 14@ 15@ 16@ car_path_coords_closest_to 10@ 11@ 12@
car.Create(6@, 17@, 3@, 4@, 5@)
0229: set_car 6@ primary_color_to 6 secondary_color_to 6
car.SetImmunities(6@,1,1,1,1,1)
0129: 7@ = create_actor 4 19@ in_car 6@ driverseat  
054A: set_actor 7@ immune_to_car_headshots 1
Player.CanMove($PLAYER_CHAR) = False
0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
wait 500
car.DriveTo(6@,14@, 15@, 16@)
car.SetMaxSpeed(6@,10.0)
marker.CreateAboveCar(27@,6@)
marker.SetColor(27@,8)
car.ToggleTaxiLight(6@)=true


:TAXI_11
wait 3000 
0729: AS_actor $PLAYER_ACTOR hold_cellphone 0
wait 2000
Player.CanMove($PLAYER_CHAR) = true
 
:TAXI_2
wait 10
if
0103: actor 7@ stopped_near_point_in_car 14@ 15@ 16@ radius 10.0 10.0 10.0 sphere 1
jf @TAXI_22
0AB6: store_target_marker_coords_to 20@ 21@ 22@ // IF and SET
04E4: unknown_refresh_game_renderer_at 20@ 21@
05CA: AS_actor $PLAYER_ACTOR enter_car 6@ passenger_seat 13@ 30000 ms 
0657: car 6@ open_component 18@ 
marker.Disable(27@)
jump @TAXI_3

:TAXI_22 
wait 0
if
0AB0:   key_pressed 120 
jf @TAXI_2
jump @TAXI_7

:TAXI_3
wait 500
if
actor.InCar($PLAYER_ACTOR,6@)
jf @TAXI_3
0679: put_camera_on_vehicle 6@ offset 0.0 23@ 24@ rotation 0.0 10.0 0.0 0.0 2
player.Money($player_char)+=29@
car.DriveTo(6@,20@, 21@, 22@)
car.SetMaxSpeed(6@,60.0)
car.DoorStatus(6@)=2
car.ToggleTaxiLight(6@)=false
00AE: unknown_set_car 6@ to_ignore_traffic_lights 2
model.Destroy(17@)
model.Destroy(19@)
model.Destroy(#CELLPHONE)

:TAXI_4
wait 0
if or
wasted_or_busted
0AB0:   key_pressed 120 
actor.Dead(7@)
0103: actor 7@ stopped_near_point_in_car 20@ 21@ 22@ radius 20.0 20.0 1000.0 sphere 1
jf @TAXI_5
03E5: show_text_box 'prie1'
car.SetToNormalDriver(6@)
05CD: AS_actor $PLAYER_ACTOR exit_car 6@
wait 5000
car.DriveTo(6@,3@, 4@, 5@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
jump @TAXI

:TAXI_5
wait 0
if
0AB0:   key_pressed 32
jf @TAXI_4  
02A3: toggle_widescreen 1
fade 0 500
22@+=100
wait 1000
car.PutAt(6@,20@, 21@, 22@)
wait 1000
fade 1 500
wait 500
02A3: toggle_widescreen 0
03E5: show_text_box 'prie1'
car.SetToNormalDriver(6@)
05CD: AS_actor $PLAYER_ACTOR exit_car 6@
wait 5000
car.DriveTo(6@,3@, 4@, 5@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
jump @TAXI

:TAXI_6
00BA: text_styled 'NOMONEY' 2000 ms 2
jump @TAXI

:TAXI_7
00BA: text_styled 'prie3' 2000 ms 2
car.DriveTo(6@,0.0, 0.0, 0.0)
car.SetToNormalDriver(6@)
car.RemoveReferences(6@)
camera.Restore_WithJumpCut
model.Destroy(17@)
model.Destroy(19@)
model.Destroy(#CELLPHONE)
marker.Disable(27@)
jump @TAXI

Теперь он убирает телефон в карман.


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#13 08-03-2009 12:10

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Скрипт такси

wasted_or_busted не используется в скриптах, только в миссиях. Вместо него нужно использовать if Player.Defined (опкод 0256:) или соответственно if not Player.Defined (8256:)

Offline

#14 09-03-2009 18:16

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

Seemann wrote:

wasted_or_busted не используется в скриптах, только в миссиях. Вместо него нужно использовать if Player.Defined (опкод 0256:) или соответственно if not Player.Defined (8256:)

А я и не знал=)

Offline

#15 11-03-2009 16:11

Vlad
Registered: 07-03-2009
Posts: 12

Re: Скрипт такси

Seemann wrote:

wasted_or_busted не используется в скриптах, только в миссиях. Вместо него нужно использовать if Player.Defined (опкод 0256:) или соответственно if not Player.Defined (8256:)

Вот кстати ты сказал, что только в мисиях, но спидометр вылетал, когда CJ умирает или его аристовывают в машине, после того, как я вставил проверку wasted_or_busted все стало норм.=)
Как ты это обьясниш?

Offline

Board footer

Powered by FluxBB