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

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

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

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

      cmp [hot_key],01
      jne short @F
      mov [r14+000003BC],(float)1000
      mov [hot_key],00 // просто не обнуляй,

      1 ответ Последний ответ Ответить Цитировать 0
      • 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
                                • Первое сообщение
                                  Последнее сообщение