Mafia II-DE v.1.0.1 вращение колёс
-
Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
Попробуй все-таки так:newmem:
cmp [hot_key],01
jne short @F
mov [r14+000003BC],(float)1000
// mov [hot_key],00 // без этой строки
@@:
mulss xmm14,[r14+000003BC]
jmp return -
@garik66 Тогда как мне заставить машину больше не разгоняться. Если только в самой таблице вешать ещё одну кнопку на обнуление.
-
Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
Если только в самой таблице вешать ещё одну кнопку на обнуление.
как вариант.
Странно что счетчик не сработал - я предполагал, что инструкция пробегает поочередно все 4 колеса. -
@garik66 инструкция может работать параллельно в четырех потоках, как вариант.
@Partizan1078 тебе нужно комплексное условие. Проще всего это сделать на Lua в СЕ, но можно и на ассемблере. Суть в том, что тебе нужен не один флаг, а четыре - на каждое колесо, и хранить во флаге не только сам флаг, но и адрес колеса. По адресу сверяться, включен ли флаг, а по горячей клавише выставлять флаг для всех четырех адресов. Если непонятно, пиши, попробую подробнее объяснить
-
Забил и сделал проще просто повесил на обнуление ещё одну кнопку. Проще говоря одна боковая кнопка мыши включает а другая боковая кнопка выключает.
cmp [hot_key],01 jne @F mov [r14+000003BC],(float)300 @@: mulss xmm14,[r14+000003BC]
А вот такой скрипт со счётчиком.
[ENABLE] aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F) alloc(newmem,$1000,car_02) label(return) label(check) label(hot_key) registersymbol(hot_key) registersymbol(car_02) newmem: cmp [hot_key],01 jne @F mov [r14+000003BC],(float)100 add [check],01 cmp [check],03 jne newmem mov [hot_key],00 mov [check],00 @@: mulss xmm14,[r14+000003BC] jmp return hot_key: dd 00 check: dd 00 car_02: jmp newmem nop 4 return: [DISABLE] car_02: db F3 45 0F 59 B6 BC 03 00 00 unregistersymbol(*) dealloc(newmem)
И он не работает.
-
Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
И он не работает.
так счетчик не верен, я так и предполагал - у тебя запись в адрес происходит только на четвертый раз.
-
Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
И он не работает.
Попробуй так:
newmem: cmp [hot_key],01 jne @F mov [r14+000003BC],(float)100 add [check],01 cmp [check],03 jne @F mov [hot_key],00 mov [check],00 @@: mulss xmm14,[r14+000003BC] jmp return
К сожалению не знаю. как здесь юзать теги, прошу прощения.
Поправь скрипт, попробуй и отпишись пожалуйста - работает или нет. -
@garik66 Большое спасибо!
Чтот я тупанул и не обратил внимания на свою ошибку.
Сделал как вы посоветовали.
И всё заработало как надо.[ENABLE] aobscanmodule(car_02,Mafia II Definitive Edition.exe,F3 45 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? F3 44 ? ? ? ? ? ? ? 44 0F) alloc(newmem,$1000,car_02) label(return) label(check) label(hot_key) registersymbol(hot_key) registersymbol(car_02) newmem: cmp [hot_key],01 jne @F mov [r14+000003BC],(float)500 add [check],01 cmp [check],64 jne @F mov [hot_key],00 mov [check],00 @@: mulss xmm14,[r14+000003BC] jmp return hot_key: dd 00 check: dd 00 car_02: jmp newmem nop 4 return: [DISABLE] car_02: db F3 45 0F 59 B6 BC 03 00 00 unregistersymbol(*) dealloc(newmem)
Чтобы скрипт обернуть в тег есть кнопочка "код"
-
Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:
И всё заработало как надо.
Рад
-
Предполагаю что ошибка в отсутствии pushfq и popfq.
Инструкция cmp меняет флаги. По правильному нужно всегда сохранять/восстанавливать регистр EFLAGS.newmem: pushfq cmp [hot_key],01 jne short @F mov [r14+000003BC],(float)1000 mov [hot_key],00 @@: popfq mulss xmm14,[r14+000003BC] jmp return
-
Пользователь @Antonshka написал в Mafia II-DE v.1.0.1 вращение колёс:
Предполагаю что ошибка в отсутствии pushfq и popfq.
вопрос же решили с партизаном.
по твоему скрипту тоже только одно колесо сработает. один раз.