#1 02-04-2016 16:41

jukovdevil
Registered: 27-03-2016
Posts: 9

Убежать от копов

Хочу сделать, чтобы, имея 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

#2 03-04-2016 13:55

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Убежать от копов

{$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

#3 03-04-2016 15:02

jukovdevil
Registered: 27-03-2016
Posts: 9

Re: Убежать от копов

Goldfish, естественно не работает

Offline

#4 03-04-2016 19:32

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Offline

#5 03-04-2016 19:52

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Убежать от копов

jukovdevil wrote:

Хочу сделать, чтобы, имея 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

#6 03-04-2016 20:39

jukovdevil
Registered: 27-03-2016
Posts: 9

Re: Убежать от копов

wmysterio wrote:

Пробуйте этот скрипт:

Спасибо, вроде работает (правда не для 1 звезды, а для любого кол-ва).

Last edited by jukovdevil (03-04-2016 20:42)

Offline

#7 03-04-2016 21:32

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Убежать от копов

jukovdevil wrote:

правда не для 1 звезды, а для любого кол-ва

Ну так и есть. Проверка ведь

Player.WantedLevel($PLAYER_CHAR) > 0

а не на равность 1. Нужно отойти от всех копов в радиусе 50.0, чтобы розыск очистился.

Offline

#8 03-04-2016 23:27

jukovdevil
Registered: 27-03-2016
Posts: 9

Re: Убежать от копов

Ну да, я исправил уже как надо

Offline

Board footer

Powered by FluxBB