You are not logged in.
1 2 3 4 5 6 7 8 9 10 | 03C0: 0@ = actor $PLAYER_ACTOR car 05E7: 0@ = car 0@ struct 0@ += 0x3DC // boot_dummy 05E0: 0@ = read_memory 0@ size 4 virtual_protect 0 if 0@ > 0 then //.text:00645280 ; int __cdecl RwFrameRotate(int, int, float, int) 05E1: call 0x 645280 num_params 4 pop 4 2 1 1.0 0@ end |
Offline
Насколько я могу судить то по примеру, что делал DK тут явно ошибка, там же в примере передавалась переменная 1@v, а тут надо по другому значит с тем же смыслом.
1 | 0AA5: call {RwFrameRotate} 0x7F 1010 num_params 4 pop 4 _combine 2 _angle+= 1.0 _axis 1@ v _frame 0@ |
В куске выше это для SA, для Вайса надо сделать так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 05F7: 1@ = label @label offset 05DF: write_memory 1@ size 4 value 0.0 virtual_protect 0 1@ += 4 05DF: write_memory 1@ size 4 value 0.0 virtual_protect 0 1@ += 4 05DF: write_memory 1@ size 4 value 1.0 virtual_protect 0 1@ -= 8 05E1: call 0x 645280 num_params 4 pop 4 2 1.0 1@ 0@ :label hex 00 00 00 00 00 00 00 00 00 00 00 00 end |
Last edited by mfisto (26-10-2014 21:11)
I know everything and nothing...
Offline
Всё верно. Ну и использовать 05FD не обязательно.
1 2 3 4 5 6 | :label hex 00 00 00 00 00 00 00 00 00 00 80 3F end |
Last edited by DK22Pac (Yesterday 13:41)
Offline
mfisto, DK22Pac, спасибо за разъяснения.
Пример протестил - работает. Всё же остались непонятки по порядку передачи параметров. В описании:
1 2 | //.text:00645280 ; int __cdecl RwFrameRotate(int, int, float, int) 05E1: call 0x 645280 num_params 4 pop 4 2 1.0 1@ 0@ |
или передаётся в обратном порядке?
Ну и сразу ещё есть вопросы:
1) В некоторых функциях один из передаваемых параметров - componentID - это что?
2) doorNumber - это значения из диапазона 0-5 (0=капот, 1=багажник и т.д.) или я ошибаюсь?
3) Как всё же организовать поиск компонента по имени? Код, что выкладывал DK22Pac у меня не работает
Offline
Для 0AA5-0AA8 параметры всегда передаются в обратном порядке.
Offline