You are not logged in.
Seemann, я попыталась использовать код для двух разных скриптов с участием педов. В каждый скрипт я прописываю код индивидуально (под конкретный срипт). Игрушка вылетает. Так и должно быть, или..?
Offline
Т.е. у тебя 2 потока, а в каждом этот скрипт?
Interceptor специально рассчитан на мультипоточное использование. Это значит, что ты можешь вставить его в майн только единожды, а потом делать gosub на него из любого потока. Представь, что этот скрипт как один большой-большой опкод.
Вылеты скорее всего связаны с самими скриптами, а не Interceptor'ом.
Offline
Вот мой пример с вылетом, где 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
Не могу понять, что у тебя происходит с метками? Ты постоянно декомпилируешь файл что ли?
В этом блоке
:NNME_222
16@ = 305868
17@ = 197708
20@ = 1988
jump @NNME_257
в оригинале в переменную 17@ записывается метка. После декомпиляции ее имя пропадет и будет заменено на число как у тебя (197708). Если ты пытаешься повторно скомпилировать такой код, то не факт что это число будет указывать на положенное место. Замени весь код Interceptor'а на оригинальный.
1 2 | 21@ = Car.Health( 26@ ) jf @NNME |
почему после здоровья jf?
Offline
В свой предыдущий пост (сегодня 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
Seemann помоги у меня почемуто актер находится (в смысле поиска) только когда я к нему вплотную подхожу.Не знаешь почему?
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline
Ставь радиус поиска больше,например 3@ = 10.0 будет вестись поиск в радиусе 10
Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net
Offline
Seemann, жутко извиняюсь, я, если что, исправила пост. Теперь всё так. Вобщем работает тот скрипт, что выше стоит по списку. И работает - жуть. Наверняка я опять что-то упускаю.
Offline
Уф-ф...
По отдельности с Interceptor'ом скрипты работают. Но стоит вставить в мейн оба скрипта - работает тот, что дальше (выше) от Interceptor'а. При компиляции использую оригинальный (нескомпилированный) код Interceptor'а.
Seemann, а ты сам пробовал "вешать" одновременно два однородных скрипта (типа с выбором только педов) на код? Если да, то может покажешь пример
Offline
А create_thread для обоих потоков добавила?
Offline
Seemann, я наверное сошла с ума, но create_thread для обоих потоков я точно прописывала. Это просто 100%. Вобщем всё работает.:|
Я прям не знаю. Извини за напрасное беспокойство.:/
Offline
2svetka:
успокойся, дыши глубоко. Отдохни денька два-три Помешанные нам тут не нужны
Offline
Ставь радиус поиска больше,например 3@ = 10.0 будет вестись поиск в радиусе 10
Радиус вообще 30.0!НО НАХОДИТ КОГДА ПОДХОЖУ ВПЛОТНУЮ!
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline
Если что код:
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
2svetka:
успокойся, дыши глубоко. Отдохни денька два-триПомешанные нам тут не нужны
![]()
Да-да-да
Вобщем вот как. Когда берешь педа в группу - другой скрипт отключается. Но педов в группу можно еще набирать. СтОит от них избавиться, как включается второй скрипт. Наверное идет некая взаимокомпенсация. Вот из-за этого я и запуталась.
Offline
kostay scr, воспользуйся моим кодом (смотри выше от 08:16:13 в этом топике). В нем те же задачи.
Убери из него всё, что связяно с потоком @NNME и всё будет ok!
Offline
kostay scr, воспользуйся моим кодом (смотри выше от 08:16:13 в этом топике). В нем те же задачи.
Убери из него всё, что связяно с потоком @NNME и всё будет ok!
Как то не ок
P.S. Утебя кусок :NEWSEARCHRADIUS РАскаминтирован?
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline
kostay scr, это в мои потребности не входило, и потому мне достаточно того, что есть.
Тебе сколько надо набрать в группу? 20 человек? Если так, то и моего варианта достаточно. Я для себя вообще радиус выставила 1.2, чтобы ото всюду не сбегались.
Offline
Кому нибудь нужен пример использования 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
пример с его использванием можно будет найти на missions.gtamaps.net
Блин не нашел.Svetka так раскоментирован или нет?
Last edited by kostay scr (09-06-2007 16:45)
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline
kostay scr, честно говоря я слабо владею терминологией, и потому твой вопрос для меня непонятен. Ты лучше скажи, чего ты хочешь добиться от скрипта? У меня сейчас с Interceptor'ом всё получается.
Offline
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
kostay scr, не грузи людей терминологией
Хорошо,но это не такая уж терминология.
2svetka он имел ввиду у тебя вот это есть?
Именно.
2svetka от Interceptor'a нужно чтоб на большом растоянии от кординат находил актера\обьект\тачку.
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline
kostay scr, не грузи людей терминологией
Костя, это даже не терминология. Лично я только после третьего прочтения этого слова, понял, что тебе нужны комментарии. Потому как раскОмМЕнтирован пишется не совсем так как у тебя
Offline
2Tector Спасибо!:cool:
2Sergino_thirty_seven а можа радиус большой ?(20.0)
Last edited by kostay scr (09-06-2007 16:49)
GTA VC - ЭТО НАСТОЯЩАЯ ГТА!
Offline