#26 07-06-2007 16:43

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

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

Offline

#27 08-06-2007 03:47

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

Re: Запись случайного актера / машины / объекта в переменную

Т.е. у тебя 2 потока, а в каждом этот скрипт?

Interceptor специально рассчитан на мультипоточное использование. Это значит, что ты можешь вставить его в майн только единожды, а потом делать gosub на него из любого потока. Представь, что этот скрипт как один большой-большой опкод.

Вылеты скорее всего связаны с самими скриптами, а не Interceptor'ом.

Offline

#28 08-06-2007 04:16

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

Вот мой пример с вылетом, где NONAME_22 и NNME два разных потока. С Interceptor'ом, каждый по отдельности работают нормально.

:NONAME_22
while true
   wait 100
        00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
        3@ = 20.0
        
        gosub @AIC_GETACTOR
        if
                9@ <> -1
        then
                Marker.Disable($m3)
                Marker.CreateAboveActor($m3, 9@)
                wait 1000
                0631: put_actor 9@ in_group $PLAYER_GROUP
        end      
end

:NNME
thread 'NNME'
while true
   wait 100
        00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
        3@ = 20.0
        
        gosub @AIC_GETACTOR
        if
                9@ <> -1
        then
                Marker.Disable($m2)
                Marker.CreateAboveActor($m2, 9@)
                wait 1000 
if 
056D:   actor 9@ defined 
jf @NNME 
if 
   Actor.Driving(9@)
jf @NNME 
03C0: 26@ = actor 9@ car 
jf @NNME 
wait 0 
080E: get_actor 9@ ped_event_to 25@ 
if 
  25@ == 73 
jf @NNME 
21@ = Car.Health(26@)
0084: 23@ = 21@ // $ = $ (int) 
0060: 23@ -= 25@ // $ -= $ (int) 
23@ /= 50 
24@ = Actor.Health(9@)
0060: 24@ -= 23@ // $ -= $ (int) 
Actor.Health(9@) = 24@
jump @NNME
        end      
end

:AIC_GETACTOR
0006: 16@ = 305868
0006: 17@ = @AIC_TESTACTORHANDLE
0006: 20@ = 1988
0002: jump @AIC_STARTSEARCH 

:AIC_STARTSEARCH 
0085: 4@ = 16@ // (int)
008B: 4@ = &0(4@,1i) // (int) 
0085: 19@ = 4@ // (int)
000E: 19@ -= 10787160
0016: 19@ /= 4 
008B: 19@ = &0(19@,1i) // (int)
000E: 4@ -= 10787168 
0016: 4@ /= 4 
008B: 4@ = &0(4@,1i) // (int)
0006: 9@ = -1 
0085: 11@ = 4@ // (int) 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN
000A: 4@ += 20 
0050: gosub @AIC_READ4B 
0085: 4@ = 5@ // (int) 
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
000A: 4@ += 48 
0050: gosub @AIC_READ4B 
0085: 12@ = 5@ // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 13@ = 5@ // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 14@ = 5@ // (int) 
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // (float) 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
0085: 9@ = 10@ // (int) 
0085: 4@ = 16@ // (int) 
008B: 4@ = &0(4@,1i) // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 4@ = 5@ // (int) 
005A: 4@ += 9@ // (int) 
0050: gosub @AIC_READ1B 
0012: 9@ *= 256 
005A: 9@ += 5@ // (int)
0002: jump 17@

:AIC_TESTACTORHANDLE
056D:   is 9@ valid_actor_handle
004D: jump_if_false @AIC_NOHANDLE 
00D6: if or
003C:   $PLAYER_ACTOR == 9@ // (int) 
0118:   actor 9@ dead 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

:AIC_NOHANDLE
0006: 9@ = -1 
0002: jump @AIC_SEARCHLOOPNEXT 

:AIC_NEWSEARCHRADIUS    
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT 
005A: 11@ += 20@ // (int) 
0085: 4@ = 11@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 19@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN
0051: return 

:AIC_READ1B
0085: 6@ = 4@ // (int) 
0085: 8@ = 4@ // (int) 
0016: 4@ /= 4 
0012: 4@ *= 4 
0062: 8@ -= 4@ // (int) 
0012: 8@ *= 8 
000E: 4@ -= 5393584 
0016: 4@ /= 4 
008B: 7@ = &0(4@,1i) // (int) 
0085: 4@ = 6@ // (int) 
0006: 5@ = 0 
0006: 6@ = 0 

:AIC_READ1B_LOOP
08B9:   test 7@ bit 8@ 
004D: jump_if_false @AIC_READ1B_NEXTBIT 
08BF: set 5@ bit 6@ 

:AIC_READ1B_NEXTBIT
000A: 6@ += 1 
000A: 8@ += 1 
0039:   6@ == 8 
004D: jump_if_false @AIC_READ1B_LOOP 
0051: return 

:AIC_READ4B
0085: 6@ = 4@ // (int) 
000E: 4@ -= 10787168 
0016: 4@ /= 4 
008B: 5@ = &0(4@,1i) // (int) 
0085: 4@ = 6@ // (int) 
0051: return

Last edited by svetka (08-06-2007 12:07)

Offline

#29 08-06-2007 08:38

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

Re: Запись случайного актера / машины / объекта в переменную

Не могу понять, что у тебя происходит с метками? Ты постоянно декомпилируешь файл что ли?

В этом блоке

:NNME_222
16@ = 305868
17@ = 197708
20@ = 1988
jump @NNME_257

в оригинале в переменную 17@ записывается метка. После декомпиляции ее имя пропадет и будет заменено на число как у тебя (197708). Если ты пытаешься повторно скомпилировать такой код, то не факт что это число будет указывать на положенное место. Замени весь код Interceptor'а на оригинальный.

21@ = Car.Health(26@)
jf @NNME

почему после здоровья jf?

Offline

#30 08-06-2007 12:06

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

В свой предыдущий пост (сегодня 08:16:13) я вставила оригинал до компиляции. В этот после.

 :NONAME_22
wait 100 
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
3@ = 20.0 
gosub @NNME_235 
if 
   not 9@ == -1 
jf @NONAME_22_79 
Marker.Disable($10948)
$10948 = Marker.CreateAboveActor(9@)
wait 1000 
0631: put_actor 9@ in_group $PLAYER_GROUP 

:NONAME_22_79
jump @NONAME_22

:NNME
thread 'NNME' 

:NNME_11
wait 100 
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
3@ = 20.0 
gosub @NNME_235 
if 
   not 9@ == -1 
jf @NNME_228 
Marker.Disable($10949)
$10949 = Marker.CreateAboveActor(9@)
wait 1000 
if 
056D:   actor 9@ defined 
jf @NNME 
if 
   Actor.Driving(9@)
jf @NNME 
03C0: 26@ = actor 9@ car 
jf @NNME 
wait 0 
080E: get_actor 9@ ped_event_to 25@ 
if 
  25@ == 73 
jf @NNME 
21@ = Car.Health(26@)
0084: 23@ = 21@ // $ = $ (int) 
0060: 23@ -= 25@ // $ -= $ (int) 
23@ /= 50 
24@ = Actor.Health(9@)
0060: 24@ -= 23@ // $ -= $ (int) 
Actor.Health(9@) = 24@
jump @NNME 

:NNME_228
jump @NNME_11 

:NNME_235
16@ = 305868 
17@ = 194986 
20@ = 1988 
jump @NNME_270 

:NNME_270
0085: 4@ = 16@ // @ = @ (int) 
008B: 4@ = &0(4@,1i) // @ = $ (int) 
0085: 19@ = 4@ // @ = @ (int) 
19@ -= 10787160 
19@ /= 4 
008B: 19@ = &0(19@,1i) // @ = $ (int) 
4@ -= 10787168 
4@ /= 4 
008B: 4@ = &0(4@,1i) // @ = $ (int) 
9@ = -1 
0085: 11@ = 4@ // @ = @ (int) 
10@ = 0 

:NNME_378
4@ += 20 
gosub @NNME_858 
0085: 4@ = 5@ // @ = @ (int) 
   not 4@ == 0 
jf @NNME_669 
4@ += 48 
gosub @NNME_858 
0085: 12@ = 5@ // @ = @ (int) 
4@ += 4 
gosub @NNME_858 
0085: 13@ = 5@ // @ = @ (int) 
4@ += 4 
gosub @NNME_858 
0085: 14@ = 5@ // @ = @ (int) 
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // @ > @ (float) 
jf @NNME_669 
0085: 9@ = 10@ // @ = @ (int) 
0085: 4@ = 16@ // @ = @ (int) 
008B: 4@ = &0(4@,1i) // @ = $ (int) 
4@ += 4 
gosub @NNME_858 
0085: 4@ = 5@ // @ = @ (int) 
005A: 4@ += 9@ // @ += @ (int) 
gosub @NNME_709 
9@ *= 256 
005A: 9@ += 5@ // @ += @ (int) 
jump 17@ 
056D:   actor 9@ defined 
jf @NNME_647 
if or
003C:   $PLAYER_ACTOR == 9@ // $ == @ (int) 
   Actor.Dead(9@)
jf @NNME_661 
jump @NNME_647 

:NNME_647
9@ = -1 
jump @NNME_669 

:NNME_661
0085: 3@ = 15@ // @ = @ (int) 

:NNME_669
005A: 11@ += 20@ // @ += @ (int) 
0085: 4@ = 11@ // @ = @ (int) 
10@ += 1 
002D:   10@ >= 19@ // @ >= @ (int) 
jf @NNME_378 
return 

:NNME_709
0085: 6@ = 4@ // @ = @ (int) 
0085: 8@ = 4@ // @ = @ (int) 
4@ /= 4 
4@ *= 4 
0062: 8@ -= 4@ // @ -= @ (int) 
8@ *= 8 
4@ -= 5393584 
4@ /= 4 
008B: 7@ = &0(4@,1i) // @ = $ (int) 
0085: 4@ = 6@ // @ = @ (int) 
5@ = 0 
6@ = 0 

:NNME_805
08B9:   test 7@ bit 8@ 
jf @NNME_828 
08BF: set 5@ bit 6@ 

:NNME_828
6@ += 1 
8@ += 1 
  6@ == 8 
jf @NNME_805 
return 

:NNME_858
0085: 6@ = 4@ // @ = @ (int) 
4@ -= 10787168 
4@ /= 4 
008B: 5@ = &0(4@,1i) // @ = $ (int) 
0085: 4@ = 6@ // @ = @ (int) 
return

Хотя игрушка и не вылетает - скрипты работают больше, чем через раз. А именно:
1. Пед in_group появляется в единственном числе и то один раз. Остальные меня игнорируют.
2. NNME-скрипт вообще никак не проявляет себя.
Маркеры в обоих случаях не появляются, за исключением первого завербованного in_group педа.

Last edited by svetka (08-06-2007 14:19)

Offline

#31 08-06-2007 13:36

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

Seemann помоги у меня почемуто актер находится (в смысле поиска) только когда я к нему вплотную подхожу.Не знаешь почему?


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#32 08-06-2007 14:02

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Запись случайного актера / машины / объекта в переменную

Ставь радиус поиска больше,например 3@ = 10.0 будет вестись поиск в радиусе 10


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#33 08-06-2007 14:22

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

Seemann, жутко извиняюсь, я, если что, исправила пост. Теперь всё так. Вобщем работает тот скрипт, что выше стоит по списку. И работает - жуть. Наверняка я опять что-то упускаю.

Offline

#34 08-06-2007 16:36

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

Уф-ф...
По отдельности с Interceptor'ом скрипты работают. Но стоит вставить в мейн оба скрипта - работает тот, что дальше (выше) от Interceptor'а. При компиляции использую оригинальный (нескомпилированный) код Interceptor'а.
Seemann, а ты сам пробовал "вешать" одновременно два однородных скрипта (типа с выбором только педов) на код? Если да, то может покажешь пример smile

Offline

#35 08-06-2007 17:09

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

Re: Запись случайного актера / машины / объекта в переменную

А create_thread для обоих потоков добавила?

Offline

#36 08-06-2007 18:09

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

Seemann, я наверное сошла с ума, но create_thread для обоих потоков я точно прописывала. Это просто 100%. Вобщем всё работает.:|
Я прям не знаю. Извини за напрасное беспокойство.:/

Offline

#37 08-06-2007 18:40

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

Re: Запись случайного актера / машины / объекта в переменную

2svetka:
успокойся, дыши глубоко. Отдохни денька два-три grin Помешанные нам тут не нужны smile smile

Offline

#38 08-06-2007 18:54

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

Ставь радиус поиска больше,например 3@ = 10.0 будет вестись поиск в радиусе 10

Радиус вообще 30.0!НО НАХОДИТ КОГДА ПОДХОЖУ ВПЛОТНУЮ!


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#39 08-06-2007 18:57

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

Если что код:

:marker
while true
   wait 100
        00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
        3@ = 20.0
        
        gosub @AIC_GETactor
        
        00e1: 0 4
        jf @marker 
        if
                9@ <> -1
        then
                Marker.Disable($m2)
                Marker.CreateAboveactor($m2, 9@)
                0631: 9@ $player_group
        end      
end 

{
    The Interceptor
       
    by PLPynton and Seemann    

    Parameters:
    0@ - input coord X
    1@ - input coord Y
    2@ - input coord Z
    3@ - search radius

    variables 4@..20@ in use
    
    9@ = Result (returns -1 if not found)
           
}
:AIC_GETACTOR
0006: 16@ = 305868
0006: 17@ = @AIC_TESTACTORHANDLE
0006: 20@ = 1988
0002: jump @AIC_STARTSEARCH
...

Простите что не воспользовался кнопкой редактировать.

Last edited by kostay scr (08-06-2007 18:59)


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#40 08-06-2007 19:24

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

Seemann wrote:

2svetka:
успокойся, дыши глубоко. Отдохни денька два-три grin Помешанные нам тут не нужны smile smile

Да-да-да smile

Вобщем вот как. Когда берешь педа в группу - другой скрипт отключается. Но педов в группу можно еще набирать. СтОит от них избавиться, как включается второй скрипт. Наверное идет некая взаимокомпенсация. Вот из-за этого я и запуталась. smile

Offline

#41 08-06-2007 19:33

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, воспользуйся моим кодом (смотри выше от 08:16:13 в этом топике). В нем те же задачи.
Убери из него всё, что связяно с потоком @NNME и всё будет ok! smile

Offline

#42 08-06-2007 20:38

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, воспользуйся моим кодом (смотри выше от 08:16:13 в этом топике). В нем те же задачи.
Убери из него всё, что связяно с потоком @NNME и всё будет ok!

Как то не ок
P.S. Утебя кусок :NEWSEARCHRADIUS РАскаминтирован?


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#43 09-06-2007 04:37

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, это в мои потребности не входило, и потому мне достаточно того, что есть.
Тебе сколько надо набрать в группу? 20 человек? Если так, то и моего варианта достаточно. Я для себя вообще радиус выставила 1.2, чтобы ото всюду не сбегались.

Offline

#44 09-06-2007 07:38

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Запись случайного актера / машины / объекта в переменную

Кому нибудь нужен пример использования Interceptor'а
спасибо Seemann'у за Interceptor пример с его использванием можно будет найти на missions.gtamaps.net

Last edited by Sergino_thirty_seven (09-06-2007 07:40)


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#45 09-06-2007 08:56

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

пример с его использванием можно будет найти на missions.gtamaps.net

Блин не нашел.Svetka так раскоментирован или нет?

Last edited by kostay scr (09-06-2007 16:45)


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#46 09-06-2007 09:04

svetka
Registered: 29-12-2006
Posts: 222

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, честно говоря я слабо владею терминологией, и потому твой вопрос для меня непонятен. Ты лучше скажи, чего ты хочешь добиться от скрипта? У меня сейчас с Interceptor'ом всё получается.

Offline

#47 09-06-2007 09:40

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, не грузи людей терминологией
2svetka он имел ввиду у тебя вот это есть?

{
use 0051: return to break the loop
immediately when found at least one actor/car/object,
does not matter if he's nearest one.
}

// v EXTRA SEARCH CRITERIA GOES HERE v

{
21@ contains the handle of an actor/car/object
that should be excluded from the search result
(for example a handle found previously).
}
//803B: 21@ <> 9@
//004D: jump_if_false @AIC_NOHANDLE

Last edited by Sergino_thirty_seven (09-06-2007 09:42)


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#48 09-06-2007 13:09

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

kostay scr, не грузи людей терминологией

Хорошо,но это не такая уж терминология.

2svetka он имел ввиду у тебя вот это есть?

Именно.
2svetka от Interceptor'a нужно чтоб на большом растоянии от кординат находил актера\обьект\тачку.


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

#49 09-06-2007 15:38

Tector
Registered: 01-05-2007
Posts: 34

Re: Запись случайного актера / машины / объекта в переменную

kostay scr wrote:

kostay scr, не грузи людей терминологией

Костя, это даже не терминология. Лично я только после третьего прочтения этого слова, понял, что тебе нужны комментарии. Потому как раскОмМЕнтирован пишется не совсем так как у тебя wink

Offline

#50 09-06-2007 16:46

kostay scr
From: Беларусь
Registered: 25-05-2007
Posts: 176

Re: Запись случайного актера / машины / объекта в переменную

2Tector Спасибо!:cool:
2Sergino_thirty_seven а можа радиус большой wow ?(20.0)

Last edited by kostay scr (09-06-2007 16:49)


GTA VC - ЭТО НАСТОЯЩАЯ ГТА!

Offline

Board footer

Powered by FluxBB