Note that I am using another game session, as CE froze in-between for some reason, so I had to kill it. So the addresses in the script above are different this time around:
Bottom line: CSrvPlayerFightAdrenalin == 0x918098600 for this run.
Now.. in the fearlessrevolution trainer I am using this location that runs once you hit 0; if you are out of combat the bar starts to refill slowly and stops at 100:
Code: Select all
ACOdyssey.exe+21C420C - 03 54 24 30 - add edx,[rsp+30] // set calculated amount
ACOdyssey.exe+21C4210 - 41 B0 01 - mov r8l,01 // flip bool; 0 = fill up to max; 1 = fill up to min
ACOdyssey.exe+21C4213 - 48 8B CF - mov rcx,rdi // CSrvPlayerFightAdrenalin
ACOdyssey.exe+21C4216 - E8 154FFAFF - call ACOdyssey.exe+2169130 // call this
ACOdyssey.exe+21C421B - 8B 87 8C020000 - mov eax,[rdi+0000028C]
ACOdyssey.exe+21C4221 - 39 87 78020000 - cmp [rdi+00000278],eax // check current with some other value
- edx = amount
- r8d has to be 0 so filling is allowed up to max
- rcx = CSrvPlayerFightAdrenalin pointer
Additionally, if we want to fill Adrenaline to max elegantly, we can feed the max into edx (maximum value is stored at 0x27C offset in CSrvPlayerFightAdrenalin struct).
Then we want to call "ACOdyssey.exe+2169130" function with these 3 parameters I will ignore the one in r8d (cuz it's set manually in the script below - - you'll see) - so 2 parameters
Using Lua, we can do this:
Code: Select all
function RefillAdrenalineLua( structptr, amount )
if RefillAdrenaline == nil then
if autoAssemble([[
alloc( RefillAdrenaline, 128 )
registersymbol( RefillAdrenaline )
RefillAdrenaline:
sub rsp,28
xor r8d,r8d // flag
mov edx,[rcx+8] // amount
mov rcx,[rcx] // CSrvPlayerFightAdrenalin
call ACOdyssey.exe+2169130
add rsp,28
ret
]]) then RefillAdrenaline = getAddressSafe( 'RefillAdrenaline' )
end
end
if RefillAdrenaline == nil then
error( 'autoAssemble failed' )
end
local params = allocateMemory( 16 )
unregisterSymbol( "params" )
registerSymbol( "params", params, true )
writeQword( params+0x0, structptr )
writeQword( params+0x8, amount )
local result = executeCode( RefillAdrenaline, params )
unregisterSymbol( "params" )
deAlloc( params )
end
RefillAdrenalineLua( 0x918098600, 7000 ) -- pointer and amount
Once you click Execute, you will see the Adrenaline GFX refill (the yellow gradient running all over your player's body)
Enjoy!
BR,
Sun
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1