GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Mafia II-DE v.1.0.1 вращение колёс

    Запланировано Прикреплена Закрыта Перенесена Общий
    15 Сообщения 4 Posters 350 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • G
      garik66 @Partizan1078
      отредактировано

      @Partizan1078 либо можно сделать счетчик на 4 записи, чтобы все 4 колеса получили 1000.

      Partizan1078P 1 ответ Последний ответ Ответить Цитировать 0
      • Partizan1078P
        Partizan1078 @garik66
        отредактировано

        @garik66 Я тоже сразу подумал что за один проход не может эта инсрукция записать все 4 адреса. Прикручивал счётчик. Итог тот-же. Счётчик доводил до 100 циклов. Писалось только в первый адрес.

        1 ответ Последний ответ Ответить Цитировать 0
        • G
          garik66 @Partizan1078
          отредактировано

          Пользователь @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

          Partizan1078P 1 ответ Последний ответ Ответить Цитировать 0
          • Partizan1078P
            Partizan1078 @garik66
            отредактировано

            @garik66 Тогда как мне заставить машину больше не разгоняться. Если только в самой таблице вешать ещё одну кнопку на обнуление.

            G 1 ответ Последний ответ Ответить Цитировать 0
            • G
              garik66 @Partizan1078
              отредактировано

              Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

              Если только в самой таблице вешать ещё одну кнопку на обнуление.

              как вариант.
              Странно что счетчик не сработал - я предполагал, что инструкция пробегает поочередно все 4 колеса.

              StoneWeaverS 1 ответ Последний ответ Ответить Цитировать 0
              • StoneWeaverS
                StoneWeaver administrators @garik66
                отредактировано

                @garik66 инструкция может работать параллельно в четырех потоках, как вариант.

                @Partizan1078 тебе нужно комплексное условие. Проще всего это сделать на Lua в СЕ, но можно и на ассемблере. Суть в том, что тебе нужен не один флаг, а четыре - на каждое колесо, и хранить во флаге не только сам флаг, но и адрес колеса. По адресу сверяться, включен ли флаг, а по горячей клавише выставлять флаг для всех четырех адресов. Если непонятно, пиши, попробую подробнее объяснить

                1 ответ Последний ответ Ответить Цитировать 0
                • Partizan1078P
                  Partizan1078
                  отредактировано

                  Забил и сделал проще просто повесил на обнуление ещё одну кнопку. Проще говоря одна боковая кнопка мыши включает а другая боковая кнопка выключает.

                    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)
                  

                  И он не работает.

                  G 2 ответов Последний ответ Ответить Цитировать 0
                  • G
                    garik66 @Partizan1078
                    отредактировано

                    Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                    И он не работает.

                    так счетчик не верен, я так и предполагал - у тебя запись в адрес происходит только на четвертый раз.

                    1 ответ Последний ответ Ответить Цитировать 0
                    • G
                      garik66 @Partizan1078
                      отредактировано garik66

                      Пользователь @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
                      

                      К сожалению не знаю. как здесь юзать теги, прошу прощения.
                      Поправь скрипт, попробуй и отпишись пожалуйста - работает или нет.

                      Partizan1078P 1 ответ Последний ответ Ответить Цитировать 1
                      • Partizan1078P
                        Partizan1078 @garik66
                        отредактировано Partizan1078

                        @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)
                        

                        https://youtu.be/YkAjpX1aaBI

                        Чтобы скрипт обернуть в тег есть кнопочка "код"

                        G 1 ответ Последний ответ Ответить Цитировать 2
                        • G
                          garik66 @Partizan1078
                          отредактировано

                          Пользователь @Partizan1078 написал в Mafia II-DE v.1.0.1 вращение колёс:

                          И всё заработало как надо.

                          Рад

                          1 ответ Последний ответ Ответить Цитировать 0
                          • A
                            Antonshka
                            отредактировано

                            Предполагаю что ошибка в отсутствии 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
                            
                            G 1 ответ Последний ответ Ответить Цитировать 0
                            • G
                              garik66 @Antonshka
                              отредактировано

                              Пользователь @Antonshka написал в Mafia II-DE v.1.0.1 вращение колёс:

                              Предполагаю что ошибка в отсутствии pushfq и popfq.

                              вопрос же решили с партизаном.
                              по твоему скрипту тоже только одно колесо сработает. один раз.

                              1 ответ Последний ответ Ответить Цитировать 0
                              • Первое сообщение
                                Последнее сообщение