Code:
using System.Reflection;
namespace LazyLib.Wow
{
public class PublicPointers
{
/// <summary>
/// Globals
/// </summary>
public enum Globals
{
PlayerName = 0x3793A18, //Live good
}
/// <summary>
/// InGame
/// </summary>
public enum InGame
{
InGame = 0x3968EAC ,//live good
LoadingScreen = 0x0,//Reversed From Script_CanLogIn to CGlueMgr__CanLogIn
RealID = 0x3A576C8, Live good
InstanceSize = 0x3969D98, live good just seen it fig f update it
}
}
internal class Pointers
{
/// <summary>
/// ActionBar
/// </summary>
internal enum ActionBar
{
ActionBarFirstSlot = 0x39B8540,//live good
ActionBarBonus = ActionBarFirstSlot + 0x240,
CurrentActionBar = 0x3A49AC4, //Live good
}
/// <summary>
/// Battleground
/// </summary>
internal enum Battleground
{
BattlegroundStartTickcount = 0x39B1344,// GetBattlefieldInstanceRunTime
Timestamp = 0x3812954,//Live good
IsBattlegroundFinished = 0x0,//GetBattlefieldWinner
BattlegroundWinner = 0x0,// string GetBattlefieldWinner
BattlegroundInfo = 0x368D698,// Live good
UISelectedBattlegroundId = 0x0,
}
/// <summary>
/// Corpse
/// </summary>
internal enum Corpse
{
X = 0x0,
Y = X + 0x4,
Z = X + 0x8,
}
/// <summary>
/// Party
/// </summary>
internal enum Party
{
PartyOffset = 0x399EE30,// every pattern off by 2 idn why - 2 Live good
IsInGroupHome = 0x399EE30,// every pattern off by 2 idn why - 2 Live good
IsInGroupInstance = 0x399EE30,// every pattern off by 2 idn why - 2 Live good
NumOfPlayers = 0x178,//Script_GetNumGroupMembers
NumOfPlayers_SuBGroup = 0x17C,//// NumOFPlayers+4
PlayerGuid = 0x10,
}
/// <summary>
/// AutoLoot
/// </summary>
internal enum AutoLoot
{
Pointer = 0x3968940,//Live good
Offset = 0x5C, // Live good
}
/// <summary>
/// ClickToMove
/// </summary>
internal enum ClickToMove
{
Pointer = 0x3968900,// Live good
Offset = 0x5C, // Live good
}
/// <summary>
/// Reversed from CGUnit_C__GetCreatureRank
/// </summary>
internal enum CgUnitCGetCreatureRank
{
Offset1 = 0x898, // live good
Offset2 = 0x34, // live good
}
/// <summary>
/// reversed from CGUnit_C__GetCreatureType
/// </summary>
internal enum CgUnitCGetCreatureType
{
Offset1 = 0x898, // live good
Offset2 = 0x30, // live good
}
/// <summary>
/// reversed from CGWorldFrame__GetActiveCamera
/// </summary>
internal enum CgWorldFrameGetActiveCamera
{
CameraPointer = 0x3A56CD0, Live good
CameraOffset = 0x38E0,// Live good
CameraX = 0x10,
CameraY = 0x14,
CameraZ = 0x18,
CameraMatrix = 0x1C,
}
/// <summary>
/// Search for CGUnit_C::GetSkinnableType_Checked
/// </summary>
internal enum Skinning
{
SkinnableFlags1 = 0x898, // live good
SkinnableFlags2 = 0x0CC, // todo recheck for live
}
/// <summary>
/// AuctionHouse Future Look at this new fuckry
/// </summary>
internal enum AuctionHouse
{
AuctionListCount = 0x0,
AuctionList = AuctionListCount + 0x08 ,
AuctionOwnerCount = 0x0,
AuctionOwnerList = AuctionOwnerCount + 0x08 ,
AuctionBidderCount = 0x20,
AuctionBidderList = AuctionBidderCount + 0x08 ,
}
/// <summary>
/// reversed from CGActionBar__IsCurrentAction
/// </summary>
internal enum AutoAttack
{
IsAutoRepeatingSpell = 0x382DBD0, // live good
IsInMelee = 0xAF6C,
IsInMelee1 = 0x18A8,
AutoAttackFlag = 0xEE8,
AutoAttackMask = 0xEEC,
///Address seems to show the GUID of the Auto Attack target
AutoAttackGUID = 0xAF6C,
///Shows 0x06 when not wanding, 0x0C or 0x0E when wanding
///Wanding = 0xEF8
}
/// <summary>
/// CastingInfo
/// </summary>
internal enum CastingInfo
{
IsCasting2 = 0x19B0,// Script_UnitCastingInfo
IsCasting = 0x19B0,// Script_UnitCastingInfo
IsCastNotInterruptible = 0x1904,// Script_UnitCastingInfo
ChanneledCasting2 = 0x1A08,// Script_UnitCastingInfo
ChanneledCasting = 0x19C0,// Script_UnitChannelInfo//prb wrong 0x682 maybe
}
/// <summary>
/// Chat
/// </summary>
internal enum Chat : uint
{
ChatStart = 0x396B640, // live good
chatBufferPos = 0x399C164 , // live good
OffsetToNextMsg = 0xCC8,// live good
MsgSenderGuid = 0x00,// live good
MsgSenderName = 0x44, //live good
MsgFullMessage = 0xF6,// live good
MsgChatType = 0xCC0, live might be wrong
MsgChannelNum = 0xCB4, live might be wrong
MsgTimeStamp = 0xCB8, // live def wrong tho
ChatQueueDepth = 0x3C, // live good
}
/// <summary>
/// BlueChat
/// </summary>
internal enum Messages
{
EventMessage = 0x3969190,//Live good
}
/// <summary>
/// Container
/// </summary>
internal enum Container
{
EquippedBagGUID = 0x0,// GetBagAtIndex
}
/// <summary>
/// Globals
/// </summary>
internal enum Globals
{
RedMessage = 0x3969190,//Live good
MouseOverGUID = 0x3968ED0,// live good
LootWindow = 0x39BD570,// live good
ChatboxIsOpen = 0x383DBA4,//Live good
CursorType = 0x3A472A0,//Live good
CursorType2 = CursorType + 0x04 ,
SelectedSpellId = 0x0,
CGGameUI__m_cursorItem = 0x0,
CGGameUI__m_cursorSpell = 0x0,
IsMouseButtonPressed = 0x3812984,// Live good
Indoors = 0x0,
IsBobbing = 0x14C ,
ArchFacing = 0x198 ,
ArchFacingOffset2 = 0x30 ,
}
/// <summary>
/// KeyBinding // Reversed From Script_GetNumBindings
/// </summary>
internal enum KeyBinding
{
NumKeyBindings = 0x379EAB0,live good
First = 0x28,
Next = 0x18,
Key = 0x30,
Command = 0x58,// or 0x50
}
/// <summary>
/// Macros Todo Add Pattern for dumper
/// </summary>
internal enum MacroManager
{
Next = 0x0,
Name = 0x0,
Icon = 0x0,
Body = 0x0,
Base = 0x0,// MacroBase 4 Below GetRunningMacroButton STring
nbGeneralMacros = 0x0,// Found With GetNumMacros String
nbSpecificMacros = 0x0,// Found With GetNumMacros String
}
/// <summary>
/// Quest
/// </summary>
internal enum Quest
{
m_quests = 0x0,
m_numQuests = 0x39F4A38,//Live
m_currentQuest = 0x0,//Found In GetQuestID String
m_questTitle = 0x39E7970,//Live
m_gossipQuests = 0x0,
QuestsCompleted = 0x0,
GetNumQuestChoices = 0x0,//Found WithGetNumQuestChoices String // RewardChoiceItemIdCount
GetQuestReward = 0x0,
CGQuestInfo_Available__Quest = 0x0,
CGQuestInfo_Available__Num = 0x399F0D0, // live
CGQuestInfo_Active__Num = 0x0,//Found With GetNumActiveQuests String
CGQuestInfo_Active__Quest = 0x0,
}
/// <summary>
/// ObjectManager
/// </summary>
internal enum ObjectManager
{
CurMgrPointer = 0x38B4920,// live
LocalPlayerGUID = 0x3793A00,// live
TargetGUID = 0x368A670, // live
PetGUID = 0x0,
StorageField = 0x10 ,
ObjectType = 0x10, // live
NextObject = 0x30 ,// live
FirstObject = 0x120,// or 0x220
LocalGUID = 0x18, //live ObjectGUID or 0x140
}
/// <summary>
/// Script_UnitAffectingCombat
///v11 = v10 && (*(v10 + 0x1CD8) >> 19) & 1; // live
/// </summary>
internal enum InCombat
{
Mask = 19, // still live and classic
Offset2 = 0x158,
Offset1 = 0x188,
InCombatLive = 0x1CD8,// live
}
/// <summary>
/// Runes
/// </summary>
internal enum Runes
{
RuneTypes = 0x0,
RunesOffset = 0x39D22C4, // live good aka RunesAvailable
//Offset is usually RuneTypes + 0x64
}
/// <summary>
/// CGUnit_C__GetShapeshiftFormId
/// </summary>
internal enum ShapeshiftForm
{
ShapeshiftFormLive = 0x1D63, //live
BaseAddressOffset1 = 0x188,// good
BaseAddressOffset2 = 0x27B,// good
}
/// <summary>
/// SpellCooldown
/// </summary>
internal enum SpellCooldown : uint
{
CooldPown = 0x382DA10, // live good
}
/// <summary>
/// Search for PowerTypePointer v4 = *(PowerIndexArrays + 4 * (a2 + 0x13 * (*(a1 + 0x1C91) - 1)));
/// </summary>
internal enum PowerIndex
{
PowerIndexArrays = 0x3846048, //live good
Multiplicator = 13,// live
}
/// <summary>
/// Swimming v5 = v3 && (*(*(v3 + 0x198) + 0x58i64) >> 20) & 1;
/// </summary>
internal enum Swimming
{
Pointer = 0x198,
Offset = 0x58,
Mask = 0x100000,
}
/// <summary>
/// IsFlying
/// </summary>
internal enum IsFlying
{
Pointer = 0x198,
Offset = 0x58,
Mask = 0x1000000,
}
/// <summary>
/// IsFalling v5 = v3 && (*(*(v3 + 0x198) + 0x58i64) >> 11) & 1 && !((*(*(v3 + 0x198) + 0x58i64) >> 10) & 1);
/// </summary>
internal enum IsFalling
{
Pointer = 0x198,
Offset = 0x58,
Mask = 0x1000000,
}
/// <summary>
/// reversed from CGUnit_C__GetAura
/// </summary>
internal enum UnitAuras : uint
{
AuraCount1 = 0x1B10,
AuraCount2 = 0x1B18,
AuraTable1 = 0x1B18,
AuraTable2 = 0x1B10,
AuraSize = 0xB0,
AuraSpellId = 0x88,
AuraStack = 0x39,
TimeLeft = 0x40,
OwnerGUID = 0x20,
AuraTableOffset = 0x00,
AuraFlags = 0x90,
AuraLevel = 0x92,
}
/// <summary>
/// UnitName
/// </summary>
internal enum UnitName : uint
{
ObjectName1Live = 0x648,//Live
ObjectName2Live = 0xE0,// Live
ObjectName1 = 0x478,// good
ObjectName2 = 0xE0,// good
//PlayerNameGUIDOffset = 0x20,
//PlayerNameStringOffset = 0x31,
//PlayerNameCacheNext = 0x0,
PlayerNameCachePointer = 0x3459410,// live
UnitName1 = 0x1800, //good
UnitName2 = 0xF8, // good
UnitName1Live = 0x1DD0 ,//Live
UnitName2Live = 0xF8, //Live
}
/// <summary>
/// UnitSpeed
/// </summary>
internal enum UnitSpeed
{
Pointer1 = 0x198,
Pointer2 = 0xA0,
}
/// <summary>
/// WowObject
///.text:0000000001731D70 Unit_GetPosition proc near
///.text:0000000001731D70 push rbx ; Unit_GetPosition
///.text:0000000001731D72 sub rsp, 20h
///.text:0000000001731D76 mov rcx, [rcx+5F0h]
///.text:0000000001731D7D mov rbx, rdx
///.text:0000000001731D80 lea r8, [rcx+20h]
///.text:0000000001731D84 call CPassenger__GetPosition
///.text:0000000001731D89 mov rax, rbx
///.text:0000000001731D8C add rsp, 20h
///.text:0000000001731D90 pop rbx
///.text:0000000001731D91 retn
///.text:0000000001731D91 Unit_GetPosition endp
/// </summary>
internal enum WowObject
{
X = 0x15F8,
Y = X + 0x4,
Z = X + 0x8,
RotationOffset = X + 0x10,
Pitch = X + 0x14,
GameObjectX = 0x1B0,
GameObjectY = GameObjectX + 0x4,
GameObjectZ = GameObjectX + 0x8,
GameObjectRotation = GameObjectX + 0x10,
TransportGUID = 0x15F0,
}
/// <summary>
/// Zone
/// </summary>
internal enum Zone : uint
{
ZoneText = 0x37A42B0,// live recheck
ZoneID = 0x3969D4C,// live good
SubZoneText = 0x3969108,// live good
ContinentId = 0x3472B3C, // live good
GetContinentIDOffset = 0x00,// Dont Need
}
/// <summary>
/// UiFrame
/// </summary>
internal enum UiFrame
{
ScrWidth = 0x3457A0C,// live good
ScrHeight = ScrWidth + 0x4, // todo might be 0x3457A20 live
FrameBase = 0x3813660,//live good
CurrentFramePtr = 0x3813660,// Live good
CurrentFrameOffset = 0x290, // to check
FirstFrame = 0xF18,// Live And Classic good
NextFrame = 0xF08, // live And Classic good
EffectiveScale = 0x1C0, // live and classic
RegionsFirst = 0x2A8, // live good
RegionsNext = 0x298, // Live good
Visible = 0x1EC, // live good
Visible1 = 10,// live good
Visible2 = 1, // live good
LabelText = 0x280,// to check
EditBoxText = 0x330,// to check
Name = 0x28, //to check
FrameBottom = 0x190,// to check
FrameLeft = 0x194, //to check
FrameTop = 0x198, // to check
FrameRight = 0x19C, //to check
ParentFrame = 0x58, // to check
// Idc icon
IconNumber = 0x12,
ButtonEnabledPointer = 0x318,// Live good
ButtonEnabledMask = 0xF,// Live good
ButtonChecked = 0x468,// Live good
}
}
}