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