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

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

    Запланировано Прикреплена Закрыта Перенесена Общий
    15 Сообщения 4 Posters 352 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • 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
                            • Первое сообщение
                              Последнее сообщение