GTA Builder Форум

GTA Vice City => Скриптинг => Тема начата: Prographer от Март 24, 2015, 05:47:03 pm

Название: Поворот башни с помощью мыши
Отправлено: Prographer от Март 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 (http://www.gtagarage.com/mods/show.php?id=21905)
Название: Re: Поворот башни с помощью мыши
Отправлено: mfisto от Март 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
Название: Re: Поворот башни с помощью мыши
Отправлено: Prographer от Март 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
Да, так, пожалуй, будет лучше, но это сути не меняет. Башня всё равно ведёт себя не совсем адекватно