Перейти к содержанию

Goblin

Стажёры
  • Постов

    16
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Goblin

  1. Доброго времени суток. В игре есть множество предметов, от малозаметных (стрелы), и до таких, которые видно через всю карту (осколок звезды). Вот с этого предмета (осколок звезды) идёт луч в небо, по которому легко отследить предмет. Собственно вопрос: Как заменить модельку стрел, которые я собираюсь искать, на модельку этого осколка

    P.s. Игра "The Legend of Zelda: Breath of the Wild", но можно пример и на любой другой игре

  2. Доброго времени суток. В игре S.T.A.L.K.E.R. Clear sky есть фишка, когда смотрим через бинокль на врага, он обводиться красной рамкой. Нужно сделать так, что бы когда мы убираем бинокль, рамка оставалась. Как осуществить?

    P.s. Знаю что создавал подобную тему с подсветкой предметов (смотрим на него - светиться\не смотрим - не светиться), но конкретно в этой игре по той же методике но уже с врагами, у меня ничего не получилось

  3. Скрытый текст

    { Game   : Terraria.exe
      Version: 
      Date   : 2016-11-07
      Author : ?????????????

      This script does blah blah blah
    }

    [ENABLE]

    aobscan(INJECT,80 B8 1D 06 00 00 00) // should be unique
    alloc(newmem,$1000)

    label(code)
    label(return)

    newmem:
    cmp byte ptr [eax+0000061D],01
      jmp return
    code:
      cmp byte ptr [eax+0000061D],00
      jmp return

    INJECT:
      jmp newmem
      nop
      nop
    return:
    registersymbol(INJECT)

    [DISABLE]

    INJECT:
      db 80 B8 1D 06 00 00 00

    unregistersymbol(INJECT)
    dealloc(newmem)

    {
    // ORIGINAL CODE - INJECTION POINT: 3BA83959

    3BA8392A: 8B 15 DC 42 DD 04     -  mov edx,[04DD42DC]
    3BA83930: 3B 42 04              -  cmp eax,[edx+04]
    3BA83933: 0F 83 53 22 02 00     -  jae 3BAA5B8C
    3BA83939: 8B 44 82 08           -  mov eax,[edx+eax*4+08]
    3BA8393D: C6 40 24 01           -  mov byte ptr [eax+24],01
    3BA83941: A1 44 43 DD 04        -  mov eax,[04DD4344]
    3BA83946: 8B 15 F8 77 21 00     -  mov edx,[002177F8]
    3BA8394C: 3B 50 04              -  cmp edx,[eax+04]
    3BA8394F: 0F 83 37 22 02 00     -  jae 3BAA5B8C
    3BA83955: 8B 44 90 08           -  mov eax,[eax+edx*4+08]
    // ---------- INJECTING HERE ----------
    3BA83959: 80 B8 1D 06 00 00 00  -  cmp byte ptr [eax+0000061D],00
    // ---------- DONE INJECTING  ----------
    3BA83960: 0F 84 C5 02 00 00     -  je 3BA83C2B
    3BA83966: 33 D2                 -  xor edx,edx
    3BA83968: 89 95 5C FE FF FF     -  mov [ebp-000001A4],edx
    3BA8396E: 81 7D 90 B9 00 00 00  -  cmp [ebp-70],000000B9
    3BA83975: 75 28                 -  jne 3BA8399F
    3BA83977: 83 7D 88 12           -  cmp dword ptr [ebp-78],12
    3BA8397B: 75 22                 -  jne 3BA8399F
    3BA8397D: 81 7D 8C 40 02 00 00  -  cmp [ebp-74],00000240
    3BA83984: 7C 19                 -  jnge 3BA8399F
    3BA83986: 81 7D 8C 72 03 00 00  -  cmp [ebp-74],00000372
    }

    Второй:
     

    Скрытый текст

    { Game   : Terraria.exe
      Version: 
      Date   : 2016-11-11
      Author : ?????????????

      This script does blah blah blah
    }

    [ENABLE]

    aobscan(INJECT,29 82 34 03 00 00 83 7D) // should be unique
    alloc(newmem,$1000)

    label(code)
    label(return)

    newmem:
    sub [edx+00000334],0
      jmp return
    code:
      sub [edx+00000334],eax
      jmp return

    INJECT:
      jmp newmem
      nop
    return:
    registersymbol(INJECT)

    [DISABLE]

    INJECT:
      db 29 82 34 03 00 00

    unregistersymbol(INJECT)
    dealloc(newmem)

    {
    // ORIGINAL CODE - INJECTION POINT: 15696C3F

    15696C16: 89 85 78 FE FF FF              -  mov [ebp-00000188],eax
    15696C1C: 0F B6 45 0C                    -  movzx eax,byte ptr [ebp+0C]
    15696C20: 50                             -  push eax
    15696C21: 6A 00                          -  push 00
    15696C23: 8B 95 78 FE FF FF              -  mov edx,[ebp-00000188]
    15696C29: 8B CE                          -  mov ecx,esi
    15696C2B: E8 78 B1 67 F6                 -  call 0BD11DA8
    15696C30: F2 0F 10 45 E4                 -  movsd xmm0,[ebp-1C]
    15696C35: F2 0F 2C C0                    -  cvttsd2si eax,xmm0
    15696C39: 8B 95 4C FE FF FF              -  mov edx,[ebp-000001B4]
    // ---------- INJECTING HERE ----------
    15696C3F: 29 82 34 03 00 00              -  sub [edx+00000334],eax
    // ---------- DONE INJECTING  ----------
    15696C45: 83 7D 08 FF                    -  cmp dword ptr [ebp+08],-01
    15696C49: 0F 85 95 00 00 00              -  jne 15696CE4
    15696C4F: 8B 85 4C FE FF FF              -  mov eax,[ebp-000001B4]
    15696C55: C6 80 2F 05 00 00 01           -  mov byte ptr [eax+0000052F],01
    15696C5C: DD 45 E4                       -  fld qword ptr [ebp-1C]
    15696C5F: D9 E8                          -  fld1 
    15696C61: DF F1                          -  fcomip st(0),st(1)
    15696C63: DD D8                          -  fstp st(0)
    15696C65: 7A 30                          -  jp 15696C97
    15696C67: 75 2E                          -  jne 15696C97
    }

    Игра: Terraria версии 1.3.3.3.
    Первый скрипт: Подсвечивает руду
    Второй:Нам наносят 0 урона

  4. Суть: Создаю 2 или более скрипта. При активации обоих возникает проблема, выключаю один из них а второй уже не могу, причем если обратно включить (деактивированный) скрипт и попытаться выключить другой, игру крашит.
    В чем может быть проблема?
    P.s. Во всех играх такая муть

  5. 2 часа назад, Garik66 сказал:

    Думаю сделать такое не так уж и сложно, например для Fallout1 и  2. человек, который писал мод Sfall реализовал это и повесил на кнопку Shift, при нажатии на неё все предметы, контейнеры лежащие на земле подсвечиваются.

    Ты напиши для какой игры хочешь это сделать и, если игра будет для меня интересная, могу помочь.

    Если для меня не интересная, то кто-нибудь другой, заинтересуется и поможет.

     

    А так начало поиска стандартное - неизвестное, 4 байта, изменилось/не изменилось. Потом скорее всего окажется, что это всего-навсего флаг (со значениями 1 - подсвечивается, 0 - не подсвечивается), но может быть и по другому реализовано. 

    Затем выходить на координаты предметов (фильтровать, только предметы в инструкции которая считывает координаты объектов карты).

    Ну и 3 привязывать скрипт подсветки, к предметам на земле.

      

    Ну давайте попробуем с тем же Fallout, у самого не получилось

  6. Когда наводим курсором/смотрим на предмет лежащий на полу, он слегка подсвечивается.
    Идея такова: сделать так, что бы вне зависимости от того смотрим мы на него или нет, он все равно подсвечивался + подсвечивались остальные предметы лежащие на полу.
    Как реализовать?

  7. 1 минуту назад, Garik66 сказал:

    За это и от меня спасибо!!!

    Я этого никогда не делал, но предположу, что в этом случае дистанция до нужного предмета будет расчётным значением, т.е. находиться в регистрах (стеке может быть) и просто поиском значения ты на него не выйдешь (нужно исследовать код). На код в данном случае выходить скорее всего придётся из координат героя, т.е. начинать нужно с поиска координат.

    Еще раз большое спасибо!

  8. Garik66, огромное спасибо за видеоурок! Очень полезный.
    А не подскажите по какому принципу искать дистанцию на которой я могу взаимодействовать с предметами? (Обыскать тело, нажать рычаг, открыть дверь, подобрать предмет)

    • Плюс 1
  9. 28 минуты назад, partoftheworlD сказал:

    ID оружия найти и выйти на структуру ножа или искать HEX неизвестное изменилось/не изменилось при смене оружия сразу найти указатель на адрес структуры оружия?.

     

    Черт, не прочитал первый пост, вообще дистанция поражения может находится вообще не в структуре оружия, а например в где-нибудь в характеристиках которое будет статичным значением которое подгружается при загрузке игры. Если есть рукопашная атака, нож, топор меняй их и ищи float изменилось/не изменилось, есть вероятность что у них разный радиус действия.

    Кроме ножа нету другого оружия ближнего боя

  10. 8 часов назад, Garik66 сказал:

    Предложу такой вариант:

    1. Выход на структуру инвентаря (вещмешок, сундук или что там у тебя в игре) - через стакающиеся (которые складываются) предметы. (Пример) Можно использовать тот же автомат (через кол-во патронов), но структура инвентаря будет выше структуры самого автомата.

    2. Находим поинтеры предметов в инвентаре (используй тот же автомат).

    3. По аналогии с автоматом, теперь уже находим нож и выходим на структуру самого ножа. 

    4. Исследуем структуру ножа и выходим на дистанцию поражения.

    Ладно, сейчас будем пробовать, спасибо за совет

  11. Пробовал искать через структуру персонажа, пробовал найти характеристики автомата и уже отталкиваясь от них искать, может где то не далеко лежат и характеристики ножа, в итоге безуспешно просадил на поиск весь день

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.