You are not logged in.
у меня возник вопрос
вот в учбнике написано как разместить машину/мотоцикл в конкретном месте
так вот у меня вопрос, как сделать чтоб в этом месте появилась машина с человеком в нутри
на пример милиция
вот стаит тачка с ментом внутри где небудь на обочине
и если игрок савершает чтото на его глазах, или у игрока уже есть звёзы то они начинают гнаться за игроком
ну типа поста милиции
обьясните пожалуйста:)
Offline
как сделать чтоб в этом месте появилась машина с человеком в нутри
Поискать сам не пробовал? Opcode Search Tool по запросу "car actor driver" выдает первым опкод
0129: 41@ = create_actor 23 #SPECIAL02 in_car 35@ driverseat
если игрок савершает чтото на его глазах
попробуй через события, как в примере с превышением скорости. Номера событий в файле PedEvent.txt
у игрока уже есть звёзы
ищем по словам wanted level
то они начинают гнаться за игроком
00AF: set_car 62@ driver_behaviour_to 5
значения последнего параметра можно посмотреть в базе опкодов
http://sa-db.webtools4you.net/
Offline
а можете пожеалуйста написать один скрипт в этом роде:rolleyes:
просто разместите тачку с ментом где нибудь, ну на пример во дворе у первого дома сиджея
вы уж извените что так на нервы действую=), просто я вообще делаю модели для ГТА, но вот решил скрипы изучать=):)
и ещё вопрос:
вот в учебнике "Создание транспорта"
в самом начале скрипта написано:
:NRG_500
wait 100
thread “NRG”
так вот вопрос, что значит wait 100 и thread “NRG”
Offline
а можете пожеалуйста написать один скрипт в этом роде
Ты никогда не научишься скриптингу, если не будешь пытаться сделать что-нибудь сам. Это все равно что просить другого человека рисовать за вас буквы, когда вы учитесь писать.
Начни с малого.
так вот вопрос, что значит wait 100 и thread “NRG”
Прочитай вот это
http://forums.ag.ru/?board=gta&action=d … 1057863893
http://gtacoding.nm.ru/mb/faq
Offline
: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
2reinstal
Вот, это другое дело. Если в следующий раз будешь говорить, что за ошибка появляется, будет совсем здорово
Смотрим, 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
почему когда я запихиваю этот скрипт то там появляется не один баллас, 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
почему когда я запихиваю этот скрипт то там появляется не один баллас, 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
: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гда я убиваю балласа я не хочу чтоб он появлялся сразу и не через некоторое время
я хочу чтоб было как в СА
когда надо отехать на определённое разстояние чтоб убитый или взорванная тачка сново появилась
так как мне это сделать?
с трупами получается, типа пока не отъедешь труп не изчезнит, а вот как только убиваю то баллас сного появляэтся на томже месте, и получается такая картина:
Offline
проверяем, что игрок отъехал на 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
н помогло
так как только я убиваю одного балласа сразу появляется другой
Offline
Напиши весь код, как ты сделал.
Offline
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
8-й пост читал? Похоже что у тебя именно это. Попробуй убрать create_thread.
Offline
попробовал, баллас вообще не появляется
а тогда 2 балласа баявлялись потому что я сделал не только create_thread @BALLA_1 но и create_thread @BALLA_2
после удаления create_thread @BALLA_2 появляется только один
а от чего ещё может быть?
Offline
Чем отличается
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
Это из этого ини
http://www.pysniak.com/robert/gtasa/data/sascm.ini
Я им пользуюсь в качестве справки.
Offline
2reinstal:
Блин, опять ту же ошибку совершил, что и в моде на превышение скорости - дал тебе опкод с другим порядком следования параметров.
Вот правильная версия
00FE: is_actor $PLAYER_ACTOR near_3D_coord 0 0@ 1@ 2@ within_3D_radius 25.0 25.0 15.0
Offline
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
спасибо, я уже написал:)
а можно сделать так, чтоб пед не просто стоял на месте, а там курил или типа того?
Last edited by reinstal (18-12-2006 12:00)
Offline
а можно сделать так, чтоб пед не просто стоял на месте, а там курил или типа того?
Можно. В GTA есть такое понятие, как анимации. В мануале это вроде как описано.
Offline
: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
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
ну типа если у игрока есть хоть одна звезда, мент должен стать агресивным, получить пушку и стрелять в игрока и чтоб дым изчез
Offline
02E0: actor 17@ aggressive - это и есть условие (ты его неправильно оформил) оно проверяет игрока на агрессивность.
031D: actor 17@ hit_by_weapon $PLAYER_CHAR - это тоже условие, а не команда, проверяет целиться ли актёр в игрока.
Ты всё сбросил в кучу и команды и условия... Найди в оригинальном мейне их и посмотри как они правильно ставятся.
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline