#1 Re: Работа с памятью, EXE » [SA] Примеры работы с игровой памятью » 22-09-2008 11:06

Seemann wrote:

[center][large]Управление фарами[/large][/center]

Вчера мною и listener'ом был разобран весьма интересный класс в движке игры, который в частности позволяет получить полный контроль над фарами машины. Сразу оговорюсь, поворотниками управлять нельзя smile

Через этот класс можно чинить фары машины, если они разбиты.

Передние фары (левая и правая) чинятся по отдельности, задние - только обе сразу.

Итак, как это делается.

1. Сначала получаем адрес машины в памяти

03C0: 0@ = actor $PLAYER_ACTOR car
0A97: 1@ = car 0@ struct

2. Теперь получаем адрес нужного класса, путем прибавления смещения к начальному адресу машины

1@ += 0x5A0

3. Теперь можно чинить фары. Делается это строкой

0AA6: call_method 0x006C2100 struct 1@ num_params 2 pop 0 1 0

Последние 2 цифры - параметры. Предпоследняя цифра (1) означает состояние фары (1 - разбита, 0 - не разбита smile). Последняя цифра - номер фары (0 - передняя левая, 1 - передняя правая, 3 - задние фары). Другие цифры не работают.
Число 1@ - это адрес класса, который мы получили выше.

Варьируя номера фар и их состояние можно получить эффект стробоскопов (выключаем левую/правую переднюю фару по очереди) (проверять нужно ночью, когда фары включены):

 while true
    wait 250
    if
        Player.Defined($PLAYER_CHAR)
    then
        if 
            Actor.Driving($PLAYER_ACTOR)           
        then
            03C0: 0@ = actor $PLAYER_ACTOR car
            0A97: 1@ = car 0@ struct
            1@ += 0x5A0
            0AA6: call_method 0x006C2100 struct 1@ num_params 2 pop 0 1 0 // выключили переднюю левую
            0AA6: call_method 0x006C2100 struct 1@ num_params 2 pop 0 0 1 // включили переднюю правую         
            wait 300
            0AA6: call_method 0x006C2100 struct 1@ num_params 2 pop 0 0 0 // включили переднюю левую
            0AA6: call_method 0x006C2100 struct 1@ num_params 2 pop 0 1 1 // выключили переднюю правую         
            wait 300           
        end
    end
 end

а можно чтобы  эффект стробоскопов  включался/отключался например при нажатии кнопки U
а то у меня стоит скрипт включения/отключения фар
Охото чтобы можно было ездить и просто с горяшими фарами и со страбаскопами

Board footer

Powered by FluxBB