You are not logged in.
Pages: 1
Хочу сделать, чтобы, имея 1 звезду розыска, можно было уйти/уехать на определенное расстояние от заметивших меня копов и если в определенном радиусе копы отсутствуют, то звезда исчезала. Но мои познания в SB не позволяют реализовать этого.
Пишу следующий скрипт:
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
thread 'ESCAPE'
:ESCAPE_1
wait 0
if and
Player.Defined($PLAYER_CHAR)
Player.WantedLevel($PLAYER_CHAR) > 0
jf @ESCAPE_1
0@ = Player.WantedLevel($PLAYER_CHAR)
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0AE1: 4@ = random_actor_near_point 1@ 2@ 3@ in_radius 50.0 find_next 0 pass_deads 1
if
4@ > 0
jf @ESCAPE_1
089F: get_actor 4@ pedtype_to 5@
if and
not 5@ == 6
0@ == 1
jf @ESCAPE_1
Player.WantedLevel($PLAYER_CHAR) = 0
jump @ESCAPE_1
Вижу в нем очевидную ошибку, он перебирает педов в радиусе 50 игровых метров и если попадается пед, который не является полицейским – звезда исчезает. Проблема в том, что коп может находится в этом радиусе, но ввиду того, что попался не тот пед – звезда всеравно исчезает. Понимаю, что нужно сделать так, чтобы скрипт сначала перебрал всех педов в указанной зоне, а уже потом продолжил. Как этого добиться?
Offline
{$CLEO .cs} //-------------MAIN--------------- 0000: NOP thread 'ESCAPE' :ESCAPE_1 wait 0 if and Player.Defined($PLAYER_CHAR) Player.WantedLevel($PLAYER_CHAR) > 0 jf @ESCAPE_1 Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@) 0AE1: 4@ = random_actor_near_point 1@ 2@ 3@ in_radius 50.0 find_next 1 jf @ESCAPE_1 089F: get_actor 4@ pedtype_to 5@ if and not 5@ == 6 jf @ESCAPE_1 Player.WantedLevel($PLAYER_CHAR) = 0 jump @ESCAPE_1
Last edited by Goldfish (03-04-2016 13:56)
Offline
Goldfish, естественно не работает
Offline
Offline
Хочу сделать, чтобы, имея 1 звезду розыска, можно было уйти/уехать на определенное расстояние от заметивших меня копов и если в определенном радиусе копы отсутствуют, то звезда исчезала.
Пробуйте этот скрипт:
{$CLEO} 0000: NOP while true wait 250 if 6@ == 1 then PLayer.WantedLevel($PLAYER_CHAR) = 0 6@ = 0 4@ = 0 end if Player.WantedLevel($PLAYER_CHAR) > 0 then Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@) 0AE1: 0@ = random_actor_near_point 1@ 2@ 3@ in_radius 50.0 find_next 4@ pass_deads 1 if 056D: actor 0@ defined then 089F: get_actor 0@ pedtype_to 5@ if 5@ == 6 then 6@ = 0 4@ = 0 end else 6@ = 1 end end end
Offline
Пробуйте этот скрипт:
Спасибо, вроде работает (правда не для 1 звезды, а для любого кол-ва).
Last edited by jukovdevil (03-04-2016 20:42)
Offline
Ну да, я исправил уже как надо
Offline
Pages: 1