#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,156

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

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

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

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

Offline

#28 08-06-2007 04:16

svetka
Registered: 29-12-2006
Posts: 222

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
: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,156

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

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

В этом блоке

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

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

1
2
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) я вставила оригинал до компиляции. В этот после.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
: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,156

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,156

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: Запись случайного актера / машины / объекта в переменную

Если что код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
: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