Re: Grim Dawn + All DLC's
Posted: Wed Sep 16, 2020 1:10 am
haha thanks for figuring that out about npc buffs staying too, i probably wouldnt have correlated the two, i had a shard boss on sr with the shield on it that i couldn't deal damage to
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
Still looking for some way to get it to only affect the player's buffs. However, I updated the attached option table and the code in my previous post with a version that only freezes buffs if they have 15 seconds or more remaining on them.
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.7.2-v1.1.9.1 (x64)
//Original code by "fantomas", altered slightly by "StinVec"
//NOTE: "Eldritch Horrors" faction
// If you encounter "Eldritch Horrors" for the first time in The Forgotten Gods map then they will
// most likely be properly set to Nemesis when they are added to your faction list.
//
// However, if you encounter them prior to going into the FG expansion map and instead encounter them first
// at the "Forsaken Eldritch Totem" in the end dungeon of the secret "The Hidden Path" quest line, they MAY
// get mistakenly set to Revered when they are added to your faction list and become unable to be attacked.
//
// If this happens and you cannot attack the spawned totem monsters, to force them to be Nemesis:
// - Pause the game while you are near the Eldritch Horror enemies and disable the faction option
// - Edit this code and add // at the far left of the "jg code" line below (line 35) and hit OK
// - Re-enable the option, return in-game, unpause and hit 'J' to see your faction reputations
// If they are now set properly to Nemesis status:
// - Hit pause again and disable the faction option
// - Remove the added // marks and re-enable the option
// - Continue playing as normal
[ENABLE]
aobscanmodule(isFriend,Game.dll,F3 0F 10 44 82 08 0F 2E C6 75 * 8B D1)
alloc(newmem,$100,isFriend)
alloc(factionIndex,8)
registersymbol(factionIndex)
label(code)
label(return)
newmem:
movss xmm0,[rdx+rax*4+08]
movss [factionIndex],xmm0
cmp [factionIndex],0
jg code
mov [rdx+rax*4+08],(float)-20000
movss xmm0,[rdx+rax*4+08]
jmp return
code:
movss xmm0,[rdx+rax*4+08]
jmp return
isFriend:
jmp newmem
nop
return:
registersymbol(isFriend)
[DISABLE]
isFriend:
db F3 0F 10 44 82 08
unregistersymbol(isFriend)
unregistersymbol(factionIndex)
dealloc(factionIndex)
dealloc(newmem)
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.7.2-v1.1.9.1 (x64)
//Original code by "fantomas", altered slightly by "StinVec"
//NOTE: "Eldritch Horrors" faction
// If you encounter "Eldritch Horrors" for the first time in The Forgotten Gods map then they will
// most likely be properly set to Nemesis when they are added to your faction list.
//
// However, if you encounter them prior to going into the FG expansion map and instead encounter them first
// at the "Forsaken Eldritch Totem" in the end dungeon of the secret "The Hidden Path" quest line, they MAY
// get mistakenly set to Revered when they are added to your faction list and become unable to be attacked.
//
// If this happens and you cannot attack the spawned totem monsters, to force them to be enemies/Nemesis:
// - Pause the game while you are near the Eldritch Horror enemies and disable the faction option
// - Edit this code and change "25000" on line 36 below to "-20000" and hit OK
// - Re-enable the option, return in-game, unpause and hit 'J' to see your faction reputations
// If they are now set properly to Nemesis status:
// - Hit pause again and disable the faction option
// - Change "-20000" back to "25000" and re-enable the option
// - Continue playing as normal
[ENABLE]
aobscanmodule(isFriend,Game.dll,F3 0F 10 44 82 08 0F 2E C6 75 * 8B D1)
alloc(newmem,$100,isFriend)
alloc(factionIndex,8)
registersymbol(factionIndex)
label(code)
label(return)
newmem:
movss xmm0,[rdx+rax*4+08]
movss [factionIndex],xmm0
cmp [factionIndex],0
jl code
mov [rdx+rax*4+08],(float)25000
movss xmm0,[rdx+rax*4+08]
jmp return
code:
mov [rdx+rax*4+08],(float)-20000
movss xmm0,[rdx+rax*4+08]
jmp return
isFriend:
jmp newmem
nop
return:
registersymbol(isFriend)
[DISABLE]
isFriend:
db F3 0F 10 44 82 08
unregistersymbol(isFriend)
unregistersymbol(factionIndex)
dealloc(factionIndex)
dealloc(newmem)
I'm glad to hear the buff timer freeze is helpful and working alright, at least in its current state. No progress yet with getting it to be player buffs only.execute wrote: ↑Sun Sep 20, 2020 2:50 pmThanks! there's a 32 bit table that can change Eldritch Horrors rep as well if it needs to be changed negative again (it works on all factions except the 3 new cults in forgotten gods)
is there any way to temporarily change your total HP? the infinite health code from fantomas doesn't work with griminternals
also the 15 second interval changed buff code worked perfect when i found the npc again in shattered realms, i lowered it to 7 so i could keep my health leech buffs and it worked with that too
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: Steam v1.1.7.2-v1.1.9.1 (x64)
{$lua}
if syntaxcheck then return end
cheat_name = "game.Invincible"
[ENABLE]
local pattern = "0F B6 83 2C 1A 00 00 48 83 C4 20 5B C3"
local replace = "90 90 90 90 90 90 90 ?? ?? ?? ?? ?? ??"
-- edit the name of the cheat
-- edit the pattern to search
-- edit the replacement bytes
-- use ?? to ignore the bytes
-- do not edit the code below
local scans = AOBScan(pattern)
if scans == nil then
showMessage("Unable to find pattern:\n"..pattern)
else
local saved = {}
local length = (#replace + 1) / 3
for i = 0, scans.Count - 1 do
local backup = readBytes(scans[i], length, true)
local bytes = {}
for hex in string.gmatch(replace, "%S+") do
local size = #bytes + 1
if hex == "??" then
bytes[size] = backup[size]
else
bytes[size] = tonumber(hex, 16)
end
end
saved[i] = backup
writeBytes(scans[i], bytes)
end
_G[cheat_name] = {
["scans"] = scans,
["saved"] = saved
}
end
[DISABLE]
local vars = _G[cheat_name]
if vars ~= nil then
local scans = vars.scans
local saved = vars.saved
for i = 0, scans.Count - 1 do
writeBytes(scans[i], saved[i])
end
scans.Destroy()
vars.scans = nil
vars.saved = nil
vars = nil
_G[cheat_name] = nil
end
{$asm}
HiChiricoCuvie wrote: ↑Tue Sep 22, 2020 4:16 pmHi guys, the new patch 1.1.8.0 broke the table, like Inf Health also works for the enemies now.
I'm going to play anyway but I'll wait for the table to be updated for hardcore stuff.
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.4.0
{
If aobscanregion method does not work for you, replace it (line 15)
by this aobscanmodule method..
aobscanmodule(infHealth,Game.dll,F20F108138090000F20F5F05xxxxxxxxF2)
.. or ..
aobscanmodule(infHealth,Game.dll,08F20F108138090000) [but with this one you'll have to put infHealth+01: at lines 37 & 44]
}
[ENABLE]
//Game.GAME::Character::GetCurrentLife+6
aobscanregion(infHealth,Game.GAME::Character::GetCurrentLife,Game.GAME::Character::GetCurrentLife+2F,F2)
alloc(newmem,$1000,infHealth)
label(code)
label(return)
newmem:
movsd xmm2,[ecx+00000998] //Game.GAME::Character::GetLifeLimit {float value}
movsd [ecx+00000938],xmm2
movsd xmm0,[ecx+00000938]
jmp return
code:
movsd xmm0,[ecx+00000938] {double value}
jmp return
infHealth:
jmp newmem
nop 3
return:
registersymbol(infHealth)
[DISABLE]
infHealth:
db F2 0F 10 81 38 09 00 00
unregistersymbol(infHealth)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Character::GetCurrentLife+6
"Game.dll"+47D88: 8B E5 - mov esp,ebp
"Game.dll"+47D8A: 5D - pop ebp
"Game.dll"+47D8B: C3 - ret
"Game.dll"+47D8C: CC - int 3
"Game.dll"+47D8D: CC - int 3
"Game.dll"+47D8E: CC - int 3
"Game.dll"+47D8F: CC - int 3
"Game.dll"+47D90: 55 - push ebp
"Game.dll"+47D91: 8B EC - mov ebp,esp
"Game.dll"+47D93: 83 EC 08 - sub esp,08
// ---------- INJECTING HERE ----------
"Game.dll"+47D96: F2 0F 10 81 38 09 00 00 - movsd xmm0,[ecx+00000938]
// ---------- DONE INJECTING ----------
"Game.dll"+47D9E: F2 0F 5F 05 58 FE 20 68 - maxsd xmm0,[Game.dll+4CFE58]
"Game.dll"+47DA6: F2 0F 11 45 F8 - movsd [ebp-08],xmm0
"Game.dll"+47DAB: DD 45 F8 - fld qword ptr [ebp-08]
"Game.dll"+47DAE: 8B E5 - mov esp,ebp
"Game.dll"+47DB0: 5D - pop ebp
"Game.dll"+47DB1: C3 - ret
"Game.dll"+47DB2: CC - int 3
"Game.dll"+47DB3: CC - int 3
"Game.dll"+47DB4: CC - int 3
"Game.dll"+47DB5: CC - int 3
}
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.4.0
{
If aobscanregion method does not work for you, replace it (line 15)
by this aobscanmodule method..
aobscanmodule(infMana,Game.dll,F30F108154090000)
}
[ENABLE]
//Game.GAME::Character::GetCurrentMana+4
aobscanregion(infMana,Game.GAME::Character::GetCurrentMana,Game.GAME::Character::GetCurrentMana+1F,F3)
alloc(newmem,$1000,infMana)
label(code)
label(return)
newmem:
movss xmm2,[ecx+0000099C] //Game.GAME::Character::GetManaLimit
movss [ecx+00000954],xmm2
movss xmm0,[ecx+00000954]
jmp return
code:
movss xmm0,[ecx+00000954] //currentManaValue
jmp return
infMana:
jmp newmem
nop 3
return:
registersymbol(infMana)
[DISABLE]
infMana:
db F3 0F 10 81 54 09 00 00
unregistersymbol(infMana)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Character::GetCurrentMana+4
"Game.dll"+47A16: 5B - pop ebx
"Game.dll"+47A17: 5E - pop esi
"Game.dll"+47A18: 8B E5 - mov esp,ebp
"Game.dll"+47A1A: 5D - pop ebp
"Game.dll"+47A1B: C2 04 00 - ret 0004
"Game.dll"+47A1E: CC - int 3
"Game.dll"+47A1F: CC - int 3
"Game.dll"+47A20: 55 - push ebp
"Game.dll"+47A21: 8B EC - mov ebp,esp
"Game.dll"+47A23: 51 - push ecx
// ---------- INJECTING HERE ----------
"Game.dll"+47A24: F3 0F 10 81 54 09 00 00 - movss xmm0,[ecx+00000954]
// ---------- DONE INJECTING ----------
"Game.dll"+47A2C: F3 0F 5F 05 50 FE 20 68 - maxss xmm0,[Game.dll+4CFE50]
"Game.dll"+47A34: F3 0F 11 45 FC - movss [ebp-04],xmm0
"Game.dll"+47A39: D9 45 FC - fld dword ptr [ebp-04]
"Game.dll"+47A3C: 8B E5 - mov esp,ebp
"Game.dll"+47A3E: 5D - pop ebp
"Game.dll"+47A3F: C3 - ret
"Game.dll"+47A40: 55 - push ebp
"Game.dll"+47A41: 8B EC - mov ebp,esp
"Game.dll"+47A43: F3 0F 10 99 9C 09 00 00 - movss xmm3,[ecx+0000099C]
"Game.dll"+47A4B: 0F 57 D2 - xorps xmm2,xmm2
}
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.8.0
{
If aobscanregion method below does not work for you, replace it (line 15)
by this aobscanmodule method
aobscanmodule(door,Game.dll,8A8190030000)
}
[ENABLE]
//Game.GAME::FixedDoor::IsLocked
aobscanregion(door,Game.GAME::FixedDoor::IsLocked,Game.GAME::FixedDoor::IsLocked+F,8?)
alloc(newmem,$1000,door)
label(code)
label(return)
newmem:
mov byte ptr [ecx+00000390],0
code:
mov al,[ecx+00000390]
jmp return
door:
jmp newmem
nop
return:
registersymbol(door)
[DISABLE]
door:
db 8A 81 90 03 00 00
unregistersymbol(door)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::FixedDoor::IsLocked
"Game.dll"+1A95FE: CC - int 3
"Game.dll"+1A95FF: CC - int 3
"Game.dll"+1A9600: 83 B9 7C 03 00 00 00 - cmp dword ptr [ecx+0000037C],00
"Game.dll"+1A9607: 0F 94 C0 - sete al
"Game.dll"+1A960A: C3 - ret
"Game.dll"+1A960B: CC - int 3
"Game.dll"+1A960C: CC - int 3
"Game.dll"+1A960D: CC - int 3
"Game.dll"+1A960E: CC - int 3
"Game.dll"+1A960F: CC - int 3
// ---------- INJECTING HERE ----------
"Game.dll"+1A9610: 8A 81 90 03 00 00 - mov al,[ecx+00000390]
// ---------- DONE INJECTING ----------
"Game.dll"+1A9616: C3 - ret
"Game.dll"+1A9617: CC - int 3
"Game.dll"+1A9618: CC - int 3
"Game.dll"+1A9619: CC - int 3
"Game.dll"+1A961A: CC - int 3
"Game.dll"+1A961B: CC - int 3
"Game.dll"+1A961C: CC - int 3
"Game.dll"+1A961D: CC - int 3
"Game.dll"+1A961E: CC - int 3
"Game.dll"+1A961F: CC - int 3
}
Code: Select all
//Game: Grim Dawn + All DLC's
//Version: v1.1.4.0
{
If aobscanregion method does not work for you, replace it (line 15)
by this aobscanmodule method..
aobscanmodule(invincible,Game.dll,75xx8A8xxxxx00005xC3)
}
[ENABLE]
//Game.GAME::Player::IsInvincible+19
aobscanregion(invincible,Game.GAME::Player::IsInvincible,Game.GAME::Player::IsInvincible+2F,75)
invincible:
db 74 //je
registersymbol(invincible)
[DISABLE]
invincible:
db 75 //jne
unregistersymbol(invincible)
Considering the number of users who play the 64bit version with the 32bit table, my question was legitimate.ChiricoCuvie wrote: ↑Sun Sep 27, 2020 4:35 pmI do play on the 32bit version.
What would be the point of giving you feedback if I don't play the right version anyway?
Um...what I attached wasn't a full cheat table, just options. If you want the cheat table that fantomas's thread is for (this thread you are posting in) then look at fantomas's first post in the thread and choose the proper table from their attached tables.treos wrote: ↑Thu Oct 08, 2020 7:03 amcool cheat table. no actual options, a bunch of lines with dashes and "activate all" at the end with another line of nothing BUT dashes below that...what am i activating? i don't know. the cheat table doesn't say anything anywhere.
anyone happen to have an actual usable cheat table for 1.1.8.0?
edit: nevermind, turns out exp, skill points, and attribute points are all a simple 4 byte search. got each on the first try.
Free Craftingaureliano17 wrote: ↑Sun Oct 11, 2020 9:04 amIs there any option for easy crafting? I like to try out mods and the amount of relics and weapons that you can/need to craft, plus the requirements, is absolutely overwhelming.
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotMain,Game.dll,8B 81 94 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC70)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B94]
mov eax,0
jmp return
FreeCraftSlotMain:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotMain)
[DISABLE]
FreeCraftSlotMain:
db 8B 81 94 0B 00 00
unregistersymbol(FreeCraftSlotMain)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotOne,Game.dll,8B 81 98 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC80)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B98]
mov eax,0
jmp return
FreeCraftSlotOne:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotOne)
[DISABLE]
FreeCraftSlotOne:
db 8B 81 98 0B 00 00
unregistersymbol(FreeCraftSlotOne)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotTwo,Game.dll,8B 81 9C 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC90)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B9C]
mov eax,0
jmp return
FreeCraftSlotTwo:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotTwo)
[DISABLE]
FreeCraftSlotTwo:
db 8B 81 9C 0B 00 00
unregistersymbol(FreeCraftSlotTwo)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotThree,Game.dll,8B 81 A0 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCA0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA0]
mov eax,0
jmp return
FreeCraftSlotThree:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotThree)
[DISABLE]
FreeCraftSlotThree:
db 8B 81 A0 0B 00 00
unregistersymbol(FreeCraftSlotThree)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotFour,Game.dll,8B 81 A4 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCB0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA4]
mov eax,0
jmp return
FreeCraftSlotFour:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotFour)
[DISABLE]
FreeCraftSlotFour:
db 8B 81 A4 0B 00 00
unregistersymbol(FreeCraftSlotFour)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotFive,Game.dll,8B 81 A8 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCC0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA8]
mov eax,0
jmp return
FreeCraftSlotFive:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotFive)
[DISABLE]
FreeCraftSlotFive:
db 8B 81 A8 0B 00 00
unregistersymbol(FreeCraftSlotFive)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotSix,Game.dll,8B 81 AC 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCD0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BAC]
mov eax,0
jmp return
FreeCraftSlotSix:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotSix)
[DISABLE]
FreeCraftSlotSix:
db 8B 81 AC 0B 00 00
unregistersymbol(FreeCraftSlotSix)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetCreationCost+4
[ENABLE]
aobscanmodule(FreeCraftSlotIron,Game.dll,4C 8B 81 98 0E 00 00) // should be unique
alloc(newmem,$1000,"Game.dll"+26E434)
label(code)
label(return)
newmem:
code:
// mov r8,[rcx+00000E98]
mov r8,0
jmp return
FreeCraftSlotIron:
jmp newmem
nop 2
return:
registersymbol(FreeCraftSlotIron)
[DISABLE]
FreeCraftSlotIron:
db 4C 8B 81 98 0E 00 00
unregistersymbol(FreeCraftSlotIron)
dealloc(newmem)