hookLocation: jmp DeepFeature nop returnHere: // Restore original code db originalBytes
ptrGems: dd 0x87654321 // Replace with your gems pointer
[DISABLE] // Restore original code 0xGameLoopAddress: db originalBytes dealloc(DeepFeature) dealloc(hookLocation) Since Idle Skilling updates often, use AOB (Array of Byte) scan instead of static addresses: Cheat Engine Idle Skilling
-- Idle Skilling Deep Feature: Coins + Gems + Souls -- Works across game restarts [ENABLE] // Allocate memory for our deep feature alloc(DeepFeature, 1024) label(ptrCoins) label(ptrGems) label(ptrSouls) label(returnHere)
currencyAOB: jmp newmem returnhere: originalcode: mov [edi+10], eax // ... rest of original code [ptrGems] test eax
// Read gem value mov eax, [ptrGems] test eax, eax jz @f mov eax, [eax+08] // Offset to gem value mov [someAddress+4], eax @@: jmp returnHere
ptrSouls: dd 0xABCDEF00 // Replace with your souls pointer eax jz @f mov eax
DeepFeature: // Read current coin value mov eax, [ptrCoins] test eax, eax jz @f mov eax, [eax+04] // Offset to coin value mov [someAddress], eax