Автор Тема: Пора сделать нормальный танк  (Прочитано 20584 раз)

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 709
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Пора сделать нормальный танк
« Ответ #30 : Май 14, 2014, 09:13:44 pm »
Нормальная, если менять не сам угол, а силу поворота:

 +0x84 - [float] - Z turn speed

Вот пример использования - стабилизация автомобиля при дрифте(чтобы не разворачивало):
HP_Drift


Скрипт пока не релизил, но вот его код(просто пока работаю над нюансами):

thread 'HP_DRFT'

:HP_DRFT_12
wait 0
if and
   Player.Defined($PLAYER_CHAR)
00E0:   player $PLAYER_CHAR driving
jf @HP_DRFT_12
if and
84AA:   not player $PLAYER_CHAR driving_heli
84A8:   not player $PLAYER_CHAR driving_boat
84C9:   not player $PLAYER_CHAR driving_plane
jf @HP_DRFT_12
03C1: 0@ = player $PLAYER_CHAR car_no_save
13@ = 0 // integer values

:HP_DRFT_78
if
   not Car.Wrecked(0@)
jf @HP_DRFT_12
if
is_player_driving $PLAYER_CHAR 0@
jf @HP_DRFT_12
if and
82BF:   not car 0@ sunk
020D:   car 0@ flipped
81F3:   not car 0@ airborne
jf @HP_DRFT_12
Car.StorePos(0@, 2@, 3@, 4@)
05E7: 12@ = car 0@ struct
0084: 14@ = 12@ // integer values and handles
0084: 15@ = 12@ // integer values and handles
12@ += 112 // integer values
14@ += 116 // integer values
15@ += 132 // integer values
05E0: 12@ = read_memory 12@ size 4 virtual_protect 0
05E0: 14@ = read_memory 14@ size 4 virtual_protect 0
05E0: 15@ = read_memory 15@ size 4 virtual_protect 0
wait 0
if
   not Car.Wrecked(0@)
jf @HP_DRFT_12
if
is_player_driving $PLAYER_CHAR 0@
jf @HP_DRFT_12
if and
82BF:   not car 0@ sunk
020D:   car 0@ flipped
81F3:   not car 0@ airborne
jf @HP_DRFT_12
02E3: 1@ = car 0@ speed
if and
  1@ > 10.6 // floating-point values
00E1:   player 0 pressed_button 16
jf @HP_DRFT_12
Car.StorePos(0@, 5@, 6@, 4@)
0407: create_coordinate 8@ 9@ 4@ from_car 0@ offset 0.0 0.1 0.0
0067: 8@ -= 5@ // floating-point values
0067: 9@ -= 6@ // floating-point values
0067: 5@ -= 2@ // floating-point values
0067: 6@ -= 3@ // floating-point values
05A4: get_angle_between_vectors_origin_to 5@ 6@ and_origin_to 8@ 9@ store_to 11@ // never used in VC
Car.StorePos(0@, 5@, 6@, 4@)
0407: create_coordinate 8@ 9@ 4@ from_car 0@ offset -0.02 0.1 0.0
0067: 8@ -= 5@ // floating-point values
0067: 9@ -= 6@ // floating-point values
0067: 5@ -= 2@ // floating-point values
0067: 6@ -= 3@ // floating-point values
05A4: get_angle_between_vectors_origin_to 5@ 6@ and_origin_to 8@ 9@ store_to 7@ // never used in VC
Car.StorePos(0@, 5@, 6@, 4@)
0407: create_coordinate 8@ 9@ 4@ from_car 0@ offset 0.02 0.1 0.0
0067: 8@ -= 5@ // floating-point values
0067: 9@ -= 6@ // floating-point values
0067: 5@ -= 2@ // floating-point values
0067: 6@ -= 3@ // floating-point values
05A4: get_angle_between_vectors_origin_to 5@ 6@ and_origin_to 8@ 9@ store_to 10@ // never used in VC
11@ *= 1000.0 // floating-point values (never used in VC or GTA 3)
7@ *= 1000.0 // floating-point values (never used in VC or GTA 3)
10@ *= 1000.0 // floating-point values (never used in VC or GTA 3)
if and
  996.0 > 11@ // floating-point values
  11@ > 25.0 // floating-point values
jf @HP_DRFT_12
13@ += 1 // integer values
if
  13@ > 3 // integer values
jf @HP_DRFT_78
if and
80E1:   not player 0 pressed_button 10
80E1:   not player 0 pressed_button 11
jf @HP_DRFT_956

:HP_DRFT_720
05E7: 1@ = car 0@ struct
0084: 2@ = 1@ // integer values and handles
0084: 3@ = 1@ // integer values and handles
1@ += 112 // integer values
2@ += 116 // integer values
3@ += 132 // integer values
05E0: 4@ = read_memory 1@ size 4 virtual_protect 0
05E0: 5@ = read_memory 2@ size 4 virtual_protect 0
05E0: 6@ = read_memory 3@ size 4 virtual_protect 0
0063: 12@ -= 4@ // floating-point values (never used in VC or GTA 3)
0063: 14@ -= 5@ // floating-point values (never used in VC or GTA 3)
12@ *= 0.2 // floating-point values (never used in VC or GTA 3)
14@ *= 0.2 // floating-point values (never used in VC or GTA 3)
6@ *= 0.95 // floating-point values (never used in VC or GTA 3)
005B: 4@ += 12@ // floating-point values (never used in VC or GTA 3)
005B: 5@ += 14@ // floating-point values (never used in VC or GTA 3)
02E3: 8@ = car 0@ speed
if
  30.0 > 8@ // floating-point values
jf @HP_DRFT_913
4@ *= 1.008 // floating-point values (never used in VC or GTA 3)
5@ *= 1.008 // floating-point values (never used in VC or GTA 3)

:HP_DRFT_913
05DF: write_memory 3@ size 4 value 6@ virtual_protect 0
05DF: write_memory 1@ size 4 value 4@ virtual_protect 0
05DF: write_memory 2@ size 4 value 5@ virtual_protect 0
jump @HP_DRFT_78

:HP_DRFT_956
if and
00E1:   player 0 pressed_button 10
80E1:   not player 0 pressed_button 11
jf @HP_DRFT_1013
if and
0025:   7@ > 11@ // floating-point values (never used in VC or GTA 3)
0025:   11@ > 10@ // floating-point values (never used in VC or GTA 3)
jf @HP_DRFT_720
jump @HP_DRFT_1063

:HP_DRFT_1013
if and
80E1:   not player 0 pressed_button 10
00E1:   player 0 pressed_button 11
jf @HP_DRFT_720
if and
0025:   10@ > 11@ // floating-point values (never used in VC or GTA 3)
0025:   11@ > 7@ // floating-point values (never used in VC or GTA 3)
jf @HP_DRFT_720

:HP_DRFT_1063
05E7: 1@ = car 0@ struct
0084: 2@ = 1@ // integer values and handles
0084: 3@ = 1@ // integer values and handles
1@ += 112 // integer values
2@ += 116 // integer values
3@ += 132 // integer values
05E0: 4@ = read_memory 1@ size 4 virtual_protect 0
05E0: 5@ = read_memory 2@ size 4 virtual_protect 0
05E0: 6@ = read_memory 3@ size 4 virtual_protect 0
0063: 12@ -= 4@ // floating-point values (never used in VC or GTA 3)
0063: 14@ -= 5@ // floating-point values (never used in VC or GTA 3)
0063: 15@ -= 6@ // floating-point values (never used in VC or GTA 3)
12@ *= 0.05 // floating-point values (never used in VC or GTA 3)
14@ *= 0.05 // floating-point values (never used in VC or GTA 3)
15@ *= 0.02 // floating-point values (never used in VC or GTA 3)
005B: 4@ += 12@ // floating-point values (never used in VC or GTA 3)
005B: 5@ += 14@ // floating-point values (never used in VC or GTA 3)
005B: 6@ += 15@ // floating-point values (never used in VC or GTA 3)
02E3: 8@ = car 0@ speed
if
  30.0 > 8@ // floating-point values
jf @HP_DRFT_1272
4@ *= 1.002 // floating-point values (never used in VC or GTA 3)
5@ *= 1.002 // floating-point values (never used in VC or GTA 3)

:HP_DRFT_1272
05DF: write_memory 3@ size 4 value 6@ virtual_protect 0
05DF: write_memory 1@ size 4 value 4@ virtual_protect 0
05DF: write_memory 2@ size 4 value 5@ virtual_protect 0
jump @HP_DRFT_78



Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #31 : Май 14, 2014, 09:21:53 pm »
Цитировать
Вот пример использования - стабилизация автомобиля при дрифте(чтобы не разворачивало):
По моему это выглядит круто! Хороший мод.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 709
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Пора сделать нормальный танк
« Ответ #32 : Май 14, 2014, 09:23:20 pm »
Sektor, спс)

xanser: вообще, если бы ты подготовил гусеницы к работе в скриптах, я бы сделал всё остальное: и скрипт, управляющий их движением, и физику и все остальное.
Мне проще будет работать над этим, т.к. я давно занимаюсь "изменением физики" авто скриптами, и есть вся необходимая база.
Но ты не любишь скриптинг ???, а я просто не могу делать что-то более-менее серьезное в asi
« Последнее редактирование: Май 14, 2014, 09:25:29 pm от Shaggy »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 709
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Пора сделать нормальный танк
« Ответ #33 : Май 15, 2014, 12:26:08 am »
Recoil говорит, что он с kenking-ом
Цитировать
делали танк, там был разворот на месте и соответствующее движение гусениц, катков и колес в "Раздрай"
в общем у совр. танков с ГОП на нейтралке при повороте рулевого колеса(к примеру) и нажатии на педаль газа тоже гусеницы в раздрай идут


но разработки затерялись у этого kenking-а, так что если что - xanser, попробуй обратиться к нему

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 599
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #34 : Май 15, 2014, 05:26:35 am »
Но ты не любишь скриптинг ???, а я просто не могу делать что-то более-менее серьезное в asi
Особой разницы в этом плане не будет, скрипт можно потом переписать в си-код, и наоборот код в скрипт если понадобится, работа только с адресами и опкодами.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 599
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #35 : Декабрь 01, 2014, 01:43:17 pm »
Вот что получилось пока

GTA Vice City Танк T-72

Оффлайн mfisto

  • Скриптер
  • Главный Модератор
  • Новичок
  • *****
  • Сообщений: 176
  • Репутация: +19/-0
  • Не пью, не курю, за компьютером сижу...
    • mfistof
    • Просмотр профиля
    • Empire of CJ
Re: Пора сделать нормальный танк
« Ответ #36 : Декабрь 01, 2014, 02:23:47 pm »
Ну, ты как всегда не перестаешь удивлять! ;)
I know everything and nothing...

Оффлайн mike43842

  • Прохожий
  • *
  • Сообщений: 110
  • Репутация: +1/-0
    • mike43842
    • Просмотр профиля
    • lol
Re: Пора сделать нормальный танк
« Ответ #37 : Декабрь 02, 2014, 12:05:42 am »
Супер!

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 599
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Для тех, кто считает, что выстрел танка выглядит слабовато, можно кое-что улучшить:

0x5866A2 (int) - интервал между выстрелами 800 мс
0x69A610 (float) - дальность выстрела 60.0
0x5869AC (byte) - тип взрыва, 6 и 7 выглядят куда мощнее, для базуки то же самое тут 0x5C6F39, к сожалению никак не могу найти для hunter-а


« Последнее редактирование: Июнь 06, 2015, 12:10:41 pm от xanser »

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 709
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
У хантера вроде(насколько я помню) взрыв от rocket launcher-а, так что вот адресок: 6057785(dec)

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 599
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Так-то оно так, но смена взрыва базуки не влияет на взрыв от хантера, у меня по крайней мере.
Сразу не заметил условие там, вот этот адресок для хантера 0x5C6F2B
« Последнее редактирование: Март 23, 2015, 02:16:32 pm от xanser »

Оффлайн daniel_360

  • Прохожий
  • *
  • Сообщений: 105
  • Репутация: +4/-0
    • daniel360465
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #41 : Июнь 08, 2024, 06:31:26 pm »
Вот что получилось пока

GTA Vice City Танк T-72

А мод есть в открытом доступе? Очень хотелось бы опробовать собственными руками!

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 599
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Пора сделать нормальный танк
« Ответ #42 : Июнь 24, 2024, 10:24:13 am »
Вот ты поднял тему из пыли.
Отдельного мода на танк нет, это часть проекта-долгостроя. Можно конечно заморочиться и выложить как демонстрационный мод для этого сайта.
Дело в том, что модификация компонентов машин, например, колес или выстрелов подразумевает изменения, касающиеся всего класса машин. Если ты скачаешь модифицированный asi-танк, то, например, модифицированный asi-бтр как отдельный мод полезет в те же адреса памяти, и перезапишет то, что уже использует танк, поэтому их механики надо объединять в один asi. Допустим, какой-то мод использует еще вращающийся руль, может опять возникнуть наложение адресов скорее всего в функции CAutomobile::PreRender(). Может быть конфликт с тем же mvl, который лезет туда же. В итоге разные хуки будут "толкаться". Подобное будет работать только на чистом вайсе или в составе отлаженного глобального мода.
Если хочется чего-нибудь такого, можно скачать мод Где ты а? Кыштым. Туда я добавил четыре машины с пулеметными башнями. Танк там пока не заменяли, при необходимости, думаю, появится и он.