You are not logged in.
По идее можно через память менять назначение клавиши спринта, сначала ставим её на другую, потом возвращаем исходную.
это было бы то что нужно, только вот как найти адрес в памяти?
Да, кстати, можно ли как-то плавно повернуть игрока во время анимации? с парашютом прыгали? видели как он плавно поворачивается? там используется опкод 083E: set_actor $PLAYER_ACTOR rotation 0.0 0.0 1@ while_in_air
однако, он работает только в воздухе...а как же тогда поворачивается игрок, во время бега? скажу сразу для чего это нужно)) у меня есть анимация ходьбы на руках, только мне нужно вместе с камерой игрока поворачивать...как вычислить угол я знаю, я ставлю зацикленную проверку:
:HANDSTAND wait 0 if actor.Animation($PLAYER_ACTOR) == "HANDSTAND" jf @HANDSTAND
если эта проверка проходит я вычисляю нужный угол, а теперь мне нужно применить этот угол, только чтобы он применялся не моментально, а плавно...надеюсь я понятно объяснил, хотя наверное мне опять никто не ответит...
Last edited by BoPoH (07-11-2010 10:38)
Offline
я вычисляю нужный угол, а теперь мне нужно применить этот угол, только чтобы он применялся не моментально, а плавно
Угол делишь на небольшие доли, затем в цикле через короткие промежутки времени присваиваешь актёру угол, с каждым разом увеличенный на одну долю.
Last edited by Den_spb (07-11-2010 12:02)
Offline
Offline
это было бы то что нужно, только вот как найти адрес в памяти?
Я на практике не проверял, но на gtaf можно найти много всяких разных адресов. Я использую принт-версию, ибо поиск там сломался: http://www.gtaforums.com/index.php?act= … 7&t=194199
Я думаю тебе для начала нужен пост Wesser'a, ищи его через браузер - Posted by: Wesser Feb 2 2010, 19:42
Незнаю, будет ли эффект от изменения значений этих адресов, не проверял.
+ Ещё этот опкод можно попробовать.
Last edited by Sergey81 (07-11-2010 14:08)
Offline
Den_spb wrote:Угол делишь на небольшие доли, затем в цикле через короткие промежутки времени присваиваешь актёру угол, с каждым разом увеличенный на одну долю.
что-то я сомневаюсь что это будет плавно...нет, мне бы опкодик какой-нибудь вроде 083E только чтоб на земле работал)
Смотря как мелко поделить угол. Если доля будет составлять 10.0 градусов, то действительно получится неплавно. Или надо искать подходящие опкоды.
Last edited by Den_spb (07-11-2010 14:33)
Offline
Как можно получить указатель на рандомную машину в любом месте SA(или хотя бы создавать её там), чтоб потом поставить на неё маркер и проверять уничтожена она или нет?
Интересует именно чтоб машина была в любом месте, но следовала по путям как трафик, а не была где-нибудь внутри здания(в случае если её придётся создавать).
Last edited by Sergey81 (07-11-2010 21:53)
Offline
Я решил всё же создавать, для надёжности.
Вот почти готовый код(форматирования нет, но для таких маленьких скриптов мне его делать лень):
{$CLEO .cs} 0000: while true wait 0 if Actor.DrivingVehicleType($PLAYER_ACTOR, #HYDRA) then if 0AB0: key_pressed 54 then wait 500 model.Load(#PONY) model.Load(#BALLAS2) 038B: load_requested_models wait 3 Car.Create(29@, 413, 0.0, 0.0, 0.0) 30@ = Marker.CreateAboveCar(29@) 0129: 28@ = create_actor_pedtype 23 model #BALLAS2 in_car 29@ driverseat wait 1 00A8: set_car 29@ to_psycho_driver wait 1 model.Destroy(#PONY) model.Destroy(#BALLAS2) 0@ = 1 while 0@ == 1 wait 0 if //02BF: car 29@ sunk Car.Wrecked(29@) then Marker.Disable(30@) Car.Destroy(29@) 0109: player $PLAYER_CHAR money += 1500 0@ = 0 end if //and //not 30@ == 0 80DD: not actor $PLAYER_ACTOR driving_car_with_model #HYDRA then Marker.Disable(30@) Car.Destroy(29@) 0@ = 0 end end end end end
Вот теперь бы ещё спавнить транспорт в координатах рандомных, но в пределах путей трафика.
Last edited by Sergey81 (08-11-2010 09:34)
Offline
09BF: set_random_traffic_spawn_to_model #TOPFUN // Load the vehicle model before using this
Посмотри в main миссию 10. Как раз на эту тему.
Offline
Посмотри в main миссию 10. Как раз на эту тему.
Не совсем то. Сделал в общем так:
0208: 5@ = random_float_in_ranges -100000.0 100000.0 0208: 6@ = random_float_in_ranges -100000.0 100000.0 0208: 7@ = random_float_in_ranges -100000.0 100000.0 04D3: get_nearest_car_path_coords_from 5@ 6@ 7@ type 2 store_to 5@ 6@ 7@ wait 3 Car.Create(29@, 413, 5@, 6@, 7@)
но тут ещё одна проблема, если игрок далеко от этого места, машина проваливается сквозь дорогу и так респавнится, пока игрок не будет близко и загрузится коллизия. Нельзя ли её приаттачить к пути какому-нибудь, чтоб она двигалась независимо от коллизии?
Offline
Попробуй
0587: enable_car 29@ validate_position 0
а чем тебе не подходит опкод
09BF: set_random_traffic_spawn_to_model #TOPFUN // Load the vehicle model before using this
движок сам спаунит транспорт на пути.
Offline
движок сам спаунит транспорт на пути.
А как тогда на этот транспорт навесить метку? Проверять его состояние и т.д.?
А вот 0587 работает отлично, то что нужно, спасибо.
Вот такой получился обновлённый код:
{$CLEO .cs} 0000: 8@ = 0 while true wait 0 if or Actor.DrivingVehicleType($PLAYER_ACTOR, #HUNTER) Actor.DrivingVehicleType($PLAYER_ACTOR, #HYDRA) then if and 8@ == 0 0AB0: key_pressed 54 then wait 10 8@ = 1 end end if 8@ == 1 then wait 500 model.Load(#PONY) model.Load(#BALLAS2) 038B: load_requested_models //04C4: store_coords_to 5@ 6@ 7@ from_actor $PLAYER_ACTOR with_offset 0.0 25.0 1.0 0208: 5@ = random_float_in_ranges -100000.0 100000.0 0208: 6@ = random_float_in_ranges -100000.0 100000.0 0208: 7@ = random_float_in_ranges -100000.0 100000.0 04D3: get_nearest_car_path_coords_from 5@ 6@ 7@ type 2 store_to 5@ 6@ 7@ wait 3 Car.Create(29@, 413, 5@, 6@, 7@) 0587: enable_car 29@ validate_position 0 30@ = Marker.CreateAboveCar(29@) 0129: 28@ = create_actor_pedtype 23 model #BALLAS2 in_car 29@ driverseat wait 1 00A8: set_car 29@ to_psycho_driver //0587: enable_car 29@ validate_position 0 wait 1 model.Destroy(#PONY) model.Destroy(#BALLAS2) 0@ = 1 while 0@ == 1 wait 0 if //02BF: car 29@ sunk Car.Wrecked(29@) then Marker.Disable(30@) Car.Destroy(29@) 0109: player $PLAYER_CHAR money += 1500 0@ = 0 end if and 80DD: not actor $PLAYER_ACTOR driving_car_with_model #HYDRA 80DD: not actor $PLAYER_ACTOR driving_car_with_model #HUNTER then Marker.Disable(30@) Car.Destroy(29@) 0@ = 0 8@ = 0 end end end end
Рандомизация координат в принципе работает, но как то в пределах одного и того же места...
Last edited by Sergey81 (09-11-2010 10:44)
Offline
А как тогда на этот транспорт навесить метку? Проверять его состояние и т.д.?
........... 053E: 29@ = get_random_car_with_model #PONY in_rectangle_cornerA 1@ 2@ cornerB 4@ 5@ if Car.Defined(29@) then 30@ = Marker.CreateAboveCar(29@) ..........
Проверить можно ещё транспорт с водилой или на парковке просто стоит и т.д.
P.S. Почему проверки на загруженность моделей в коде нет?
Last edited by kenking (09-11-2010 14:03)
Offline
P.S. Почему проверки на загруженность моделей в коде нет?
А какой вобще смысл в такой проверке? Разве что то может помешать их загрузке после команды model.Load ?
Offline
ты создаёшь машину сразу после загрузки модели, а она, между прочим, не мгновенно загружается...
Но работает же. Добавлю тогда проверку на всякий случай.
Offline
Смотря как мелко поделить угол. Если доля будет составлять 10.0 градусов, то действительно получится неплавно. Или надо искать подходящие опкоды.
ты не понял что имею ввиду под словом "плавно")) я имел ввиду не то что он рывками поворачивается, а то что он поворачивается мгновенно. Ты, например, если бежишь, не можешь ведь моментально повернуть в другую сторону, в СА при беге это учтено, хотя и не полностью, и если ты сначала бежишь вперёд, а потом резко повернёшь камеру назад, то он не мгновенно повернётся в эту сторону, а постепенно, делая полукруг...того же эффекта мне нужно добиться и при воспроизведении анимации...
Offline
Offline
Добрый день всем:) у меня будет два вопроса: можно ли каким либо образом через память игры установить скорость движения машин по магистралям, например, кольцевой по LV. И второй: как сделать так чтобы машина, если она перевернулась, не загорелась? заранее всем спасибо:)
Эпитафия на могиле фидошника: "Меня видно?"
Offline
Для изменения характера существует опкод 07DD. А как изменить другие статы?
Offline
Во-первых, здесь статы не все, а во-вторых, тут только для игрока.
Offline