Re: The Long Dark +38 [STEAM 1.97]
Posted: Tue Nov 02, 2021 7:50 pm
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
Code: Select all
{ Game : tld.exe
Version: 1.97 85101 S
Date : 2021-11-03
Author : sub1to
public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string> // TypeDefIndex: 289
// Fields
private int m_stringLength; // 0x10
private char m_firstChar; // 0x14
}
[ENABLE]
alloc(newmem,$ff,GameAssembly.dll)
alloc(string,$ff,GameAssembly.dll)
globalalloc(_uconsole_init,1,GameAssembly.dll)
label(returnhere)
label(code)
label(GameManager_Update_hook)
label(GameManager_Update_bytes)
registersymbol(GameManager_Update_hook)
registersymbol(GameManager_Update_bytes)
// class: GameManager
// RVA: 0xE652C0 Offset: 0xE642C0 VA: 0x7FFB0C8352C0
// public void Update() { }
aobScanModule(hook,GameAssembly.dll,26 FF CC CC 48 8B C4 55 57)
// class: Resources
// RVA: 0x2A0FFC0 Offset: 0x2A0EFC0 VA: 0x7FFB0E3DFFC0
// public static Object Load(string path) { }
aobScanModule(Resources_Load,GameAssembly.dll,40 57 48 83 ec ? 48 c7 44 24 ? ? ? ? ? 48 89 5c 24 ? 48 8b f9 80 3d ? ? ? ? ? 75 ? 48 8b 05 ? ? ? ? 48 63 90 ? ? ? ? 48 8b 05 ? ? ? ? 8b 8c 02 ? ? ? ? 45 33 c0 4c 89 44 24 ? 4c 89 44 24 ? 4c 89 44 24 ? 4c 8d 44 24 ? 8b 94 02 ? ? ? ? e8 ? ? ? ? 90 33 c9 ff 15 ? ? ? ? 90 c6 05 ? ? ? ? ? 48 8b 1d ? ? ? ? 48 8b 0d ? ? ? ? f6 81 ? ? ? ? ? 74 ? 83 b9 ? ? ? ? ? 75 ? e8 ? ? ? ? 33 d2 48 8b cb e8 ? ? ? ? 48 8b d8 48 8b 05)
// class: Object
// RVA: 0x2844950 Offset: 0x2843950 VA: 0x7FFB0E214950
// public static Object Instantiate(Object original) { }
aobScanModule(Object_Instantiate,GameAssembly.dll,40 53 48 83 ec ? 48 c7 44 24 ? ? ? ? ? 48 8b d9 80 3d ? ? ? ? ? 75 ? 48 8b 05 ? ? ? ? 48 63 90 ? ? ? ? 48 8b 05 ? ? ? ? 8b 8c 02 ? ? ? ? 45 33 c0 4c 89 44 24 ? 4c 89 44 24 ? 4c 89 44 24 ? 4c 8d 44 24 ? 8b 94 02 ? ? ? ? e8 ? ? ? ? 90 33 c9 ff 15 ? ? ? ? 90 c6 05 ? ? ? ? ? 48 8b 0d ? ? ? ? f6 81 ? ? ? ? ? 74 ? 83 b9 ? ? ? ? ? 75 ? e8 ? ? ? ? 45 33 c0 48 8b 15 ? ? ? ? 48 8b cb e8 ? ? ? ? 48 8b 05)
string:
dq 00 // +00 ptr
dq 00 // +08 padding
dd 08 // +10 len
db 'u' 0 'C' 0 'o' 0 'n' 0 's' 0 'o' 0 'l' 0 'e' 0 0
newmem:
GameManager_Update_bytes:
readMem(hook+4, 5)
jmp returnhere
code:
mov al, [_uconsole_init]
test al, al
jnz GameManager_Update_bytes
mov byte ptr [_uconsole_init], 1
lea rsp, [rsp-28]
mov [rsp+20], rcx
lea rcx, [string]
call Resources_Load
mov rcx, rax
call Object_Instantiate
mov rcx, [rsp+20]
lea rsp, [rsp+28]
jmp GameManager_Update_bytes
hook+4:
GameManager_Update_hook:
jmp code
returnhere:
[DISABLE]
GameManager_Update_hook:
readMem(GameManager_Update_bytes, 5)
unregistersymbol(GameManager_Update_hook)
unregistersymbol(GameManager_Update_bytes)
dealloc(newmem)
dealloc(string)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+E652C0
GameAssembly.dll+E652A6: CC - int 3
GameAssembly.dll+E652A7: E8 54 51 26 FF - call GameAssembly.dll+CA400
GameAssembly.dll+E652AC: CC - int 3
GameAssembly.dll+E652AD: E8 4E 51 26 FF - call GameAssembly.dll+CA400
GameAssembly.dll+E652B2: CC - int 3
GameAssembly.dll+E652B3: E8 48 51 26 FF - call GameAssembly.dll+CA400
GameAssembly.dll+E652B8: CC - int 3
GameAssembly.dll+E652B9: E8 42 51 26 FF - call GameAssembly.dll+CA400
GameAssembly.dll+E652BE: CC - int 3
GameAssembly.dll+E652BF: CC - int 3
// ---------- INJECTING HERE ----------
GameAssembly.dll+E652C0: 48 8B C4 - mov rax,rsp
GameAssembly.dll+E652C3: 55 - push rbp
// ---------- DONE INJECTING ----------
GameAssembly.dll+E652C4: 57 - push rdi
GameAssembly.dll+E652C5: 41 56 - push r14
GameAssembly.dll+E652C7: 48 8D 68 D8 - lea rbp,[rax-28]
GameAssembly.dll+E652CB: 48 81 EC 10 01 00 00 - sub rsp,00000110
GameAssembly.dll+E652D2: 48 C7 45 C0 FE FF FF FF - mov qword ptr [rbp-40],FFFFFFFFFFFFFFFE
GameAssembly.dll+E652DA: 48 89 58 08 - mov [rax+08],rbx
GameAssembly.dll+E652DE: 48 89 70 10 - mov [rax+10],rsi
GameAssembly.dll+E652E2: 0F 29 70 D8 - movaps [rax-28],xmm6
GameAssembly.dll+E652E6: 0F 29 78 C8 - movaps [rax-38],xmm7
}
Sure, here's a script that instantly cures everything:
Code: Select all
{ Game : tld.exe
Version: 1.97 85101 S
Date : 2021-11-07
Author : sub1to
}
[ENABLE]
alloc(newmem,$ff,GameAssembly.dll)
label(returnhere)
label(code)
label(_24f)
label(_1f)
label(evolve_item_hook)
label(evolve_item_bytes)
registersymbol(evolve_item_hook)
registersymbol(evolve_item_bytes)
aobScanModule(hook,GameAssembly.dll,F3 0F 11 73 2C 48 8B 5C 24 70)
newmem:
evolve_item_bytes:
readMem(hook, 5)
jmp returnhere
_24f:
dd (float)24
_1f:
dd (float)1
code:
movd xmm7, [_24f]
movd xmm6, [rbx+24] // m_TimeToEvolveGameDays
mulss xmm6, xmm7
movd xmm7, [_1f]
addss xmm6, xmm7
jmp evolve_item_bytes
hook:
evolve_item_hook:
jmp code
returnhere:
[DISABLE]
evolve_item_hook:
readMem(evolve_item_bytes, 5)
unregistersymbol(evolve_item_hook)
unregistersymbol(evolve_item_bytes)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1157854
GameAssembly.dll+115782A: 48 85 FF - test rdi,rdi
GameAssembly.dll+115782D: 74 45 - je GameAssembly.dll+1157874
GameAssembly.dll+115782F: 48 8B 87 80 00 00 00 - mov rax,[rdi+00000080]
GameAssembly.dll+1157836: 48 85 C0 - test rax,rax
GameAssembly.dll+1157839: 74 33 - je GameAssembly.dll+115786E
GameAssembly.dll+115783B: F3 0F 10 88 90 02 00 00 - movss xmm1,[rax+00000290]
GameAssembly.dll+1157843: F3 0F 59 48 78 - mulss xmm1,[rax+78]
GameAssembly.dll+1157848: F3 0F 5E F1 - divss xmm6,xmm1
GameAssembly.dll+115784C: F3 0F 59 F0 - mulss xmm6,xmm0
GameAssembly.dll+1157850: F3 0F 58 F7 - addss xmm6,xmm7
// ---------- INJECTING HERE ----------
GameAssembly.dll+1157854: F3 0F 11 73 2C - movss [rbx+2C],xmm6
// ---------- DONE INJECTING ----------
GameAssembly.dll+1157859: 48 8B 5C 24 70 - mov rbx,[rsp+70]
GameAssembly.dll+115785E: 0F 28 74 24 50 - movaps xmm6,[rsp+50]
GameAssembly.dll+1157863: 0F 28 7C 24 40 - movaps xmm7,[rsp+40]
GameAssembly.dll+1157868: 48 83 C4 60 - add rsp,60
GameAssembly.dll+115786C: 5F - pop rdi
GameAssembly.dll+115786D: C3 - ret
GameAssembly.dll+115786E: E8 8D 2B F7 FE - call GameAssembly.dll+CA400
GameAssembly.dll+1157873: CC - int 3
GameAssembly.dll+1157874: E8 87 2B F7 FE - call GameAssembly.dll+CA400
GameAssembly.dll+1157879: CC - int 3
}
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>9073</ID>
<Description>"EvolveItem (curing)"</Description>
<LastState Value="" RealAddress="00000000"/>
<Color>C08000</Color>
<GroupHeader>1</GroupHeader>
<Address/>
<CheatEntries>
<CheatEntry>
<ID>9074</ID>
<Description>"Time To Evolve (Game Days)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>FF8080</Color>
<VariableType>Float</VariableType>
<Address>item_select_base_ptr</Address>
<Offsets>
<Offset>24</Offset>
<Offset>F0</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>9075</ID>
<Description>"Require Indoors"</Description>
<DropDownList ReadOnly="1" DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>FF8080</Color>
<VariableType>Byte</VariableType>
<Address>item_select_base_ptr</Address>
<Offsets>
<Offset>28</Offset>
<Offset>F0</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>9076</ID>
<Description>"Time Spent Evolving (Game Hours)"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>FF8080</Color>
<VariableType>Float</VariableType>
<Address>item_select_base_ptr</Address>
<Offsets>
<Offset>2C</Offset>
<Offset>F0</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Thanks, this is awesome, it works. Great job!sub1to wrote: ↑Sun Nov 07, 2021 5:39 pmSure, here's a script that instantly cures everything:
You could also use the selected item hook to directly edit the values:Code: Select all
{ Game : tld.exe Version: 1.97 85101 S Date : 2021-11-07 Author : sub1to } [ENABLE] alloc(newmem,$ff,GameAssembly.dll) label(returnhere) label(code) label(_24f) label(_1f) label(evolve_item_hook) label(evolve_item_bytes) registersymbol(evolve_item_hook) registersymbol(evolve_item_bytes) aobScanModule(hook,GameAssembly.dll,F3 0F 11 73 2C 48 8B 5C 24 70) newmem: evolve_item_bytes: readMem(hook, 5) jmp returnhere _24f: dd (float)24 _1f: dd (float)1 code: movd xmm7, [_24f] movd xmm6, [rbx+24] // m_TimeToEvolveGameDays mulss xmm6, xmm7 movd xmm7, [_1f] addss xmm6, xmm7 jmp evolve_item_bytes hook: evolve_item_hook: jmp code returnhere: [DISABLE] evolve_item_hook: readMem(evolve_item_bytes, 5) unregistersymbol(evolve_item_hook) unregistersymbol(evolve_item_bytes) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+1157854 GameAssembly.dll+115782A: 48 85 FF - test rdi,rdi GameAssembly.dll+115782D: 74 45 - je GameAssembly.dll+1157874 GameAssembly.dll+115782F: 48 8B 87 80 00 00 00 - mov rax,[rdi+00000080] GameAssembly.dll+1157836: 48 85 C0 - test rax,rax GameAssembly.dll+1157839: 74 33 - je GameAssembly.dll+115786E GameAssembly.dll+115783B: F3 0F 10 88 90 02 00 00 - movss xmm1,[rax+00000290] GameAssembly.dll+1157843: F3 0F 59 48 78 - mulss xmm1,[rax+78] GameAssembly.dll+1157848: F3 0F 5E F1 - divss xmm6,xmm1 GameAssembly.dll+115784C: F3 0F 59 F0 - mulss xmm6,xmm0 GameAssembly.dll+1157850: F3 0F 58 F7 - addss xmm6,xmm7 // ---------- INJECTING HERE ---------- GameAssembly.dll+1157854: F3 0F 11 73 2C - movss [rbx+2C],xmm6 // ---------- DONE INJECTING ---------- GameAssembly.dll+1157859: 48 8B 5C 24 70 - mov rbx,[rsp+70] GameAssembly.dll+115785E: 0F 28 74 24 50 - movaps xmm6,[rsp+50] GameAssembly.dll+1157863: 0F 28 7C 24 40 - movaps xmm7,[rsp+40] GameAssembly.dll+1157868: 48 83 C4 60 - add rsp,60 GameAssembly.dll+115786C: 5F - pop rdi GameAssembly.dll+115786D: C3 - ret GameAssembly.dll+115786E: E8 8D 2B F7 FE - call GameAssembly.dll+CA400 GameAssembly.dll+1157873: CC - int 3 GameAssembly.dll+1157874: E8 87 2B F7 FE - call GameAssembly.dll+CA400 GameAssembly.dll+1157879: CC - int 3 }
I'll upload an updated table laterCode: Select all
<?xml version="1.0" encoding="utf-8"?> <CheatTable> <CheatEntries> <CheatEntry> <ID>9073</ID> <Description>"EvolveItem (curing)"</Description> <LastState Value="" RealAddress="00000000"/> <Color>C08000</Color> <GroupHeader>1</GroupHeader> <Address/> <CheatEntries> <CheatEntry> <ID>9074</ID> <Description>"Time To Evolve (Game Days)"</Description> <ShowAsSigned>0</ShowAsSigned> <Color>FF8080</Color> <VariableType>Float</VariableType> <Address>item_select_base_ptr</Address> <Offsets> <Offset>24</Offset> <Offset>F0</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>9075</ID> <Description>"Require Indoors"</Description> <DropDownList ReadOnly="1" DisplayValueAsItem="1">0:No 1:Yes </DropDownList> <ShowAsSigned>0</ShowAsSigned> <Color>FF8080</Color> <VariableType>Byte</VariableType> <Address>item_select_base_ptr</Address> <Offsets> <Offset>28</Offset> <Offset>F0</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>9076</ID> <Description>"Time Spent Evolving (Game Hours)"</Description> <ShowAsSigned>0</ShowAsSigned> <Color>FF8080</Color> <VariableType>Float</VariableType> <Address>item_select_base_ptr</Address> <Offsets> <Offset>2C</Offset> <Offset>F0</Offset> </Offsets> </CheatEntry> </CheatEntries> </CheatEntry> </CheatEntries> </CheatTable>
![]()
Code: Select all
- Updated enable console script
- Removed unlock all (steam) achievements (can be done through dev console)
- Removed unlocks feats (can be done through dev console)
- Updated secondary skills script
- Updated item hook
- Removed duplicate (non-stackable) items by dropping (you can spawn items)
- Updated item spawner
- Updated day length scale script
Your table is awesome, but the "Max Quality" feature is not working for me. When I turn it on, all items in my inventory are destroyed!
I forgot to update the offsets for that script. I've uploaded a fixed version, please try againDarth_Alaks wrote: ↑Sun Dec 12, 2021 2:39 amYour table is awesome, but the "Max Quality" feature is not working for me. When I turn it on, all items in my inventory are destroyed!
If I turn on the "Pause Degrade" function first, then everything is in order, but the items in the inventory remain in their original, different quality, which does not decrease. Repair helps fix tools, clothes and weapons, but what about food?
Items in the inventory have ceased to be destroyed. But max quality still doesn't work. If I pick up spoiled meat, or torn clothes, they still remain torn in my inventory, and I have to repair them, or hook the quality of each item individually.
Like I said in my previous post: Once an item is ruined, the item degrade script won't fix it, because that item no longer degrades (because it's already fully degraded).Darth_Alaks wrote: ↑Sun Dec 12, 2021 7:10 amin the inventory have ceased to be destroyed. But max quality still doesn't work. If I pick up spoiled meat, or torn clothes, they still remain torn in my inventory, and I have to repair them, or hook the quality of each item individually.
I'm not talking about ruined items. I'm just talking about any pickup items.I started a new game with the latest version of the table, turned on the options "Max Quality" and "Pause degrade", or just one "Max Quality", picking up, for example, a can of soda from a backpack or somewhere else. It condition is 73%. And in my inventory condition remains the same. The name of the option "Max quality" implies that it will rise to 100%, or did I misunderstand that?
I see what you mean. You might have to wait for the degrade function to "tick" for that item. Items degrade over time, but this doesn't happen every frame. I tested it with clothes, which degrade pretty often (especially when you're outside in the wind).Darth_Alaks wrote: ↑Sun Dec 12, 2021 4:51 pmI'm not talking about ruined items. I'm just talking about any pickup items.I started a new game with the latest version of the table, turned on the options "Max Quality" and "Pause degrade", or just one "Max Quality", picking up, for example, a can of soda from a backpack or somewhere else. It condition is 73%. And in my inventory condition remains the same. The name of the option "Max quality" implies that it will rise to 100%, or did I misunderstand that?