[Cheat Engine] Как сделать множитель урона?
-
Здравствуйте! Скачал готовую таблицу на игру и потихоньку добавлял в неё некоторые новые функции которые мне были нужны и вот руки дошли до урона, в таблице уже был скрипт который меня цифру урона, но я хотел сделать именно множитель, что, по итогу, у меня не вышло. Поэтому прошу помощи в этом.
Вот скрипт на изменение урона из готовой таблицы:
[ENABLE] aobscanmodule(GunDamage,$process,F3 0F 10 96 18 01 00 00 48) alloc(newmem,$100,GunDamage) label(code) label(return) newmem: mov [rsi+00000118],(float)25 code: movss xmm2,[rsi+00000118] jmp return GunDamage: jmp newmem nop 3 return: registersymbol(GunDamage) [DISABLE] GunDamage: db F3 0F 10 96 18 01 00 00 unregistersymbol(GunDamage) dealloc(newmem)
Я только начинаю осваивать CE, поэтому буду рад коду с подробным описанием.
Заранее благодарю за любую помощь!На всякий случай укажу тут:
Игра: Deep Rock Galactic
Автор таблицы: Ray2160 -
@Heretic
https://fearlessrevolution.com/viewtopic.php?f=23&t=14414
Как я нашёл урон..... Использовал таблицу-дампер-парсер структур...
Плюс приблизительное понимание где что находится в структурах движка UE4 (если разраб конкретной игры ничего не поменял) -
@Heretic привет! Ты можешь считывать цифру урона, ты можешь считать цифру урона в xmm2, как у тебя в секции оригинального кода, а потом домножить эту цифру прямо в регистре на нужный множитель. Что-то вроде того (проверь на правильность, писал "на коленке"):
label(code) label(return) newmem: movss xmm2,[rsi+00000118] mulss xmm2,[multiplier] jmp return multiplier: dd (float)5.0 GunDamage: jmp newmem nop 3 return: registersymbol(GunDamage) [DISABLE] GunDamage: db F3 0F 10 96 18 01 00 00 unregistersymbol(GunDamage) dealloc(newmem)
-
@StoneWeaver
Спасибо за помощь!
Но кажется оно немного кривовато работает, изначально сработало (правда при установке значения 2.0 он сносил гораздо больше, чем в 2 раза), но потом урон вернулся к прежнему значению и перестал меняться. Есть ли возможность как-то умножить значение [rsi+00000118], а не xmm2?Я просто скопировал и вставил часть вашего кода, выглядел скрипт при тесте вот так:
[ENABLE] aobscanmodule(GunDamage,$process,F3 0F 10 96 18 01 00 00 48) alloc(newmem,$100,GunDamage) label(return) newmem: movss xmm2,[rsi+00000118] mulss xmm2,[multiplier] jmp return multiplier: dd (float)2.0 GunDamage: jmp newmem nop 3 return: registersymbol(GunDamage) [DISABLE] GunDamage: db F3 0F 10 96 18 01 00 00 unregistersymbol(GunDamage) dealloc(newmem)
-
@Heretic попробуй дописать строку в скрипт
newmem:
movss xmm2,[rsi+00000118]
mulss xmm2,[multiplier]
movss [rsi+00000118],xmm2 // вот эту
jmp return -
Это сообщение удалено! -
При умножении урона нужна инструкция которая срабатывает 1 раз за 1 выстрел. Но т.к. игра сделана на ue4 то я предполагаю можно ручками найти множитель. Который предусмотрен самим движком. Он 100% есть.
А вообще с утра ещё поковырялся.
И нашёл урон разного оружия.
FSD-Win64-Shipping.7z
v.1.39.102546 -
@garik66
Здравствуйте!
Попробовал, не помогло и кажется, проблема, что возникла в прошлый раз (что урон вернулся в норму и скриптом не изменялся) теперь на постоянной основе, но при этом скрипт на изменение цифры урона работает -
@Partizan1078
Здравствуйте!
Благодарю за подсказку, попробую поискать какой-нибудь множитель (надеюсь моих навыков хватит).
Не могли бы вы рассказать, если не сложно, как вы искали урон оружия? -
@Heretic
https://fearlessrevolution.com/viewtopic.php?f=23&t=14414
Как я нашёл урон..... Использовал таблицу-дампер-парсер структур...
Плюс приблизительное понимание где что находится в структурах движка UE4 (если разраб конкретной игры ничего не поменял) -
@Partizan1078
Понял, благодарю!
Постараюсь разобраться, может найду ещё что-нибудь интересное для добавления в таблицу) -