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.