-
WOTLKC Build: 46158
Code:
publicclassOffsets_46158{
public class Guids
{
public const int Mouseover_Guid = 0x3020198;
public const int Pet_Guid = 0x3054098;
public const int Player_Guid = 0x2F6ECB0;
public const int Target_Guid = 0x2CFDC50;
public const int Last_Target_Guid = 0x2CFDC60;
public const int Last_Enemy_Guid = 0x2CFDC70;
public const int Last_Friendly_Guid = 0x2CFDC80;
public const int Focus_Guid = 0x2CFDC90;
public const int DialogWindowOwner_Guid = 0x2CFDCA0;
public const int Bag_Guid = 0x306F560;
}
public class Global_Data
{
public const int In_Game_Status = 0x3020144;
public const int Player_Name = 0x2F6ECC8;
public const int Corpse_Position = 0x2BB55A0;
public const int Last_Message = 0x301EF70;
public const int Loot_Window = 0x3054228;
}
public class Quests
{
public const int Base = 0x30645D0;
public const int NumQuests = 0x3064410;
public const int CurrentQuest = 0x308DE14;
public const int QuestTitle = 0x3098F60;
public const int GossipQuests = 0x305E7B8;
public const int NumQuestChoices = 0x309D410;
public const int QuestReward = 0x309D418;
}
public class Auto_Loot
{
public const int Base = 0x301FC90;
public const int Offset = 0x4C;
}
public class Click_To_Move
{
public const int Base = 0x301FC48;
public const int Offset = 0x4C;
}
public class Chat
{
public const int Open = 0x2F04134;
public const int Start = 0x3020820;
public const int Offset = 0xCB8;
public const int Message = 0xE6;
}
public class Key_Bindings
{
public const int Base = 0x2F6DF38;
}
public class Add_On
{
public const int Count = 0x30A2A78;
public const int List = 0x30A2FC0;
}
public class Spellbooks
{
public const int Count = 0x3053750;
public const int Base = 0x3053758;
public const int PetBase = 0x3053780;
public const int PetCount = 0x3053778;
}
public class Object_Manager
{
public const int Zone_ID = 0x301FB78;
public const int Names = 0x2CA5A10;
public const int Base = 0x301EE70;
public const int Cooldown = 0x2FBA060;
}
public class Battlegrounds
{
public const int Finished = 0x3056124;
public const int Winner = 0x3056128;
public const int Info = 0x2BBF288;
}
public class Camera
{
public const int Base = 0x2F4B178;
public const int Offset = 0x38E8;
}
public class Misc_Junk
{
public const int AddOnsLoaded = 0x30A2AA8;
public const int dword-2BE7798 = 0x2CFB360;
public const int Frame_Base = 0x2CFB360;
public const int Unk1 = 0x905A51;
public const int Macro_Manager = 0x2BC20F8;
public const int Addon_Count = 0x30A2A78;
public const int Addon_Collection = 0x2BC7EB0;
public const int CGParyInfoGetActiveParty = 0x3053FC0;
public const int Power_Table = 0x3A41183;
public const int Power_Table = 0x3A41183;
public const int Unknown = 0x309DCBF;
public const int Unknown2 = 0x2F04740;
public const int Unknown3 = 0x2CFD8B0;
public const int Unknown4 = 0x2CFD8A8;
public const int ScreenSize = 0x2B5FB9C;
public const int ScreenSize2 = 0x2B5FBA0;
}
}
"May all your bacon burn."
These ads disappear when you log in.
-
Post Thanks / Like - 4 Thanks
-
Member
-
Member
Thanks.
PS How check can attack from flags like lua api "UnitCanAttack" ?
-
Originally Posted by
ermite66
Thanks.
PS How check can attack from flags like lua api "UnitCanAttack" ?
It's a bit more than "can or can not" attack. While some scripts are a true/false (1/0) value, Others require you to check multiple things ie : unit flags, dynamic flags, faction template etc.
The first set of unit flags themselves can be found at (uint)[UnitBase + 0xD5F0]. Out of the first set of flags there's some of interest.
Code:
[Flags]
public enum Flags1 : uint
{
NoAttack = 0x80,
ImmunePC = 0x100,
ImmuneNPC = 0x200,
NoAttack2 = 0x10000,
Uninteractible = 0x2000000,
Immune = 0x80000000
}
A simple check if any of these are true (ugly, but it works) : var result = (UnitFlag1 & (Flags1.NoAttack | Flags1.NoAttack2 | Flags1.Immune | Flags1.ImmunePC | Flags1.ImmuneNPC | Flags1.Uninteractible)) != 0;
Unit dynamic flags are found at UnitBase + 0xDC, and to check if tapped: (DynamicFlag & 0x10) != 0; ("is lootable" being 0x4)
"May all your bacon burn."
-
Post Thanks / Like - 1 Thanks
ermite66 (1 members gave Thanks to Razzue for this useful post)
-
Member
Im reading corectly ? Flags are changed on combat, or if unit dead, ect, but for innactive enemy always Flag1 = 0 , Flag2 = 2048 , Flag3 = 0 , DynamiFlag = 0
Снимок.JPG
PSS for lootable unit dynamic = 0x4
what size of flag to read? 4 , 16 , 32 or 64 bit ?
Last edited by ermite66; 10-16-2022 at 10:55 AM.
-
Member
Originally Posted by
ermite66
Im reading corectly ? Flags are changed on combat, or if unit dead, ect, but for innactive enemy always Flag1 = 0 , Flag2 = 2048 , Flag3 = 0 , DynamiFlag = 0
Снимок.JPG
PSS for lootable unit dynamic = 0x4
what size of flag to read? 4 , 16 , 32 or 64 bit ?
regardless of size, all 4 flags are the same for units that i can attack and for friendly ones ...
-
Capture.JPG
Working as expected on my end.
As I said, there's MORE to it than just flag checking. If you want to learn how the script works you will need to reverse the game, and script yourself
"May all your bacon burn."
-
Member
Originally Posted by
Razzue
Capture.JPG
Working as expected on my end.
As I said, there's MORE to it than just flag checking. If you want to learn how the script works you will need to reverse the game, and script yourself

I think its compare factions with faction.dbc and factiontemplate.dbc ... but i dontno how extract this from wrath classic ... for navigation i use trinity core algorhytm for mob movement and 335a-12340 mmaps, it causes inconvenience =) but faction.dbc and factiontemplate.dbc doesnt match with wrath factions.
PS best way write internal hack ... but i have DigiCert for kernel ...
Last edited by ermite66; 10-16-2022 at 11:53 AM.
-
Established Member
const uint64_t UnitCanAttack = 0x13C8D50; // bool (CGObject* player, CGUnit* unit, bool isPet)
-
Member
How get zone id or location id from Zone_ID = 0x301FB78; ? I try find this on 335a 12340 dbc e.g. 1454 stormwind , and not found anithing ... or how extract wrath classic mpq's ?
-
Member
Originally Posted by
oiramario
const uint64_t UnitCanAttack = 0x13C8D50; // bool (CGObject* player, CGUnit* unit, bool isPet)
im externaly =)
-
Originally Posted by
ermite66
im externaly =)
So dump wow, open it up in Ida, rebase it, then go to that address and start reversing the script.
"May all your bacon burn."
-
Member
Razzue, How u use Offsets::Object_Manager::Zone_ID ? It can be conver to mapID (0 - Azeroth, 571 - Northrend , or zoneID for dange ), eg - in stormwind it return 1453 , in elvunforest 1429, need convert to location for continent , contetent is azeroth , id must be 0 , it may be convert by dbc, but dbc from 335a 12340 and mmaps too.
PS UnitCanAttack easy make by FactionTemplate.dbc , need check hostile fraction and location & SanctumFlag (for cur zone) == 0 , can see how it doing trinity core.
Last edited by ermite66; 10-17-2022 at 06:16 AM.
-
Originally Posted by
ermite66
Razzue, How u use Offsets::Object_Manager::Zone_ID ? It can be conver to mapID (0 - Azeroth, 571 - Northrend , or zoneID for dange ), eg - in stormwind it return 1453 , in elvunforest 1429, need convert to location for continent , contetent is azeroth , id must be 0 , it may be convert by dbc, but dbc from 335a 12340 and mmaps too.
PS UnitCanAttack easy make by FactionTemplate.dbc , need check hostile fraction and location & SanctumFlag (for cur zone) == 0 , can see how it doing trinity core.
I am well aware how it works xD as stated before I have a fully function external bot that runs exactly as expected 🤣 the whole point is for YOU to do some legwork instead of asking to be spoonfeed.
Zone ID = WoW.tools | Database browser[1]=1453
Map ID is (int)[[Game + ObjectManager] + x] (works with map DB2), area id's are (int)[Game + ObjectManager + x] and works with area table DB2. I'm not telling you the offsets, you can find them via CE/ReClass/Ida just fine.
Capture.JPG
Last edited by Razzue; 10-17-2022 at 06:40 AM.
"May all your bacon burn."
-
Member
Originally Posted by
Razzue
I am well aware how it works xD as stated before I have a fully function external bot that runs exactly as expected 🤣 the whole point is for YOU to do some legwork instead of asking to be spoonfeed.
Zone ID =
WoW.tools | Database browser[1]=1453
Map ID is (int)[[Game + ObjectManager] + x] (works with map DB2), area id's are (int)[Game + ObjectManager + x] and works with area table DB2. I'm not telling you the offsets, you can find them via CE/ReClass/Ida just fine.
Capture.JPG
and return in stormwind : 1453 for zoneid , 1519 for mapid and 0 for areaid ? i think find this
PS hurried, only 1 offset is, which is returned 1519 for stormwind and others maps. It can already be used with the DBC to get the continent.
Last edited by ermite66; 10-17-2022 at 08:55 AM.