Автор Тема: Поворот башни с помощью мыши  (Прочитано 2793 раз)

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Поворот башни с помощью мыши
« : Март 24, 2015, 05:47:03 pm »
Всем привет. Написал я тут, значит, скрипт на поворот камеры танка с помощью мыши, но угол не всегда совпадает с углом камеры. Не подскажите, от какого адреса лучше отталкиваться, чтобы скрипт работал должным образом?
{$CLEO}
0000:
:start
wait 0
repeat
wait 0
until 0443: player $PLAYER_CHAR in_a_car

03C0: 0@ = actor $PLAYER_ACTOR car
05E7: 0@ = car 0@ struct
0@ += 0x5B0
05E0: 1@ = read_memory 0@ size 4 virtual_protect 0 //rhino cannon angle
repeat
wait 0
until 00DE: player $PLAYER_CHAR driving_vehicle_type #RHINO

while 00DE: player $PLAYER_CHAR driving_vehicle_type #RHINO
wait 0                                   
05E0: 2@ = read_memory 0x7E48CC size 4 virtual_protect 0 //camera angle on foot
05DF: write_memory 0@ size 4 value 2@ virtual_protect 0
end
jump @start

P.S. Скрипт работает как своеобразный fix для мода Vehicle Camera Movement, так что для начала следует установить его
http://www.gtagarage.com/mods/show.php?id=21905
« Последнее редактирование: Март 24, 2015, 05:49:22 pm от Prographer »

Оффлайн mfisto

  • Скриптер
  • Главный Модератор
  • Новичок
  • *****
  • Сообщений: 176
  • Репутация: +19/-0
  • Не пью, не курю, за компьютером сижу...
    • mfistof
    • Просмотр профиля
    • Empire of CJ
Re: Поворот башни с помощью мыши
« Ответ #1 : Март 24, 2015, 06:03:48 pm »
Я бы написал этот скрипт, несколько иначе:
{$CLEO}
0000:
while true
    wait 0
    if
        not Player.Defined(0)
    then
        continue
    end
    if
        not Actor.Driving($PLAYER_ACTOR)
    then
        continue
    end
    if
        80DE: not player $PLAYER_CHAR driving_vehicle_type #RHINO
    then
        continue
    end
    03C0: 0@ = actor $PLAYER_ACTOR car
    05E7: 0@ = car 0@ struct
    0@ += 0x5B0                                   
    05E0: 2@ = read_memory 0x7E48CC size 4 virtual_protect 0 //camera angle on foot
    05DF: write_memory 0@ size 4 value 2@ virtual_protect 0
end
I know everything and nothing...

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Re: Поворот башни с помощью мыши
« Ответ #2 : Март 28, 2015, 11:44:50 am »
Я бы написал этот скрипт, несколько иначе:
{$CLEO}
0000:
while true
    wait 0
    if
        not Player.Defined(0)
    then
        continue
    end
    if
        not Actor.Driving($PLAYER_ACTOR)
    then
        continue
    end
    if
        80DE: not player $PLAYER_CHAR driving_vehicle_type #RHINO
    then
        continue
    end
    03C0: 0@ = actor $PLAYER_ACTOR car
    05E7: 0@ = car 0@ struct
    0@ += 0x5B0                                   
    05E0: 2@ = read_memory 0x7E48CC size 4 virtual_protect 0 //camera angle on foot
    05DF: write_memory 0@ size 4 value 2@ virtual_protect 0
end
Да, так, пожалуй, будет лучше, но это сути не меняет. Башня всё равно ведёт себя не совсем адекватно