(((((156C8CC) + 0000ptr) + 08B0ptr) + 0148ptr) + 0000ptr) + 0C58 (HealthBall liquid)
(((((156C8CC) + 0000ptr) + 08B0ptr) + 0148ptr) + 0000ptr) + 2D98 (FuryBall liquid)
0C58 full is 1.000 (float)
HealthBall_liquid-4
2D98 full is 1.000 (float)
FuryBall_forecast-12
0156C8CC (ObjectManager)
2A0B5860 (RActors)
1D811438 (ActorCommonData)
2F60E000 (HealthBall & FuryBall Ptr)
So, I found out the Health will go from 1.000 down to 0.000 when you die.
I also found out that the Fury will go from 0.000 up to 1.000 when full.
I put the 0000ptr in there for the people using reclass. I still haven't figured out why you have to hit the pointer button twice sometimes....
It is reproducible I tried it 3 times to make sure... before I posted this.. I went out of the game and went back in.
RECLASS:
0156C8CC (ObjectManager) + ((0000Ptr)0511D200 (FirstPtr To RActors)) + ((08B0Ptr)2A0B5860 (RActors)) + ((0148Ptr)1D811438 (ActorCommonData)) + ((0000Ptr)2F60E000 (HealthBall & FuryBall Ptr)) + 0C58 or 2D98
Usage:
Code:
class Fury
{
public:
char pad[0x2D98];
DWORD furyball;
};
class Health
{
public:
char pad[0xC58];
DWORD healthball;
};
class ACD
{
public:
char pad[0x0148];
Health *m_Health;
Fury *m_Fury;
};
class RActors
{
public:
char pad[0x08B0];
ACD *m_ACD;
};
Code:
float hp = 0;
DWORD numBytesRead;
DWORD staticOffset = 0xD6C8CC;
RActors *baseClass = (RActors*)(baseAddr+staticOffset);
DWORD offsetHealth = baseClass->m_ACD->m_Health->healthball;
ReadProcessMemory( handle, (LPCVOID)offsetHealth, &hp, sizeof(DWORD), &numBytesRead);
You might have a virtualprotect problem :P
-Bit_Hacker