Grim Dawn + All DLC's

Upload your cheat tables here (No requests)
Scheimann
Expert Cheater
Expert Cheater
Posts: 107
Joined: Sun Jul 21, 2019 4:27 am
Reputation: 25

Re: Grim Dawn + All DLC's

Post by Scheimann »

It's possible to add options there are present in ~another trainer~ like

Reveal Map,
Increase Loot Drops,
Free Craft,
XP Multiplier,
or even Remove Item Requirement(to equip)?


Edit: marked what it's already done

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

User avatar
yamisakura
Cheater
Cheater
Posts: 31
Joined: Wed Oct 16, 2019 7:24 pm
Reputation: 6

Re: Grim Dawn + All DLC's

Post by yamisakura »

1.1.9.0 update plz ...

User avatar
merrowind
ViP
ViP
Posts: 28
Joined: Mon Mar 06, 2017 12:22 am
Reputation: 8

Re: Grim Dawn + All DLC's

Post by merrowind »

yamisakura wrote:
Wed Jan 27, 2021 2:18 am
1.1.9.0 update plz ...
Why? Which function does not work for you? I am running STEAM version and all is good.

R3V0L
Cheater
Cheater
Posts: 31
Joined: Sun May 12, 2019 8:26 pm
Reputation: 37

Re: Grim Dawn + All DLC's

Post by R3V0L »

Hi, can some one adapt this table to x64? I'm interested in "GOD MODE ADVACE" and "Get Character" groups, I have no idea how to make it work in x64 version))) Otherwise it works great on 1.1.9.0
Attachments
grim dawn.CT
(578.1 KiB) Downloaded 1359 times

UndeadNonHero
Noobzor
Noobzor
Posts: 10
Joined: Sat Feb 27, 2021 9:13 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by UndeadNonHero »

I'd like to make a request: Please make a cheat to use the riftgate anywhere. I'll make it worth your while if it can be pulled off. There is a mod out there, but it does not work right for me and it is limited.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

UndeadNonHero wrote:
Sat Feb 27, 2021 9:20 am
I'd like to make a request: Please make a cheat to use the riftgate anywhere. I'll make it worth your while if it can be pulled off. There is a mod out there, but it does not work right for me and it is limited.
It has been a few weeks since I last played, but I recall that anyone can already open their map at any time and click on a riftgate to travel to that location and a personal portal gets left behind at the old location.

The only time I recall that one cannot use a riftgate is while inside of a skeleton key dungeon.

I don't know if the nature of those instanced levels themselves would cause the riftgate function to not work properly as they aren't 'part of the map'. As a personal rift is left behind when you riftgate to someplace, those areas not being 'on the map' would mean there wouldn't be a personal riftgate placed on the map in order to return into there. I don't know if the instance persists once you leave it, or how it would work with being able to return to it.

If you just want to be able to leave the skeleton key dungeons and go to a place on the world map without having to beat the whole instance or die inside of it in order to get out, that would probably be something that can be done.

UndeadNonHero
Noobzor
Noobzor
Posts: 10
Joined: Sat Feb 27, 2021 9:13 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by UndeadNonHero »

There are actually multiple areas across the game that have the rift gates blocked and many of them are large areas. The area you are likely remembering is the Steps of Torment (SoT) on the Misery Level. There is another area that also uses the skeleton key, but it is not a dungeon. It is also blocked. There are multiple places that have rifts to the void that are also blocked.

I believe that the developers used a simple area flag to turn off teleportation. The mechanic of teleportation will still work if it is circumvented. If I knew how to use the cheat engine, I would go to the SoT door to the lower levels and compare in memory to see what is different. Of course, the Bastion of the Order Crypt in Sorrow Bastian area also has a block and is more easily accessible (assuming that you have sided with Death's Vigil). The only issue is that you need to do an area transition to get the block triggered, whereas, in the SoT, you can simply walk up to the door without actually passing through for the block to trigger. I presume it would be much easier to identify what is going on in the memory from the SoT Misery Level area door.

Game crashes are a big problem for me. I'd like to unload some of my loot to ensure that it does not get lost. Additionally, it is entirely possible that with the cheat engine you might be able to save the locations into Grim Internals mod and then teleport to those blocked areas without having to pass through all those other areas first. Currently, Grim Internals greys out the ability to save those locations when teleportation is blocked in game.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

@UndeadNonhero
Thank you very much for all of that detailed information on the many areas where it is disabled and examples for how and where to easily test out a way to prevent it from being disabled.

I did not mean for my reply to read as belittling of your request or a demand to justify it as something worth putting time toward working on if that was how it was taken. I just did not realize that there were so many areas where the disabling occurred, nor did I consider the negative impact it being disabled at times can have on the freedom of players to play how they want.

I feel the point of CE tables being created for games in the first place is to provide choices for players to customize their gameplay and to disable aspects of the game that can lessen the enjoyment of it.

I will try to help and test as you described with your example areas to see if I am able to keep the rift gate ability always enabled instead of becoming disabled.

UndeadNonHero
Noobzor
Noobzor
Posts: 10
Joined: Sat Feb 27, 2021 9:13 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by UndeadNonHero »

I did not take anything in a negative light. I just felt that more needed to be clarified.

I should like to point out that downloading and installing the Grim Internals mod will make testing much easier since it allows you to teleport directly to the area that I mentioned in my above post (should anyone decide to try to make the cheat). I presume that the mod does not alter the memory area in question since teleportation is disabled in the mod for blocked areas. I do however suspect that the area in memory is likely in a different spot between 32bit and 64bit versions in the game since there is a mod that works to circumvent this for the 64bit version only. To force steam to use the 64bit version the following needs to be pasted into the launch options of steam: "C:\Program Files (x86)\Steam\steamapps\common\Grim Dawn\x64\Grim Dawn.exe" %command% It is essential to do so if using the Grim Internals mod in order to launch the 64bit version of the game. No doubt people that play both versions of the game would want the cheat.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

UndeadNonHero wrote:
Wed Mar 03, 2021 6:56 am
I did not take anything in a negative light. I just felt that more needed to be clarified.

I should like to point out that downloading and installing the Grim Internals mod will make testing much easier since it allows you to teleport directly to the area that I mentioned in my above post (should anyone decide to try to make the cheat). I presume that the mod does not alter the memory area in question since teleportation is disabled in the mod for blocked areas. I do however suspect that the area in memory is likely in a different spot between 32bit and 64bit versions in the game since there is a mod that works to circumvent this for the 64bit version only. To force steam to use the 64bit version the following needs to be pasted into the launch options of steam: "C:\Program Files (x86)\Steam\steamapps\common\Grim Dawn\x64\Grim Dawn.exe" %command% It is essential to do so if using the Grim Internals mod in order to launch the 64bit version of the game. No doubt people that play both versions of the game would want the cheat.
I've been putting some time toward it each day and I'm still trying to figure it out. It's more complex than what I'm used to and I'm still trying to figure it out.

I checked to see what addresses were changing between the disabling zone and stepping out so it reactivates. I managed to narrow it down to a single address being changed, but locking it to 1 caused it to cycle back and forth between disabled and enabled as CE would update and force it enabled but not as quickly as the game is disabling it.

I looked to see what wrote to that address to see if I could alter the instruction so that it wouldn't try to change it in the first place, but it's more complex than that it seems.

The two separated instructions below write to the address:
MEMORY
Grim Dawn.exe+1D88D4 - FF 15 5EC40B00 - call qword ptr ["Grim Dawn.exe"+294D38] { ->Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport }
Grim Dawn.exe+1D88DA - 84 C0 - test al,al
Grim Dawn.exe+1D88DC - 0F84 8C000000 - je "Grim Dawn.exe"+1D896E { ->Grim Dawn.exe+1D896E }
Grim Dawn.exe+1D88E2 - 48 8B 0D 1F780B00 - mov rcx,["Grim Dawn.exe"+290108] { (7FEE505D6C8) }
Grim Dawn.exe+1D88E9 - 48 8B 09 - mov rcx,[rcx]
Grim Dawn.exe+1D88EC - FF 15 4EC40B00 - call qword ptr ["Grim Dawn.exe"+294D40] { ->Game.GAME::GameEngine::MainPlayerHasPersonalTeleport }
RiftGateOn - E9 0977E1FF - jmp 13FE70000
Grim Dawn.exe+1D88F7 - 0F1F 00 - nop dword ptr [rax]
Grim Dawn.exe+1D88FA - 84 C0 - test al,al
Grim Dawn.exe+1D88FC - 74 39 - je "Grim Dawn.exe"+1D8937 { ->Grim Dawn.exe+1D8937 }
Grim Dawn.exe+1D88FE - 66 41 C7 87 D9110000 0100 - mov word ptr [r15+000011D9],0001 { 1 }
Grim Dawn.exe+1D8908 - 41 C6 87 D00F0000 00 - mov byte ptr [r15+00000FD0],00 { 0 }
Grim Dawn.exe+1D8910 - 41 88 9F 89140000 - mov [r15+00001489],bl
Grim Dawn.exe+1D8917 - 41 C6 87 8C140000 00 - mov byte ptr [r15+0000148C],00 { 0 }
Grim Dawn.exe+1D891F - 84 DB - test bl,bl
Grim Dawn.exe+1D8921 - 74 08 - je "Grim Dawn.exe"+1D892B { ->Grim Dawn.exe+1D892B }
Grim Dawn.exe+1D8923 - 41 C6 87 8A140000 00 - mov byte ptr [r15+0000148A],00 { 0 }
Grim Dawn.exe+1D892B - 80 F3 01 - xor bl,01 { 1 }

Grim Dawn.exe+1D892E - 41 88 9F 80120000 - mov [r15+00001280],bl

Grim Dawn.exe+1D8935 - EB 6B - jmp "Grim Dawn.exe"+1D89A2 { ->Grim Dawn.exe+1D89A2 }
Grim Dawn.exe+1D8937 - 41 88 9F D9110000 - mov [r15+000011D9],bl
Grim Dawn.exe+1D893E - 84 DB - test bl,bl
Grim Dawn.exe+1D8940 - 74 08 - je "Grim Dawn.exe"+1D894A { ->Grim Dawn.exe+1D894A }
Grim Dawn.exe+1D8942 - 41 C6 87 DA110000 00 - mov byte ptr [r15+000011DA],00 { 0 }
Grim Dawn.exe+1D894A - 41 C6 87 D00F0000 01 - mov byte ptr [r15+00000FD0],01 { 1 }
Grim Dawn.exe+1D8952 - 66 41 C7 87 89140000 0100 - mov word ptr [r15+00001489],0001 { 1 }
Grim Dawn.exe+1D895C - 41 C6 87 8C140000 00 - mov byte ptr [r15+0000148C],00 { 0 }
Grim Dawn.exe+1D8964 - 41 C6 87 80120000 00 - mov byte ptr [r15+00001280],00 { 0 }
Grim Dawn.exe+1D896C - EB 34 - jmp "Grim Dawn.exe"+1D89A2 { ->Grim Dawn.exe+1D89A2 }
Grim Dawn.exe+1D896E - 66 41 C7 87 89140000 0100 - mov word ptr [r15+00001489],0001 { 1 }
Grim Dawn.exe+1D8978 - 41 C6 87 8C140000 00 - mov byte ptr [r15+0000148C],00 { 0 }

Grim Dawn.exe+1D8980 - 41 C6 87 80120000 00 - mov byte ptr [r15+00001280],00 { 0 }

Grim Dawn.exe+1D8988 - 66 41 C7 87 D9110000 0100 - mov word ptr [r15+000011D9],0001 { 1 }
Grim Dawn.exe+1D8992 - 41 C6 87 DC110000 00 - mov byte ptr [r15+000011DC],00 { 0 }
Grim Dawn.exe+1D899A - 41 C6 87 D00F0000 00 - mov byte ptr [r15+00000FD0],00 { 0 }
Grim Dawn.exe+1D89A2 - 41 80 BF 58120900 00 - cmp byte ptr [r15+00091258],00 { 0 }
Those are:
  • Grim Dawn.exe+1D892E - 41 88 9F 80120000 - mov [r15+00001280],bl
And:
  • Grim Dawn.exe+1D8980 - 41 C6 87 80120000 00 - mov byte ptr [r15+00001280],00 { 0 }
I tried several different things and tried inverting the instructions even so that it would be disabled normally and then enabled when entering the 'disabling' zone. All it resulted in was it being disabled at all times. I can't follow the logic in the checking process.

I also found this which controls whether or not the player is able to use the personal teleporter function at all.
MEMORY
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport - 48 89 6C 24 10 - mov [rsp+10],rbp
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+5- 48 89 74 24 18 - mov [rsp+18],rsi
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+A- 57 - push rdi
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+B- 48 81 EC 80000000 - sub rsp,00000080 { 128 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+12- 48 8B F1 - mov rsi,rcx
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+15- E8 D6850100 - call Game.GAME::GameEngine::GetMainPlayer
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+1A- 48 8B F8 - mov rdi,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+1D- 48 85 C0 - test rax,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+20- 0F84 F2000000 - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+118
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+26- 48 8B C8 - mov rcx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+29- 48 89 9C 24 90000000 - mov [rsp+00000090],rbx
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+31- FF 15 A9482C00 - call qword ptr [Game.dll+4DD500] { ->Engine.GAME::Entity::GetRegion }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+37- 48 8D 54 24 40 - lea rdx,[rsp+40]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+3C- 48 8B CF - mov rcx,rdi
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+3F- 48 8B D8 - mov rbx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+42- FF 15 80482C00 - call qword ptr [Game.dll+4DD4E8] { ->Engine.GAME::Entity::GetCoords }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+48- 48 8B C8 - mov rcx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+4B- FF 15 EF472C00 - call qword ptr [Game.dll+4DD460] { ->Engine.GAME::WorldVec3::GetRegionPosition }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+51- 48 8B CB - mov rcx,rbx
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+54- 48 8B E8 - mov rbp,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+57- FF 15 8B4C2C00 - call qword ptr [Game.dll+4DD908] { ->Engine.GAME::WaterRenderInterface::GetVertexDeclaration }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+5D- 48 8B 9C 24 90000000 - mov rbx,[rsp+00000090]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+65- 48 85 C0 - test rax,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+68- 74 54 - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+BE
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+6A- 48 8B C8 - mov rcx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+6D- FF 15 7D4C2C00 - call qword ptr [Game.dll+4DD910] { ->Engine.GAME::Level::GetSectorLayers }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+73- 48 85 C0 - test rax,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+76- 74 46 - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+BE
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+78- F3 0F2C 4D 08 - cvttss2si ecx,[rbp+08]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+7D- 41 B8 0A000000 - mov r8d,0000000A { 10 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+83- 48 8D 54 24 30 - lea rdx,[rsp+30]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+88- F3 44 0F2C 4D 00 - cvttss2si r9d,[rbp+00]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+8E- 89 4C 24 20 - mov [rsp+20],ecx
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+92- 48 8B C8 - mov rcx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+95- FF 15 5D4C2C00 - call qword ptr [Game.dll+4DD918] { ->Engine.GAME::SectorLayers::GetTargetId }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+9B- 48 8B 05 8E432C00 - mov rax,[Game.dll+4DD050] { (7FEE54EB300) }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+A2- 4C 8D 44 24 30 - lea r8,[rsp+30]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+A7- BA 0A000000 - mov edx,0000000A { 10 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+AC- 48 8B 08 - mov rcx,[rax]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+AF- 48 83 C1 08 - add rcx,08 { 8 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+B3- FF 15 474C2C00 - call qword ptr [Game.dll+4DD920] { ->Engine.GAME::SectorDataManager::GetSectorData }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+B9- 48 85 C0 - test rax,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+BC- 75 5A - jne Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+118
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+BE- 48 83 BE D0590300 00 - cmp qword ptr [rsi+000359D0],00 { 0 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+C6- 74 13 - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+DB
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+C8- 48 8D 96 C0590300 - lea rdx,[rsi+000359C0]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+CF- 48 8B CF - mov rcx,rdi
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+D2- E8 E99C0E00 - call Game.GAME::Player::HasToken
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+D7- 84 C0 - test al,al
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+D9- 74 3D - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+118
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+DB- 48 8B 0D 4E432C00 - mov rcx,[Game.dll+4DD050] { (7FEE54EB300) }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+E2- 48 8B 09 - mov rcx,[rcx]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+E5- FF 15 25552C00 - call qword ptr [Game.dll+4DE230] { ->Engine.GAME::Engine::GetGameInfo }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+EB- 48 8B C8 - mov rcx,rax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+EE- FF 15 245A2C00 - call qword ptr [Game.dll+4DE738] { ->Engine.GAME::GameInfo::GetDifficulty }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+F4- 48 63 C8 - movsxd rcx,eax
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+F7- 48 8D 04 49 - lea rax,[rcx+rcx*2]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+FB- 48 8B 8C C7 903F0000 - mov rcx,[rdi+rax*8+00003F90]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+103- 48 2B 8C C7 883F0000 - sub rcx,[rdi+rax*8+00003F88]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+10B- 48 C1 F9 04 - sar rcx,04 { 4 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+10F- 48 85 C9 - test rcx,rcx
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+112- 74 04 - je Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+118
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+114- B0 01 - mov al,01 { 1 }
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+116- EB 02 - jmp Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+11A
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+118- 32 C0 - xor al,al
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+11A- 4C 8D 9C 24 80000000 - lea r11,[rsp+00000080]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+122- 49 8B 6B 18 - mov rbp,[r11+18]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+126- 49 8B 73 20 - mov rsi,[r11+20]
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+12A- 49 8B E3 - mov rsp,r11
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+12D- 5F - pop rdi
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+12E- C3 - ret
Game.GAME::GameEngine::MainPlayerCanUsePersonalTeleport+12F- CC - int 3
I'm still trying to work through it and try to learn as much as I can and to understand the checks and logic and try to figure out how to maybe prevent the game from even checking to see if it should be disabled or not so that it would just remain enabled at all times.

All I've managed to do so far is either have it disabled at all times, or remain visible and just greyed out and unclickable instead of being invisible entirely when it gets disabled.

If anyone else has any insight into this function or an idea of how it can be made to stay enabled instead of getting disabled, I'd welcome some help or someone to make the option entirely so I can see what I'm not understanding and how it should be done.

UndeadNonHero
Noobzor
Noobzor
Posts: 10
Joined: Sat Feb 27, 2021 9:13 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by UndeadNonHero »

Cool. That sounds interesting. Maybe they set something up to prevent exploits too.

Perhaps, if you are able to look at the source code for this mod: fearlessrevolution.<com>/grimdawn/mods/91?tab=files you can see what they where trying to do. I think this mod makes an effort to change something in memory. Like I mentioned before, this mod does not work for me and it is only for 64bit, but maybe it will give you insight of some sort.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

Ah, I see. That is a link for fearlessrevolution.
(edit: interesting, nexus links get converted to be fearlessrevolution domains...)

I looked at it and expected it to be just a regular mod that altered game files, but it actually alters the memory to cause rift gates to remain enabled in disabling areas. It's possible that it is just an auto-activating trainer exe compiled from a cheat table option, so this should be a great help.

I saved the files from there and will take a look at how it achieves it and see if I can reproduce it via cheat engine. If it helps to get an option working, then I can see if it can be made to possibly be compatible with both x32 and x64.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

I see a comment on their mod also notes a "bug" where the icon gets disabled in the disabling area, but the mod makes it so the keyboard shortcut will still activate the personal rift gate. I didn't think to try hitting that keybind when I had the icon enabled but greyed out so I may have already done exactly what their mod does. I'll also try that later as well to see if I already achieved what they achieved when I look at it.

UndeadNonHero
Noobzor
Noobzor
Posts: 10
Joined: Sat Feb 27, 2021 9:13 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by UndeadNonHero »

Thanks for your efforts. I wish I had time to learn this. I had to pick between this and other things.

If you have tried to install Grim Internals (GI), you might want to check if it lets you teleport with your memory alteration enabled. I believe that the mod checks in memory for whether or not teleportation is disabled with its custom teleportation function. In all likelihood, if you could look at the code for GI you could probably also see right where the issue is. Its probably too much to crawl through though.

User avatar
fearless123456
Expert Cheater
Expert Cheater
Posts: 80
Joined: Wed Jan 30, 2019 6:19 am
Reputation: 94

Re: Grim Dawn + All DLC's

Post by fearless123456 »

N.B. Backup your save games before using scripts.

Increase Local Map reveal (will still need to go to unexplored riftgates to activate them):
Spoiler

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>101</ID>
      <Description>"MiniMapReveal"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Grim Dawn.exe
  Version: 
  Date   : 2021-03-14
  Author : 009

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(mapReveal,Engine.dll,0F B6 0C 18 88 0C 38) // should be unique
alloc(newmem,$1000,mapReveal)

label(code)
label(return)

newmem:
mov byte ptr [rax+rbx],0
code:
  movzx ecx,byte ptr [rax+rbx]
  mov [rax+rdi],cl
  jmp return

mapReveal:
  jmp newmem
  nop 2
return:
registersymbol(mapReveal)

[DISABLE]

mapReveal:
  db 0F B6 0C 18 88 0C 38

unregistersymbol(mapReveal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Engine.GAME::FogOfWar::UpdateTexture+D0

Engine.GAME::FogOfWar::UpdateTexture+A4: 0F 1F 40 00                    - nop dword ptr [rax+00]
Engine.GAME::FogOfWar::UpdateTexture+A8: 0F 1F 84 00 00 00 00 00        - nop dword ptr [rax+rax+00000000]
Engine.GAME::FogOfWar::UpdateTexture+B0: 49 8D 04 1E                    - lea rax,[r14+rbx]
Engine.GAME::FogOfWar::UpdateTexture+B4: 49 8B D6                       - mov rdx,r14
Engine.GAME::FogOfWar::UpdateTexture+B7: 48 3B D8                       - cmp rbx,rax
Engine.GAME::FogOfWar::UpdateTexture+BA: 49 0F 47 D7                    - cmova rdx,r15
Engine.GAME::FogOfWar::UpdateTexture+BE: 48 85 D2                       - test rdx,rdx
Engine.GAME::FogOfWar::UpdateTexture+C1: 74 1C                          - je Engine.GAME::FogOfWar::UpdateTexture+DF
Engine.GAME::FogOfWar::UpdateTexture+C3: 49 8B C7                       - mov rax,r15
Engine.GAME::FogOfWar::UpdateTexture+C6: 66 66 0F 1F 84 00 00 00 00 00  - nop word ptr [rax+rax+00000000]
// ---------- INJECTING HERE ----------
Engine.GAME::FogOfWar::UpdateTexture+D0: 0F B6 0C 18                    - movzx ecx,byte ptr [rax+rbx]
// ---------- DONE INJECTING  ----------
Engine.GAME::FogOfWar::UpdateTexture+D4: 88 0C 38                       - mov [rax+rdi],cl
Engine.GAME::FogOfWar::UpdateTexture+D7: 48 FF C0                       - inc rax
Engine.GAME::FogOfWar::UpdateTexture+DA: 48 3B C2                       - cmp rax,rdx
Engine.GAME::FogOfWar::UpdateTexture+DD: 72 F1                          - jb Engine.GAME::FogOfWar::UpdateTexture+D0
Engine.GAME::FogOfWar::UpdateTexture+DF: 8B 44 24 40                    - mov eax,[rsp+40]
Engine.GAME::FogOfWar::UpdateTexture+E3: 49 2B DE                       - sub rbx,r14
Engine.GAME::FogOfWar::UpdateTexture+E6: 48 03 F8                       - add rdi,rax
Engine.GAME::FogOfWar::UpdateTexture+E9: 49 83 E9 01                    - sub r9,01
Engine.GAME::FogOfWar::UpdateTexture+ED: 75 C1                          - jne Engine.GAME::FogOfWar::UpdateTexture+B0
Engine.GAME::FogOfWar::UpdateTexture+EF: EB 5E                          - jmp Engine.GAME::FogOfWar::UpdateTexture+14F
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>


Reduce equipment requirements (will reset after reloading game)
Spoiler

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>102</ID>
      <Description>"Reduce equipment requirement"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Grim Dawn.exe
  Version: 
  Date   : 2021-03-14
  Author : 009

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJECT,Game.dll,8B 99 70 07 00 00) // should be unique
alloc(newmem,$1000,INJECT)

label(code)
label(return)

newmem:
mov [rcx+00000770],1
mov [rcx+00000764],1
mov [rcx+00000768],1
mov [rcx+0000076C],1
code:
  mov ebx,[rcx+00000770]
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db 8B 99 70 07 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::ItemEquipment::GetLevelRequirement+A

Game.GAME::ItemEquipment::GetUIRequirementText+579: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57A: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57B: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57C: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57D: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57E: CC                    - int 3 
Game.GAME::ItemEquipment::GetUIRequirementText+57F: CC                    - int 3 
Game.GAME::ItemEquipment::GetLevelRequirement: 48 89 5C 24 08        - mov [rsp+08],rbx
Game.GAME::ItemEquipment::GetLevelRequirement+5: 57                    - push rdi
Game.GAME::ItemEquipment::GetLevelRequirement+6: 48 83 EC 20           - sub rsp,20
// ---------- INJECTING HERE ----------
Game.GAME::ItemEquipment::GetLevelRequirement+A: 8B 99 70 07 00 00     - mov ebx,[rcx+00000770]
// ---------- DONE INJECTING  ----------
Game.GAME::ItemEquipment::GetLevelRequirement+10: 48 8B F9              - mov rdi,rcx
Game.GAME::ItemEquipment::GetLevelRequirement+13: 48 8B 89 50 10 00 00  - mov rcx,[rcx+00001050]
Game.GAME::ItemEquipment::GetLevelRequirement+1A: 48 85 C9              - test rcx,rcx
Game.GAME::ItemEquipment::GetLevelRequirement+1D: 74 0E                 - je Game.GAME::ItemEquipment::GetLevelRequirement+2D
Game.GAME::ItemEquipment::GetLevelRequirement+1F: 48 8B 01              - mov rax,[rcx]
Game.GAME::ItemEquipment::GetLevelRequirement+22: FF 90 B8 04 00 00     - call qword ptr [rax+000004B8]
Game.GAME::ItemEquipment::GetLevelRequirement+28: 3B D8                 - cmp ebx,eax
Game.GAME::ItemEquipment::GetLevelRequirement+2A: 0F 46 D8              - cmovbe ebx,eax
Game.GAME::ItemEquipment::GetLevelRequirement+2D: 48 8B 8F 58 10 00 00  - mov rcx,[rdi+00001058]
Game.GAME::ItemEquipment::GetLevelRequirement+34: 48 85 C9              - test rcx,rcx
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>


Enable harder difficulties - enable before creating new character
Spoiler

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>103</ID>
      <Description>"Enable Harder Difficulties"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Grim Dawn.exe
  Version: 
  Date   : 2021-03-14
  Author : 009

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(enableDifficulty,Game.dll,8B 81 C0 42 00 00) // should be unique
alloc(newmem,$1000,enableDifficulty)

label(code)
label(return)

newmem:
mov [rcx+000042C0],2
code:
  mov eax,[rcx+000042C0]
  jmp return

enableDifficulty:
  jmp newmem
  nop
return:
registersymbol(enableDifficulty)

[DISABLE]

enableDifficulty:
  db 8B 81 C0 42 00 00

unregistersymbol(enableDifficulty)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::GetGreatestDifficultyCompleted

Game.GAME::Player::SetGreatestDifficultyCompleted+6: C3                 - ret 
Game.GAME::Player::SetGreatestDifficultyCompleted+7: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+8: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+9: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+A: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+B: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+C: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+D: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+E: CC                 - int 3 
Game.GAME::Player::SetGreatestDifficultyCompleted+F: CC                 - int 3 
// ---------- INJECTING HERE ----------
Game.GAME::Player::GetGreatestDifficultyCompleted: 8B 81 C0 42 00 00  - mov eax,[rcx+000042C0]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::GetGreatestDifficultyCompleted+6: 33 C9              - xor ecx,ecx
Game.GAME::Player::GetGreatestDifficultyCompleted+8: 83 F8 03           - cmp eax,03
Game.GAME::Player::GetGreatestDifficultyCompleted+B: 0F 44 C1           - cmove eax,ecx
Game.GAME::Player::GetGreatestDifficultyCompleted+E: C3                 - ret 
Game.GAME::Player::GetGreatestDifficultyCompleted+F: CC                 - int 3 
Game.GAME::Player::SetGreatestSurvivalDifficultyCompleted: 89 91 C8 42 00 00  - mov [rcx+000042C8],edx
Game.GAME::Player::SetGreatestSurvivalDifficultyCompleted+6: C3                 - ret 
Game.GAME::Player::SetGreatestSurvivalDifficultyCompleted+7: CC                 - int 3 
Game.GAME::Player::SetGreatestSurvivalDifficultyCompleted+8: CC                 - int 3 
Game.GAME::Player::SetGreatestSurvivalDifficultyCompleted+9: CC                 - int 3 
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>





Post Reply

Who is online

Users browsing this forum: AhrefsBot, Baidu [Spider], David LionHeart, Djossi09, DonFknKnotts, Fresc1, Fukara, GhostStriker, Google [Bot], Google Adsense [Bot], IFireflyl, ndrynih, nvmuser, RogueTech, RoyalGuard, Seltonik, Sleepy698244, veggeta, YandexBot, zoomas