Quote:
Originally Posted by korknob for my bot i used to do FindClosestMob() and set desired_target_id to the Mob.guid and hit tab until Player.target = desired_target_id but i found it easier to just do a WriteProcessMemory and set Player.target to desired_target_id. it seems to work a lot easier that way. yes its more detectable that way but blizz has to specifically check for it.
i use my own hack-ish mob struct
struct mob_struct
{
__int64 id; // unique mob identifier
int unknown1; // always 9?
int type; // mob id, can look up on www.thottbot.com/c<this number>
float selection_circle_size; //last patch prevents changing this to take effect
char zero[0x2c];
__int64 target; // mob current target
char zero2[0x10];
int current_health;
int zero3[2]; // mana %?
int health2;
int zero4;
int unknown3; // 40 42 0f 00
int health3; // not health
int unknown4; // 3c = 60, sometimes 79
int zero5;
int health4; // not health
int zero6;
int unknown5; // 40 42 0f 00
int level;
int con; // 07 = yellow, 14 = red, 1604 = green, 1610 = blue
int unknown7; // 00 02 02 00
int zero7[0x24];
int combat; // 00 00 00 00 = OOC, 00 08 08 00 = IC (526336)
};
and Mob.con = faction, so:
7 = Yellow/Neutral
14 = Red/Hostile
1604 = Green/NPC
1610 = Blue/Pet (probably also party members)
my FindTarget function calls FindClosestMob which runs through the unit list and then calls EvaluateMob() on each one to check level range, con, make sure that they're health != 0, and check their target to make sure its either 0 or targetting me so i dont attack other people's mobs. hope this helps |
thanks for your reply. however i am wondering where you got this? for instance:
int con; // 07 = yellow, 14 = red, 1604 = green, 1610 = blue
how would i read that value from the WOW Objects list? I know how to parse the data at this point, but i am wondering how to get to the con you listed. where is that data located in something such as this:
enum eUnitFields { offset: 2660?
UNIT_FIELD_CHARM=0x0,
UNIT_FIELD_SUMMON=0x8,
UNIT_FIELD_CHARMEDBY=0x10,
UNIT_FIELD_SUMMONEDBY=0x18,
UNIT_FIELD_CREATEDBY=0x20,
UNIT_FIELD_TARGET=0x28,
UNIT_FIELD_PERSUADED=0x30,
UNIT_FIELD_CHANNEL_OBJECT=0x38,
UNIT_FIELD_HEALTH=0x40,
UNIT_FIELD_POWER1=0x44,
UNIT_FIELD_POWER2=0x48,
UNIT_FIELD_POWER3=0x4C,
UNIT_FIELD_POWER4=0x50,
UNIT_FIELD_POWER5=0x54,
UNIT_FIELD_MAXHEALTH=0x58,
UNIT_FIELD_MAXPOWER1=0x5C,
UNIT_FIELD_MAXPOWER2=0x60,
UNIT_FIELD_MAXPOWER3=0x64,
UNIT_FIELD_MAXPOWER4=0x68,
UNIT_FIELD_MAXPOWER5=0x6C,
UNIT_FIELD_LEVEL=0x70,
UNIT_FIELD_FACTIONTEMPLATE=0x74,
UNIT_FIELD_BYTES_0=0x78,
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY=0x7C,
UNIT_VIRTUAL_ITEM_INFO=0x88,
UNIT_FIELD_FLAGS=0xA0,
UNIT_FIELD_FLAGS_2=0xA4,
UNIT_FIELD_AURA=0xA8,
UNIT_FIELD_AURAFLAGS=0x188,
UNIT_FIELD_AURALEVELS=0x1C0,
UNIT_FIELD_AURAAPPLICATIONS=0x1F8,
UNIT_FIELD_AURASTATE=0x230,
UNIT_FIELD_BASEATTACKTIME=0x234,
UNIT_FIELD_RANGEDATTACKTIME=0x23C,
UNIT_FIELD_BOUNDINGRADIUS=0x240,
UNIT_FIELD_COMBATREACH=0x244,
UNIT_FIELD_DISPLAYID=0x248,
UNIT_FIELD_NATIVEDISPLAYID=0x24C,
UNIT_FIELD_MOUNTDISPLAYID=0x250,
UNIT_FIELD_MINDAMAGE=0x254,
UNIT_FIELD_MAXDAMAGE=0x258,
UNIT_FIELD_MINOFFHANDDAMAGE=0x25C,
UNIT_FIELD_MAXOFFHANDDAMAGE=0x260,
UNIT_FIELD_BYTES_1=0x264,
UNIT_FIELD_PETNUMBER=0x268,
UNIT_FIELD_PET_NAME_TIMESTAMP=0x26C,
UNIT_FIELD_PETEXPERIENCE=0x270,
UNIT_FIELD_PETNEXTLEVELEXP=0x274,
UNIT_DYNAMIC_FLAGS=0x278,
UNIT_CHANNEL_SPELL=0x27C,
UNIT_MOD_CAST_SPEED=0x280,
UNIT_CREATED_BY_SPELL=0x284,
UNIT_NPC_FLAGS=0x288,
UNIT_NPC_EMOTESTATE=0x28C,
UNIT_TRAINING_POINTS=0x290,
UNIT_FIELD_STAT0=0x294,
UNIT_FIELD_STAT1=0x298,
UNIT_FIELD_STAT2=0x29C,
UNIT_FIELD_STAT3=0x2A0,
UNIT_FIELD_STAT4=0x2A4,
UNIT_FIELD_POSSTAT0=0x2A8,
UNIT_FIELD_POSSTAT1=0x2AC,
UNIT_FIELD_POSSTAT2=0x2B0,
UNIT_FIELD_POSSTAT3=0x2B4,
UNIT_FIELD_POSSTAT4=0x2B8,
UNIT_FIELD_NEGSTAT0=0x2BC,
UNIT_FIELD_NEGSTAT1=0x2C0,
UNIT_FIELD_NEGSTAT2=0x2C4,
UNIT_FIELD_NEGSTAT3=0x2C8,
UNIT_FIELD_NEGSTAT4=0x2CC,
UNIT_FIELD_RESISTANCES=0x2D0,
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE=0x2EC,
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE=0x308,
UNIT_FIELD_BASE_MANA=0x324,
UNIT_FIELD_BASE_HEALTH=0x328,
UNIT_FIELD_BYTES_2=0x32C,
UNIT_FIELD_ATTACK_POWER=0x330,
UNIT_FIELD_ATTACK_POWER_MODS=0x334,
UNIT_FIELD_ATTACK_POWER_MULTIPLIER=0x338,
UNIT_FIELD_RANGED_ATTACK_POWER=0x33C,
UNIT_FIELD_RANGED_ATTACK_POWER_MODS=0x340,
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER=0x344,
UNIT_FIELD_MINRANGEDDAMAGE=0x348,
UNIT_FIELD_MAXRANGEDDAMAGE=0x34C,
UNIT_FIELD_POWER_COST_MODIFIER=0x350,
UNIT_FIELD_POWER_COST_MULTIPLIER=0x36C,
UNIT_FIELD_MAXHEALTHMODIFIER=0x388,
UNIT_FIELD_PADDING=0x38C,
TOTAL_UNIT_FIELDS=0x58
};
enum ePlayerFields {
PLAYER_DUEL_ARBITER=0x0,
PLAYER_FLAGS=0x8,
PLAYER_GUILDID=0xC,
PLAYER_GUILDRANK=0x10,
PLAYER_BYTES=0x14,
PLAYER_BYTES_2=0x18,
PLAYER_BYTES_3=0x1C,
PLAYER_DUEL_TEAM=0x20,
PLAYER_GUILD_TIMESTAMP=0x24,
PLAYER_QUEST_LOG_1_1=0x28,
PLAYER_QUEST_LOG_1_2=0x2C,
PLAYER_QUEST_LOG_1_3=0x30,
PLAYER_QUEST_LOG_1_4=0x34,
PLAYER_QUEST_LOG_2_1=0x38,
PLAYER_QUEST_LOG_2_2=0x3C,
PLAYER_QUEST_LOG_2_3=0x40,
PLAYER_QUEST_LOG_2_4=0x44,
PLAYER_QUEST_LOG_3_1=0x48,
PLAYER_QUEST_LOG_3_2=0x4C,
PLAYER_QUEST_LOG_3_3=0x50,
PLAYER_QUEST_LOG_3_4=0x54,
PLAYER_QUEST_LOG_4_1=0x58,
PLAYER_QUEST_LOG_4_2=0x5C,
PLAYER_QUEST_LOG_4_3=0x60,
PLAYER_QUEST_LOG_4_4=0x64,
PLAYER_QUEST_LOG_5_1=0x68,
PLAYER_QUEST_LOG_5_2=0x6C,
PLAYER_QUEST_LOG_5_3=0x70,
PLAYER_QUEST_LOG_5_4=0x74,
PLAYER_QUEST_LOG_6_1=0x78,
PLAYER_QUEST_LOG_6_2=0x7C,
PLAYER_QUEST_LOG_6_3=0x80,
PLAYER_QUEST_LOG_6_4=0x84,
PLAYER_QUEST_LOG_7_1=0x88,
PLAYER_QUEST_LOG_7_2=0x8C,
PLAYER_QUEST_LOG_7_3=0x90,
PLAYER_QUEST_LOG_7_4=0x94,
PLAYER_QUEST_LOG_8_1=0x98,
PLAYER_QUEST_LOG_8_2=0x9C,
PLAYER_QUEST_LOG_8_3=0xA0,
PLAYER_QUEST_LOG_8_4=0xA4,
PLAYER_QUEST_LOG_9_1=0xA8,
PLAYER_QUEST_LOG_9_2=0xAC,
PLAYER_QUEST_LOG_9_3=0xB0,
PLAYER_QUEST_LOG_9_4=0xB4,
PLAYER_QUEST_LOG_10_1=0xB8,
PLAYER_QUEST_LOG_10_2=0xBC,
PLAYER_QUEST_LOG_10_3=0xC0,
PLAYER_QUEST_LOG_10_4=0xC4,
PLAYER_QUEST_LOG_11_1=0xC8,
PLAYER_QUEST_LOG_11_2=0xCC,
PLAYER_QUEST_LOG_11_3=0xD0,
PLAYER_QUEST_LOG_11_4=0xD4,
PLAYER_QUEST_LOG_12_1=0xD8,
PLAYER_QUEST_LOG_12_2=0xDC,
PLAYER_QUEST_LOG_12_3=0xE0,
PLAYER_QUEST_LOG_12_4=0xE4,
PLAYER_QUEST_LOG_13_1=0xE8,
PLAYER_QUEST_LOG_13_2=0xEC,
PLAYER_QUEST_LOG_13_3=0xF0,
PLAYER_QUEST_LOG_13_4=0xF4,
PLAYER_QUEST_LOG_14_1=0xF8,
PLAYER_QUEST_LOG_14_2=0xFC,
PLAYER_QUEST_LOG_14_3=0x100,
PLAYER_QUEST_LOG_14_4=0x104,
PLAYER_QUEST_LOG_15_1=0x108,
PLAYER_QUEST_LOG_15_2=0x10C,
PLAYER_QUEST_LOG_15_3=0x110,
PLAYER_QUEST_LOG_15_4=0x114,
PLAYER_QUEST_LOG_16_1=0x118,
PLAYER_QUEST_LOG_16_2=0x11C,
PLAYER_QUEST_LOG_16_3=0x120,
PLAYER_QUEST_LOG_16_4=0x124,
PLAYER_QUEST_LOG_17_1=0x128,
PLAYER_QUEST_LOG_17_2=0x12C,
PLAYER_QUEST_LOG_17_3=0x130,
PLAYER_QUEST_LOG_17_4=0x134,
PLAYER_QUEST_LOG_18_1=0x138,
PLAYER_QUEST_LOG_18_2=0x13C,
PLAYER_QUEST_LOG_18_3=0x140,
PLAYER_QUEST_LOG_18_4=0x144,
PLAYER_QUEST_LOG_19_1=0x148,
PLAYER_QUEST_LOG_19_2=0x14C,
PLAYER_QUEST_LOG_19_3=0x150,
PLAYER_QUEST_LOG_19_4=0x154,
PLAYER_QUEST_LOG_20_1=0x158,
PLAYER_QUEST_LOG_20_2=0x15C,
PLAYER_QUEST_LOG_20_3=0x160,
PLAYER_QUEST_LOG_20_4=0x164,
PLAYER_QUEST_LOG_21_1=0x168,
PLAYER_QUEST_LOG_21_2=0x16C,
PLAYER_QUEST_LOG_21_3=0x170,
PLAYER_QUEST_LOG_21_4=0x174,
PLAYER_QUEST_LOG_22_1=0x178,
PLAYER_QUEST_LOG_22_2=0x17C,
PLAYER_QUEST_LOG_22_3=0x180,
PLAYER_QUEST_LOG_22_4=0x184,
PLAYER_QUEST_LOG_23_1=0x188,
PLAYER_QUEST_LOG_23_2=0x18C,
PLAYER_QUEST_LOG_23_3=0x190,
PLAYER_QUEST_LOG_23_4=0x194,
PLAYER_QUEST_LOG_24_1=0x198,
PLAYER_QUEST_LOG_24_2=0x19C,
PLAYER_QUEST_LOG_24_3=0x1A0,
PLAYER_QUEST_LOG_24_4=0x1A4,
PLAYER_QUEST_LOG_25_1=0x1A8,
PLAYER_QUEST_LOG_25_2=0x1AC,
PLAYER_QUEST_LOG_25_3=0x1B0,
PLAYER_QUEST_LOG_25_4=0x1B4,
PLAYER_VISIBLE_ITEM_1_CREATOR=0x1B8,
PLAYER_VISIBLE_ITEM_1_0=0x1C0,
PLAYER_VISIBLE_ITEM_1_PROPERTIES=0x1F0,
PLAYER_VISIBLE_ITEM_1_PAD=0x1F4,
PLAYER_VISIBLE_ITEM_2_CREATOR=0x1F8,
PLAYER_VISIBLE_ITEM_2_0=0x200,
PLAYER_VISIBLE_ITEM_2_PROPERTIES=0x230,
PLAYER_VISIBLE_ITEM_2_PAD=0x234,
PLAYER_VISIBLE_ITEM_3_CREATOR=0x238,
PLAYER_VISIBLE_ITEM_3_0=0x240,
PLAYER_VISIBLE_ITEM_3_PROPERTIES=0x270,
PLAYER_VISIBLE_ITEM_3_PAD=0x274,
PLAYER_VISIBLE_ITEM_4_CREATOR=0x278,
PLAYER_VISIBLE_ITEM_4_0=0x280,
PLAYER_VISIBLE_ITEM_4_PROPERTIES=0x2B0,
PLAYER_VISIBLE_ITEM_4_PAD=0x2B4,
PLAYER_VISIBLE_ITEM_5_CREATOR=0x2B8,
PLAYER_VISIBLE_ITEM_5_0=0x2C0,
PLAYER_VISIBLE_ITEM_5_PROPERTIES=0x2F0,
PLAYER_VISIBLE_ITEM_5_PAD=0x2F4,
PLAYER_VISIBLE_ITEM_6_CREATOR=0x2F8,
PLAYER_VISIBLE_ITEM_6_0=0x300,
PLAYER_VISIBLE_ITEM_6_PROPERTIES=0x330,
PLAYER_VISIBLE_ITEM_6_PAD=0x334,
PLAYER_VISIBLE_ITEM_7_CREATOR=0x338,
PLAYER_VISIBLE_ITEM_7_0=0x340,
PLAYER_VISIBLE_ITEM_7_PROPERTIES=0x370,
PLAYER_VISIBLE_ITEM_7_PAD=0x374,
PLAYER_VISIBLE_ITEM_8_CREATOR=0x378,
PLAYER_VISIBLE_ITEM_8_0=0x380,
PLAYER_VISIBLE_ITEM_8_PROPERTIES=0x3B0,
PLAYER_VISIBLE_ITEM_8_PAD=0x3B4,
PLAYER_VISIBLE_ITEM_9_CREATOR=0x3B8,
PLAYER_VISIBLE_ITEM_9_0=0x3C0,
PLAYER_VISIBLE_ITEM_9_PROPERTIES=0x3F0,
PLAYER_VISIBLE_ITEM_9_PAD=0x3F4,
PLAYER_VISIBLE_ITEM_10_CREATOR=0x3F8,
PLAYER_VISIBLE_ITEM_10_0=0x400,
PLAYER_VISIBLE_ITEM_10_PROPERTIES=0x430,
PLAYER_VISIBLE_ITEM_10_PAD=0x434,
PLAYER_VISIBLE_ITEM_11_CREATOR=0x438,
PLAYER_VISIBLE_ITEM_11_0=0x440,
PLAYER_VISIBLE_ITEM_11_PROPERTIES=0x470,
PLAYER_VISIBLE_ITEM_11_PAD=0x474,
PLAYER_VISIBLE_ITEM_12_CREATOR=0x478,
PLAYER_VISIBLE_ITEM_12_0=0x480,
PLAYER_VISIBLE_ITEM_12_PROPERTIES=0x4B0,
PLAYER_VISIBLE_ITEM_12_PAD=0x4B4,
PLAYER_VISIBLE_ITEM_13_CREATOR=0x4B8,
PLAYER_VISIBLE_ITEM_13_0=0x4C0,
PLAYER_VISIBLE_ITEM_13_PROPERTIES=0x4F0,
PLAYER_VISIBLE_ITEM_13_PAD=0x4F4,
PLAYER_VISIBLE_ITEM_14_CREATOR=0x4F8,
PLAYER_VISIBLE_ITEM_14_0=0x500,
PLAYER_VISIBLE_ITEM_14_PROPERTIES=0x530,
PLAYER_VISIBLE_ITEM_14_PAD=0x534,
PLAYER_VISIBLE_ITEM_15_CREATOR=0x538,
PLAYER_VISIBLE_ITEM_15_0=0x540,
PLAYER_VISIBLE_ITEM_15_PROPERTIES=0x570,
PLAYER_VISIBLE_ITEM_15_PAD=0x574,
PLAYER_VISIBLE_ITEM_16_CREATOR=0x578,
PLAYER_VISIBLE_ITEM_16_0=0x580,
PLAYER_VISIBLE_ITEM_16_PROPERTIES=0x5B0,
PLAYER_VISIBLE_ITEM_16_PAD=0x5B4,
PLAYER_VISIBLE_ITEM_17_CREATOR=0x5B8,
PLAYER_VISIBLE_ITEM_17_0=0x5C0,
PLAYER_VISIBLE_ITEM_17_PROPERTIES=0x5F0,
PLAYER_VISIBLE_ITEM_17_PAD=0x5F4,
PLAYER_VISIBLE_ITEM_18_CREATOR=0x5F8,
PLAYER_VISIBLE_ITEM_18_0=0x600,
PLAYER_VISIBLE_ITEM_18_PROPERTIES=0x630,
PLAYER_VISIBLE_ITEM_18_PAD=0x634,
PLAYER_VISIBLE_ITEM_19_CREATOR=0x638,
PLAYER_VISIBLE_ITEM_19_0=0x640,
PLAYER_VISIBLE_ITEM_19_PROPERTIES=0x670,
PLAYER_VISIBLE_ITEM_19_PAD=0x674,
PLAYER_CHOSEN_TITLE=0x678,
PLAYER_FIELD_PAD_0=0x67C,
PLAYER_FIELD_INV_SLOT_HEAD=0x680,
PLAYER_FIELD_PACK_SLOT_1=0x738,
PLAYER_FIELD_BANK_SLOT_1=0x7B8,
PLAYER_FIELD_BANKBAG_SLOT_1=0x898,
PLAYER_FIELD_VENDORBUYBACK_SLOT_1=0x8D0,
PLAYER_FIELD_KEYRING_SLOT_1=0x930,
PLAYER_FIELD_VANITYPET_SLOT_1=0xA30,
PLAYER_FARSIGHT=0xAC0,
PLAYER__FIELD_KNOWN_TITLES=0xAC8,
PLAYER_XP=0xAD0,
PLAYER_NEXT_LEVEL_XP=0xAD4,
PLAYER_SKILL_INFO_1_1=0xAD8,
PLAYER_CHARACTER_POINTS1=0x10D8,
PLAYER_CHARACTER_POINTS2=0x10DC,
PLAYER_TRACK_CREATURES=0x10E0,
PLAYER_TRACK_RESOURCES=0x10E4,
PLAYER_BLOCK_PERCENTAGE=0x10E8,
PLAYER_DODGE_PERCENTAGE=0x10EC,
PLAYER_PARRY_PERCENTAGE=0x10F0,
PLAYER_EXPERTISE=0x10F4,
PLAYER_OFFHAND_EXPERTISE=0x10F8,
PLAYER_CRIT_PERCENTAGE=0x10FC,
PLAYER_RANGED_CRIT_PERCENTAGE=0x1100,
PLAYER_OFFHAND_CRIT_PERCENTAGE=0x1104,
PLAYER_SPELL_CRIT_PERCENTAGE1=0x1108,
PLAYER_SHIELD_BLOCK=0x1124,
PLAYER_EXPLORED_ZONES_1=0x1128,
PLAYER_REST_STATE_EXPERIENCE=0x1228,
PLAYER_FIELD_COINAGE=0x122C,
PLAYER_FIELD_MOD_DAMAGE_DONE_POS=0x1230,
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG=0x124C,
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT=0x1268,
PLAYER_FIELD_MOD_HEALING_DONE_POS=0x1284,
PLAYER_FIELD_MOD_TARGET_RESISTANCE=0x1288,
PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE=0x128C,
PLAYER_FIELD_BYTES=0x1290,
PLAYER_AMMO_ID=0x1294,
PLAYER_SELF_RES_SPELL=0x1298,
PLAYER_FIELD_PVP_MEDALS=0x129C,
PLAYER_FIELD_BUYBACK_PRICE_1=0x12A0,
PLAYER_FIELD_BUYBACK_TIMESTAMP_1=0x12D0,
PLAYER_FIELD_KILLS=0x1300,
PLAYER_FIELD_TODAY_CONTRIBUTION=0x1304,
PLAYER_FIELD_YESTERDAY_CONTRIBUTION=0x1308,
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS=0x130C,
PLAYER_FIELD_BYTES2=0x1310,
PLAYER_FIELD_WATCHED_FACTION_INDEX=0x1314,
PLAYER_FIELD_COMBAT_RATING_1=0x1318,
PLAYER_FIELD_ARENA_TEAM_INFO_1_1=0x1378,
PLAYER_FIELD_HONOR_CURRENCY=0x13C0,
PLAYER_FIELD_ARENA_CURRENCY=0x13C4,
PLAYER_FIELD_MOD_MANA_REGEN=0x13C8,
PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT=0x13CC,
PLAYER_FIELD_MAX_LEVEL=0x13D0,
PLAYER_FIELD_DAILY_QUESTS_1=0x13D4,
TOTAL_PLAYER_FIELDS=0xF2
};
i understand that you made your own struct to hold the data, but how did you fill that struct? where did you get the data for the con you listed?
thanks for your replies!