#51 09-06-2007 16:57

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

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

не радиус небольшой,я веселился и поставил 3@ = 500.0 и сделал скрипт на взрыв актера........у меня апокалипсис начался ,повсему городу люди взрывались так что незнаю почему у тебя непашет


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

Offline

#52 09-06-2007 16:59

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

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

Выложи код!(C Inceptorom полностью!)!!!


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

Offline

#53 09-06-2007 16:59

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

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

Который со взрывом?


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

Offline

#54 09-06-2007 17:01

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

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

да


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

Offline

#55 09-06-2007 17:09

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

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

Вот   

 
 
:EXPLODE
wait 0
if
00E1: key_Pressed 0 4
jf @EXPLODE
Actor.SetImmunities($PLAYER_ACTOR,0,0,0,0,0)
Actor.SetImmunities($PLAYER_ACTOR,1,1,1,1,1)
Jump @FIND

:FIND
wait 0
if
80E1: key_pressed 0 8
jf @EXPLODE
Actor.StorePos($PLAYER_ACTOR,0@,1@,2@)
3@ = 500.0
Gosub @AIC_GETACTOR
if
9@ <> -1
jf @FIND
Actor.StorePos(9@,21@,22@,23@)
020C: create_explosion_with_radius 7 at 21@ 22@ 23@ 
wait 100
Actor.RemoveReferences(9@)
Jump @FIND

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

:AIC_GETVEHICLE
0006: 16@ = 305869
0006: 17@ = @AIC_TESTVEHICLEHANDLE
0006: 18@ = -1
0006: 20@ = 2584
0256:   player $PLAYER_CHAR defined
004D: jump_if_false @AIC_STARTSEARCH 
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @AIC_STARTSEARCH
03C0: 18@ = actor $PLAYER_ACTOR car
0002: jump @AIC_STARTSEARCH

:AIC_GETOBJECT
0006: 16@ = 305871
0006: 17@ = @AIC_TESTOBJECTHANDLE
0006: 20@ = 412

: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_TESTVEHICLEHANDLE
056E:   is 9@ valid_vehicle_handle
004D: jump_if_false @AIC_NOHANDLE
00D6: if or
003B:   18@ == 9@ // (int) 
0119:   car 9@ wrecked 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

: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_TESTOBJECTHANDLE
//0001: wait 0
83CA:   not object 9@ exists 
004D: jump_if_false @AIC_NEWSEARCHRADIUS

: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@ -= 10787168 
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 Sergino_thirty_seven (09-06-2007 17:14)


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

Offline

#56 10-06-2007 10:16

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

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

2Seeman Почему в Interceptor'e радиус уменшается по какомуто основонному на чтении байтов ПрИНцыПу?:(:|


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

Offline

#57 10-06-2007 11:06

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

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

Код перебирает всех актеров поочередно и если он находится в радиусе, делает его позицию эталонной. Это для того, чтобы найти именно ближайшего актера. Если нужно найти любого актера в данном радиусе (необязательно ближайшего к игроку), нужно поставить return после AIC_NEWSEARCHRADIUS

Offline

#58 10-06-2007 11:08

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

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

Спасибо!:D:cool:
А то я мудохался с этим радиусом!:rolleyes:
А кстати как сделать так чтобы было искать следуещего?;)

Last edited by kostay scr (10-06-2007 11:10)


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

Offline

#59 10-06-2007 11:23

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

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

там есть закомментированный участок. Раскомментируй его и перед поиском запиши в 21@ хендл предыдущего найденного актера. Правда тогда он будет переключаться между двумя ближайшими актерами.

Offline

#60 10-06-2007 13:51

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

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

Я типа того зделал и он переключался как ты говориш.( зделал по своему:)(принцип понял:D))
Seemann у меня для тебя придложение: ты мог бы сделать пропуск актера(тоесть его хендла) с помощью массива, путем добавления его хендла туда и последущей проверки совпадения хендла найденого актера со всеви ячейками массива,при условии что ячейка с которой производится сравнение - правильный хэндл.:cool:

Last edited by kostay scr (10-06-2007 13:52)


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

Offline

#61 11-06-2007 09:37

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

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

kostay scr wrote:

ты мог бы сделать пропуск актера(тоесть его хендла) с помощью массива, путем добавления его хендла туда и последущей проверки совпадения хендла найденого актера со всеви ячейками массива,при условии что ячейка с которой производится сравнение - правильный хэндл.

Это не соответствует первоначальному смыслу скрипта: найти ближайшего актера. Но ты сам можешь модифицировать его под свои нужды.

Offline

#62 11-06-2007 10:05

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

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

Да, но просто я думаю многим понадобится находить много актеров без их уничтожения.
И я в скриптинге не профессионал, не подскажеш как работать с массивами?


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

Offline

#63 03-07-2007 18:56

svetka
Registered: 29-12-2006
Posts: 222

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

Кажется разобралась.

Last edited by svetka (05-07-2007 06:26)

Offline

#64 03-07-2007 19:24

yelmi
Registered: 10-12-2006
Posts: 134
Website

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

0672: AS_actor 1@ attack_car 33@

32@,33@ - эти переменные являются таймерами

Last edited by yelmi (04-07-2007 10:46)

Offline

#65 08-06-2008 07:35

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

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

Если кто-то еще пользуется этим кодом, вот оптимизированная версия с использованием опкодов CLEO:

{
    The Interceptor 1.1
       
    by PLPynton and Seemann    

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

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

:AIC_GETVEHICLE
0006: 16@ = 305869
0006: 5@ = @AIC_TESTVEHICLEHANDLE
0006: 6@ = 2584
0006: 8@ = -1
0256:   player $PLAYER_CHAR defined
004D: jump_if_false @AIC_STARTSEARCH 
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @AIC_STARTSEARCH
03C0: 8@ = actor $PLAYER_ACTOR car
0002: jump @AIC_STARTSEARCH

:AIC_GETOBJECT
0006: 16@ = 305871
0006: 5@ = @AIC_TESTOBJECTHANDLE
0006: 6@ = 412

:AIC_STARTSEARCH
008B: 16@ = &0(16@,1i) // CPool*
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 8 )^ = 7@  // CPool.Size
0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0        // CPool.pUnits
0006: 9@ = -1 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 11@ + 20 )^ = 4@  // xyz*
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 48 )^ = 12@  // x
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 52 )^ = 13@  // y
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 56 )^ = 14@  // z
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) // counter
0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 4 )^ = 4@ // CPool.flags
005A: 4@ += 9@ // (int) 
0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 
0012: 9@ *= 256 
005A: 9@ += 4@ // (int)
0002: jump 5@

:AIC_TESTVEHICLEHANDLE
056E:   is 9@ valid_vehicle_handle
004D: jump_if_false @AIC_NOHANDLE
00D6: if or
003B:   8@ == 9@ // (int) 
0119:   car 9@ wrecked 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

: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_TESTOBJECTHANDLE
83CA:   not object 9@ exists 
004D: jump_if_false @AIC_NEWSEARCHRADIUS

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

:AIC_NEWSEARCHRADIUS
{  
   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 

    
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT 
005A: 11@ += 6@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 7@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN
0051: return 

:AIC_READMEMOFFSET
0A8E: 0@ = 0@ + 1@ // int
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0AB2: ret 1 0@

Last edited by Seemann (08-06-2008 07:45)

Offline

#66 13-11-2008 10:08

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

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

А как можно находить СТАТИЧЕСКИЕ обьекты?=)
Возможно ли подстроить Interceptor под это или он рассчитан только на динамические обьекты?
(Статические обьекты можно созавать!)


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

Offline

#67 05-12-2008 18:11

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

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

Мне ответят?=)


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

Offline

#68 06-12-2008 11:35

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

Вопрос про интерцептор я не воткнул..........опкод записи объекта в переменную всего 1 вроде:-) статические поидее тоже в счёт


GIMS developer

Offline

#69 06-12-2008 14:02

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

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

Нельзя. Статические идут отдельно.

Offline

#70 06-12-2008 17:36

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

есть такая проверка......что-то типа

XXXX: if_no_obstacles_between_XYZ 1@ 2@ 3@ and_XYZ 1@ 2@ 3@ actor 0 car 0 object 0 particle 0

если поставить object 1, то статика тоже считается за объект

Last edited by 3Doomer (06-12-2008 17:37)


GIMS developer

Offline

#71 06-12-2008 18:44

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

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

Нельзя. Статические идут отдельно.

Тоесть вообще нельзя?Или только через инкретопор(за орфографические ошибки отвественности не несу)


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

Offline

#72 06-12-2008 19:24

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

занеси объект в data\object.dat и он будет пригоден скрипту:-)


GIMS developer

Offline

#73 07-12-2008 15:19

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

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

занеси объект в data\object.dat и он будет пригоден скрипту:-)

А там нет лимита?
(Мне нуны усе обьекты)


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

Offline

#74 07-12-2008 16:39

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

лимита вроде нет, только нагрузка на двиг будет...
ты запаришься все объекты вносить:)

я кажется понял, ты хочешь чтобы взрыв уничтожал карту?


GIMS developer

Offline

#75 30-12-2008 13:24

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Слушайте господа как записать в переменную хендл актера на которого наставлена пушка игроком или актером


I know everything and nothing...

Offline

Board footer

Powered by FluxBB