#1 09-12-2006 18:00

reinstal
Registered: 08-12-2006
Posts: 45

Автомобиль с человекм

у меня возник вопрос
вот в учбнике написано как разместить машину/мотоцикл в конкретном месте
так вот у меня вопрос, как сделать чтоб в этом месте появилась машина с человеком в нутри
на пример милиция
вот стаит тачка с ментом внутри где небудь на обочине
и если игрок савершает чтото на его глазах, или у игрока уже есть звёзы то они начинают гнаться за игроком
ну типа поста милиции
обьясните пожалуйста:)

Offline

#2 10-12-2006 06:59

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

Re: Автомобиль с человекм

reinstal wrote:

как сделать чтоб в этом месте появилась машина с человеком в нутри

Поискать сам не пробовал? Opcode Search Tool по запросу "car actor driver" выдает первым опкод

0129: 41@ = create_actor 23 #SPECIAL02 in_car 35@ driverseat
reinstal wrote:

если игрок савершает чтото на его глазах

попробуй через события, как в примере с превышением скорости. Номера событий в файле PedEvent.txt

у игрока уже есть звёзы

ищем по словам wanted level

то они начинают гнаться за игроком

00AF: set_car 62@ driver_behaviour_to 5

значения последнего параметра можно посмотреть в базе опкодов
http://sa-db.webtools4you.net/

Offline

#3 10-12-2006 12:42

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

а можете пожеалуйста написать один скрипт в этом роде:rolleyes:
просто разместите тачку с ментом где нибудь, ну на пример во дворе у первого дома сиджея

вы уж извените что так на нервы действую=), просто я вообще делаю модели для ГТА, но вот решил скрипы изучать=):)

и ещё вопрос:
вот в учебнике "Создание транспорта"
в самом начале скрипта написано:
:NRG_500
wait 100
thread “NRG”

так вот вопрос, что значит wait 100 и thread “NRG”

Offline

#4 10-12-2006 14:33

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

Re: Автомобиль с человекм

reinstal wrote:

а можете пожеалуйста написать один скрипт в этом роде

Ты никогда не научишься скриптингу, если не будешь пытаться сделать что-нибудь сам. Это все равно что просить другого человека рисовать за вас буквы, когда вы учитесь писать.
Начни с малого.

reinstal wrote:

так вот вопрос, что значит wait 100 и thread “NRG”

Прочитай вот это
http://forums.ag.ru/?board=gta&action=d … 1057863893
http://gtacoding.nm.ru/mb/faq

Offline

#5 10-12-2006 15:29

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

:BALLA_1
thread 'BALLAS'
Model.Load(#BALLAS1) 

:BALLA_2
wait 100
if AND
Model.Available(#BALLAS1) 
jf @BALLA_2
17@ = Actor.Create(#BALLAS1, 2510.2615, -1671.3036, 13.4114 )

вот смотрите что в этом коде не правильно?

при компиляции ошибка вылазеет

Offline

#6 10-12-2006 15:42

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

Re: Автомобиль с человекм

2reinstal
Вот, это другое дело. Если в следующий раз будешь говорить, что за ошибка появляется, будет совсем здорово smile

Смотрим, SB говорит: "Недостаточно параметров. Ожидалось 6 параметров" на строке

17@ = Actor.Create(#BALLAS1, 2510.2615, -1671.3036, 13.4114 )

Ставим курсор между скобками, давим Ctrl+Shift+Space и видим, что первый параметр должен быть "Pedtype: Extended"

Читаем ридми:

Для облегчения использования расширенных названий, их список
    для текущей команды может вызываться нажатием Ctrl+[space].
    Просто установите курсор туда, где должен быть расширенный параметр,
    (обозначается словом Extended во всплывающем хинте), нажмите ctrl+[space]
    и в редакторе появится список возможных имен с указанием числового
    значения для каждого из них.

Нажимаем  Ctrl+Space, появляется список параметров. Выбираем тип актера, например Gang1 давим Enter
(нужно аккуратно, чтобы не затереть имя модели, поставь пробел).
Строка должна выглядеть так:

17@ = Actor.Create(Gang1, #BALLAS1, 2510.2615, -1671.3036, 13.4114 )

давим F7. Код компилируется.

Offline

#7 11-12-2006 23:37

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

почему когда я запихиваю этот скрипт то там появляется не один баллас, a 2 какбы друг в друге
2ое на одной точке

:BALLA_1
thread 'BALLAS'
Model.Load(#BALLAS1) 

:BALLA_2
wait 100
if AND
Model.Available(#BALLAS1) 
jf @BALLA_2
1@ = Actor.Create(Gang1, #BALLAS1, 2510.2615, -1671.3036, 13.4114 )

тоже самое и с автомобилями/байками
например:

:NRG_500
thread 'NRG'
Model.Load(#NRG500) 

:NRG_510
wait 100
if AND
Model.Available(#NRG500) 
jf @NRG_510
17@ = Car.Create(#NRG500, 2510.2615, -1671.3036, 13.4114 )

Здесъ появляются 2 байка рядом друг с другом


и ещё вопрос=)
как сделать чтоб если например убит (или просто убежал) этот самый балас каторый должен там стоять то он через некаторое врямя сново там появлялся или например если игрок уедет на определённое разстояние


тоже самое с тачками если она взорвана или на ней уехяли
чтоб она сново появлялоась

Last edited by reinstal (11-12-2006 23:37)

Offline

#8 13-12-2006 16:15

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

Re: Автомобиль с человекм

почему когда я запихиваю этот скрипт то там появляется не один баллас, a 2 какбы друг в друге

могу поспорить у тебя в коде написано примерно так:

create_thread @BALLA_1

:BALLA_1
thread 'BALLAS'
Model.Load(#BALLAS1) 

:BALLA_2
wait 100
if AND
Model.Available(#BALLAS1) 
jf @BALLA_2
1@ = Actor.Create(Gang1, #BALLAS1, 2510.2615, -1671.3036, 13.4114 )

или что-нибудь в этом духе. Игра дважды приходит на метку BALLA_1. Один раз из потока, в котором написано

create_thread @BALLA_1, второй раз - из самого потока @BALLA_1. Попробуй удалить команду
create_thread @BALLA_1.

Если нет, то возможно после создания актера, твой скрипт опять переходит на :BALLA_1.


как сделать чтоб если например убит (или просто убежал) этот самый балас каторый должен там стоять то он через некаторое врямя сново там появлялся или например если игрок уедет на определённое разстояние

Добавь условие типа

if
 actor.dead()
then
 actor.create
end

и проверяй это условие в цикле (по примеру загрузки модели)

Offline

#9 17-12-2006 01:26

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

:BALLA_1
wait 100
thread 'BALLAS'
Model.Load(#BALLAS1) 


:BALLA_2
wait $DEFAULT_WAIT_TIME  
if AND
Model.Available(#BALLAS1) 
jf @BALLA_2
17@ = Actor.Create(Gang1, #BALLAS1, 2510.2615, -1671.3036, 13.4114 )


:BALLA_3
wait $DEFAULT_WAIT_TIME 
if AND
Actor.Dead(17@) 
jf @BALLA_3  
Actor.RemoveReferences(17@) 
Model.Destroy(#BALLAS1) 


:BALLA_4
wait $DEFAULT_WAIT_TIME 
if AND
Actor.Dead(17@) 
jf @BALLA_4
jump @BALLA_1

это у меня ещё вопрос=)
вот кoгда я убиваю балласа я не хочу чтоб он появлялся сразу и не через некоторое время
я хочу чтоб было как в СА
когда надо отехать на определённое разстояние чтоб убитый или взорванная тачка сново появилась
так как мне это сделать?
с трупами получается, типа пока не отъедешь труп не изчезнит, а вот как только убиваю то баллас сного появляэтся на томже месте, и получается такая картина:
projekt1xp3.th.jpg

Offline

#10 17-12-2006 06:50

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

Re: Автомобиль с человекм

проверяем, что игрок отъехал на 25 метров от трупа

04A5: get_actor 17@ approximate_position_3D_coord_to 0@ 1@ 2@ 
:BALLA_4
wait $DEFAULT_WAIT_TIME
if 
  Player.Defined($PLAYER_CHAR)
jf @BALLA_1
if 
  00FE:  is_actor $PLAYER_ACTOR near_3D_coord 0@ 1@ 2@ within_3D_radius 25.0 25.0 15.0 flag 0 
jf @BALLA_1
jump @BALLA_4

Offline

#11 17-12-2006 12:14

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

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

Offline

#12 17-12-2006 12:16

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

Re: Автомобиль с человекм

Напиши весь код, как ты сделал.

Offline

#13 17-12-2006 12:23

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

create_thread @BALLA_1


:BALLA_1 
wait $DEFAULT_WAIT_TIME  
thread 'BALLAS'
Model.Load(#BALLAS1) 


:BALLA_2
wait $DEFAULT_WAIT_TIME  
if AND
Model.Available(#BALLAS1) 
jf @BALLA_2
17@ = Actor.Create(Gang1, #BALLAS1, 2510.2615, -1671.3036, 13.4114 )


:BALLA_3
wait $DEFAULT_WAIT_TIME 
if AND
Actor.Dead(17@) 
jf @BALLA_3  
Actor.RemoveReferences(17@) 
Model.Destroy(#BALLAS1) 
04A5: get_actor 17@ approximate_position_3D_coord_to 0@ 1@ 2@ 

:BALLA_4
wait $DEFAULT_WAIT_TIME
if 
  Player.Defined($PLAYER_CHAR)
jf @BALLA_1
if 
  00FE:  is_actor $PLAYER_ACTOR near_3D_coord 0@ 1@ 2@ within_3D_radius 25.0 25.0 15.0 flag 0 
jf @BALLA_1
jump @BALLA_4

Offline

#14 17-12-2006 12:30

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

Re: Автомобиль с человекм

8-й пост читал? Похоже что у тебя именно это. Попробуй убрать create_thread.

Offline

#15 17-12-2006 12:47

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

попробовал, баллас вообще не появляется
а тогда 2 балласа баявлялись потому что я сделал не только create_thread @BALLA_1 но и create_thread @BALLA_2
после удаления  create_thread @BALLA_2 появляется только один

а от чего ещё может быть?

Offline

#16 17-12-2006 13:02

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Автомобиль с человекм

Чем отличается

04A5: store_dead_actor 72@(43@,4i) position_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
04A5: get_actor 17@ approximate_position_3D_coord_to 0@ 1@ 2@

Offline

#17 17-12-2006 13:10

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

Re: Автомобиль с человекм

Это из этого ини
http://www.pysniak.com/robert/gtasa/data/sascm.ini

Я им пользуюсь в качестве справки.

Offline

#18 17-12-2006 15:05

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

Re: Автомобиль с человекм

2reinstal:
Блин, опять ту же ошибку совершил, что и в моде на превышение скорости - дал тебе опкод с другим порядком следования параметров.

Вот правильная версия

  00FE:  is_actor $PLAYER_ACTOR near_3D_coord 0 0@ 1@ 2@ within_3D_radius 25.0 25.0 15.0

Offline

#19 18-12-2006 09:20

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Автомобиль с человекм

2reinstal:
Попробуй это код (я его не тестил)

create_thread @EXAMPLE

...

// put your mods (threads) here
:EXAMPLE
var
  $SA_VASYA: Actor
  $SA_VASYA_MARKER: Marker
  $SA_VASYA_FLAG: Integer = 0
end // var

while true
  wait 0

// Создаем актера если, 25.0 < расстояние до игрока < 35.0
  
  if and
    $SA_VASYA_FLAG == 0
    80FE:   not actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 25.0 25.0 15.0
    00FE:   actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 35.0 35.0 15.0 
  then
    #WMOICE.Load
    while not #WMOICE.Available
      wait 0
    end
    $SA_VASYA_FLAG = 1
    $SA_VASYA.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114)
    $SA_VASYA.Angle = 84.2641
    $SA_VASYA_MARKER.CreateAboveActor($SA_VASYA)
  end // if

// Проверка, если расстояние от игрока до актера > 35.0
  
  if and
    $SA_VASYA_FLAG == 1
    80FE:   not actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 35.0 35.0 15.0 
  then
    $SA_VASYA.RemoveReferences
    #WMOICE.Destroy
    $SA_VASYA_MARKER.Disable
    $SA_VASYA_FLAG = 0   
  end // if
 
// Проверка на смерть актера 
  
  if and
    $SA_VASYA_FLAG == 1
    $SA_VASYA.Dead
  then
    $SA_VASYA.RemoveReferences
    #WMOICE.Destroy
    $SA_VASYA_MARKER.Disable  
    $SA_VASYA_FLAG = 0
  end // if
  
end // while

end_thread

тоже самое с тачками если она взорвана или на ней уехяли
чтоб она сново появлялоась

014B: $PARKED_RHINO = init_parked_car_generator #RHINO -1 -1 1 alarm 0 door_lock 0 0 10000 at 2435.3018 -1671.8482 12.8008 angle 90.0 
014C: set_parked_car_generator $PARKED_RHINO cars_to_generate_to 0

Offline

#20 18-12-2006 11:57

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

спасибо, я уже написал:)

а можно сделать так, чтоб пед не просто стоял на месте, а там курил или типа того?

Last edited by reinstal (18-12-2006 12:00)

Offline

#21 18-12-2006 15:49

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

Re: Автомобиль с человекм

reinstal wrote:

а можно сделать так, чтоб пед не просто стоял на месте, а там курил или типа того?

Можно. В GTA есть такое понятие, как анимации. В мануале это вроде как описано.

Offline

#22 18-12-2006 23:58

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

:BALLA_1
wait 100  
thread 'BALLAS'
Model.Load(#LAPD1) 
Model.Load(#CIGAR) 
Model.Load(#CIGAR_GLOW) 
Model.Load(#AK47) 
038B: load_requested_models 

:BALLA_2
wait $DEFAULT_WAIT_TIME  
if AND
Model.Available(#LAPD1) 
Model.Available(#CIGAR)
Model.Available(#CIGAR_GLOW) 
jf @BALLA_2
17@ = Actor.Create(Cop, #LAPD1, 2510.2615, -1671.3036, 13.4114 )


:BALLA_2_1
wait $DEFAULT_WAIT_TIME  
if AND
Model.Available(#LAPD1) 
Model.Available(#CIGAR)
Model.Available(#CIGAR_GLOW) 
jf @BALLA_2_1
$sig = Object.Create(#CIGAR, 0, 0, 0)
070A: unknown_action_sequence 17@ $sig 0.04 0.1 0.05 6 16 "NULL" "NULL" 0
0605: actor 17@ perform_animation_sequence "M_SMK_IN" from_file "SMOKING" 4.0 loop 0 0 0 0 -1 ms
$p1 = 0.05 // floating-point values
$p2 = 0.12 // floating-point values
$p3 = 0.0 // floating-point values
0669: $dim = attach_particle "EXHALE" to_actor 17@ offset $p1 $p2 $p3 1
0883: $dim 17@ 5        
wait 2000
0605: actor 17@ perform_animation_sequence "SMKCIG_PRTL" from_file "GANGS" 3.0 loop 2 0 0 0 2500 ms 
0967: actor 17@ move_mouth 10000 ms 
05BA: AS_actor 17@ chew_gum 5000 ms
0669: $dim2 = attach_particle "EXHALE" to_actor 17@ offset 0.0 0.0 0.0 1
0883: $dim2 17@ 5
064C: make_particle $dim2 visible       
wait 3000
0605: actor 17@ perform_animation_sequence "SMKCIG_PRTL" from_file "GANGS" 3.0 loop 2 0 0 0 2500 ms //????????? 3 ???? ?? 4 ???
0669: $dim2 = attach_particle "EXHALE" to_actor 17@ offset 0.0 0.0 0.0 1
0883: $dim2 17@ 5
064C: make_particle $dim2 visible   
wait 3500
0650: destroy_particle $dim2
0812: unknown_action_sequence 17@ "M_SMKLEAN_LOOP" "SMOKING" 4.0 1 0 0 0 1000
0669: $dim2 = attach_particle "EXHALE" to_actor 17@ offset 0.0 0.0 0.0 1
0883: $dim2 17@ 5
064C: make_particle $dim2 visible      
 wait 3500
0650: destroy_particle $dim2
0812: unknown_action_sequence 17@ "M_SMK_OUT" "SMOKING" 4.0 0 0 0 0 0 //????? ? ????????? - ???????
0669: $dim2 = attach_particle "EXHALE" to_actor 17@ offset 0.0 0.0 0.0 1
0883: $dim2 17@ 5
064C: make_particle $dim2 visible
0968: actor 17@ stop_mouth      
wait 3500
0650: destroy_particle $dim2
0605: actor 17@ perform_animation_sequence "SMKCIG_PRTL" from_file "GANGS" 3.0 loop 2 0 0 0 2500 ms //????????? 3 ???? ?? 4 ???
0669: $dim2 = attach_particle "EXHALE" to_actor 17@ offset 0.0 0.0 0.0 1
0883: $dim2 17@ 5
064C: make_particle $dim2 visible  
 
:BALLA_3_1
if  Player.WantedLevel($PLAYER_CHAR) > 0
then
02E0:   actor 17@ aggressive
01B2: give_actor 17@ weapon 30 ammo 300
031D:   actor 17@ hit_by_weapon $PLAYER_CHAR    
0650: destroy_particle $dim
0650: destroy_particle $dim2
 end
 else_jump @BALLA_2_1





:BALLA_3
wait $DEFAULT_WAIT_TIME 
if AND
Actor.Dead(17@) 
jf @BALLA_3  
0650: destroy_particle $dim
0650: destroy_particle $dim2
Actor.RemoveReferences(17@) 
Model.Destroy(#LAPD1) 
04A5: get_actor 17@ approximate_position_3D_coord_to 0@ 1@ 2@ 

:BALLA_4
wait $DEFAULT_WAIT_TIME
if 
  Player.Defined($PLAYER_CHAR)
jf @BALLA_1
if 
  00FE:  is_actor $PLAYER_ACTOR near_3D_coord 0 0@ 1@ 2@ within_3D_radius 500.0 500.0 15.0
jf @BALLA_1
jump @BALLA_4

вот смотри, тут мент стоит и курит
но я хотел сделать чтоб он был как обычный мент, ну типа если уводит приступление или если уже есть несколько звёзд то начнёт гонятся за персонажем, в данном случее я просто дал ему калаш чтоб проверить работает или нет
так вот дело ве томе что если я буду разстреливать людей на его глазах он ничего делать не будет
если я пойду и ударю его то после первово удара он просто ничего не сделает и только после второго или третьего начнёт стрелять
но на других персонажей как на пример на диллеров он наподает моментально забыв о курении

Offline

#23 19-12-2006 04:13

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Автомобиль с человекм

2reinstal:

:BALLA_3_1
if  Player.WantedLevel($PLAYER_CHAR) > 0
then
02E0:   actor 17@ aggressive
01B2: give_actor 17@ weapon 30 ammo 300
031D:   actor 17@ hit_by_weapon $PLAYER_CHAR    
0650: destroy_particle $dim
0650: destroy_particle $dim2
 end
 else_jump @BALLA_2_1

Посмотри внимательно - что у тебя здесь с условиями???


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#24 19-12-2006 12:49

reinstal
Registered: 08-12-2006
Posts: 45

Re: Автомобиль с человекм

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

Offline

#25 19-12-2006 14:33

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Автомобиль с человекм

02E0:   actor 17@ aggressive - это и есть условие (ты его неправильно оформил) оно проверяет игрока на агрессивность.

031D:   actor 17@ hit_by_weapon $PLAYER_CHAR - это тоже условие, а не команда, проверяет целиться ли актёр в игрока.

Ты всё сбросил в кучу и команды и условия... Найди в оригинальном мейне их и посмотри как они правильно ставятся.


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

Board footer

Powered by FluxBB