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

    RimWorld - Быстрая постройка

    Запланировано Прикреплена Закрыта Перенесена Общий
    5 Сообщения 2 Posters 302 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • DieVisD
      DieVis
      отредактировано

      Привет всем.
      Может кто подсказать или (предложить свои варианты), вот есть скрипт, комментарии....
      Суть в том чтобы строить быстро, к примеру на быстрый разбор я скрипт сделал, всё норм.
      А вот с постройкой понять не могу что делать...
      При постройке чего-либо значение увеличивается по +C0. Макс. значение я не нашёл, а если держать скрипт постоянно вкл., то через какое-то время игра начинает тупить.

      { Game   : RimWorldWin64.exe
        Version: 1.4.3 rev
        Date   : 2022-10-18
        Author : DieVision }
      usemono()
      [ENABLE]
      //F1 F3 0F 10 86 C0 00 00 00
      alloc(newmem,2048,RimWorld.Frame:get_PercentComplete+f)
      label(code)
      label(return)
      
      newmem:
      mov [rsi+000000C0],(float)999999
      
      code:
        movss xmm0,[rsi+000000C0] //workDone
        jmp return
      
      RimWorld.Frame:get_PercentComplete+f:
        jmp newmem
        nop 3
      
      return:
      [DISABLE]
      dealloc(newmem)
      
      RimWorld.Frame:get_PercentComplete+f:
      movss xmm0,[rsi+000000C0]
      //  db F3 0F 10 86 C0 00 00 00
      
      { // ORIGINAL CODE - INJECTION POINT: RimWorld.Frame:get_PercentComplete+f
      1A9A6A54723: 05 04 03 01 50                 - add eax,50010304
      1A9A6A54728: 00 00                          - add [rax],al
      1A9A6A5472A: 00 00                          - add [rax],al
      1A9A6A5472C: 00 00                          - add [rax],al
      1A9A6A5472E: 00 00                          - add [rax],al
      RimWorld.Frame:get_PercentComplete: 55                             - push rbp
      RimWorld.Frame:get_PercentComplete+1: 48 8B EC                       - mov rbp,rsp
      RimWorld.Frame:get_PercentComplete+4: 48 83 EC 30                    - sub rsp,30
      RimWorld.Frame:get_PercentComplete+8: 48 89 75 F8                    - mov [rbp-08],rsi
      RimWorld.Frame:get_PercentComplete+c: 48 8B F1                       - mov rsi,rcx
      // ---------- INJECTING HERE ----------
      RimWorld.Frame:get_PercentComplete+f: F3 0F 10 86 C0 00 00 00        - movss xmm0,[rsi+000000C0]
      // ---------- DONE INJECTING  ----------
      RimWorld.Frame:get_PercentComplete+17: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
      RimWorld.Frame:get_PercentComplete+1b: F2 0F 11 45 F0                 - movsd [rbp-10],xmm0
      RimWorld.Frame:get_PercentComplete+20: 48 8B CE                       - mov rcx,rsi
      RimWorld.Frame:get_PercentComplete+23: 66 66 90                       - nop 3
      RimWorld.Frame:get_PercentComplete+26: 49 BB 80 C9 8D 7A A9 01 00 00  - mov r11,RimWorld.Frame:get_WorkToBuild
      RimWorld.Frame:get_PercentComplete+30: 41 FF D3                       - call r11
      RimWorld.Frame:get_PercentComplete+33: F3 0F 5A C8                    - cvtss2sd xmm1,xmm0
      RimWorld.Frame:get_PercentComplete+37: F2 0F 10 45 F0                 - movsd xmm0,[rbp-10]
      RimWorld.Frame:get_PercentComplete+3c: F2 0F 5E C1                    - divsd xmm0,xmm1
      RimWorld.Frame:get_PercentComplete+40: F2 0F 5A C0                    - cvtsd2ss xmm0,xmm0 }
      

      P.S. Кстати куда "Спойлеры делись? Что-то я их не вижу.
      Простите если вдруг кто-то ничего не понял, я сам уже мало чего понимаю =[

      LIRWL 1 ответ Последний ответ Ответить Цитировать 0
      • LIRWL
        LIRW @DieVis
        отредактировано

        Пользователь @DieVis написал в RimWorld - Быстрая постройка:

        Макс. значение я не нашёл

        Оно тут...в rbp-54 не регион не чего не указывал. Полный скан.
        А на твоей функции, не один адрес... Хотя я построил, только одну постройку.

        [ENABLE]
          aobscan(_building_,F3 41 0F 11 AF C0 00 00 00)
          alloc(_building_mem,$1000,_building_)
          label(_building_back_)
         _building_mem:
          movss xmm5,[rbp-54]
          movss [r15+000000C0],xmm5
          jmp _building_back_
         _building_:
          jmp _building_mem
          db 90 90 90 90
         _building_back_:
        registersymbol(_building_)
        [DISABLE]
         _building_:
          db F3 41 0F 11 AF C0 00 00 00
        unregistersymbol(_building_)
          dealloc(_building_mem)
        
        DieVisD 2 ответов Последний ответ Ответить Цитировать 2
        • DieVisD
          DieVis @LIRW
          отредактировано

          @LIRW Не представляю как вы это нашли, в голове не укладывается.
          Наверное это не моё, пора менять образ жизни.
          Благодарю за код! Когда-нибудь отплачу.

          LIRWL 1 ответ Последний ответ Ответить Цитировать 0
          • LIRWL
            LIRW @DieVis
            отредактировано

            Пользователь @DieVis написал в RimWorld - Быстрая постройка:

            Не представляю как вы это нашли, в голове не укладывается.

            Вот кусок кода... Там всё показано - более точно!
            005.jpg

            1 ответ Последний ответ Ответить Цитировать 1
            • DieVisD
              DieVis @LIRW
              отредактировано

              Пользователь @LIRW написал в RimWorld - Быстрая постройка:

              aobscan(building,F3 41 0F 11 AF C0 00 00 00 F3)
              Иначе активируется не по нужному адресу.

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