Hi I wanted to try my hand at creating a few little tools for myself for pvp (for now it will output to console, but when i am done what it is going to do is hook d3d and output my hp, mana, opponents hp/mana and wither or not the opponent im pking can be stunned or immobilized (id have to check their buffs))
as of right now I have reversed most of the player structure that holds the health and defense along with other stuff but i am having troubles make it work as i want.
I am using dll injection for my tool and ive found the base address for my version of pwi and i know the offsets to find my data ex: 0x00BBC9CC->0x0A**CDC0+0x34->begining of data structure (can get to it in cheat engine no problem)
but in my code i cannot calculate the second pointer address so i can use that with my structure i made.
Code:
typedef struct
{
BYTE Unknown01[0x468]; //Unknown stuff
DWORD Id;
DWORD Level;
DWORD Cultivation;
DWORD Current_HP;
DWORD Current_MP;
DWORD Exp;
DWORD Spirit;
DWORD Attribute_Points;
DWORD Current_Chi;
DWORD Attack_Level;
DWORD Defence_Level;
float Critical_Rate;
float Rage_Damage;
DWORD Stealth_Level;
DWORD Stealth_Detection_Level;
DWORD Slaying_Level;
DWORD Warding_level;
DWORD Vitality_Points;
DWORD Magic_Points;
DWORD Strength_Points;
DWORD Dextarity_Points;
DWORD Max_HP;
DWORD Max_MP;
DWORD HP_Regen;
DWORD MP_Regen;
float Walk_Speed;
float Run_Speed;
float Swim_Speed;
float Fly_Speed;
DWORD Accuracy;
DWORD Min_Attack_Damage;
DWORD Max_Attack_Damage;
float Attack_Rate;
float Range;
DWORD Min_Metal_Damage;
DWORD Max_Metal_Damage;
DWORD Min_Wood_Damage;
DWORD Max_Wood_Damage;
DWORD Min_Water_Damage;
DWORD Max_Water_Damage;
DWORD Min_Fire_Damage;
DWORD Max_Fire_Damage;
DWORD Min_Earth_Damage;
DWORD Max_Earth_Damage;
DWORD Min_Magic_Damage;
DWORD Max_Magic_Damage;
DWORD Metal_Defence;
DWORD Wood_Defence;
DWORD Water_Defence;
DWORD Fire_Defence;
DWORD Earth_Defence;
DWORD Physical_Defence;
DWORD Evasion;
DWORD Max_Chi;
DWORD Coins;
DWORD Max_Coins;
}PLAYER;
typedef struct
{
BYTE Unknown[0x34];
PLAYER *p_player;
}VARBASE;
DWORD WINAPI function()
{
VARBASE *Stats = (VARBASE*)0x00BBC9CC;
char lol[1000];
sprintf(lol, "stats pointer: %p | player pointer: %p | player level: %ld", (void*)Stats, (void*)Stats->p_player, Stats->p_player->Level);
SomeFunction(lol);
return NULL;
}
if anyone has a better/easier method for this let me know. :<
tl;dr found base addresss, need to get the pointer from base address+34 and use the address that points to for my structure.






