Code:
class WoWUnits
{
public:
char _0x0000[8];
UnitFields* unitFields; //0x0008
DWORD getFaction(){
return (DWORD)unitFields->UNIT_FIELD_FACTIONTEMPLATE;
}
}
class UnitFields
{
public:
char _0x0000[64];
__int64 UNIT_FIELD_TARGET; //0x0040
char _0x0048[16];
__int32 UNIT_FIELD_HEALTH; //0x0058
__int32 UNIT_FIELD_POWER1; //0x005C
__int32 UNIT_FIELD_POWER2; //0x0060
__int32 UNIT_FIELD_POWER3; //0x0064
__int32 UNIT_FIELD_POWER4; //0x0068
__int32 UNIT_FIELD_POWER5; //0x006C
__int32 UNIT_FIELD_MAXHEALTH; //0x0070
__int32 UNIT_FIELD_MAXPOWER1; //0x0074
__int32 UNIT_FIELD_MAXPOWER2; //0x0078
__int32 UNIT_FIELD_MAXPOWER3; //0x007C
__int32 UNIT_FIELD_MAXPOWER4; //0x0080
__int32 UNIT_FIELD_MAXPOWER5; //0x0084
__int32 UNIT_FIELD_LEVEL; //0x0088
__int32 UNIT_FIELD_FACTIONTEMPLATE; //0x008C
__int32 UNIT_FIELD_BYTES_0; //0x0090
char _0x0094[36];
__int32 UnitFlags; //0x00B8
char _0x00BC[8];
__int32 UNIT_FIELD_AURA_0; //0x00C4
__int32 UNIT_FIELD_AURA_1; //0x00C8
__int32 UNIT_FIELD_AURA_2; //0x00CC
__int32 UNIT_FIELD_AURA_3; //0x00D0
__int32 UNIT_FIELD_AURA_4; //0x00D4
__int32 UNIT_FIELD_AURA_5; //0x00D8
__int32 UNIT_FIELD_AURA_6; //0x00DC
__int32 UNIT_FIELD_AURA_7; //0x00E0
__int32 UNIT_FIELD_AURA_8; //0x00E4
char _0x00E8[120];
__int32 UNIT_FIELD_DEBUFF_0; //0x0160
__int32 UNIT_FIELD_DEBUFF_1; //0x0164
__int32 UNIT_FIELD_DEBUFF_2; //0x0168
__int32 UNIT_FIELD_DEBUFF_3; //0x016C
__int32 UNIT_FIELD_DEBUFF_4; //0x0170
__int32 UNIT_FIELD_DEBUFF_5; //0x0174
char _0x0178[232];
__int32 UNIT_FIELD_DISPLAYID; //0x0260
__int32 UNIT_FIELD_NATIVEDISPLAYID; //0x0264
__int32 UNIT_FIELD_MOUNTDISPLAYID; //0x0268
char _0x026C[16];
__int32 UNIT_FIELD_BYTES_1; //0x027C
char _0x0280[16];
__int32 UNIT_DYNAMIC_FLAGS; //0x0290
__int32 UNIT_CHANNEL_SPELL; //0x0294
char _0x0298[720];
__int32 HEAD_ID; //0x0568
char _0x056C[60];
__int32 NECK_ID; //0x05A8
char _0x05AC[60];
__int32 SHOULDER_ID; //0x05E8
char _0x05EC[60];
__int32 SHIRT_ID; //0x0628
char _0x062C[60];
__int32 CHEST_ID; //0x0668
char _0x066C[60];
__int32 WAIST_ID; //0x06A8
char _0x06AC[60];
__int32 LEGS_ID; //0x06E8
char _0x06EC[60];
__int32 FEET_ID; //0x0728
char _0x072C[60];
__int32 WRIST_ID; //0x0768
char _0x076C[60];
__int32 HANDS_ID; //0x07A8
char _0x07AC[60];
__int32 FINGER1_ID; //0x07E8
char _0x07EC[60];
__int32 FINGER2_ID; //0x0828
char _0x082C[60];
__int32 TRINKET1_ID; //0x0868
char _0x086C[60];
__int32 TRINKET2_ID; //0x08A8
char _0x08AC[60];
__int32 BACK_ID; //0x08E8
char _0x08EC[60];
__int32 MAINHAND_ID; //0x0928
char _0x092C[60];
__int32 OFFHAND_ID; //0x0968
char _0x096C[60];
__int32 RELIC_ID; //0x09A8
char _0x09AC[60];
__int32 TABARD_ID; //0x09E8
char _0x09EC[20];
};
Or try the LUA script UnitCanAttack and for names, GetUnitName
The LUA script function is,
Code:
typedef int ( __cdecl *oFrameScript) (char* a, char* b, int c);
static int doString(const char* command, ...)
{
char buf[4096] = {0};
va_list ap;
va_start(ap, command);
vsprintf(buf, command, ap);
va_end(ap);
DWORD FrameScript__Execute = 0x00706C80;
oFrameScript FrameScript = (oFrameScript)FrameScript__Execute;
return FrameScript(buf,buf,0);
}
typedef char *(__cdecl *oGetText)(char *a1, signed int a2, signed int a3);
static char* GetLocalizedText(const char* command, ...)
{
char buf[4096] = {0};
va_list ap;
va_start(ap, command);
vsprintf(buf, command, ap);
va_end(ap);
DWORD FrameScript__GetText = 0x00707200;
oGetText GetText = (oGetText)FrameScript__GetText;
return GetText(buf, -1, 0);
}