Nikitos: Вот, решил опубликовать скрипт полицейского приследования, может кому пригодится. За машиной игрока гонятся менты на FBIRANCH и COPCARLA в количестве ни много, ни мало 24 машины, постеливают по ней из окон, надо сказать очень метко. Правда ума у них нехватает, но всеже если вам надоели обычные полицейские погони, можете взглянуть на сие чудо-юдо. Скрипт находится в тестовом режиме - игрока сразу сажают в бронированную тачку и понеслась...
И еще, на экран выводится общее кол-во созданых машин, если вам этого ненадо - уберите все что связано с переменной $timer. Также любой, кто более-менее соображает в скриптинге может изменить лейбл :7star_23 чтобы натравить полицейских на любую машину с именем $strat, вызвать скрипт как процедуру и т.д. Еще некоторые детали:
1. Производится проверка на переворачивание $strat, попадание в воду и т.д. Если хотите от этого избавиться удалите :7star_33 и все gosub @7star_33.
2. По нажатии"выход из машины" скрипт завершается. Если же вы, опять таки, собрались вызвать скрипт в качестве процедуры, можете изменить данное условие
3. 24 машины далеко не предел. Можете поставить сколько угодно, изменяя переменную $max_cop в лейбле :7star_23. Также надо чтобы все рядом находящиеся переменные(у меня они равны 25) были по крайней мере на 1 больше. Не рекомендую ставить больше 40.
Все вопросы задавайте здесь, постараюсь ответить.
Автор Я т.е. Nikitos
:7star_20
wait 0
if and
Model.Available(#infernus)
Model.Available(#DESERT_EAGLE)
Model.Available(#LVPD1)
Model.Available(#COPCARLA)
Model.Available(#FBIRANCH)
jf @7star_20
:7star_23
actor.StorePos($PLAYER_ACTOR, $X, $y, $z)
$strat = Car.Create(#infernus, $X, $y, $z)
036A: put_actor $PLAYER_ACTOR in_car $strat
0423: car $strat improve_handling 2.5
Car.SetImmunities($strat, 1, 1, 1, 1, 1)
var
$x : array 25 of float
$y : array 25 of float
$z : array 25 of float
$cos : float
$sin : float
$rnd_x : float
$rnd : float
$max_cop : int = 24
$actcop: array 25 of Actor
$cop : array 25 of Actor
$copcar: array 25 of car
$mark: array 25 of marker
$wb : int = 0
$timer : int = 0
end // var
054C: use_GXT_table 'GRAV'
04F7: status_text $timer 0 line 1 'BB_18' // O4KN
gosub @7star_33
jump @7star_45
:7star_33
if or
01F4: car $strat flipped
02BF: car $strat sunk
03CE: vehicle $strat stuck
00E1: key_pressed 0 18
jf @7star_35
Car.StorePos($strat, $x_pos, $y_pos, $z_pos)
02C1: set $x_pos $y_pos $z_pos to_car_path_coords_closest_to $x_pos $y_pos $z_pos
0395: clear_area 1 at $x_pos $y_pos $z_pos range 10.0
Car.PutAt($strat, $x_pos, $y_pos, $z_pos)
:7star_35
if
00E1: key_pressed 0 15
then
jump @7star_2444
end
return
:7star_45
for $ind = 1 to $max_cop
:7star_55
repeat
wait 0
gosub @7star_33
0208: $rnd_x = random_float 5.0 150.0
0208: $rnd = random_float 0.0 360.0
02F6: $cos = cosine $rnd // sinus swapped with cosine
02F7: $sin = sinus $rnd // cosine swapped with sinus
$cos *= $rnd_x // floating-point values
$sin *= $rnd_x // floating-point values
$sin += 30.0
04C4: create_coordinate $X $Y $Z from_actor $PLAYER_ACTOR offset $cos $sin 0.0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 0.0 0.0
02C1: set $x[$ind] $y[$ind] $z[$ind] to_car_path_coords_closest_to $x $y $z
050A: 0@ = distance_between_points $x[$ind] $y[$ind] $z[$ind] and $X1 $Y1 $Z1
if
0@ > 120.0
then
break
end // if
until 80C2: not sphere_onscreen $x[$ind] $y[$ind] $z[$ind] 5.0
for $ind2 = 1 to $ind // step 1
if
$ind2 $ind
then
if and
$x[$ind] == $x[$ind2]
$y[$ind] == $y[$ind2]
$z[$ind] == $z[$ind2]
then
jump @7star_55
end // if
end // if
end // for
if
$ind > 20
then
$modelcar = #COPCARLA
$modelcop = #LVPD1
$weapon = 24
else
$modelcar = #FBIRANCH
$modelcop = #fbi
$weapon = 29
end // if
$copcar[$ind] = Car.Create($modelcar, $x[$ind], $y[$ind], $z[$ind])
0129: $actcop[$ind] = create_actor 6 $modelcop in_car $copcar[$ind] driverseat
0397: car $copcar[$ind] siren = 1
04BA: set_car $copcar[$ind] speed_instantly 5.0
$mark[$ind] = marker.CreateAboveCar($copcar[$ind])
06E1: unknown_action_sequence $actcop[$ind] $copcar[$ind] $strat 2 100.0 2
0A21: (unknown) $copcar[$ind] 1
0423: vehicle $copcar[$ind] improve_handling 1.5
072F: (unknown) $copcar[$ind] 0.5 5000 1 0 1 1
Car.Health($copcar[$ind]) = 2000
039C: (unknown) $copcar[$ind] 1
03AB: set_vehicle $copcar[$ind] strong 1
03ED: (unknown) $copcar[$ind] 1
$timer += 1
03CC: car $copcar[$ind] add_to_stuck_car_check 2.0 = 2000
$cop[$ind] = Actor.Create(6, $modelcop, $X, $y, $z)
0430: put_actor $cop[$ind] into_vehicle $copcar[$ind] passenger_seat 0
01B2: give_actor $cop[$ind] weapon $weapon ammo 99999
0713: actor $cop[$ind] drive_by actor -1 car $strat point 0.0 0.0 0.0 5000.0 8 1 60
end
:7star_2430
for $ind = 1 to $max_cop
wait 0
if
$copcar[$ind] -1
then
if or
Car.Wrecked($copcar[$ind])
8202: not actor $PLAYER_ACTOR near_car $copcar[$ind] radius 150.0 150.0 unknown 0
then
gosub @7star_2440
gosub @7star_2437
else
gosub @7star_33
end
end
gosub @7star_33
end
jump @7star_2430
:7star_2437
repeat
wait 0
gosub @7star_33
0208: $rnd_x = random_float 5.0 150.0
0208: $rnd = random_float 0.0 360.0
02F6: $cos = cosine $rnd // sinus swapped with cosine
02F7: $sin = sinus $rnd // cosine swapped with sinus
$cos *= $rnd_x // floating-point values
$sin *= $rnd_x // floating-point values
$sin += 30.0
04C4: create_coordinate $X $Y $Z from_actor $PLAYER_ACTOR offset $cos $sin 0.0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 0.0 0.0
02C1: set $x[$ind] $y[$ind] $z[$ind] to_car_path_coords_closest_to $x $y $z
050A: 0@ = distance_between_points $x[$ind] $y[$ind] $z[$ind] and $X1 $Y1 $Z1
if
0@ > 120.0
then
break
end // if
until 80C2: not sphere_onscreen $x[$ind] $y[$ind] $z[$ind] 5.0
for $ind2 = 1 to $max_cop // step 1
if
$ind2 $ind
then
if and
$x[$ind] == $x[$ind2]
$y[$ind] == $y[$ind2]
then
jump @7star_2437
end // if
end // if
end // for
if
$ind > 20
then
$modelcar = #COPCARLA
$modelcop = #LVPD1
$weapon = 24
else
$modelcar = #FBIRANCH
$modelcop = #fbi
$weapon = 29
end // if
$copcar[$ind] = Car.Create($modelcar, $x[$ind], $y[$ind], $z[$ind])
0129: $actcop[$ind] = create_actor 6 $modelcop in_car $copcar[$ind] driverseat
072F: (unknown) $copcar[$ind] 1.0 2000 1 1 1 -1
0397: car $copcar[$ind] siren = 1
04BA: set_car $copcar[$ind] speed_instantly 5.0
$mark[$ind] = marker.CreateAboveCar($copcar[$ind])
06E1: unknown_action_sequence $actcop[$ind] $copcar[$ind] $strat 2 100.0 2
0A21: (unknown) $copcar[$ind] 1
0423: vehicle $copcar[$ind] improve_handling 1.5
072F: (unknown) $copcar[$ind] 0.5 5000 1 0 1 1
039C: (unknown) $copcar[$ind] 1
03AB: set_vehicle $copcar[$ind] strong 1
03ED: (unknown) $copcar[$ind] 1
$timer += 1
03CC: car $copcar[$ind] add_to_stuck_car_check 2.0 = 2000
$cop[$ind] = Actor.Create(6, $modelcop, $X, $y, $z)
0430: put_actor $cop[$ind] into_vehicle $copcar[$ind] passenger_seat 0
01B2: give_actor $cop[$ind] weapon $weapon ammo 99999
0713: actor $cop[$ind] drive_by actor -1 car $strat point 0.0 0.0 0.0 5000.0 8 1 60
return