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

как при деактивации скрипта вернуть первоначальное значение переменной

Запланировано Прикреплена Закрыта Перенесена Взлом игр (вопросы и ответы)
4 Сообщения 3 Posters 153 Просмотры
Загружаем больше сообщений
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • M
    Mr.Xleb
    отредактировано 20 окт. 2023 г., 14:31

    Здравствуйте, подскажите пожалуйста как при деактивации скрипта вернуть "Максимальное кол-во здоровья" к изначальному.

    [ENABLE]
    
    aobscanmodule(INJECT,CryGame.dll,39 B3 A0 00 00 00 0F 8E A9) 
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      mov [ebx+E0],#1000 //Максимальное кол-во здоровья(изначально #255)
      push [ebx+E0]
      pop [ebx+A0] //Текуще кол-во здоровья
    code:
      cmp [ebx+000000A0],esi
      jmp return
    
    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    
    INJECT:
      db 39 B3 A0 00 00 00
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    1 ответ Последний ответ Ответить Цитировать 0
    • P
      Partizan1078
      отредактировано 21 окт. 2023 г., 10:57

      Можно попробовать вынести макс. значение жизней за пределы скрипта. И сначала поменять значение и только потом уже отключать скрипт.

      1 ответ Последний ответ Ответить Цитировать 0
      • H
        hex
        отредактировано 22 окт. 2023 г., 13:15

        Можно сделать так: один скрипт - базовый, который изменяет максимальное количество здоровья, а второй скрипт устанавливает флаг включен/отключен.
        Вот как получится:

        [ENABLE]
        
        aobscanmodule(INJECT,CryGame.dll,39 B3 A0 00 00 00 0F 8E A9) 
        alloc(newmem,$1000)
        alloc(bEnableMaxHealth,4)
        
        label(code)
        label(label_a)
        label(label_b)
        label(return)
        
        newmem:
          cmp byte ptr [bEnableMaxHealth],01
          jne label_a
          mov [ebx+E0],(int)1000
          jmp label_b
          label_a:
          mov [ebx+E0],(int)255
          label_b:
          push [ebx+E0]
          pop [ebx+A0]
        code:
          cmp [ebx+000000A0],esi
          jmp return
        
        INJECT:
          jmp newmem
          nop
        return:
        registersymbol(INJECT)
        registersymbol(bEnableMaxHealth)
        
        [DISABLE]
        
        INJECT:
          db 39 B3 A0 00 00 00
        
        unregistersymbol(*)
        dealloc(*)
        

        А второй скрипт будет такой:

        [ENABLE]
        
        bEnableMaxHealth:
          db 01
        
        [DISABLE]
        
        bEnableMaxHealth:
          db 00
        

        Вот его ты и будешь использовать для изменения максимального количества здоровья и возвращения исходного значения.

        1 ответ Последний ответ Ответить Цитировать 2
        • M
          Mr.Xleb
          отредактировано 22 окт. 2023 г., 22:08

          Большое спасибо, всё получилось)

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