* Update to 2.3.0 client version, big thx to bLuma for patch!

* fixed minor bug with uninitialized scenestate in gui
* added some debug output to the WorldSession connection process, thx to visagalis for reporting a problem with it. real problem source yet unknown.
*** please report any bugs!
This commit is contained in:
false_genesis 2007-12-23 16:36:59 +00:00
parent d1d5ec309c
commit 02df5d5261
16 changed files with 3049 additions and 2839 deletions

View File

@ -58,8 +58,8 @@ charname=Pseuwow
// Client emulation configuration // Client emulation configuration
ClientVersion=2.1.3 ClientVersion=2.3.0
ClientBuild=6898 ClientBuild=7561
ClientLanguage=enUS ClientLanguage=enUS
// or change to enGB, deDE, ... // or change to enGB, deDE, ...
@ -114,3 +114,4 @@ rmcontrolhost=localhost
useMaps=0 useMaps=0

View File

@ -14,7 +14,7 @@ SET,color ${@0}
DEFAULT,i 0 DEFAULT,i 0
TOINT,i ${i} TOINT,i ${i}
DEFAULT,color 6679FF DEFAULT,color 6679FF
SET,link |cff${color}|Hitem:${i}:0:0:0|h[Item ${i}]|h|r SET,link |cff${color}|Hitem:${i}:0:0:0:0:0:0:0|h[Item ${i}]|h|r
UNSET i UNSET i
UNSET color UNSET color

View File

@ -21,9 +21,10 @@ SAY [${@version_short}] login successful.
EMOTE 126 EMOTE 126
// join some channels... // join some channels...
JOINCHANNEL generalchat //JOINCHANNEL generalchat
JOINCHANNEL help //JOINCHANNEL help
JOINCHANNEL tradee //JOINCHANNEL tradee
//listchannel generalchat
// ... // ...
// Spell 836 = LoginEffect // Spell 836 = LoginEffect

View File

@ -37,7 +37,7 @@ PseuGUI::PseuGUI()
_initialized = false; _initialized = false;
_mustdie = false; _mustdie = false;
_driverType = video::EDT_BURNINGSVIDEO; // nulldevice makes not really a sense to display stuff _driverType = video::EDT_BURNINGSVIDEO; // nulldevice makes not really a sense to display stuff
_scenestate = SCENESTATE_NULL; _scenestate = _scenestate_new = SCENESTATE_NULL;
_smgr = NULL; _smgr = NULL;
_device = NULL; _device = NULL;
_guienv = NULL; _guienv = NULL;
@ -49,6 +49,7 @@ PseuGUI::~PseuGUI()
{ {
this->Cancel(); this->Cancel();
_instance->DeleteGUI(); // this makes the instance set its gui ptr to NULL _instance->DeleteGUI(); // this makes the instance set its gui ptr to NULL
logdebug("PseuGUI::~PseuGUI()");
} }
void PseuGUI::SetDriver(uint8 driverId) void PseuGUI::SetDriver(uint8 driverId)

View File

@ -140,6 +140,7 @@ void RealmSession::ClearSocket(void)
void RealmSession::SetMustDie(void) void RealmSession::SetMustDie(void)
{ {
_mustdie = true; _mustdie = true;
logdebug("RealmSession: Must die now.");
} }
bool RealmSession::MustDie(void) bool RealmSession::MustDie(void)

View File

@ -118,6 +118,7 @@ void WorldSession::SendCastSpell(uint32 spellid, bool nocheck)
ByteBuffer temp; ByteBuffer temp;
uint16 flags=TARGET_FLAG_SELF; // target mask. spellcast implementeation needs to be changed if TARGET_MASK_SELF is != 0 uint16 flags=TARGET_FLAG_SELF; // target mask. spellcast implementeation needs to be changed if TARGET_MASK_SELF is != 0
packet << spellid; packet << spellid;
packet << (uint8)0; // unk
if(my->GetTarget() != GetGuid()) // self cast? if(my->GetTarget() != GetGuid()) // self cast?
{ {
if(target->GetTypeId() == TYPEID_PLAYER || target->GetTypeId() == TYPEID_UNIT) if(target->GetTypeId() == TYPEID_PLAYER || target->GetTypeId() == TYPEID_UNIT)
@ -180,3 +181,4 @@ void WorldSession::SendWhoListRequest(uint32 minlvl, uint32 maxlvl, uint32 racem

View File

@ -11,7 +11,7 @@
#include "Item.h" #include "Item.h"
// increase this number whenever you change something that makes old files unusable // increase this number whenever you change something that makes old files unusable
uint32 ITEMPROTOTYPES_CACHE_VERSION = 0x00000001; uint32 ITEMPROTOTYPES_CACHE_VERSION = 0x00000002;
PlayerNameCache::~PlayerNameCache() PlayerNameCache::~PlayerNameCache()
{ {
@ -261,6 +261,7 @@ void ItemProtoCache_InsertDataToSession(WorldSession *session)
buf >> proto->socketBonus; buf >> proto->socketBonus;
buf >> proto->GemProperties; buf >> proto->GemProperties;
buf >> proto->ExtendedCost; buf >> proto->ExtendedCost;
buf >> proto->RequiredArenaRank;
buf >> proto->RequiredDisenchantSkill; buf >> proto->RequiredDisenchantSkill;
buf >> proto->ArmorDamageModifier; buf >> proto->ArmorDamageModifier;
@ -378,6 +379,7 @@ void ItemProtoCache_WriteDataToCache(WorldSession *session)
buf << proto->socketBonus; buf << proto->socketBonus;
buf << proto->GemProperties; buf << proto->GemProperties;
buf << proto->ExtendedCost; buf << proto->ExtendedCost;
buf << proto->RequiredArenaRank;
buf << proto->RequiredDisenchantSkill; buf << proto->RequiredDisenchantSkill;
buf << proto->ArmorDamageModifier; buf << proto->ArmorDamageModifier;

View File

@ -218,13 +218,13 @@ enum INVENTORY_CLASS
// but this value used in code as implementation workaround // but this value used in code as implementation workaround
enum ITEM_SUBCLASS_CONSUMABLE enum ITEM_SUBCLASS_CONSUMABLE
{ {
ITEM_SUBCLASS_FOOD = 1, ITEM_SUBCLASS_POTION = 1,
ITEM_SUBCLASS_LIQUID = 2, ITEM_SUBCLASS_ELIXIR = 2,
ITEM_SUBCLASS_POTION = 3, ITEM_SUBCLASS_FLASK = 3,
ITEM_SUBCLASS_SCROLL = 4, ITEM_SUBCLASS_SCROLL = 4,
ITEM_SUBCLASS_BANDAGE = 5, ITEM_SUBCLASS_FOOD = 5,
ITEM_SUBCLASS_HEALTHSTONE = 6, ITEM_SUBCLASS_ITEM_ENHANCEMENT = 6,
ITEM_SUBCLASS_COMBAT_EFFECT = 7 ITEM_SUBCLASS_BANDAGE = 7
}; };
enum ITEM_SUBCLASS_CONTAINER enum ITEM_SUBCLASS_CONTAINER
@ -233,7 +233,10 @@ enum ITEM_SUBCLASS_CONTAINER
ITEM_SUBCLASS_SOUL_CONTAINER = 1, ITEM_SUBCLASS_SOUL_CONTAINER = 1,
ITEM_SUBCLASS_HERB_CONTAINER = 2, ITEM_SUBCLASS_HERB_CONTAINER = 2,
ITEM_SUBCLASS_ENCHANTING_CONTAINER = 3, ITEM_SUBCLASS_ENCHANTING_CONTAINER = 3,
ITEM_SUBCLASS_ENGINEERING_CONTAINER = 4 ITEM_SUBCLASS_ENGINEERING_CONTAINER = 4,
ITEM_SUBCLASS_GEM_CONTAINER = 5,
ITEM_SUBCLASS_MINING_CONTAINER = 6,
ITEM_SUBCLASS_LEATHERWORKING_CONTAINER = 7
}; };
enum INVENTORY_SUBCLASS_WEAPON enum INVENTORY_SUBCLASS_WEAPON
@ -283,7 +286,16 @@ enum ITEM_SUBCLASS_TRADE_GOODS
ITEM_SUBCLASS_TRADE_GOODS = 0, ITEM_SUBCLASS_TRADE_GOODS = 0,
ITEM_SUBCLASS_PARTS = 1, ITEM_SUBCLASS_PARTS = 1,
ITEM_SUBCLASS_EXPLOSIVES = 2, ITEM_SUBCLASS_EXPLOSIVES = 2,
ITEM_SUBCLASS_DEVICES = 3 ITEM_SUBCLASS_DEVICES = 3,
ITEM_SUBCLASS_JEWELCRAFTING = 4,
ITEM_SUBCLASS_CLOTH = 5,
ITEM_SUBCLASS_LEATHER = 6,
ITEM_SUBCLASS_METAL_STONE = 7,
ITEM_SUBCLASS_MEAT = 8,
ITEM_SUBCLASS_HERB = 9,
ITEM_SUBCLASS_ELEMENTAZL = 10,
ITEM_SUBCLASS_TRADE_GOODS_OTHER = 11,
ITEM_SUBCLASS_ENCHANTING = 12
}; };
enum ITEM_SUBCLASS_BOOK enum ITEM_SUBCLASS_BOOK
@ -399,6 +411,7 @@ struct ItemProto
uint32 socketBonus; uint32 socketBonus;
uint32 GemProperties; uint32 GemProperties;
uint32 ExtendedCost; uint32 ExtendedCost;
uint32 RequiredArenaRank;
uint32 RequiredDisenchantSkill; uint32 RequiredDisenchantSkill;
float ArmorDamageModifier; float ArmorDamageModifier;
}; };

View File

@ -29,7 +29,6 @@
// when renaming opcodes, replace old name by the new one // when renaming opcodes, replace old name by the new one
const char* worldOpcodeNames[] = const char* worldOpcodeNames[] =
{ {
"MSG_NULL_ACTION", // MSG_NULL_ACTION "MSG_NULL_ACTION", // MSG_NULL_ACTION
"CMSG_BOOTME", // CMSG_BOOTME "CMSG_BOOTME", // CMSG_BOOTME
"CMSG_DBLOOKUP", // CMSG_DBLOOKUP "CMSG_DBLOOKUP", // CMSG_DBLOOKUP
@ -771,7 +770,7 @@ const char* worldOpcodeNames[] =
"CMSG_AREA_SPIRIT_HEALER_QUERY", // CMSG_AREA_SPIRIT_HEALER_QUERY "CMSG_AREA_SPIRIT_HEALER_QUERY", // CMSG_AREA_SPIRIT_HEALER_QUERY
"CMSG_AREA_SPIRIT_HEALER_QUEUE", // CMSG_AREA_SPIRIT_HEALER_QUEUE "CMSG_AREA_SPIRIT_HEALER_QUEUE", // CMSG_AREA_SPIRIT_HEALER_QUEUE
"SMSG_AREA_SPIRIT_HEALER_TIME", // SMSG_AREA_SPIRIT_HEALER_TIME "SMSG_AREA_SPIRIT_HEALER_TIME", // SMSG_AREA_SPIRIT_HEALER_TIME
"CMSG_HARDWARE_SURVEY_RESULTS", //CMSG_HARDWARE_SURVEY_RESULTS "CMSG_GM_UNTEACH", // CMSG_GM_UNTEACH
"SMSG_WARDEN_DATA", // SMSG_WARDEN_DATA "SMSG_WARDEN_DATA", // SMSG_WARDEN_DATA
"CMSG_WARDEN_DATA", // CMSG_WARDEN_DATA "CMSG_WARDEN_DATA", // CMSG_WARDEN_DATA
"SMSG_GROUP_JOINED_BATTLEGROUND", // SMSG_GROUP_JOINED_BATTLEGROUND "SMSG_GROUP_JOINED_BATTLEGROUND", // SMSG_GROUP_JOINED_BATTLEGROUND
@ -792,200 +791,267 @@ const char* worldOpcodeNames[] =
"SMSG_MINIGAME_STATE", // SMSG_MINIGAME_STATE "SMSG_MINIGAME_STATE", // SMSG_MINIGAME_STATE
"CMSG_MINIGAME_MOVE", // CMSG_MINIGAME_MOVE "CMSG_MINIGAME_MOVE", // CMSG_MINIGAME_MOVE
"SMSG_MINIGAME_MOVE_FAILED", // SMSG_MINIGAME_MOVE_FAILED "SMSG_MINIGAME_MOVE_FAILED", // SMSG_MINIGAME_MOVE_FAILED
"UNKNOWN", //762 "SMSG_INSTANCE_RESET_SCHEDULED", // SMSG_INSTANCE_RESET_SCHEDULED
"SMSG_COMPRESSED_MOVE", //SMSG_COMPRESSED_MOVE= 763, "SMSG_COMPRESSED_MOVE", // SMSG_COMPRESSED_MOVE
"CMSG_GUILD_CHANGEINFO", // CMSG_GUILD_CHANGEINFO "CMSG_GUILD_CHANGEINFO", // CMSG_GUILD_CHANGEINFO
"SMSG_UNKNOWN_765", //SMSG_UNKNOWN_765 = 765 "SMSG_TRIAL_RESTRICTED", // SMSG_TRIAL_RESTRICTED
"SMSG_SET_MOVE_SPEED", //SMSG_SET_MOVE_SPEED = 766 "SMSG_SET_MOVE_SPEED", // SMSG_SET_MOVE_SPEED
"SMSG_SET_RUN_BACK_SPEED", // 767 "SMSG_SET_RUN_BACK_SPEED", // SMSG_SET_RUN_BACK_SPEED
"SMSG_SET_SWIM_SPEED", // 768 "SMSG_SET_SWIM_SPEED", // SMSG_SET_SWIM_SPEED
"SMSG_UNKNOWN_769", // 769 "UMSG_UNKNOWN_769", // UMSG_UNKNOWN_769
"SMSG_SET_SWIM_BACK_SPEED", // 770"MSG_SET_TURN_RATE", "SMSG_SET_SWIM_BACK_SPEED", // SMSG_SET_SWIM_BACK_SPEED
"UNKNOWN", // 771 "SMSG_SET_TURN_RATE", // SMSG_SET_TURN_RATE
"SMSG_UNKNOWN_772", // 772 "SMSG_UNKNOWN_772", // SMSG_UNKNOWN_772
"SMSG_UNKNOWN_773", // 773 "SMSG_UNKNOWN_773", // SMSG_UNKNOWN_773
"SMSG_UNKNOWN_774", // 774 "SMSG_UNKNOWN_774", // SMSG_UNKNOWN_774
"SMSG_UNKNOWN_775", // 775 "SMSG_UNKNOWN_775", // SMSG_UNKNOWN_775
"SMSG_UNKNOWN_776", // 776 "SMSG_UNKNOWN_776", // SMSG_UNKNOWN_776
"SMSG_MOVE_SET_WATERWALK", // 777 "SMSG_MOVE_SET_WATERWALK", // SMSG_MOVE_SET_WATERWALK
"SMSG_MOVE_STOP_WATERWALK", // 778 "SMSG_MOVE_STOP_WATERWALK", // SMSG_MOVE_STOP_WATERWALK
"SMSG_UNKNOWN_779", // 779 "SMSG_UNKNOWN_779", // SMSG_UNKNOWN_779
"SMSG_UNKNOWN_780", // 780 "SMSG_UNKNOWN_780", // SMSG_UNKNOWN_780
"SMSG_MOVE_STOP_WALK", // 781 "SMSG_MOVE_STOP_WALK", // SMSG_MOVE_STOP_WALK
"SMSG_MOVE_START_WALK", // 782 "SMSG_MOVE_START_WALK", // SMSG_MOVE_START_WALK
"UNKNOWN", // 783 "UMSG_UNKNOWN_783", // UMSG_UNKNOWN_783
"UNKNOWN", // 784 "UMSG_UNKNOWN_784", // UMSG_UNKNOWN_784
"UNKNOWN", // 785 "UMSG_UNKNOWN_785", // UMSG_UNKNOWN_785
"CMSG_ACTIVATETAXI_FAR", // 786 "CMSG_ACTIVATETAXI_FAR", // CMSG_ACTIVATETAXI_FAR
"UNKNOWN", // 787 causes client crash "UMSG_UNKNOWN_787", // UMSG_UNKNOWN_787
"UNKNOWN", // 788 "UMSG_UNKNOWN_788", // UMSG_UNKNOWN_788
"UNKNOWN", // 789 "UMSG_UNKNOWN_789", // UMSG_UNKNOWN_789
"UNKNOWN", // 790 "UMSG_UNKNOWN_790", // UMSG_UNKNOWN_790
"CMSG_FIELD_WATCHED_FACTION_INACTIVE", // 791 "CMSG_FIELD_WATCHED_FACTION_INACTIVE", // CMSG_FIELD_WATCHED_FACTION_INACTIVE
"CMSG_FIELD_WATCHED_FACTION_SHOW_BAR", // 792 "CMSG_FIELD_WATCHED_FACTION_SHOW_BAR", // CMSG_FIELD_WATCHED_FACTION_SHOW_BAR
"SMSG_UNKNOWN_793", // 793 "SMSG_UNKNOWN_793", // SMSG_UNKNOWN_793
"SMSG_UNKNOWN_794", // 794 "SMSG_UNKNOWN_794", // SMSG_UNKNOWN_794
"UNKNOWN", // 795 "UMSG_UNKNOWN_795", // UMSG_UNKNOWN_795
"SMSG_UNKNOWN_796", // 796 "SMSG_UNKNOWN_796", // SMSG_UNKNOWN_796
"CMSG_RESET_INSTANCES", // 797 "CMSG_RESET_INSTANCES", // CMSG_RESET_INSTANCES
"SMSG_RESET_INSTANCES_RESULT", // 798 "SMSG_RESET_INSTANCES_SUCCESS", // SMSG_RESET_INSTANCES_SUCCESS
"UNKNOWN", // 799 "SMSG_RESET_INSTANCES_FAILED", // SMSG_RESET_INSTANCES_FAILED
"SMSG_UNKNOWN_800", // 800 "SMSG_UNKNOWN_800", // SMSG_UNKNOWN_800
"MSG_RAID_ICON_TARGET", // 801 "MSG_RAID_ICON_TARGET", // MSG_RAID_ICON_TARGET
"MSG_RAID_READY_CHECK", // 802 "MSG_RAID_READY_CHECK", // MSG_RAID_READY_CHECK
"UNKNOWN", // 803 "UMSG_UNKNOWN_803", // UMSG_UNKNOWN_803
"SMSG_AI_UNKNOWN", // 804 "SMSG_AI_UNKNOWN", // SMSG_AI_UNKNOWN
"SMSG_UNKNOWN_805", // 805 "SMSG_UNKNOWN_805", // SMSG_UNKNOWN_805
"UNKNOWN", // 806 "UMSG_UNKNOWN_806", // UMSG_UNKNOWN_806
"UNKNOWN", // 807 "UMSG_UNKNOWN_807", // UMSG_UNKNOWN_807
"SMSG_UNKNOWN_808", // 808 "SMSG_GM_SURVEY_REQUEST", // SMSG_GM_SURVEY_REQUEST
"MSG_SET_DUNGEON_DIFFICULTY", // 809 "MSG_SET_DUNGEON_DIFFICULTY", // MSG_SET_DUNGEON_DIFFICULTY
"UNKNOWN", // 810 "CMSG_GM_SURVEY_RESULTS", // CMSG_GM_SURVEY_RESULTS
"SMSG_UNKNOWN_811", // 811 "SMSG_UNKNOWN_811", // SMSG_UNKNOWN_811
"UNKNOWN", // 812 "UMSG_UNKNOWN_812", // UMSG_UNKNOWN_812
"UNKNOWN", // 813 "UMSG_UNKNOWN_813", // UMSG_UNKNOWN_813
"UNKNOWN", // 814 "UMSG_UNKNOWN_814", // UMSG_UNKNOWN_814
"SMSG_UNKNOWN_815", // 815 "SMSG_SPELL_INSTA_KILL_SELF", // SMSG_SPELL_INSTA_KILL_SELF
"SMSG_UNKNOWN_816", // 816 "SMSG_UNKNOWN_816", // SMSG_UNKNOWN_816
"UNKNOWN", // 817 "UMSG_UNKNOWN_817", // UMSG_UNKNOWN_817
"SMSG_UNKNOWN_818", // 818 "SMSG_ANTISPAM", // SMSG_ANTISPAM
"UNKNOWN", // 819 "UMSG_UNKNOWN_819", // UMSG_UNKNOWN_819
"UNKNOWN", // 820 "UMSG_UNKNOWN_820", // UMSG_UNKNOWN_820
"UNKNOWN", // 821 "UMSG_UNKNOWN_821", // UMSG_UNKNOWN_821
"UNKNOWN", // 822 "UMSG_UNKNOWN_822", // UMSG_UNKNOWN_822
"UNKNOWN", // 823 "UMSG_UNKNOWN_823", // UMSG_UNKNOWN_823
"UNKNOWN", // 824 "UMSG_UNKNOWN_824", // UMSG_UNKNOWN_824
"UNKNOWN", // 825 "UMSG_UNKNOWN_825", // UMSG_UNKNOWN_825
"SMSG_OUTDOORPVP_NOTIFY", //SMSG_OUTDOORPVP_NOTIFY 826 "SMSG_OUTDOORPVP_NOTIFY", // SMSG_OUTDOORPVP_NOTIFY
"SMSG_OUTDOORPVP_NOTIFY2", // 827 "UMSG_UNKNOWN_827", // UMSG_UNKNOWN_827
"UNKNOWN", // 828 "UMSG_UNKNOWN_828", // UMSG_UNKNOWN_828
"SMSG_MOTD", // 829 "SMSG_MOTD", // SMSG_MOTD
"UNKNOWN", // 830 "UMSG_UNKNOWN_830", // UMSG_UNKNOWN_830
"UNKNOWN", // 831 "UMSG_UNKNOWN_831", // UMSG_UNKNOWN_831
"UNKNOWN", // 832 "UMSG_UNKNOWN_832", // UMSG_UNKNOWN_832
"SMSG_UNKNOWN_833", // 833 "SMSG_UNKNOWN_833", // SMSG_UNKNOWN_833
"SMSG_UNKNOWN_834", // 834 "SMSG_UNKNOWN_834", // SMSG_UNKNOWN_834
"SMSG_FLY_MODE_START", // 835 "SMSG_FLY_MODE_START", // SMSG_FLY_MODE_START
"SMSG_FLY_MODE_STOP", // 836 "SMSG_FLY_MODE_STOP", // SMSG_FLY_MODE_STOP
"CMSG_MOVE_FLY_MODE_CHANGE_ACK", // 837 "CMSG_MOVE_FLY_MODE_CHANGE_ACK", // CMSG_MOVE_FLY_MODE_CHANGE_ACK
"CMSG_MOVE_FLY_STATE_CHANGE", // 838 "MSG_MOVE_FLY_STATE_CHANGE", // MSG_MOVE_FLY_STATE_CHANGE
"CMSG_SOCKET_ITEM", //CMSG_SOCKET_ITEM 839 "CMSG_SOCKET_ITEM", // CMSG_SOCKET_ITEM
"UNKNOWN", // 840 "UMSG_UNKNOWN_840, CMSG?", // UMSG_UNKNOWN_840, CMSG?
"SMSG_ARENA_TEAM_COMMAND_RESULT", // 841 "SMSG_ARENA_TEAM_COMMAND_RESULT", // SMSG_ARENA_TEAM_COMMAND_RESULT
"UNKNOWN", // 842 "UMSG_UNKNOWN_842", // UMSG_UNKNOWN_842
"CMSG_ARENA_TEAM_QUERY", // 843 "CMSG_ARENA_TEAM_QUERY", // CMSG_ARENA_TEAM_QUERY
"SMSG_ARENA_TEAM_QUERY_RESPONSE", // 844 "SMSG_ARENA_TEAM_QUERY_RESPONSE", // SMSG_ARENA_TEAM_QUERY_RESPONSE
"CMSG_ARENA_TEAM_ROSTER", // 845 "CMSG_ARENA_TEAM_ROSTER", // CMSG_ARENA_TEAM_ROSTER
"SMSG_ARENA_TEAM_ROSTER", // 846 "SMSG_ARENA_TEAM_ROSTER", // SMSG_ARENA_TEAM_ROSTER
"CMSG_ARENA_TEAM_ADD_MEMBER", // 847 "CMSG_ARENA_TEAM_INVITE_BYNAME", // CMSG_ARENA_TEAM_INVITE_BYNAME
"SMSG_ARENA_TEAM_INVITE", // 848 "SMSG_ARENA_TEAM_INVITE", // SMSG_ARENA_TEAM_INVITE
"CMSG_ARENA_TEAM_INVITE_ACCEPT", // 849 "CMSG_ARENA_TEAM_ACCEPT", // CMSG_ARENA_TEAM_ACCEPT
"CMSG_ARENA_TEAM_INVITE_DECLINE", // 850 "CMSG_ARENA_TEAM_DECLINE", // CMSG_ARENA_TEAM_DECLINE
"CMSG_ARENA_TEAM_LEAVE", // 851 "CMSG_ARENA_TEAM_LEAVE", // CMSG_ARENA_TEAM_LEAVE
"CMSG_ARENA_TEAM_REMOVE_FROM_TEAM", // 852 "CMSG_ARENA_TEAM_UNINVITE_BYNAME", // CMSG_ARENA_TEAM_UNINVITE_BYNAME
"CMSG_ARENA_TEAM_DISBAND", // 853 "CMSG_ARENA_TEAM_DISBAND", // CMSG_ARENA_TEAM_DISBAND
"CMSG_ARENA_TEAM_PROMOTE_TO_CAPTAIN", // 854 "CMSG_ARENA_TEAM_SET_LEADER_BYNAME", // CMSG_ARENA_TEAM_SET_LEADER_BYNAME
"SMSG_UNKNOWN_855", // 855 "SMSG_ARENA_TEAM_EVENT", // SMSG_ARENA_TEAM_EVENT
"UNKNOWN", // 856 "CMSG_ARENAMASTER_JOIN", // CMSG_ARENAMASTER_JOIN
"MSG_MOVE_START_FLY_UP", // 857 "MSG_MOVE_START_FLY_UP", // MSG_MOVE_START_FLY_UP
"MSG_MOVE_STOP_FLY_UP", // 858 "MSG_MOVE_STOP_FLY_UP", // MSG_MOVE_STOP_FLY_UP
"SMSG_ARENA_TEAM_STATS", // 859 "SMSG_ARENA_TEAM_STATS", // SMSG_ARENA_TEAM_STATS
"CMSG_LFG_SET_AUTOJOIN", // 860 "CMSG_LFG_SET_AUTOJOIN", // CMSG_LFG_SET_AUTOJOIN
"CMSG_LFG_UNSET_AUTOJOIN", // 861 "CMSG_LFG_UNSET_AUTOJOIN", // CMSG_LFG_UNSET_AUTOJOIN
"CMSG_LFM_SET_AUTOADD", // 862 "CMSG_LFM_SET_AUTOADD", // CMSG_LFM_SET_AUTOADD
"CMSG_LFM_UNSET_AUTOADD", // 863 "CMSG_LFM_UNSET_AUTOADD", // CMSG_LFM_UNSET_AUTOADD
"CMSG_LFG_INVITE_ACCEPT", // 864 "CMSG_LFG_INVITE_ACCEPT", // CMSG_LFG_INVITE_ACCEPT
"CMSG_LFG_INVITE_CANCEL", // 865 "CMSG_LFG_INVITE_CANCEL", // CMSG_LFG_INVITE_CANCEL
"UNKNOWN", // 866 "UMSG_UNKNOWN_866", // UMSG_UNKNOWN_866
"CMSG_LOOKING_FOR_GROUP_CLEAR", // 867 "CMSG_LOOKING_FOR_GROUP_CLEAR", // CMSG_LOOKING_FOR_GROUP_CLEAR
"CMSG_SET_LOOKING_FOR_NONE", // 868 "CMSG_SET_LOOKING_FOR_NONE", // CMSG_SET_LOOKING_FOR_NONE
"CMSG_SET_LOOKING_FOR_MORE", // 869 "CMSG_SET_LOOKING_FOR_MORE", // CMSG_SET_LOOKING_FOR_MORE
"CMSG_SET_COMMENTARY", // 870 "CMSG_SET_COMMENTARY", // CMSG_SET_COMMENTARY
"SMSG_LFG_871", // 871 "SMSG_LFG_MATCHMAKING_TIMEDOUT", // SMSG_LFG_MATCHMAKING_TIMEDOUT
"SMSG_LFG_872", // 872 "SMSG_LFG_MATCHMAKING_OTHER_TIMEDOUT", // SMSG_LFG_MATCHMAKING_OTHER_TIMEDOUT
"SMSG_LFG_873", // 873 "SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED", // SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED
"SMSG_LFG_874", // 974 "SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED_NO_PLAYER", // SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED_NO_PLAYER
"UNKNOWN", // 875 "UMSG_UNKNOWN_875", // UMSG_UNKNOWN_875
"SMSG_LFG_876", // 876 "SMSG_LFG_876", // SMSG_LFG_876
"SMSG_LFG_877", // 877 "SMSG_LFG_877", // SMSG_LFG_877
"SMSG_LFG_878", // 878 "SMSG_LFG_878", // SMSG_LFG_878
"SMSG_LFG_879", // 879 "SMSG_LFG_879", // SMSG_LFG_879
"SMSG_LFG_INVITE", // 880 "SMSG_LFG_MATCHMAKING_PENDING_INVITE", // SMSG_LFG_MATCHMAKING_PENDING_INVITE
"SMSG_LFG_881", // 881 "SMSG_LFG_MATCHMAKING_PENDING_MATCH", // SMSG_LFG_MATCHMAKING_PENDING_MATCH
"UNKNOWN", // 882 "UMSG_UNKNOWN_882", // UMSG_UNKNOWN_882
"UNKNOWN", // 883 "SMSG_CHANGE_TITLE", // SMSG_CHANGE_TITLE
"CMSG_CHOOSE_TITLE", // 884 "CMSG_CHOOSE_TITLE", // CMSG_CHOOSE_TITLE
"CMSG_DISMOUNT", // 885 "CMSG_DISMOUNT", // CMSG_DISMOUNT
"UNKNOWN", // 886 "SMSG_ARENA_NO_TEAM", // SMSG_ARENA_NO_TEAM
"MSG_INSPECT_ARENA_STATS", // 887 "MSG_INSPECT_ARENA_STATS", // MSG_INSPECT_ARENA_STATS
"SMSG_SH_POSITION", // 888 "SMSG_SH_POSITION", // SMSG_SH_POSITION
"CMSG_CANCEL_TEMP_ITEM_ENCHANTMENT", // 889 "CMSG_CANCEL_TEMP_ITEM_ENCHANTMENT", // CMSG_CANCEL_TEMP_ITEM_ENCHANTMENT
"UNKNOWN", // 890 "UMSG_UNKNOWN_890", // UMSG_UNKNOWN_890
"UNKNOWN", // 891 "UMSG_UNKNOWN_891", // UMSG_UNKNOWN_891
"UNKNOWN", // 892 "UMSG_UNKNOWN_892", // UMSG_UNKNOWN_892
"UNKNOWN", // 893 "UMSG_UNKNOWN_893", // UMSG_UNKNOWN_893
"SMSG_MOVE_SET_FLY_SPEED", // 894 "MSG_MOVE_SET_FLY_SPEED", // MSG_MOVE_SET_FLY_SPEED
"UNKNOWN", // 895 "UMSG_UNKNOWN_895", // UMSG_UNKNOWN_895
"SMSG_MOVE_SET_FLY_BACK_SPEED", // 896 "MSG_MOVE_SET_FLY_BACK_SPEED", // MSG_MOVE_SET_FLY_BACK_SPEED
"SMSG_FORCE_FLY_SPEED_CHANGE", // 897 "SMSG_FORCE_FLY_SPEED_CHANGE", // SMSG_FORCE_FLY_SPEED_CHANGE
"CMSG_FORCE_FLY_SPEED_CHANGE_ACK", // 898 "CMSG_FORCE_FLY_SPEED_CHANGE_ACK", // CMSG_FORCE_FLY_SPEED_CHANGE_ACK
"SMSG_FORCE_FLY_BACK_SPEED_CHANGE", // 899 "SMSG_FORCE_FLY_BACK_SPEED_CHANGE", // SMSG_FORCE_FLY_BACK_SPEED_CHANGE
"CMSG_FORCE_FLY_BACK_SPEED_CHANGE_ACK", // 900 "CMSG_FORCE_FLY_BACK_SPEED_CHANGE_ACK", // CMSG_FORCE_FLY_BACK_SPEED_CHANGE_ACK
"SMSG_MOVE_SET_FLY_SPEED2", // 901 "MSG_MOVE_SET_FLY_SPEED2", // MSG_MOVE_SET_FLY_SPEED2
"SMSG_MOVE_SET_FLY_BACK_SPEED2", // 902 "SMSG_MOVE_SET_FLY_BACK_SPEED2", // SMSG_MOVE_SET_FLY_BACK_SPEED2
"UNKNOWN", // 903 "UMSG_UNKNOWN_903", // UMSG_UNKNOWN_903
"UNKNOWN", // 904 SMSG_FLIGHT_SPLINE_SYNC? "SMSG_FLIGHT_SPLINE_SYNC", // SMSG_FLIGHT_SPLINE_SYNC
"UNKNOWN", // 905 "CMSG_SET_TAXI_BENCHMARK_MODE", // CMSG_SET_TAXI_BENCHMARK_MODE
"UNKNOWN", // 906 "UMSG_UNKNOWN_906", // UMSG_UNKNOWN_906
"SMSG_REALM_STATE_RESPONSE", // 907 "SMSG_REALM_SPLIT_INFO_RESPONSE", // SMSG_REALM_SPLIT_INFO_RESPONSE
"CMSG_REALM_STATE_REQUEST", // 908 "CMSG_REALM_SPLIT_INFO_REQUEST", // CMSG_REALM_SPLIT_INFO_REQUEST
"CMSG_MOVE_SHIP_909", // 909 "MSG_MOVE_SHIP_909", // MSG_MOVE_SHIP_909
"CMSG_GROUP_PROMOTE", // 910 "CMSG_GROUP_PROMOTE", // CMSG_GROUP_PROMOTE
"UNKNOWN", // 911 "SMSG_ALREADY_IN_ARENA_TEAM", // SMSG_ALREADY_IN_ARENA_TEAM
"SMSG_ALLOW_MOVE", // 912 "SMSG_ALLOW_MOVE", // SMSG_ALLOW_MOVE
"CMSG_ALLOW_MOVE_ACK", // 913 "CMSG_ALLOW_MOVE_ACK", // CMSG_ALLOW_MOVE_ACK
"UNKNOWN", // 914 "UMSG_UNKNOWN_914", // UMSG_UNKNOWN_914
"UNKNOWN", // 915 "UMSG_UNKNOWN_915", // UMSG_UNKNOWN_915
"UNKNOWN", // 916 "UMSG_UNKNOWN_916", // UMSG_UNKNOWN_916
"UNKNOWN", // 917 "UMSG_UNKNOWN_917", // UMSG_UNKNOWN_917
"SMSG_UNKNOWN_918", // 918 "SMSG_RESET_INSTANCE_FAILED_NOTIFY", // SMSG_RESET_INSTANCE_FAILED_NOTIFY
"SMSG_UNKNOWN_919", // 919 "SMSG_UNKNOWN_919", // SMSG_UNKNOWN_919
"SMSG_UNKNOWN_920", // 920 "SMSG_SYSTEM_DISABLED", // SMSG_SYSTEM_DISABLED
"UNKNOWN921", // 921 "UMSG_UNKNOWN_921", // UMSG_UNKNOWN_921
"UNKNOWN922", // 922 "UMSG_UNKNOWN_922", // UMSG_UNKNOWN_922
"UNKNOWN923", // 923 "UMSG_UNKNOWN_923", // UMSG_UNKNOWN_923
"UNKNOWN924", // 924 "UMSG_UNKNOWN_924", // UMSG_UNKNOWN_924
"SMSG_SET_COMBO_POINTS", // 925 "SMSG_SET_COMBO_POINTS", // SMSG_SET_COMBO_POINTS
"UNKNOWN926", // 926 "SMSG_VOICE_SESSION", // SMSG_VOICE_SESSION
"UNKNOWN927", // 927 "SMSG_UNKNOWN_927", // SMSG_UNKNOWN_927
"UNKNOWN928", // 928 "UMSG_UNKNOWN_928", // UMSG_UNKNOWN_928
"UNKNOWN929", // 929 "UMSG_UNKNOWN_929", // UMSG_UNKNOWN_929
"UNKNOWN930", // 930 "UMSG_UNKNOWN_930", // UMSG_UNKNOWN_930
"SMSG_SET_AURA_MULTIPLY", // 931 "SMSG_SET_AURA_MULTIPLY", // SMSG_SET_AURA_MULTIPLY
"SMSG_SET_AURA_SINGLE", // 932 "SMSG_SET_AURA_SINGLE", // SMSG_SET_AURA_SINGLE
"UNKNOWN933", // 933 "UMSG_UNKNOWN_933", // UMSG_UNKNOWN_933
"SMSG_CAST_SUCCESS", // 934 "SMSG_CAST_SUCCESS", // SMSG_CAST_SUCCESS
"SMSG_UNKNOWN_935", // 935 "MSG_UNKNOWN_935", // MSG_UNKNOWN_935
"UNKNOWN936", // 936 "UMSG_UNKNOWN_936", // UMSG_UNKNOWN_936
"UNKNOWN937", // 937 "UMSG_UNKNOWN_937", // UMSG_UNKNOWN_937
"UNKNOWN938", // 938 "SMSG_UNKNOWN_938", // SMSG_UNKNOWN_938
"UNKNOWN939", // 939 "UMSG_UNKNOWN_939", // UMSG_UNKNOWN_939
"UNKNOWN940", // 940 "SMSG_UNKNOWN_940", // SMSG_UNKNOWN_940
"SMSG_UNKNOWN_941", // 941 "SMSG_UNKNOWN_941", // SMSG_UNKNOWN_941
"SMSG_UNKNOWN_942", // 942 "SMSG_READY_CHECK_ALL_READY", // SMSG_READY_CHECK_ALL_READY
"UNKNOWN943", // 943 "CMSG_VOICE_SETTINGS", // CMSG_VOICE_SETTINGS
"UNKNOWN944", // 944 "SMSG_VOICE_CHAT_PARENTAL_DISABLE_ALL", // SMSG_VOICE_CHAT_PARENTAL_DISABLE_ALL
"UNKNOWN945", // 945 "UMSG_UNKNOWN_945", // UMSG_UNKNOWN_945
"UNKNOWN946", // 946 "UMSG_UNKNOWN_946", // UMSG_UNKNOWN_946
"UNKNOWN947", // 947 "UMSG_UNKNOWN_947", // UMSG_UNKNOWN_947
"UNKNOWN948", // 948 "CMSG_COMMENTATOR_SET_MODE", // CMSG_COMMENTATOR_SET_MODE
"UNKNOWN949", // 949 "UMSG_UNKNOWN_949", // UMSG_UNKNOWN_949
"UNKNOWN950", // 950 "CMSG_COMMENTATOR_UPDATE_MAP_INFO", // CMSG_COMMENTATOR_UPDATE_MAP_INFO
"UNKNOWN951", // 951 "UMSG_UNKNOWN_951", // UMSG_UNKNOWN_951
"CMSG_UNKNOWN_952", // 952 "CMSG_COMMENTATOR_UPDATE_PLAYER_INFO", // CMSG_COMMENTATOR_UPDATE_PLAYER_INFO
"UNKNOWN953", // 953 "CMSG_UNKNOWN_953", // CMSG_UNKNOWN_953
"SMSG_UNKNOWN_954", // 954 "UMSG_UNKNOWN_954", // UMSG_UNKNOWN_954
"SMSG_UNKNOWN_955", // 955 "UMSG_UNKNOWN_955", // UMSG_UNKNOWN_955
"UMSG_UNKNOWN_956", // UMSG_UNKNOWN_956
"CMSG_COMMENTATOR_EXIT_INSTANCE", // CMSG_COMMENTATOR_EXIT_INSTANCE
"UMSG_UNKNOWN_958", // UMSG_UNKNOWN_958
"UMSG_UNKNOWN_959", // UMSG_UNKNOWN_959
"SMSG_UNKNOWN_960", // SMSG_UNKNOWN_960
"UMSG_UNKNOWN_961", // UMSG_UNKNOWN_961
"UMSG_UNKNOWN_962", // UMSG_UNKNOWN_962
"UMSG_UNKNOWN_963", // UMSG_UNKNOWN_963
"UMSG_UNKNOWN_964", // UMSG_UNKNOWN_964
"UMSG_UNKNOWN_965", // UMSG_UNKNOWN_965
"CMSG_COMPLAINT_CHAT", // CMSG_COMPLAINT_CHAT
"SMSG_COMPLAINT_ADDED", // SMSG_COMPLAINT_ADDED
"SMSG_VOICE_SYSTEM_STATUS", // SMSG_VOICE_SYSTEM_STATUS
"UMSG_UNKNOWN_969", // UMSG_UNKNOWN_969
"UMSG_UNKNOWN_970", // UMSG_UNKNOWN_970
"CMSG_CHANNEL_SILENT_VOICE", // CMSG_CHANNEL_SILENT_VOICE
"CMSG_CHANNEL_SILENT_ALL", // CMSG_CHANNEL_SILENT_ALL
"CMSG_CHANNEL_UNSILENT_VOICE", // CMSG_CHANNEL_UNSILENT_VOICE
"CMSG_CHANNEL_UNSILENT_ALL", // CMSG_CHANNEL_UNSILENT_ALL
"UMSG_UNKNOWN_975", // UMSG_UNKNOWN_975
"UMSG_UNKNOWN_976", // UMSG_UNKNOWN_976
"CMSG_CHANNEL_ROSTER_QUERY", // CMSG_CHANNEL_ROSTER_QUERY
"CMSG_CHANNEL_VOICE_CHAT_QUERY", // CMSG_CHANNEL_VOICE_CHAT_QUERY
"CMSG_CHANNEL_INFO_QUERY", // CMSG_CHANNEL_INFO_QUERY
"SMSG_CHANNEL_INFO_QUERY_RESPONSE", // SMSG_CHANNEL_INFO_QUERY_RESPONSE
"CMSG_CHANNEL_VOICE_ON", // CMSG_CHANNEL_VOICE_ON
"CMSG_CHANNEL_VOICE_OFF", // CMSG_CHANNEL_VOICE_OFF
"UMSG_UNKNOWN_983", // UMSG_UNKNOWN_983
"UMSG_UNKNOWN_984", // UMSG_UNKNOWN_984
"SMSG_CHANNEL_NOTIFY_AVAILABLE_VOICE_SESSION", // SMSG_CHANNEL_NOTIFY_AVAILABLE_VOICE_SESSION
"CMSG_MUTE_PLAYER", // CMSG_MUTE_PLAYER
"CMSG_UNMUTE_PLAYER", // CMSG_UNMUTE_PLAYER
"CMSG_SILENCE_MEMBER", // CMSG_SILENCE_MEMBER
"CMSG_UNSILENCE_MEMBER", // CMSG_UNSILENCE_MEMBER
"SMSG_PLAYER_UNSILENCED", // SMSG_PLAYER_UNSILENCED
"SMSG_COMSAT_RECONNECT_ATTEMPT", // SMSG_COMSAT_RECONNECT_ATTEMPT
"SMSG_COMSAT_DISCONNECT", // SMSG_COMSAT_DISCONNECT
"SMSG_COMSAT_CONNECT_FAIL", // SMSG_COMSAT_CONNECT_FAIL
"UMSG_UNKNOWN_994", // UMSG_UNKNOWN_994
"UMSG_UNKNOWN_995", // UMSG_UNKNOWN_995
"UMSG_UNKNOWN_996", // UMSG_UNKNOWN_996
"CMSG_GUILD_BANK", // CMSG_GUILD_BANK
"CMSG_GUILDBANK_TAB_COLON", // CMSG_GUILDBANK_TAB_COLON
"SMSG_GUILD_BANK_LIST", // SMSG_GUILD_BANK_LIST
"CMSG_UNKNOWN_1000", // CMSG_UNKNOWN_1000
"CMSG_BUY_GUILDBANK_TAB", // CMSG_BUY_GUILDBANK_TAB
"UMSG_UNKNOWN_1002", // UMSG_UNKNOWN_1002
"CMSG_GUILDBANK_DEPOSIT", // CMSG_GUILDBANK_DEPOSIT
"CMSG_GUILDBANK_WITHDRAW", // CMSG_GUILDBANK_WITHDRAW
"MSG_GUILDBANK_LOG", // MSG_GUILDBANK_LOG
"CMSG_CHANNEL_WATCH", // CMSG_CHANNEL_WATCH
"SMSG_PLAYER_JOINED_CHANNEL", // SMSG_PLAYER_JOINED_CHANNEL
"SMSG_PLAYER_LEFT_CHANNEL", // SMSG_PLAYER_LEFT_CHANNEL
"SMSG_PLAYER_JOINED_CUSTOM_CHANNEL", // SMSG_PLAYER_JOINED_CUSTOM_CHANNEL
"CMSG_CLEAR_CHANNEL_WATCH", // CMSG_CLEAR_CHANNEL_WATCH
"SMSG_INSPECT_TALENTS", // SMSG_INSPECT_TALENTS
"UMSG_UNKNOWN_1012", // UMSG_UNKNOWN_1012
"UMSG_UNKNOWN_1013", // UMSG_UNKNOWN_1013
"UMSG_UNKNOWN_1014", // UMSG_UNKNOWN_1014
"CMSG_UNKNOWN_1015", // CMSG_UNKNOWN_1015
"UMSG_UNKNOWN_1016", // UMSG_UNKNOWN_1016
"UMSG_UNKNOWN_1017", // UMSG_UNKNOWN_1017
"UMSG_UNKNOWN_1018", // UMSG_UNKNOWN_1018
"SMSG_VOICESESSION_FULL", // SMSG_VOICESESSION_FULL
"MSG_UNKNOWN_1020", // MSG_UNKNOWN_1020
"MSG_UNKNOWN_1021", // MSG_UNKNOWN_1021
"MSG_GUILD_INFO_LOG", // MSG_GUILD_INFO_LOG
"" // last entry should be empty "" // last entry should be empty
}; };

View File

@ -50,8 +50,6 @@ enum OpCodes
CMSG_DESTROYMONSTER = 18, CMSG_DESTROYMONSTER = 18,
CMSG_CREATEITEM = 19, CMSG_CREATEITEM = 19,
CMSG_CREATEGAMEOBJECT = 20, CMSG_CREATEGAMEOBJECT = 20,
//CMSG_MAKEMONSTERATTACKME = 21, //OBSOLETE
CMSG_MAKEMONSTERATTACKME_OBSOLETE = 21, CMSG_MAKEMONSTERATTACKME_OBSOLETE = 21,
CMSG_MAKEMONSTERATTACKGUID = 22, CMSG_MAKEMONSTERATTACKGUID = 22,
CMSG_ENABLEDEBUGCOMBATLOGGING_OBSOLETE = 23, CMSG_ENABLEDEBUGCOMBATLOGGING_OBSOLETE = 23,
@ -347,10 +345,8 @@ enum OpCodes
MSG_CHANNEL_START = 313, MSG_CHANNEL_START = 313,
MSG_CHANNEL_UPDATE = 314, MSG_CHANNEL_UPDATE = 314,
CMSG_CANCEL_CHANNELLING = 315, CMSG_CANCEL_CHANNELLING = 315,
SMSG_AI_REACTION = 316, SMSG_AI_REACTION = 316, // may be monser attack sound?
CMSG_SET_SELECTION = 317, CMSG_SET_SELECTION = 317,
//CMSG_SET_TARGET = 318, //OBSOLETE
CMSG_SET_TARGET_OBSOLETE = 318, CMSG_SET_TARGET_OBSOLETE = 318,
CMSG_UNUSED = 319, CMSG_UNUSED = 319,
CMSG_UNUSED2 = 320, CMSG_UNUSED2 = 320,
@ -411,8 +407,6 @@ enum OpCodes
CMSG_PET_RENAME = 375, CMSG_PET_RENAME = 375,
SMSG_PET_NAME_INVALID = 376, // Error, invalid name entered. SMSG_PET_NAME_INVALID = 376, // Error, invalid name entered.
SMSG_PET_SPELLS = 377, SMSG_PET_SPELLS = 377,
//CMSG_PET_CAST_SPELL_OBSOLETE = 378, //OBSOLETE
SMSG_PET_MODE = 378, // uint64 pet_guid + uint32 flags? SMSG_PET_MODE = 378, // uint64 pet_guid + uint32 flags?
CMSG_GOSSIP_HELLO = 379, CMSG_GOSSIP_HELLO = 379,
CMSG_GOSSIP_SELECT_OPTION = 380, CMSG_GOSSIP_SELECT_OPTION = 380,
@ -522,8 +516,6 @@ enum OpCodes
SMSG_PLAYER_MACRO_OBSOLETE = 484, SMSG_PLAYER_MACRO_OBSOLETE = 484,
CMSG_GHOST = 485, CMSG_GHOST = 485,
CMSG_GM_INVIS = 486, CMSG_GM_INVIS = 486,
//CMSG_SCREENSHOT = 487, //OBSOLETE
SMSG_INVALID_PROMOTION_CODE = 487, // Couldn't validate code, please try again. SMSG_INVALID_PROMOTION_CODE = 487, // Couldn't validate code, please try again.
MSG_GM_BIND_OTHER = 488, MSG_GM_BIND_OTHER = 488,
MSG_GM_SUMMON = 489, MSG_GM_SUMMON = 489,
@ -533,8 +525,6 @@ enum OpCodes
CMSG_AUTH_SESSION = 493, CMSG_AUTH_SESSION = 493,
SMSG_AUTH_RESPONSE = 494, SMSG_AUTH_RESPONSE = 494,
MSG_GM_SHOWLABEL = 495, MSG_GM_SHOWLABEL = 495,
//MSG_ADD_DYNAMIC_TARGET = 496, //OBSOLETE
MSG_ADD_DYNAMIC_TARGET_OBSOLETE = 496, MSG_ADD_DYNAMIC_TARGET_OBSOLETE = 496,
MSG_SAVE_GUILD_EMBLEM = 497, MSG_SAVE_GUILD_EMBLEM = 497,
MSG_TABARDVENDOR_ACTIVATE = 498, MSG_TABARDVENDOR_ACTIVATE = 498,
@ -634,8 +624,6 @@ enum OpCodes
SMSG_SPELLNONMELEEDAMAGELOG = 592, SMSG_SPELLNONMELEEDAMAGELOG = 592,
CMSG_LEARN_TALENT = 593, CMSG_LEARN_TALENT = 593,
SMSG_RESURRECT_FAILED = 594, SMSG_RESURRECT_FAILED = 594,
//CMSG_ENABLE_PVP = 595, //OBSOLETE
CMSG_TOGGLE_PVP = 595, CMSG_TOGGLE_PVP = 595,
SMSG_ZONE_UNDER_ATTACK = 596, SMSG_ZONE_UNDER_ATTACK = 596,
MSG_AUCTION_HELLO = 597, MSG_AUCTION_HELLO = 597,
@ -680,8 +668,6 @@ enum OpCodes
SMSG_DAMAGE_CALC_LOG = 636, SMSG_DAMAGE_CALC_LOG = 636,
CMSG_ENABLE_DAMAGE_LOG = 637, CMSG_ENABLE_DAMAGE_LOG = 637,
CMSG_GROUP_CHANGE_SUB_GROUP = 638, CMSG_GROUP_CHANGE_SUB_GROUP = 638,
//SMSG_RAID_MEMBER_STATS = 639, //OBSOLETE
CMSG_REQUEST_PARTY_MEMBER_STATS = 639, CMSG_REQUEST_PARTY_MEMBER_STATS = 639,
CMSG_GROUP_SWAP_SUB_GROUP = 640, CMSG_GROUP_SWAP_SUB_GROUP = 640,
CMSG_RESET_FACTION_CHEAT = 641, CMSG_RESET_FACTION_CHEAT = 641,
@ -742,8 +728,6 @@ enum OpCodes
SMSG_AREA_TRIGGER_MESSAGE = 696, SMSG_AREA_TRIGGER_MESSAGE = 696,
CMSG_TOGGLE_HELM = 697, CMSG_TOGGLE_HELM = 697,
CMSG_TOGGLE_CLOAK = 698, CMSG_TOGGLE_CLOAK = 698,
//SMSG_SPELL_REFLECTED = 699, //OBSOLETE
SMSG_MEETINGSTONE_JOINFAILED = 699, // 1 - must be party leader, 3 - can't use while in raid SMSG_MEETINGSTONE_JOINFAILED = 699, // 1 - must be party leader, 3 - can't use while in raid
SMSG_PLAYER_SKINNED = 700, // uint8 0x00 Insignia taken - You can only resurrect at the graveyard SMSG_PLAYER_SKINNED = 700, // uint8 0x00 Insignia taken - You can only resurrect at the graveyard
SMSG_DURABILITY_DAMAGE_DEATH = 701, SMSG_DURABILITY_DAMAGE_DEATH = 701,
@ -784,11 +768,9 @@ enum OpCodes
MSG_PVP_LOG_DATA = 736, MSG_PVP_LOG_DATA = 736,
CMSG_LEAVE_BATTLEFIELD = 737, CMSG_LEAVE_BATTLEFIELD = 737,
CMSG_AREA_SPIRIT_HEALER_QUERY = 738, CMSG_AREA_SPIRIT_HEALER_QUERY = 738,
CMSG_AREA_SPIRIT_HEALER_QUEUE = 739, // WTF? CMSG_AREA_SPIRIT_HEALER_QUEUE = 739,
SMSG_AREA_SPIRIT_HEALER_TIME = 740, // uint64 guid+uint32 time? SMSG_AREA_SPIRIT_HEALER_TIME = 740, // uint64 guid+uint32 time
//CMSG_GM_UNTEACH = 739, // WTF? CMSG_GM_UNTEACH = 741,
//SMSG_HARDWARE_SURVEY_REQUEST = 740, // WTF?
CMSG_HARDWARE_SURVEY_RESULTS = 741,
SMSG_WARDEN_DATA = 742, SMSG_WARDEN_DATA = 742,
CMSG_WARDEN_DATA = 743, CMSG_WARDEN_DATA = 743,
SMSG_GROUP_JOINED_BATTLEGROUND = 744, // uint32 0xfffffffc, probably different error messages... SMSG_GROUP_JOINED_BATTLEGROUND = 744, // uint32 0xfffffffc, probably different error messages...
@ -812,7 +794,7 @@ enum OpCodes
SMSG_INSTANCE_RESET_SCHEDULED = 762, // WARNING! %s is scheduled to reset in %u minutes! and other messages... SMSG_INSTANCE_RESET_SCHEDULED = 762, // WARNING! %s is scheduled to reset in %u minutes! and other messages...
SMSG_COMPRESSED_MOVE = 763, SMSG_COMPRESSED_MOVE = 763,
CMSG_GUILD_CHANGEINFO = 764, CMSG_GUILD_CHANGEINFO = 764,
SMSG_UNKNOWN_765 = 765, // Trial accounts can not send unlimited tells, you must wait before you can send tells to more players. SMSG_TRIAL_RESTRICTED = 765, // Trial accounts cannot send unlimited tells, you must wait before you can send tells to more players.
SMSG_SET_MOVE_SPEED = 766, // GUID + float speed, move speed, except swim/turn/fly SMSG_SET_MOVE_SPEED = 766, // GUID + float speed, move speed, except swim/turn/fly
SMSG_SET_RUN_BACK_SPEED = 767, // GUID + float speed, run back speed SMSG_SET_RUN_BACK_SPEED = 767, // GUID + float speed, run back speed
SMSG_SET_SWIM_SPEED = 768, // GUID + float speed, swim and swim back speed SMSG_SET_SWIM_SPEED = 768, // GUID + float speed, swim and swim back speed
@ -820,7 +802,7 @@ enum OpCodes
SMSG_SET_SWIM_BACK_SPEED = 770, // swim back speed SMSG_SET_SWIM_BACK_SPEED = 770, // swim back speed
SMSG_SET_TURN_RATE = 771, // turn rate (note: client crashes if fly mode enabled, and turn rate = 0) SMSG_SET_TURN_RATE = 771, // turn rate (note: client crashes if fly mode enabled, and turn rate = 0)
SMSG_UNKNOWN_772 = 772, // packed GUID SMSG_UNKNOWN_772 = 772, // packed GUID
SMSG_UNKNOWN_773 = 773, // set movement flag 0x20000000 SMSG_UNKNOWN_773 = 773, // set movement flag 0x20000000 (safe fall)
SMSG_UNKNOWN_774 = 774, // stop effect of 773 opcode SMSG_UNKNOWN_774 = 774, // stop effect of 773 opcode
SMSG_UNKNOWN_775 = 775, // movement related, looks like hover, movement flag 0x40000000, we can't jump if we are lands SMSG_UNKNOWN_775 = 775, // movement related, looks like hover, movement flag 0x40000000, we can't jump if we are lands
SMSG_UNKNOWN_776 = 776, // stop effect of 775 opcode SMSG_UNKNOWN_776 = 776, // stop effect of 775 opcode
@ -840,32 +822,32 @@ enum OpCodes
// 790 // 790
CMSG_FIELD_WATCHED_FACTION_INACTIVE = 791, CMSG_FIELD_WATCHED_FACTION_INACTIVE = 791,
CMSG_FIELD_WATCHED_FACTION_SHOW_BAR = 792, CMSG_FIELD_WATCHED_FACTION_SHOW_BAR = 792,
SMSG_UNKNOWN_793 = 793, // packed guid + uint32 SMSG_UNKNOWN_793 = 793, // packed guid + uint32 unk
SMSG_UNKNOWN_794 = 794, // packed guid, movement related, set 0x1000 movement flag, all speed to 0, except turn rate SMSG_UNKNOWN_794 = 794, // packed guid, movement related, set 0x1000 movement flag, all speed to 0, except turn rate
// 795 // 795
SMSG_UNKNOWN_796 = 796, // uint64, guid? SMSG_UNKNOWN_796 = 796, // uint64, guid, chat related?
CMSG_RESET_INSTANCES = 797, // reset instances, empty CMSG_RESET_INSTANCES = 797, // reset instances, empty
SMSG_RESET_INSTANCES_RESULT = 798, // uint32 mapid, chat message: %s has been reset. SMSG_RESET_INSTANCES_SUCCESS = 798, // uint32 mapid, chat message: %s has been reset.
// 799 SMSG_RESET_INSTANCES_FAILED = 799, // uint32 reason, uint32 mapid
SMSG_UNKNOWN_800 = 800, // uint32 mapid, instance related SMSG_UNKNOWN_800 = 800, // uint32 mapid, instance related (save?)
MSG_RAID_ICON_TARGET = 801, // uint8+uint8+uint64 guid MSG_RAID_ICON_TARGET = 801, // uint8+uint8+uint64 guid or only uint8(0x01)
MSG_RAID_READY_CHECK = 802, // uint64+uint8 MSG_RAID_READY_CHECK = 802, // uint64+uint8
// 803 // 803
SMSG_AI_UNKNOWN = 804, // GUID + uint32, looks like SMSG_AI_REACTION SMSG_PET_ACTION_SOUND = 804, // GUID + uint32, looks like SMSG_AI_REACTION (pet action sound?)
SMSG_UNKNOWN_805 = 805, // uint32 unk + x, y, z SMSG_PET_DISMISS_SOUND = 805, // uint32 unk + x, y, z (pet dismiss sound?)
// 806 // 806
// 807 // 807
SMSG_GM_SURVEY_REQUEST = 808, // uint32, 1 - causes client get ticket request, 2 - hide, 3 - show SMSG_GM_SURVEY_REQUEST = 808, // uint32, 1 - causes client get ticket request, 2 - hide, 3 - show
MSG_SET_DUNGEON_DIFFICULTY = 809, // uint32+uint32+uint32 MSG_SET_DUNGEON_DIFFICULTY = 809, // uint32+uint32+uint32
CMSG_GM_SURVEY_RESULTS = 810, CMSG_GM_SURVEY_RESULTS = 810, // script function named GMSurveySubmit()
SMSG_UNKNOWN_811 = 811, // uint32, 0x0, SMSG_INSTANCE_RESET_ACTIVATE ? SMSG_UNKNOWN_811 = 811, // uint32, 0x0, SMSG_INSTANCE_RESET_ACTIVATE ?
// 812 // 812
// 813 // 813
// 814 // 814
SMSG_UNKNOWN_815 = 815, // spell related, uint64 guid + spellid SMSG_SPELL_INSTA_KILL_SELF = 815, // spell related, uint64 guid + spellid (You are killed by %s(spell_name))
SMSG_UNKNOWN_816 = 816, // spell related, uint64 guid + spellid + uint32 unk + uint64 guid (target?) SMSG_UNKNOWN_816 = 816, // spell related, uint64 guid + spellid + uint32 count + for(count) uint64 guid (target?)
// 817 // 817
SMSG_UNKNOWN_818 = 818, // 2.0.8, received before server MOTD, strange regexp sequence, looks like anti spam filter for chat messages... SMSG_ANTISPAM = 818, // 2.0.8, received before server MOTD, strange regexp sequence, looks like anti spam filter for chat messages...
// 819 // 819
// 820 // 820
// 821 // 821
@ -874,36 +856,36 @@ enum OpCodes
// 824 // 824
// 825 // 825
SMSG_OUTDOORPVP_NOTIFY = 826, // looks like chat packets SMSG_OUTDOORPVP_NOTIFY = 826, // looks like chat packets
SMSG_OUTDOORPVP_NOTIFY2 = 827, // may be it's changed to 826? // 827
// 828 // 828
SMSG_MOTD = 829, // server MOTD message, uint32 + message SMSG_MOTD = 829, // server MOTD message, uint32 + message
// 830 // 830
// 831 // 831
// 832 // 832
SMSG_UNKNOWN_833 = 833, // teleport SMSG_UNKNOWN_833 = 833, // teleport/movement opcode
SMSG_UNKNOWN_834 = 834, // teleport SMSG_UNKNOWN_834 = 834, // teleport/movement opcode
SMSG_FLY_MODE_START = 835, // packed guid + uint32, start fly SMSG_FLY_MODE_START = 835, // packed guid + uint32, start fly
SMSG_FLY_MODE_STOP = 836, // packed guid + uint32, stop fly SMSG_FLY_MODE_STOP = 836, // packed guid + uint32, stop fly
CMSG_MOVE_FLY_MODE_CHANGE_ACK = 837, // movement related, fly on/off ack CMSG_MOVE_FLY_MODE_CHANGE_ACK = 837, // movement related, fly on/off ack
CMSG_MOVE_FLY_STATE_CHANGE = 838, // movement related, fly start/stop(land) ack, may be MSG MSG_MOVE_FLY_STATE_CHANGE = 838, // movement related, fly start/stop(land) ack, may be MSG
CMSG_SOCKET_ITEM = 839, // click on "Socket Gems" button in Jewelcrafting UI, contains uint64 item guid + 3 x uint64 gems guid's CMSG_SOCKET_ITEM = 839, // click on "Socket Gems" button in Jewelcrafting UI, contains uint64 item guid + 3 x uint64 gems guid's
// 840 // 840, CMSG?
SMSG_ARENA_TEAM_COMMAND_RESULT = 841, // uint32(5)+uint16(0)+uint32(9) You not in arena team that size SMSG_ARENA_TEAM_COMMAND_RESULT = 841, // uint32 command, name1, name2, uint32 errorcode
// 842 // 842
CMSG_ARENA_TEAM_QUERY = 843, CMSG_ARENA_TEAM_QUERY = 843,
SMSG_ARENA_TEAM_QUERY_RESPONSE = 844, SMSG_ARENA_TEAM_QUERY_RESPONSE = 844,
CMSG_ARENA_TEAM_ROSTER = 845, CMSG_ARENA_TEAM_ROSTER = 845,
SMSG_ARENA_TEAM_ROSTER = 846, SMSG_ARENA_TEAM_ROSTER = 846,
CMSG_ARENA_TEAM_ADD_MEMBER = 847, CMSG_ARENA_TEAM_INVITE_BYNAME = 847,
SMSG_ARENA_TEAM_INVITE = 848, SMSG_ARENA_TEAM_INVITE = 848,
CMSG_ARENA_TEAM_INVITE_ACCEPT = 849, CMSG_ARENA_TEAM_ACCEPT = 849,
CMSG_ARENA_TEAM_INVITE_DECLINE = 850, CMSG_ARENA_TEAM_DECLINE = 850,
CMSG_ARENA_TEAM_LEAVE = 851, CMSG_ARENA_TEAM_LEAVE = 851,
CMSG_ARENA_TEAM_REMOVE_FROM_TEAM = 852, CMSG_ARENA_TEAM_UNINVITE_BYNAME = 852,
CMSG_ARENA_TEAM_DISBAND = 853, CMSG_ARENA_TEAM_DISBAND = 853,
CMSG_ARENA_TEAM_PROMOTE_TO_CAPTAIN = 854, // also must be demote opcode... CMSG_ARENA_TEAM_SET_LEADER_BYNAME = 854, // also must be demote opcode...
SMSG_UNKNOWN_855 = 855, // guild related... SMSG_ARENA_TEAM_EVENT = 855, // arena team event
// 856 CMSG_ARENAMASTER_JOIN = 856,
MSG_MOVE_START_FLY_UP = 857, // movement related, fly up, possible MSG MSG_MOVE_START_FLY_UP = 857, // movement related, fly up, possible MSG
MSG_MOVE_STOP_FLY_UP = 858, // movement related, stop fly up, possible MSG MSG_MOVE_STOP_FLY_UP = 858, // movement related, stop fly up, possible MSG
SMSG_ARENA_TEAM_STATS = 859, SMSG_ARENA_TEAM_STATS = 859,
@ -913,27 +895,27 @@ enum OpCodes
CMSG_LFM_UNSET_AUTOADD = 863, CMSG_LFM_UNSET_AUTOADD = 863,
CMSG_LFG_INVITE_ACCEPT = 864, CMSG_LFG_INVITE_ACCEPT = 864,
CMSG_LFG_INVITE_CANCEL = 865, CMSG_LFG_INVITE_CANCEL = 865,
// 866 // 866, CMSG?
CMSG_LOOKING_FOR_GROUP_CLEAR = 867, CMSG_LOOKING_FOR_GROUP_CLEAR = 867,
CMSG_SET_LOOKING_FOR_NONE = 868, CMSG_SET_LOOKING_FOR_NONE = 868,
CMSG_SET_LOOKING_FOR_MORE = 869, CMSG_SET_LOOKING_FOR_MORE = 869,
CMSG_SET_COMMENTARY = 870, CMSG_SET_COMMENTARY = 870,
SMSG_LFG_871 = 871, // Matchmaking timed out. SMSG_LFG_MATCHMAKING_TIMEDOUT = 871, // Matchmaking timed out.
SMSG_LFG_872 = 872, // Matchmaking timed out waiting for other player. SMSG_LFG_MATCHMAKING_OTHER_TIMEDOUT = 872, // Matchmaking timed out waiting for other player.
SMSG_LFG_873 = 873, // Group no longer available. SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED = 873, // Group no longer available.
SMSG_LFG_874 = 974, // Matched Player(s) have gone offline. SMSG_LFG_MATCHMAKING_AUTOJOIN_FAILED_NO_PLAYER = 874, // Matched Player(s) have gone offline.
// 875 // 875
SMSG_LFG_876 = 876, // LFM eye, in progress, uint16+uint32+uint8?, 3 x uint8(0x0) SMSG_LFG_876 = 876, // LFM eye, in progress, uint16+uint32+uint8?, 3 x uint8(0x0)
SMSG_LFG_877 = 877, // cause client send CMSG_SET_LOOKING_FOR_GROUP, uint32+uint8? SMSG_LFG_877 = 877, // cause client send CMSG_SET_LOOKING_FOR_GROUP, uint32+uint8?
SMSG_LFG_878 = 878, // cause client send CMSG_SET_LOOKING_FOR_GROUP SMSG_LFG_878 = 878, // cause client send CMSG_SET_LOOKING_FOR_GROUP
SMSG_LFG_879 = 879, // LFG eye, cause client send CMSG_SET_LOOKING_FOR_GROUP SMSG_LFG_879 = 879, // LFG eye, cause client send CMSG_SET_LOOKING_FOR_GROUP
SMSG_LFG_INVITE = 880, // show invite dialog: The LFG system has matched you to a group for %s. SMSG_LFG_MATCHMAKING_PENDING_INVITE = 880, // The LFG system has matched you to a group for %s.
SMSG_LFG_881 = 881, // The LFG system is waiting to complete match for %s. SMSG_LFG_MATCHMAKING_PENDING_MATCH = 881, // The LFG system is waiting to complete match for %s.
// 882 // 882
SMSG_CHANGE_TITLE = 883, // uint32 title_id, causes message and visual effect SMSG_CHANGE_TITLE = 883, // uint32 title_id, causes message and visual effect
CMSG_CHOOSE_TITLE = 884, // uint32 title_id CMSG_CHOOSE_TITLE = 884, // uint32 title_id
CMSG_DISMOUNT = 885, // /dismount command CMSG_DISMOUNT = 885, // /dismount command
SMSG_ARENA_TEAM_UNK = 886, SMSG_ARENA_NO_TEAM = 886, // uint32(0) + team type
MSG_INSPECT_ARENA_STATS = 887, MSG_INSPECT_ARENA_STATS = 887,
SMSG_SH_POSITION = 888, // spirit healer position, map/x/y/z, at player death... SMSG_SH_POSITION = 888, // spirit healer position, map/x/y/z, at player death...
CMSG_CANCEL_TEMP_ITEM_ENCHANTMENT = 889, // cancel temporary item enchantment CMSG_CANCEL_TEMP_ITEM_ENCHANTMENT = 889, // cancel temporary item enchantment
@ -941,9 +923,9 @@ enum OpCodes
// 891 // 891
// 892 // 892
// 893 // 893
SMSG_MOVE_SET_FLY_SPEED = 894, // all fly speed, packed guid, uint32 movement_flags, time, x,y,z,o,unk,speed... MSG_MOVE_SET_FLY_SPEED = 894, // all fly speed, packed guid, uint32 movement_flags, time, x,y,z,o,unk,speed...
// 895 // 895
SMSG_MOVE_SET_FLY_BACK_SPEED = 896, MSG_MOVE_SET_FLY_BACK_SPEED = 896,
SMSG_FORCE_FLY_SPEED_CHANGE = 897, // packed guid, uint32, speed SMSG_FORCE_FLY_SPEED_CHANGE = 897, // packed guid, uint32, speed
CMSG_FORCE_FLY_SPEED_CHANGE_ACK = 898, CMSG_FORCE_FLY_SPEED_CHANGE_ACK = 898,
SMSG_FORCE_FLY_BACK_SPEED_CHANGE = 899, SMSG_FORCE_FLY_BACK_SPEED_CHANGE = 899,
@ -951,78 +933,129 @@ enum OpCodes
SMSG_MOVE_SET_FLY_SPEED2 = 901, // same as 894, strange, packed guid+speed SMSG_MOVE_SET_FLY_SPEED2 = 901, // same as 894, strange, packed guid+speed
SMSG_MOVE_SET_FLY_BACK_SPEED2 = 902, // same as 896, strange, SMSG_MOVE_SET_FLY_BACK_SPEED2 = 902, // same as 896, strange,
// 903 // 903
// 904 SMSG_FLIGHT_SPLINE_SYNC? SMSG_FLIGHT_SPLINE_SYNC = 904, // uint32 + packed_guid
// 905 CMSG_SET_TAXI_BENCHMARK_MODE = 905,
// 906 // 906
SMSG_REALM_STATE_RESPONSE = 907, // response to 908 opcode, 4 x uint32 + uint8 SMSG_REALM_SPLIT_INFO_RESPONSE = 907, // response to 908 opcode, uint32+uint32+string(date)
CMSG_REALM_STATE_REQUEST = 908, // realm related, uint32+uint32+3*(uint16+uint8), appears at select character screen, uint32 0xFFFFFFFF CMSG_REALM_SPLIT_INFO_REQUEST = 908, // realm related, uint32, appears at select character screen, uint32 0xFFFFFFFF by default
CMSG_MOVE_SHIP_909 = 909, // movement related, transport related(ships) MSG_MOVE_SHIP_909 = 909, // movement related, transport related(ships)
CMSG_GROUP_PROMOTE = 910, // make main-tank / main-assistant CMSG_GROUP_PROMOTE = 910, // make main-tank / main-assistant
// 911 SMSG_ALREADY_IN_ARENA_TEAM = 911, // %s is already in an arena team of that size (uint64 guid)
SMSG_ALLOW_MOVE = 912, // uint32, allow player movement, value increments every time and reset to 0 after far teleport, used for client-server synchronization SMSG_ALLOW_MOVE = 912, // uint32, allow player movement, value increments every time and reset to 0 after far teleport, used for client-server synchronization
CMSG_ALLOW_MOVE_ACK = 913, // client response to SMSG_ALLOW_MOVE CMSG_ALLOW_MOVE_ACK = 913, // client response to SMSG_ALLOW_MOVE (counter + client time)
// 914 // 914
// 915 // 915
// 916 // 916
// 917 // 917
SMSG_UNKNOWN_918 = 918, // chat message: The party leader has attempted to reset the instance you are in. Please zone out to allow the instance to reset. SMSG_RESET_INSTANCE_FAILED_NOTIFY = 918, // chat message: The party leader has attempted to reset the instance you are in. Please zone out to allow the instance to reset.
SMSG_UNKNOWN_919 = 919, // uint8(0)+uint32(0/1)+uint64(unk/guid) SMSG_UNKNOWN_919 = 919, // uint8(0)+uint32(0/1)+uint64(unk/guid)
SMSG_UNKNOWN_920 = 920, // notify message: This system is currently disabled. SMSG_SYSTEM_DISABLED = 920, // notify message: This system is currently disabled.
// 921 // 921
// 922 // 922
// 923 // 923
// 924 // 924
SMSG_SET_COMBO_POINTS = 925, // set combo points SMSG_SET_COMBO_POINTS = 925, // set combo points
// 926 SMSG_VOICE_SESSION = 926,
// 927 SMSG_UNKNOWN_927 = 927, // uint64 guid + uint32 + float?, received after leave voice channel
// 928 // 928
// 929 // 929
// 930 // 930
SMSG_SET_AURA_MULTIPLY = 931, SMSG_SET_AURA_MULTIPLY = 931, // packed_guid + n * (uint8 slot + uint32 spellid + uint32 duration1 + uint32 duration2)
/* SMSG_SET_AURA_SINGLE = 932, // packed_guid + uint8 slot + uint32 spellid + uint32 duration1 + uint32 duration2
packed_guid
block (can repeat):
uint8 index may be it's aura slot? (increments)
uint32 spellid
uint32 duration1 (full?)
uint32 duration2 (remaining?)
*/
SMSG_SET_AURA_SINGLE = 932,
/*
packed_guid
uint8 index may be it's aura slot? (increments)
uint32 spellid
uint32 duration1 (full?)
uint32 duration2 (remaining?)
*/
// 933 // 933
SMSG_CAST_SUCCESS = 934, SMSG_CAST_SUCCESS = 934,
SMSG_UNKNOWN_935 = 935, // teleport/movement opcode MSG_UNKNOWN_935 = 935, // teleport/movement opcode
// 936 // 936
// 937 // 937
// 938 SMSG_UNKNOWN_938 = 938, // uint64, uint64, uint32 spellid, uint32, uint32
// 939 // 939
// 940 SMSG_UNKNOWN_940 = 940, // packed guid (received at spell cast)
SMSG_UNKNOWN_941 = 941, // teleport/movement opcode SMSG_UNKNOWN_941 = 941, // teleport/movement opcode
SMSG_UNKNOWN_942 = 942, // Everyone is Ready! (message) SMSG_READY_CHECK_ALL_READY = 942, // Everyone is Ready! (message)
// 943 CMSG_VOICE_SETTINGS = 943, // uint8 isVoiceEnabled, uint8 isMicrophoneEnabled (id correct for 2.3.0)
// 944 SMSG_VOICE_CHAT_PARENTAL_DISABLE_ALL = 944, // Voice chat has been disabled by parental control
// 945 // 945
// 946 // 946
// 947 // 947
// 948 CMSG_COMMENTATOR_SET_MODE = 948,
// 949 // 949
// 950 CMSG_COMMENTATOR_UPDATE_MAP_INFO = 950,
// 951 // 951
CMSG_UNKNOWN_952 = 952, // response to 942 opcode CMSG_COMMENTATOR_UPDATE_PLAYER_INFO = 952,
CMSG_REPORT_SPAM = 953, // Report Spam chat button CMSG_UNKNOWN_953 = 953, // response to 942 opcode
SMSG_REPORT_SPAM_RESPONSE = 954, // Complaint Registered. (message) //CMSG_REPORT_SPAM = 954, // now(2.3.0) CMSG_COMPLAINT_CHAT
SMSG_ACTIVATE_SPAM_REPORTING = 955, // unk uint8 //SMSG_REPORT_SPAM_RESPONSE = 955, // now(2.3.0) SMSG_COMPLAINT_ADDED
CMSG_COMMENTATOR_EXIT_INSTANCE = 956, // unk uint8
// 957
// 958 clear selection?
// 959
SMSG_UNKNOWN_960 = 960, // uint64 guid, uint32, uint32 (client sedn CMSG_ITEM_QUERY_SINGLE)
// 961
// 962
//SMSG_DISCONNECT_CLIENT = 963, // really?? not
// 964
// 965
CMSG_COMPLAINT_CHAT = 966, // Report Spam chat button
SMSG_COMPLAINT_ADDED = 967, // Complaint Registered. (message)
SMSG_VOICE_SYSTEM_STATUS = 968, // uint8, uint8 (id correct for 2.3.0)
// 969
// 970
CMSG_CHANNEL_SILENT_VOICE = 971,
CMSG_CHANNEL_SILENT_ALL = 972,
CMSG_CHANNEL_UNSILENT_VOICE = 973,
CMSG_CHANNEL_UNSILENT_ALL = 974,
// 975
// 976
CMSG_CHANNEL_ROSTER_QUERY = 977, // string channel name (channel list?)
CMSG_CHANNEL_VOICE_CHAT_QUERY = 978, // uint32, string
CMSG_CHANNEL_INFO_QUERY = 979, // string channel name
SMSG_CHANNEL_INFO_QUERY_RESPONSE = 980, // string channel name, uint8 flags, uint32 count
CMSG_CHANNEL_VOICE_ON = 981, // Enable Voice button in channel context menu
CMSG_CHANNEL_VOICE_OFF = 982, // ??
// 983
// 984
SMSG_CHANNEL_NOTIFY_AVAILABLE_VOICE_SESSION = 985, // 9 bytes unk's + string channel name + uint64 guid, received after join voice channel
CMSG_MUTE_PLAYER = 986, // ??
CMSG_UNMUTE_PLAYER = 987, // ??
CMSG_SILENCE_MEMBER = 988, // ??
CMSG_UNSILENCE_MEMBER = 989, // ??
SMSG_PLAYER_UNSILENCED = 990, // A group leader has restored your voice privileges
SMSG_COMSAT_RECONNECT_ATTEMPT = 991, // Voice chat service restored!
SMSG_COMSAT_DISCONNECT = 992, // Connection lost to voice chat service.
SMSG_COMSAT_CONNECT_FAIL = 993, // Cannot connect to voice chat service.
// 994
// 995
// 996
CMSG_GUILD_BANK = 997, // click on guildbank object, uint64 guid + uint8 unk
CMSG_GUILDBANK_TAB_COLON = 998, // response to 999, uint64 guid + uint8 + uint8
SMSG_GUILD_BANK_LIST = 999, // uint32 + uint32 + uint8 + uint8 + uint16 count1 + uint8 + uint8 count2 + for (count2) { uint8 unk } + uint16 + for(count1) { uint32 counter + uint8 unk }
CMSG_UNKNOWN_1000 = 1000, // uint64 guid, uint8, uint8, uint8 count, for(count) uint8 unk
CMSG_BUY_GUILDBANK_TAB = 1001, // uint64 guid + uint8 unk
// 1002
CMSG_GUILDBANK_DEPOSIT = 1003, // uint64 guid + uint32
CMSG_GUILDBANK_WITHDRAW = 1004, // uint64 guid + uint32
MSG_GUILDBANK_LOG = 1005, // guild bank log? client: empty, server: uint8 count, for count (uint8 unk(type?), uint64 guid, uint32 unk(amount?))
CMSG_CHANNEL_WATCH = 1006, // string channel name
SMSG_PLAYER_JOINED_CHANNEL = 1007, // uint64, uint8, uint8, uint32, string channel name
SMSG_PLAYER_LEFT_CHANNEL = 1008, // uint64, uint8, uint32, string channel name
SMSG_PLAYER_JOINED_CUSTOM_CHANNEL = 1009, // guessed
CMSG_CLEAR_CHANNEL_WATCH = 1010,
SMSG_INSPECT_TALENTS = 1011, // uint32 count, for(count) uint8 unk
// 1012
// 1013
// 1014
CMSG_UNKNOWN_1015 = 1015, // click on NPC with 0x1000000 npc_flag
// 1016
// 1017
// 1018
SMSG_VOICESESSION_FULL = 1019, // The voice session you are attempting to join is full.
MSG_UNKNOWN_1020 = 1020, // probably guild related, client: empty, server: uint32, uint32, uint8, uint32, uint32
MSG_UNKNOWN_1021 = 1021, // guild related
MSG_GUILD_EVENT_LOG = 1022
}; };
//if you add new opcode .. Do NOT forget to change the following define MAX_OPCODE_ID and also add new opcode to table in opcodes.cpp //if you add new opcode .. Do NOT forget to change the following define MAX_OPCODE_ID and also add new opcode to table in opcodes.cpp
#define MAX_OPCODE_ID 955 #define MAX_OPCODE_ID 1023
/// Results of friend related commands /// Results of friend related commands
enum FriendsResult enum FriendsResult
@ -1043,28 +1076,46 @@ enum FriendsResult
FRIEND_IGNORE_NOT_FOUND = 0x0D, FRIEND_IGNORE_NOT_FOUND = 0x0D,
FRIEND_IGNORE_ALREADY = 0x0E, FRIEND_IGNORE_ALREADY = 0x0E,
FRIEND_IGNORE_ADDED = 0x0F, FRIEND_IGNORE_ADDED = 0x0F,
FRIEND_IGNORE_REMOVED = 0x10 FRIEND_IGNORE_REMOVED = 0x10,
// 0x11
// 0x12
// 0x13
// 0x14
// 0x15
FRIEND_MUTE_ADDED = 0x16,
FRIEND_MUTE_REMOVED = 0x17
}; };
/// Non Player Character flags /// Non Player Character flags
enum NPCFlags enum NPCFlags
{ {
UNIT_NPC_FLAG_NONE = 0, UNIT_NPC_FLAG_NONE = 0x00000000,
UNIT_NPC_FLAG_GOSSIP = 1, UNIT_NPC_FLAG_GOSSIP = 0x00000001, // 100%
UNIT_NPC_FLAG_QUESTGIVER = 2, UNIT_NPC_FLAG_QUESTGIVER = 0x00000002, // guessed, probably ok
UNIT_NPC_FLAG_VENDOR = 4, UNIT_NPC_FLAG_UNK1 = 0x00000004,
UNIT_NPC_FLAG_TAXIVENDOR = 8, UNIT_NPC_FLAG_UNK2 = 0x00000008,
UNIT_NPC_FLAG_TRAINER = 16, UNIT_NPC_FLAG_TRAINER = 0x00000010, // 100%
UNIT_NPC_FLAG_SPIRITHEALER = 32, UNIT_NPC_FLAG_TRAINER_CLASS = 0x00000020, // 100%
UNIT_NPC_FLAG_GUARD = 64, //UQ1: ??? We can use as guard flag?, used by blizz for BattleGround spirit guides... (entry 13116 and 13117) UNIT_NPC_FLAG_TRAINER_PROFESSION = 0x00000040, // 100%
UNIT_NPC_FLAG_INNKEEPER = 128, UNIT_NPC_FLAG_VENDOR = 0x00000080, // 100%
UNIT_NPC_FLAG_BANKER = 256, UNIT_NPC_FLAG_VENDOR_AMMO = 0x00000100, // 100%, general goods vendor
UNIT_NPC_FLAG_PETITIONER = 512, // 1024+512 = guild petitions, 512 = arena team petitions UNIT_NPC_FLAG_VENDOR_FOOD = 0x00000200, // 100%
UNIT_NPC_FLAG_TABARDVENDOR = 1024, UNIT_NPC_FLAG_VENDOR_POISON = 0x00000400, // guessed
UNIT_NPC_FLAG_BATTLEFIELDPERSON = 2048, UNIT_NPC_FLAG_VENDOR_REAGENT = 0x00000800, // 100%
UNIT_NPC_FLAG_AUCTIONEER = 4096, UNIT_NPC_FLAG_REPAIR = 0x00001000, // 100%
UNIT_NPC_FLAG_STABLE = 8192, UNIT_NPC_FLAG_FLIGHTMASTER = 0x00002000, // 100%
UNIT_NPC_FLAG_ARMORER = 16384, UNIT_NPC_FLAG_SPIRITHEALER = 0x00004000, // guessed
UNIT_NPC_FLAG_SPIRITGUIDE = 0x00008000, // guessed
UNIT_NPC_FLAG_INNKEEPER = 0x00010000, // 100%
UNIT_NPC_FLAG_BANKER = 0x00020000, // 100%
UNIT_NPC_FLAG_PETITIONER = 0x00040000, // 100% 0xC0000 = guild petitions, 0x40000 = arena team petitions
UNIT_NPC_FLAG_TABARDDESIGNER = 0x00080000, // 100%
UNIT_NPC_FLAG_BATTLEMASTER = 0x00100000, // 100%
UNIT_NPC_FLAG_AUCTIONEER = 0x00200000, // 100%
UNIT_NPC_FLAG_STABLEMASTER = 0x00400000, // 100%
UNIT_NPC_FLAG_GUILD_BANKER = 0x00800000, // cause client to send 997 opcode
UNIT_NPC_FLAG_UNK3 = 0x01000000, // cause client to send 1015 opcode
UNIT_NPC_FLAG_GUARD = 0x10000000, // custom flag for guards
}; };
#endif #endif
/// @} /// @}

View File

@ -346,7 +346,13 @@ enum SpellEffects
SPELL_EFFECT_141 = 141, SPELL_EFFECT_141 = 141,
SPELL_EFFECT_142 = 142, SPELL_EFFECT_142 = 142,
SPELL_EFFECT_143 = 143, SPELL_EFFECT_143 = 143,
TOTAL_SPELL_EFFECTS = 144 SPELL_EFFECT_144 = 144,
SPELL_EFFECT_145 = 145,
SPELL_EFFECT_146 = 146,
SPELL_EFFECT_147 = 147,
SPELL_EFFECT_148 = 148,
SPELL_EFFECT_149 = 149,
TOTAL_SPELL_EFFECTS = 150
}; };
enum CharacterStates enum CharacterStates
@ -395,7 +401,10 @@ enum GameobjectTypes
GAMEOBJECT_TYPE_CAPTURE_POINT = 29, GAMEOBJECT_TYPE_CAPTURE_POINT = 29,
GAMEOBJECT_TYPE_AURA_GENERATOR = 30, GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31, GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
MAX_GAMEOBJECT_TYPE = 32 // sending to client this or greater value can crash client. GAMEOBJECT_TYPE_DO_NOT_USE_YET = 32,
GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
GAMEOBJECT_TYPE_GUILD_BANK = 34,
MAX_GAMEOBJECT_TYPE = 35 // sending to client this or greater value can crash client.
}; };
enum TextEmote enum TextEmote
@ -658,7 +667,28 @@ enum Emote
EMOTE_ONESHOT_ATTACKOFFPIERCE = 390, EMOTE_ONESHOT_ATTACKOFFPIERCE = 390,
EMOTE_STATE_ROAR = 391, EMOTE_STATE_ROAR = 391,
EMOTE_STATE_LAUGH = 392, EMOTE_STATE_LAUGH = 392,
EMOTE_ONESHOT_CREATURE_SPECIAL = 393 EMOTE_ONESHOT_CREATURE_SPECIAL = 393,
EMOTE_ONESHOT_JUMPLANDRUN = 394,
EMOTE_ONESHOT_JUMPEND = 395,
EMOTE_ONESHOT_TALK_NOSHEATHE = 396,
EMOTE_ONESHOT_POINT_NOSHEATHE = 397,
EMOTE_STATE_CANNIBALIZE = 398,
EMOTE_ONESHOT_JUMPSTART = 399,
EMOTE_STATE_DANCESPECIAL = 400,
EMOTE_ONESHOT_DANCESPECIAL = 401,
EMOTE_ONESHOT_CUSTOMSPELL01 = 402,
EMOTE_ONESHOT_CUSTOMSPELL02 = 403,
EMOTE_ONESHOT_CUSTOMSPELL03 = 404,
EMOTE_ONESHOT_CUSTOMSPELL04 = 405,
EMOTE_ONESHOT_CUSTOMSPELL05 = 406,
EMOTE_ONESHOT_CUSTOMSPELL06 = 407,
EMOTE_ONESHOT_CUSTOMSPELL07 = 408,
EMOTE_ONESHOT_CUSTOMSPELL08 = 409,
EMOTE_ONESHOT_CUSTOMSPELL09 = 410,
EMOTE_ONESHOT_CUSTOMSPELL10 = 411,
EMOTE_STATE_EXCLAIM = 412,
EMOTE_STATE_SIT_CHAIR_MED = 415,
EMOTE_STATE_SPELLEFFECT_HOLD = 422
}; };
enum Anim enum Anim
@ -953,7 +983,8 @@ enum CreatureFamily
CREATURE_FAMILY_WARP_STALKER = 32, CREATURE_FAMILY_WARP_STALKER = 32,
CREATURE_FAMILY_SPOREBAT = 33, CREATURE_FAMILY_SPOREBAT = 33,
CREATURE_FAMILY_NETHER_RAY = 34, CREATURE_FAMILY_NETHER_RAY = 34,
CREATURE_FAMILY_SERPENT = 35 CREATURE_FAMILY_SERPENT = 35,
CREATURE_FAMILY_SEA_LION = 36
}; };
enum CreatureEliteType enum CreatureEliteType
@ -1182,7 +1213,8 @@ enum SkillCategory
SKILL_CATEGORY_ARMOR = 8, SKILL_CATEGORY_ARMOR = 8,
SKILL_CATEGORY_SECONDARY = 9, // secondary professions SKILL_CATEGORY_SECONDARY = 9, // secondary professions
SKILL_CATEGORY_LANGUAGES = 10, SKILL_CATEGORY_LANGUAGES = 10,
SKILL_CATEGORY_PROFESSION = 11 // primary professions SKILL_CATEGORY_PROFESSION = 11, // primary professions
SKILL_CATEGORY_NOT_DISPLAYED = 12
}; };
enum TotemCategory enum TotemCategory

View File

@ -208,7 +208,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& recvPacket) void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& recvPacket)
{ {
uint8 flags; uint8 flags,unk8;
uint32 unk32,flags2,time,transtime,higuid; uint32 unk32,flags2,time,transtime,higuid;
float unkfx,unkfy,unkfz,x,y,z,o,tx,ty,tz,to; float unkfx,unkfy,unkfz,x,y,z,o,tx,ty,tz,to;
uint64 transguid; uint64 transguid;
@ -223,7 +223,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
if(flags & UPDATEFLAG_LIVING) if(flags & UPDATEFLAG_LIVING)
{ {
recvPacket >> flags2 >> time; recvPacket >> flags2 >> unk8 >> time;
} }
logdev("MovementUpdate TypeID=%u GUID="I64FMT" pObj=%X flags=%u flags2=%u",objtypeid,uguid,obj,flags,flags2); logdev("MovementUpdate TypeID=%u GUID="I64FMT" pObj=%X flags=%u flags2=%u",objtypeid,uguid,obj,flags,flags2);

View File

@ -19,308 +19,302 @@
#ifndef _UPDATEFIELDS_AUTO_H #ifndef _UPDATEFIELDS_AUTO_H
#define _UPDATEFIELDS_AUTO_H #define _UPDATEFIELDS_AUTO_H
// Auto generated for version 2.1.3, build 6898 // Auto generated for version 0, 3, 2, 7655
enum EObjectFields enum EObjectFields
{ {
OBJECT_FIELD_GUID = 0x0000, // 2 4 1 OBJECT_FIELD_GUID = 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
OBJECT_FIELD_TYPE = 0x0002, // 1 1 1 OBJECT_FIELD_TYPE = 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
OBJECT_FIELD_ENTRY = 0x0003, // 1 1 1 OBJECT_FIELD_ENTRY = 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
OBJECT_FIELD_SCALE_X = 0x0004, // 1 3 1 OBJECT_FIELD_SCALE_X = 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
OBJECT_FIELD_PADDING = 0x0005, // 1 1 0 OBJECT_FIELD_PADDING = 0x0005, // Size: 1, Type: INT, Flags: NONE
OBJECT_END = 0x0006, OBJECT_END = 0x0006,
}; };
enum EItemFields enum EItemFields
{ {
ITEM_FIELD_OWNER = 0x0006, // 2 4 1 ITEM_FIELD_OWNER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
ITEM_FIELD_CONTAINED = 0x0008, // 2 4 1 ITEM_FIELD_CONTAINED = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
ITEM_FIELD_CREATOR = 0x000A, // 2 4 1 ITEM_FIELD_CREATOR = OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PUBLIC
ITEM_FIELD_GIFTCREATOR = 0x000C, // 2 4 1 ITEM_FIELD_GIFTCREATOR = OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
ITEM_FIELD_STACK_COUNT = 0x000E, // 1 1 20 ITEM_FIELD_STACK_COUNT = OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
ITEM_FIELD_DURATION = 0x000F, // 1 1 20 ITEM_FIELD_DURATION = OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
ITEM_FIELD_SPELL_CHARGES = 0x0010, // 5 1 20 ITEM_FIELD_SPELL_CHARGES = OBJECT_END + 0x000A, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
ITEM_FIELD_FLAGS = 0x0015, // 1 1 1 ITEM_FIELD_FLAGS = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
/* ITEM_FIELD_ENCHANTMENT = OBJECT_END + 0x0010, // Size: 33, Type: INT, Flags: PUBLIC
There is two types of enchantments: property based and suffix based. ITEM_FIELD_PROPERTY_SEED = OBJECT_END + 0x0031, // Size: 1, Type: INT, Flags: PUBLIC
Item can have only one of the two.
Suffix based linked to item.randomproperty_2 field and property based // custom
to item.randomproperty_1 field (item prototype). ITEM_FIELD_SUFFIX_FACTOR = ITEM_FIELD_PROPERTY_SEED,
Suffix based enchantments sent to the client as negative value, in
addition they require ITEM_FIELD_SUFFIX_FACTOR field to be send in ITEM_FIELD_RANDOM_PROPERTIES_ID = OBJECT_END + 0x0032, // Size: 1, Type: INT, Flags: PUBLIC
order to calculate the bonus value. Property based enchantments are send ITEM_FIELD_ITEM_TEXT_ID = OBJECT_END + 0x0033, // Size: 1, Type: INT, Flags: OWNER_ONLY
as positive values and do not require any aditional values since the bonuses ITEM_FIELD_DURABILITY = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
are already stored inside spellitemenchantment. Suffix based enchantments uses ITEM_FIELD_MAXDURABILITY = OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
6-8 fields in EnchantmentSlot while property based uses 8-10 in EnchantmentSlot. ITEM_END = OBJECT_END + 0x0036,
*/
ITEM_FIELD_ENCHANTMENT = 0x0016, // 33 1 1
ITEM_FIELD_PROPERTY_SEED = 0x0037, // 1 1 1
ITEM_FIELD_SUFFIX_FACTOR = ITEM_FIELD_PROPERTY_SEED, //custom
ITEM_FIELD_RANDOM_PROPERTIES_ID = 0x0038, // 1 1 1
ITEM_FIELD_ITEM_TEXT_ID = 0x0039, // 1 1 4
ITEM_FIELD_DURABILITY = 0x003A, // 1 1 20
ITEM_FIELD_MAXDURABILITY = 0x003B, // 1 1 20
ITEM_END = 0x003C,
}; };
enum EContainerFields enum EContainerFields
{ {
CONTAINER_FIELD_NUM_SLOTS = 0x003C, // 1 1 1 CONTAINER_FIELD_NUM_SLOTS = ITEM_END + 0x0000, // Size: 1, Type: INT, Flags: PUBLIC
CONTAINER_ALIGN_PAD = 0x003D, // 1 5 0 CONTAINER_ALIGN_PAD = ITEM_END + 0x0001, // Size: 1, Type: BYTES, Flags: NONE
CONTAINER_FIELD_SLOT_1 = 0x003E, // 72 4 1 CONTAINER_FIELD_SLOT_1 = ITEM_END + 0x0002, // Size: 72, Type: LONG, Flags: PUBLIC
CONTAINER_END = 0x0086, CONTAINER_END = ITEM_END + 0x004A,
}; };
enum EUnitFields enum EUnitFields
{ {
UNIT_FIELD_CHARM = 0x0006, // 2 4 1 UNIT_FIELD_CHARM = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_SUMMON = 0x0008, // 2 4 1 UNIT_FIELD_SUMMON = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_CHARMEDBY = 0x000A, // 2 4 1 UNIT_FIELD_CHARMEDBY = OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_SUMMONEDBY = 0x000C, // 2 4 1 UNIT_FIELD_SUMMONEDBY = OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_CREATEDBY = 0x000E, // 2 4 1 UNIT_FIELD_CREATEDBY = OBJECT_END + 0x0008, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_TARGET = 0x0010, // 2 4 1 UNIT_FIELD_TARGET = OBJECT_END + 0x000A, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_PERSUADED = 0x0012, // 2 4 1 UNIT_FIELD_PERSUADED = OBJECT_END + 0x000C, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_CHANNEL_OBJECT = 0x0014, // 2 4 1 UNIT_FIELD_CHANNEL_OBJECT = OBJECT_END + 0x000E, // Size: 2, Type: LONG, Flags: PUBLIC
UNIT_FIELD_HEALTH = 0x0016, // 1 1 256 UNIT_FIELD_HEALTH = OBJECT_END + 0x0010, // Size: 1, Type: INT, Flags: DYNAMIC
UNIT_FIELD_POWER1 = 0x0017, // 1 1 1 UNIT_FIELD_POWER1 = OBJECT_END + 0x0011, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_POWER2 = 0x0018, // 1 1 1 UNIT_FIELD_POWER2 = OBJECT_END + 0x0012, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_POWER3 = 0x0019, // 1 1 1 UNIT_FIELD_POWER3 = OBJECT_END + 0x0013, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_POWER4 = 0x001A, // 1 1 1 UNIT_FIELD_POWER4 = OBJECT_END + 0x0014, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_POWER5 = 0x001B, // 1 1 1 UNIT_FIELD_POWER5 = OBJECT_END + 0x0015, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_MAXHEALTH = 0x001C, // 1 1 256 UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x0016, // Size: 1, Type: INT, Flags: DYNAMIC
UNIT_FIELD_MAXPOWER1 = 0x001D, // 1 1 1 UNIT_FIELD_MAXPOWER1 = OBJECT_END + 0x0017, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_MAXPOWER2 = 0x001E, // 1 1 1 UNIT_FIELD_MAXPOWER2 = OBJECT_END + 0x0018, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_MAXPOWER3 = 0x001F, // 1 1 1 UNIT_FIELD_MAXPOWER3 = OBJECT_END + 0x0019, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_MAXPOWER4 = 0x0020, // 1 1 1 UNIT_FIELD_MAXPOWER4 = OBJECT_END + 0x001A, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_MAXPOWER5 = 0x0021, // 1 1 1 UNIT_FIELD_MAXPOWER5 = OBJECT_END + 0x001B, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_LEVEL = 0x0022, // 1 1 1 UNIT_FIELD_LEVEL = OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_FACTIONTEMPLATE = 0x0023, // 1 1 1 UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_BYTES_0 = 0x0024, // 1 5 1 UNIT_FIELD_BYTES_0 = OBJECT_END + 0x001E, // Size: 1, Type: BYTES, Flags: PUBLIC
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY = 0x0025, // 3 1 1 UNIT_VIRTUAL_ITEM_SLOT_DISPLAY = OBJECT_END + 0x001F, // Size: 3, Type: INT, Flags: PUBLIC
UNIT_VIRTUAL_ITEM_INFO = 0x0028, // 6 5 1 UNIT_VIRTUAL_ITEM_INFO = OBJECT_END + 0x0022, // Size: 6, Type: BYTES, Flags: PUBLIC
UNIT_FIELD_FLAGS = 0x002E, // 1 1 1 UNIT_FIELD_FLAGS = OBJECT_END + 0x0028, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_FLAGS_2 = 0x002F, // 1 1 1 UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x0029, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_AURA = 0x0030, // 56 1 1 UNIT_FIELD_AURA = OBJECT_END + 0x002A, // Size: 56, Type: INT, Flags: PUBLIC
UNIT_FIELD_AURAFLAGS = 0x0068, // 7 5 1 UNIT_FIELD_AURAFLAGS = OBJECT_END + 0x0062, // Size: 14, Type: BYTES, Flags: PUBLIC
UNIT_FIELD_AURALEVELS = 0x006F, // 14 5 1 UNIT_FIELD_AURALEVELS = OBJECT_END + 0x0070, // Size: 14, Type: BYTES, Flags: PUBLIC
UNIT_FIELD_AURAAPPLICATIONS = 0x007D, // 14 5 1 UNIT_FIELD_AURAAPPLICATIONS = OBJECT_END + 0x007E, // Size: 14, Type: BYTES, Flags: PUBLIC
UNIT_FIELD_AURASTATE = 0x008B, // 1 1 1 UNIT_FIELD_AURASTATE = OBJECT_END + 0x008C, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_FIELD_BASEATTACKTIME = 0x008C, // 2 1 1 UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x008D, // Size: 2, Type: INT, Flags: PUBLIC
UNIT_FIELD_OFFHANDATTACKTIME = UNIT_FIELD_BASEATTACKTIME + 1, // custom
UNIT_FIELD_RANGEDATTACKTIME = 0x008E, // 1 1 2
UNIT_FIELD_BOUNDINGRADIUS = 0x008F, // 1 3 1
UNIT_FIELD_COMBATREACH = 0x0090, // 1 3 1
UNIT_FIELD_DISPLAYID = 0x0091, // 1 1 1
UNIT_FIELD_NATIVEDISPLAYID = 0x0092, // 1 1 1
UNIT_FIELD_MOUNTDISPLAYID = 0x0093, // 1 1 1
UNIT_FIELD_MINDAMAGE = 0x0094, // 1 3 38
UNIT_FIELD_MAXDAMAGE = 0x0095, // 1 3 38
UNIT_FIELD_MINOFFHANDDAMAGE = 0x0096, // 1 3 38
UNIT_FIELD_MAXOFFHANDDAMAGE = 0x0097, // 1 3 38
UNIT_FIELD_BYTES_1 = 0x0098, // 1 5 1
UNIT_FIELD_PETNUMBER = 0x0099, // 1 1 1
UNIT_FIELD_PET_NAME_TIMESTAMP = 0x009A, // 1 1 1
UNIT_FIELD_PETEXPERIENCE = 0x009B, // 1 1 4
UNIT_FIELD_PETNEXTLEVELEXP = 0x009C, // 1 1 4
UNIT_DYNAMIC_FLAGS = 0x009D, // 1 1 256
UNIT_CHANNEL_SPELL = 0x009E, // 1 1 1
UNIT_MOD_CAST_SPEED = 0x009F, // 1 3 1
UNIT_CREATED_BY_SPELL = 0x00A0, // 1 1 1
UNIT_NPC_FLAGS = 0x00A1, // 1 1 1
UNIT_NPC_EMOTESTATE = 0x00A2, // 1 1 1
UNIT_TRAINING_POINTS = 0x00A3, // 1 2 4
UNIT_FIELD_STAT0 = 0x00A4, // 1 1 6
UNIT_FIELD_STAT1 = 0x00A5, // 1 1 6
UNIT_FIELD_STAT2 = 0x00A6, // 1 1 6
UNIT_FIELD_STAT3 = 0x00A7, // 1 1 6
UNIT_FIELD_STAT4 = 0x00A8, // 1 1 6
UNIT_FIELD_POSSTAT0 = 0x00A9, // 1 1 6
UNIT_FIELD_POSSTAT1 = 0x00AA, // 1 1 6
UNIT_FIELD_POSSTAT2 = 0x00AB, // 1 1 6
UNIT_FIELD_POSSTAT3 = 0x00AC, // 1 1 6
UNIT_FIELD_POSSTAT4 = 0x00AD, // 1 1 6
UNIT_FIELD_NEGSTAT0 = 0x00AE, // 1 1 6
UNIT_FIELD_NEGSTAT1 = 0x00AF, // 1 1 6
UNIT_FIELD_NEGSTAT2 = 0x00B0, // 1 1 6
UNIT_FIELD_NEGSTAT3 = 0x00B1, // 1 1 6
UNIT_FIELD_NEGSTAT4 = 0x00B2, // 1 1 6
UNIT_FIELD_RESISTANCES = 0x00B3, // 7 1 38
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = 0x00BA, // 7 1 6
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = 0x00C1, // 7 1 6
UNIT_FIELD_BASE_MANA = 0x00C8, // 1 1 6
UNIT_FIELD_BASE_HEALTH = 0x00C9, // 1 1 6
UNIT_FIELD_BYTES_2 = 0x00CA, // 1 5 1
UNIT_FIELD_ATTACK_POWER = 0x00CB, // 1 1 6
UNIT_FIELD_ATTACK_POWER_MODS = 0x00CC, // 1 2 6
UNIT_FIELD_ATTACK_POWER_MULTIPLIER = 0x00CD, // 1 3 6
UNIT_FIELD_RANGED_ATTACK_POWER = 0x00CE, // 1 1 6
UNIT_FIELD_RANGED_ATTACK_POWER_MODS = 0x00CF, // 1 2 6
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = 0x00D0, // 1 3 6
UNIT_FIELD_MINRANGEDDAMAGE = 0x00D1, // 1 3 6
UNIT_FIELD_MAXRANGEDDAMAGE = 0x00D2, // 1 3 6
UNIT_FIELD_POWER_COST_MODIFIER = 0x00D3, // 7 1 6
UNIT_FIELD_POWER_COST_MULTIPLIER = 0x00DA, // 7 3 6
UNIT_FIELD_PADDING = 0x00E1, // 1 1 0
UNIT_END = 0x00E2,
PLAYER_DUEL_ARBITER = 0x00E2, // 2 4 1 // custom
PLAYER_FLAGS = 0x00E4, // 1 1 1 UNIT_FIELD_OFFHANDATTACKTIME = UNIT_FIELD_BASEATTACKTIME + 1,
PLAYER_GUILDID = 0x00E5, // 1 1 1
PLAYER_GUILDRANK = 0x00E6, // 1 1 1 UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x008F, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_BYTES = 0x00E7, // 1 5 1 UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x0090, // Size: 1, Type: FLOAT, Flags: PUBLIC
PLAYER_BYTES_2 = 0x00E8, // 1 5 1 UNIT_FIELD_COMBATREACH = OBJECT_END + 0x0091, // Size: 1, Type: FLOAT, Flags: PUBLIC
PLAYER_BYTES_3 = 0x00E9, // 1 5 1 UNIT_FIELD_DISPLAYID = OBJECT_END + 0x0092, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_DUEL_TEAM = 0x00EA, // 1 1 1 UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x0093, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_GUILD_TIMESTAMP = 0x00EB, // 1 1 1 UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x0094, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_1_1 = 0x00EC, // 1 1 64 UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x0095, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
PLAYER_QUEST_LOG_1_2 = 0x00ED, // 2 1 2 UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x0096, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
PLAYER_QUEST_LOG_2_1 = 0x00EF, // 1 1 64 UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x0097, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
PLAYER_QUEST_LOG_2_2 = 0x00F0, // 2 1 2 UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x0098, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
PLAYER_QUEST_LOG_3_1 = 0x00F2, // 1 1 64 UNIT_FIELD_BYTES_1 = OBJECT_END + 0x0099, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_QUEST_LOG_3_2 = 0x00F3, // 2 1 2 UNIT_FIELD_PETNUMBER = OBJECT_END + 0x009A, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_4_1 = 0x00F5, // 1 1 64 UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x009B, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_4_2 = 0x00F6, // 2 1 2 UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x009C, // Size: 1, Type: INT, Flags: OWNER_ONLY
PLAYER_QUEST_LOG_5_1 = 0x00F8, // 1 1 64 UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x009D, // Size: 1, Type: INT, Flags: OWNER_ONLY
PLAYER_QUEST_LOG_5_2 = 0x00F9, // 2 1 2 UNIT_DYNAMIC_FLAGS = OBJECT_END + 0x009E, // Size: 1, Type: INT, Flags: DYNAMIC
PLAYER_QUEST_LOG_6_1 = 0x00FB, // 1 1 64 UNIT_CHANNEL_SPELL = OBJECT_END + 0x009F, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_6_2 = 0x00FC, // 2 1 2 UNIT_MOD_CAST_SPEED = OBJECT_END + 0x00A0, // Size: 1, Type: FLOAT, Flags: PUBLIC
PLAYER_QUEST_LOG_7_1 = 0x00FE, // 1 1 64 UNIT_CREATED_BY_SPELL = OBJECT_END + 0x00A1, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_7_2 = 0x00FF, // 2 1 2 UNIT_NPC_FLAGS = OBJECT_END + 0x00A2, // Size: 1, Type: INT, Flags: DYNAMIC
PLAYER_QUEST_LOG_8_1 = 0x0101, // 1 1 64 UNIT_NPC_EMOTESTATE = OBJECT_END + 0x00A3, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_8_2 = 0x0102, // 2 1 2 UNIT_TRAINING_POINTS = OBJECT_END + 0x00A4, // Size: 1, Type: TWO_SHORT, Flags: OWNER_ONLY
PLAYER_QUEST_LOG_9_1 = 0x0104, // 1 1 64 UNIT_FIELD_STAT0 = OBJECT_END + 0x00A5, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_9_2 = 0x0105, // 2 1 2 UNIT_FIELD_STAT1 = OBJECT_END + 0x00A6, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_10_1 = 0x0107, // 1 1 64 UNIT_FIELD_STAT2 = OBJECT_END + 0x00A7, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_10_2 = 0x0108, // 2 1 2 UNIT_FIELD_STAT3 = OBJECT_END + 0x00A8, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_11_1 = 0x010A, // 1 1 64 UNIT_FIELD_STAT4 = OBJECT_END + 0x00A9, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_11_2 = 0x010B, // 2 1 2 UNIT_FIELD_POSSTAT0 = OBJECT_END + 0x00AA, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_12_1 = 0x010D, // 1 1 64 UNIT_FIELD_POSSTAT1 = OBJECT_END + 0x00AB, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_12_2 = 0x010E, // 2 1 2 UNIT_FIELD_POSSTAT2 = OBJECT_END + 0x00AC, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_13_1 = 0x0110, // 1 1 64 UNIT_FIELD_POSSTAT3 = OBJECT_END + 0x00AD, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_13_2 = 0x0111, // 2 1 2 UNIT_FIELD_POSSTAT4 = OBJECT_END + 0x00AE, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_14_1 = 0x0113, // 1 1 64 UNIT_FIELD_NEGSTAT0 = OBJECT_END + 0x00AF, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_14_2 = 0x0114, // 2 1 2 UNIT_FIELD_NEGSTAT1 = OBJECT_END + 0x00B0, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_15_1 = 0x0116, // 1 1 64 UNIT_FIELD_NEGSTAT2 = OBJECT_END + 0x00B1, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_15_2 = 0x0117, // 2 1 2 UNIT_FIELD_NEGSTAT3 = OBJECT_END + 0x00B2, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_16_1 = 0x0119, // 1 1 64 UNIT_FIELD_NEGSTAT4 = OBJECT_END + 0x00B3, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_16_2 = 0x011A, // 2 1 2 UNIT_FIELD_RESISTANCES = OBJECT_END + 0x00B4, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
PLAYER_QUEST_LOG_17_1 = 0x011C, // 1 1 64 UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x00BB, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_17_2 = 0x011D, // 2 1 2 UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x00C2, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_18_1 = 0x011F, // 1 1 64 UNIT_FIELD_BASE_MANA = OBJECT_END + 0x00C9, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_18_2 = 0x0120, // 2 1 2 UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x00CA, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_19_1 = 0x0122, // 1 1 64 UNIT_FIELD_BYTES_2 = OBJECT_END + 0x00CB, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_QUEST_LOG_19_2 = 0x0123, // 2 1 2 UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x00CC, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_20_1 = 0x0125, // 1 1 64 UNIT_FIELD_ATTACK_POWER_MODS = OBJECT_END + 0x00CD, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_20_2 = 0x0126, // 2 1 2 UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x00CE, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_21_1 = 0x0128, // 1 1 64 UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x00CF, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_21_2 = 0x0129, // 2 1 2 UNIT_FIELD_RANGED_ATTACK_POWER_MODS = OBJECT_END + 0x00D0, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_22_1 = 0x012B, // 1 1 64 UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x00D1, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_22_2 = 0x012C, // 2 1 2 UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x00D2, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_23_1 = 0x012E, // 1 1 64 UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x00D3, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_23_2 = 0x012F, // 2 1 2 UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x00D4, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_24_1 = 0x0131, // 1 1 64 UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x00DB, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
PLAYER_QUEST_LOG_24_2 = 0x0132, // 2 1 2 UNIT_END = OBJECT_END + 0x00E2,
PLAYER_QUEST_LOG_25_1 = 0x0134, // 1 1 64
PLAYER_QUEST_LOG_25_2 = 0x0135, // 2 1 2 PLAYER_DUEL_ARBITER = UNIT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_1_CREATOR = 0x0137, // 2 4 1 PLAYER_FLAGS = UNIT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_1_0 = 0x0139, // 12 1 1 PLAYER_GUILDID = UNIT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_1_PROPERTIES = 0x0145, // 1 2 1 PLAYER_GUILDRANK = UNIT_END + 0x0004, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_1_PAD = 0x0146, // 1 1 1 PLAYER_BYTES = UNIT_END + 0x0005, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_CREATOR = 0x0147, // 2 4 1 PLAYER_BYTES_2 = UNIT_END + 0x0006, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_0 = 0x0149, // 12 1 1 PLAYER_BYTES_3 = UNIT_END + 0x0007, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_PROPERTIES = 0x0155, // 1 2 1 PLAYER_DUEL_TEAM = UNIT_END + 0x0008, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_PAD = 0x0156, // 1 1 1 PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x0009, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_3_CREATOR = 0x0157, // 2 4 1 PLAYER_QUEST_LOG_1_1 = UNIT_END + 0x000A, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_3_0 = 0x0159, // 12 1 1 PLAYER_QUEST_LOG_1_2 = UNIT_END + 0x000B, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_3_PROPERTIES = 0x0165, // 1 2 1 PLAYER_QUEST_LOG_2_1 = UNIT_END + 0x000D, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_3_PAD = 0x0166, // 1 1 1 PLAYER_QUEST_LOG_2_2 = UNIT_END + 0x000E, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_4_CREATOR = 0x0167, // 2 4 1 PLAYER_QUEST_LOG_3_1 = UNIT_END + 0x0010, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_4_0 = 0x0169, // 12 1 1 PLAYER_QUEST_LOG_3_2 = UNIT_END + 0x0011, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_4_PROPERTIES = 0x0175, // 1 2 1 PLAYER_QUEST_LOG_4_1 = UNIT_END + 0x0013, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_4_PAD = 0x0176, // 1 1 1 PLAYER_QUEST_LOG_4_2 = UNIT_END + 0x0014, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_5_CREATOR = 0x0177, // 2 4 1 PLAYER_QUEST_LOG_5_1 = UNIT_END + 0x0016, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_5_0 = 0x0179, // 12 1 1 PLAYER_QUEST_LOG_5_2 = UNIT_END + 0x0017, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_5_PROPERTIES = 0x0185, // 1 2 1 PLAYER_QUEST_LOG_6_1 = UNIT_END + 0x0019, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_5_PAD = 0x0186, // 1 1 1 PLAYER_QUEST_LOG_6_2 = UNIT_END + 0x001A, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_6_CREATOR = 0x0187, // 2 4 1 PLAYER_QUEST_LOG_7_1 = UNIT_END + 0x001C, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_6_0 = 0x0189, // 12 1 1 PLAYER_QUEST_LOG_7_2 = UNIT_END + 0x001D, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_6_PROPERTIES = 0x0195, // 1 2 1 PLAYER_QUEST_LOG_8_1 = UNIT_END + 0x001F, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_6_PAD = 0x0196, // 1 1 1 PLAYER_QUEST_LOG_8_2 = UNIT_END + 0x0020, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_7_CREATOR = 0x0197, // 2 4 1 PLAYER_QUEST_LOG_9_1 = UNIT_END + 0x0022, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_7_0 = 0x0199, // 12 1 1 PLAYER_QUEST_LOG_9_2 = UNIT_END + 0x0023, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_7_PROPERTIES = 0x01A5, // 1 2 1 PLAYER_QUEST_LOG_10_1 = UNIT_END + 0x0025, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_7_PAD = 0x01A6, // 1 1 1 PLAYER_QUEST_LOG_10_2 = UNIT_END + 0x0026, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_8_CREATOR = 0x01A7, // 2 4 1 PLAYER_QUEST_LOG_11_1 = UNIT_END + 0x0028, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_8_0 = 0x01A9, // 12 1 1 PLAYER_QUEST_LOG_11_2 = UNIT_END + 0x0029, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_8_PROPERTIES = 0x01B5, // 1 2 1 PLAYER_QUEST_LOG_12_1 = UNIT_END + 0x002B, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_8_PAD = 0x01B6, // 1 1 1 PLAYER_QUEST_LOG_12_2 = UNIT_END + 0x002C, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_9_CREATOR = 0x01B7, // 2 4 1 PLAYER_QUEST_LOG_13_1 = UNIT_END + 0x002E, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_9_0 = 0x01B9, // 12 1 1 PLAYER_QUEST_LOG_13_2 = UNIT_END + 0x002F, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_9_PROPERTIES = 0x01C5, // 1 2 1 PLAYER_QUEST_LOG_14_1 = UNIT_END + 0x0031, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_9_PAD = 0x01C6, // 1 1 1 PLAYER_QUEST_LOG_14_2 = UNIT_END + 0x0032, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_10_CREATOR = 0x01C7, // 2 4 1 PLAYER_QUEST_LOG_15_1 = UNIT_END + 0x0034, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_10_0 = 0x01C9, // 12 1 1 PLAYER_QUEST_LOG_15_2 = UNIT_END + 0x0035, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_10_PROPERTIES = 0x01D5, // 1 2 1 PLAYER_QUEST_LOG_16_1 = UNIT_END + 0x0037, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_10_PAD = 0x01D6, // 1 1 1 PLAYER_QUEST_LOG_16_2 = UNIT_END + 0x0038, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_11_CREATOR = 0x01D7, // 2 4 1 PLAYER_QUEST_LOG_17_1 = UNIT_END + 0x003A, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_11_0 = 0x01D9, // 12 1 1 PLAYER_QUEST_LOG_17_2 = UNIT_END + 0x003B, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_11_PROPERTIES = 0x01E5, // 1 2 1 PLAYER_QUEST_LOG_18_1 = UNIT_END + 0x003D, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_11_PAD = 0x01E6, // 1 1 1 PLAYER_QUEST_LOG_18_2 = UNIT_END + 0x003E, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_12_CREATOR = 0x01E7, // 2 4 1 PLAYER_QUEST_LOG_19_1 = UNIT_END + 0x0040, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_12_0 = 0x01E9, // 12 1 1 PLAYER_QUEST_LOG_19_2 = UNIT_END + 0x0041, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_12_PROPERTIES = 0x01F5, // 1 2 1 PLAYER_QUEST_LOG_20_1 = UNIT_END + 0x0043, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_12_PAD = 0x01F6, // 1 1 1 PLAYER_QUEST_LOG_20_2 = UNIT_END + 0x0044, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_13_CREATOR = 0x01F7, // 2 4 1 PLAYER_QUEST_LOG_21_1 = UNIT_END + 0x0046, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_13_0 = 0x01F9, // 12 1 1 PLAYER_QUEST_LOG_21_2 = UNIT_END + 0x0047, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_13_PROPERTIES = 0x0205, // 1 2 1 PLAYER_QUEST_LOG_22_1 = UNIT_END + 0x0049, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_13_PAD = 0x0206, // 1 1 1 PLAYER_QUEST_LOG_22_2 = UNIT_END + 0x004A, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_14_CREATOR = 0x0207, // 2 4 1 PLAYER_QUEST_LOG_23_1 = UNIT_END + 0x004C, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_14_0 = 0x0209, // 12 1 1 PLAYER_QUEST_LOG_23_2 = UNIT_END + 0x004D, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_14_PROPERTIES = 0x0215, // 1 2 1 PLAYER_QUEST_LOG_24_1 = UNIT_END + 0x004F, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_14_PAD = 0x0216, // 1 1 1 PLAYER_QUEST_LOG_24_2 = UNIT_END + 0x0050, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_15_CREATOR = 0x0217, // 2 4 1 PLAYER_QUEST_LOG_25_1 = UNIT_END + 0x0052, // Size: 1, Type: INT, Flags: GROUP_ONLY
PLAYER_VISIBLE_ITEM_15_0 = 0x0219, // 12 1 1 PLAYER_QUEST_LOG_25_2 = UNIT_END + 0x0053, // Size: 2, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_15_PROPERTIES = 0x0225, // 1 2 1 PLAYER_VISIBLE_ITEM_1_CREATOR = UNIT_END + 0x0055, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_PAD = 0x0226, // 1 1 1 PLAYER_VISIBLE_ITEM_1_0 = UNIT_END + 0x0057, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_CREATOR = 0x0227, // 2 4 1 PLAYER_VISIBLE_ITEM_1_PROPERTIES = UNIT_END + 0x0063, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_0 = 0x0229, // 12 1 1 PLAYER_VISIBLE_ITEM_1_PAD = UNIT_END + 0x0064, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_PROPERTIES = 0x0235, // 1 2 1 PLAYER_VISIBLE_ITEM_2_CREATOR = UNIT_END + 0x0065, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_PAD = 0x0236, // 1 1 1 PLAYER_VISIBLE_ITEM_2_0 = UNIT_END + 0x0067, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_CREATOR = 0x0237, // 2 4 1 PLAYER_VISIBLE_ITEM_2_PROPERTIES = UNIT_END + 0x0073, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_0 = 0x0239, // 12 1 1 PLAYER_VISIBLE_ITEM_2_PAD = UNIT_END + 0x0074, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_PROPERTIES = 0x0245, // 1 2 1 PLAYER_VISIBLE_ITEM_3_CREATOR = UNIT_END + 0x0075, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_PAD = 0x0246, // 1 1 1 PLAYER_VISIBLE_ITEM_3_0 = UNIT_END + 0x0077, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_CREATOR = 0x0247, // 2 4 1 PLAYER_VISIBLE_ITEM_3_PROPERTIES = UNIT_END + 0x0083, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_0 = 0x0249, // 12 1 1 PLAYER_VISIBLE_ITEM_3_PAD = UNIT_END + 0x0084, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_PROPERTIES = 0x0255, // 1 2 1 PLAYER_VISIBLE_ITEM_4_CREATOR = UNIT_END + 0x0085, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_PAD = 0x0256, // 1 1 1 PLAYER_VISIBLE_ITEM_4_0 = UNIT_END + 0x0087, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_CREATOR = 0x0257, // 2 4 1 PLAYER_VISIBLE_ITEM_4_PROPERTIES = UNIT_END + 0x0093, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_0 = 0x0259, // 12 1 1 PLAYER_VISIBLE_ITEM_4_PAD = UNIT_END + 0x0094, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_PROPERTIES = 0x0265, // 1 2 1 PLAYER_VISIBLE_ITEM_5_CREATOR = UNIT_END + 0x0095, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_PAD = 0x0266, // 1 1 1 PLAYER_VISIBLE_ITEM_5_0 = UNIT_END + 0x0097, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_CHOSEN_TITLE = 0x0267, // 1 1 1 PLAYER_VISIBLE_ITEM_5_PROPERTIES = UNIT_END + 0x00A3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_FIELD_INV_SLOT_HEAD = 0x0268, // 46 4 2 PLAYER_VISIBLE_ITEM_5_PAD = UNIT_END + 0x00A4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_FIELD_PACK_SLOT_1 = 0x0296, // 32 4 2 PLAYER_VISIBLE_ITEM_6_CREATOR = UNIT_END + 0x00A5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_FIELD_BANK_SLOT_1 = 0x02B6, // 56 4 2 PLAYER_VISIBLE_ITEM_6_0 = UNIT_END + 0x00A7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_FIELD_BANKBAG_SLOT_1 = 0x02EE, // 14 4 2 PLAYER_VISIBLE_ITEM_6_PROPERTIES = UNIT_END + 0x00B3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_FIELD_VENDORBUYBACK_SLOT_1 = 0x02FC, // 24 4 2 PLAYER_VISIBLE_ITEM_6_PAD = UNIT_END + 0x00B4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_FIELD_KEYRING_SLOT_1 = 0x0314, // 64 4 2 PLAYER_VISIBLE_ITEM_7_CREATOR = UNIT_END + 0x00B5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_FARSIGHT = 0x0354, // 2 4 2 PLAYER_VISIBLE_ITEM_7_0 = UNIT_END + 0x00B7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER__FIELD_KNOWN_TITLES = 0x0356, // 2 4 2 PLAYER_VISIBLE_ITEM_7_PROPERTIES = UNIT_END + 0x00C3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_XP = 0x0358, // 1 1 2 PLAYER_VISIBLE_ITEM_7_PAD = UNIT_END + 0x00C4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_NEXT_LEVEL_XP = 0x0359, // 1 1 2 PLAYER_VISIBLE_ITEM_8_CREATOR = UNIT_END + 0x00C5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_SKILL_INFO_1_1 = 0x035A, // 384 2 2 PLAYER_VISIBLE_ITEM_8_0 = UNIT_END + 0x00C7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_CHARACTER_POINTS1 = 0x04DA, // 1 1 2 PLAYER_VISIBLE_ITEM_8_PROPERTIES = UNIT_END + 0x00D3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_CHARACTER_POINTS2 = 0x04DB, // 1 1 2 PLAYER_VISIBLE_ITEM_8_PAD = UNIT_END + 0x00D4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_TRACK_CREATURES = 0x04DC, // 1 1 2 PLAYER_VISIBLE_ITEM_9_CREATOR = UNIT_END + 0x00D5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_TRACK_RESOURCES = 0x04DD, // 1 1 2 PLAYER_VISIBLE_ITEM_9_0 = UNIT_END + 0x00D7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_BLOCK_PERCENTAGE = 0x04DE, // 1 3 2 PLAYER_VISIBLE_ITEM_9_PROPERTIES = UNIT_END + 0x00E3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_DODGE_PERCENTAGE = 0x04DF, // 1 3 2 PLAYER_VISIBLE_ITEM_9_PAD = UNIT_END + 0x00E4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_PARRY_PERCENTAGE = 0x04E0, // 1 3 2 PLAYER_VISIBLE_ITEM_10_CREATOR = UNIT_END + 0x00E5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_CRIT_PERCENTAGE = 0x04E1, // 1 3 2 PLAYER_VISIBLE_ITEM_10_0 = UNIT_END + 0x00E7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_RANGED_CRIT_PERCENTAGE = 0x04E2, // 1 3 2 PLAYER_VISIBLE_ITEM_10_PROPERTIES = UNIT_END + 0x00F3, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_OFFHAND_CRIT_PERCENTAGE = 0x04E3, // 1 3 2 PLAYER_VISIBLE_ITEM_10_PAD = UNIT_END + 0x00F4, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_SPELL_CRIT_PERCENTAGE1 = 0x04E4, // 7 3 2 PLAYER_VISIBLE_ITEM_11_CREATOR = UNIT_END + 0x00F5, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_11_0 = UNIT_END + 0x00F7, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_11_PROPERTIES = UNIT_END + 0x0103, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_11_PAD = UNIT_END + 0x0104, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_CREATOR = UNIT_END + 0x0105, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_0 = UNIT_END + 0x0107, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_PROPERTIES = UNIT_END + 0x0113, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_PAD = UNIT_END + 0x0114, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_CREATOR = UNIT_END + 0x0115, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_0 = UNIT_END + 0x0117, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_PROPERTIES = UNIT_END + 0x0123, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_PAD = UNIT_END + 0x0124, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_CREATOR = UNIT_END + 0x0125, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_0 = UNIT_END + 0x0127, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_PROPERTIES = UNIT_END + 0x0133, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_PAD = UNIT_END + 0x0134, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_CREATOR = UNIT_END + 0x0135, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_0 = UNIT_END + 0x0137, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_PROPERTIES = UNIT_END + 0x0143, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_PAD = UNIT_END + 0x0144, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_CREATOR = UNIT_END + 0x0145, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_0 = UNIT_END + 0x0147, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_PROPERTIES = UNIT_END + 0x0153, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_PAD = UNIT_END + 0x0154, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_CREATOR = UNIT_END + 0x0155, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_0 = UNIT_END + 0x0157, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_PROPERTIES = UNIT_END + 0x0163, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_PAD = UNIT_END + 0x0164, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_CREATOR = UNIT_END + 0x0165, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_0 = UNIT_END + 0x0167, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_PROPERTIES = UNIT_END + 0x0173, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_PAD = UNIT_END + 0x0174, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_CREATOR = UNIT_END + 0x0175, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_0 = UNIT_END + 0x0177, // Size: 12, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_PROPERTIES = UNIT_END + 0x0183, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_PAD = UNIT_END + 0x0184, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_CHOSEN_TITLE = UNIT_END + 0x0185, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x0186, // Size: 46, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_PACK_SLOT_1 = UNIT_END + 0x01B4, // Size: 32, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_BANK_SLOT_1 = UNIT_END + 0x01D4, // Size: 56, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_BANKBAG_SLOT_1 = UNIT_END + 0x020C, // Size: 14, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_VENDORBUYBACK_SLOT_1 = UNIT_END + 0x021A, // Size: 24, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_KEYRING_SLOT_1 = UNIT_END + 0x0232, // Size: 64, Type: LONG, Flags: PRIVATE
PLAYER_FARSIGHT = UNIT_END + 0x0272, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x0274, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER_XP = UNIT_END + 0x0276, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x0277, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_SKILL_INFO_1_1 = UNIT_END + 0x0278, // Size: 384, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_CHARACTER_POINTS1 = UNIT_END + 0x03F8, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_CHARACTER_POINTS2 = UNIT_END + 0x03F9, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_TRACK_CREATURES = UNIT_END + 0x03FA, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_TRACK_RESOURCES = UNIT_END + 0x03FB, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x03FC, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x03FD, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x03FE, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_EXPERTISE = UNIT_END + 0x03FF, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x0400, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x0401, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x0402, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x0403, // Size: 7, Type: FLOAT, Flags: PRIVATE
// custom // custom
PLAYER_HOLY_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+1, PLAYER_HOLY_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+1,
@ -330,120 +324,146 @@ enum EUnitFields
PLAYER_SHADOW_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+5, PLAYER_SHADOW_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+5,
PLAYER_ARCANE_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+6, PLAYER_ARCANE_SPELL_CRIT_PERCENTAGE = PLAYER_SPELL_CRIT_PERCENTAGE1+6,
PLAYER_EXPLORED_ZONES_1 = 0x04EB, // 64 5 2 PLAYER_SHIELD_BLOCK = UNIT_END + 0x040A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_REST_STATE_EXPERIENCE = 0x052B, // 1 1 2 PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x040B, // Size: 64, Type: BYTES, Flags: PRIVATE
PLAYER_FIELD_COINAGE = 0x052C, // 1 1 2 PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x044B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_POS = 0x052D, // 7 1 2 PLAYER_FIELD_COINAGE = UNIT_END + 0x044C, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = 0x0534, // 7 1 2 PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x044D, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = 0x053B, // 7 1 2 PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x0454, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_HEALING_DONE_POS = 0x0542, // 1 1 2 PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x045B, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_TARGET_RESISTANCE = 0x0543, // 1 1 2 PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x0462, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BYTES = 0x0544, // 1 5 2 PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x0463, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_AMMO_ID = 0x0545, // 1 1 2 PLAYER_FIELD_BYTES = UNIT_END + 0x0464, // Size: 1, Type: BYTES, Flags: PRIVATE
PLAYER_SELF_RES_SPELL = 0x0546, // 1 1 2 PLAYER_AMMO_ID = UNIT_END + 0x0465, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_PVP_MEDALS = 0x0547, // 1 1 2 PLAYER_SELF_RES_SPELL = UNIT_END + 0x0466, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BUYBACK_PRICE_1 = 0x0548, // 12 1 2 PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x0467, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = 0x0554, // 12 1 2 PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x0468, // Size: 12, Type: INT, Flags: PRIVATE
PLAYER_FIELD_KILLS = 0x0560, // 1 2 2 PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x0474, // Size: 12, Type: INT, Flags: PRIVATE
PLAYER_FIELD_TODAY_CONTRIBUTION = 0x0561, // 1 1 2 PLAYER_FIELD_KILLS = UNIT_END + 0x0480, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_FIELD_YESTERDAY_CONTRIBUTION = 0x0562, // 1 1 2 PLAYER_FIELD_TODAY_CONTRIBUTION = UNIT_END + 0x0481, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS = 0x0563, // 1 1 2 PLAYER_FIELD_YESTERDAY_CONTRIBUTION = UNIT_END + 0x0482, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BYTES2 = 0x0564, // 1 5 2 PLAYER_FIELD_LIFETIME_HONORBALE_KILLS = UNIT_END + 0x0483, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_WATCHED_FACTION_INDEX = 0x0565, // 1 1 2 PLAYER_FIELD_BYTES2 = UNIT_END + 0x0484, // Size: 1, Type: BYTES, Flags: PRIVATE
PLAYER_FIELD_COMBAT_RATING_1 = 0x0566, // 23 1 2 PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x0485, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x0486, // Size: 24, Type: INT, Flags: PRIVATE
// custom // custom // client names:
// CR_WEAPON_SKILL
PLAYER_FIELD_ALL_WEAPONS_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1, PLAYER_FIELD_ALL_WEAPONS_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1,
// CR_DEFENSE_SKILL
PLAYER_FIELD_DEFENCE_RATING = PLAYER_FIELD_COMBAT_RATING_1+1, PLAYER_FIELD_DEFENCE_RATING = PLAYER_FIELD_COMBAT_RATING_1+1,
// CR_DODGE
PLAYER_FIELD_DODGE_RATING = PLAYER_FIELD_COMBAT_RATING_1+2, PLAYER_FIELD_DODGE_RATING = PLAYER_FIELD_COMBAT_RATING_1+2,
// CR_PARRY
PLAYER_FIELD_PARRY_RATING = PLAYER_FIELD_COMBAT_RATING_1+3, PLAYER_FIELD_PARRY_RATING = PLAYER_FIELD_COMBAT_RATING_1+3,
// CR_BLOCK
PLAYER_FIELD_BLOCK_RATING = PLAYER_FIELD_COMBAT_RATING_1+4, PLAYER_FIELD_BLOCK_RATING = PLAYER_FIELD_COMBAT_RATING_1+4,
// CR_HIT_MELEE
PLAYER_FIELD_MELEE_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+5, PLAYER_FIELD_MELEE_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+5,
// CR_HIT_RANGED
PLAYER_FIELD_RANGED_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+6, PLAYER_FIELD_RANGED_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+6,
// CR_HIT_SPELL
PLAYER_FIELD_SPELL_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+7, PLAYER_FIELD_SPELL_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+7,
// CR_CRIT_MELEE
PLAYER_FIELD_MELEE_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+8, PLAYER_FIELD_MELEE_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+8,
// CR_CRIT_RANGED
PLAYER_FIELD_RANGED_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+9, PLAYER_FIELD_RANGED_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+9,
// CR_CRIT_SPELL
PLAYER_FIELD_SPELL_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+10, PLAYER_FIELD_SPELL_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+10,
PLAYER_FIELD_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+11, // unsure, was PLAYER_FIELD_UNK1_RATING // CR_HIT_TAKEN_MELEE
PLAYER_FIELD_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+12, // unsure, was PLAYER_FIELD_UNK2_RATING PLAYER_FIELD_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+11,
// CR_HIT_TAKEN_RANGED
PLAYER_FIELD_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+12,
// CR_HIT_TAKEN_SPELL
PLAYER_FIELD_UNK3_RATING = PLAYER_FIELD_COMBAT_RATING_1+13, PLAYER_FIELD_UNK3_RATING = PLAYER_FIELD_COMBAT_RATING_1+13,
// CR_CRIT_TAKEN_MELEE
PLAYER_FIELD_UNK4_RATING = PLAYER_FIELD_COMBAT_RATING_1+14, PLAYER_FIELD_UNK4_RATING = PLAYER_FIELD_COMBAT_RATING_1+14,
// CR_CRIT_TAKEN_RANGED
PLAYER_FIELD_UNK5_RATING = PLAYER_FIELD_COMBAT_RATING_1+15, PLAYER_FIELD_UNK5_RATING = PLAYER_FIELD_COMBAT_RATING_1+15,
// CR_CRIT_TAKEN_SPELL
PLAYER_FIELD_RESILIENCE_RATING = PLAYER_FIELD_COMBAT_RATING_1+16, PLAYER_FIELD_RESILIENCE_RATING = PLAYER_FIELD_COMBAT_RATING_1+16,
// CR_HASTE_MELEE
PLAYER_FIELD_MELEE_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+17, PLAYER_FIELD_MELEE_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+17,
PLAYER_FIELD_RANGED_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+19, // CR_HASTE_RANGED
PLAYER_FIELD_SPELL_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+20, PLAYER_FIELD_RANGED_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+18,
PLAYER_FIELD_MELEE_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+21, // CR_HASTE_SPELL
PLAYER_FIELD_OFFHAND_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+22, PLAYER_FIELD_SPELL_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+19,
PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+23, // CR_WEAPON_SKILL_MAINHAND
PLAYER_FIELD_MELEE_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+20,
// CR_WEAPON_SKILL_OFFHAND
PLAYER_FIELD_OFFHAND_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+21,
// CR_WEAPON_SKILL_RANGED
PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+22,
// CR_EXPERTISE
PLAYER_FIELD_EXPERTISE_RATING = PLAYER_FIELD_COMBAT_RATING_1+23,
PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = 0x057D, // 15 1 2 PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x049E, // Size: 18, Type: INT, Flags: PRIVATE
// custom // custom
PLAYER_FIELD_ARENA_TEAM_ID_2v2 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1, PLAYER_FIELD_ARENA_TEAM_ID_2v2 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1,
PLAYER_FIELD_ARENA_TEAM_ID_3v3 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1+5, PLAYER_FIELD_ARENA_TEAM_ID_3v3 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1+6,
PLAYER_FIELD_ARENA_TEAM_ID_5v5 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1+10, PLAYER_FIELD_ARENA_TEAM_ID_5v5 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1+12,
PLAYER_FIELD_HONOR_CURRENCY = 0x058C, // 1 1 2 PLAYER_FIELD_HONOR_CURRENCY = UNIT_END + 0x04B0, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_ARENA_CURRENCY = 0x058D, // 1 1 2 PLAYER_FIELD_ARENA_CURRENCY = UNIT_END + 0x04B1, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_MANA_REGEN = 0x058E, // 1 3 2 PLAYER_FIELD_MOD_MANA_REGEN = UNIT_END + 0x04B2, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT = 0x058F, // 1 3 2 PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT = UNIT_END + 0x04B3, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_FIELD_MAX_LEVEL = 0x0590, // 1 1 2 PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x04B4, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_DAILY_QUESTS_1 = 0x0591, // 10 1 2 PLAYER_FIELD_DAILY_QUESTS_1 = UNIT_END + 0x04B5, // Size: 10, Type: INT, Flags: PRIVATE
PLAYER_FIELD_PADDING = 0x059B, // 1 1 0 PLAYER_FIELD_PADDING = UNIT_END + 0x04BF, // Size: 1, Type: INT, Flags: NONE
PLAYER_END = 0x059C, PLAYER_END = UNIT_END + 0x04C0,
}; };
enum EGameObjectFields enum EGameObjectFields
{ {
OBJECT_FIELD_CREATED_BY = 0x0006, // 2 4 1 OBJECT_FIELD_CREATED_BY = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
GAMEOBJECT_DISPLAYID = 0x0008, // 1 1 1 GAMEOBJECT_DISPLAYID = OBJECT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_FLAGS = 0x0009, // 1 1 1 GAMEOBJECT_FLAGS = OBJECT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_ROTATION = 0x000A, // 4 3 1 GAMEOBJECT_ROTATION = OBJECT_END + 0x0004, // Size: 4, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_STATE = 0x000E, // 1 1 1 GAMEOBJECT_STATE = OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_POS_X = 0x000F, // 1 3 1 GAMEOBJECT_POS_X = OBJECT_END + 0x0009, // Size: 1, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_POS_Y = 0x0010, // 1 3 1 GAMEOBJECT_POS_Y = OBJECT_END + 0x000A, // Size: 1, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_POS_Z = 0x0011, // 1 3 1 GAMEOBJECT_POS_Z = OBJECT_END + 0x000B, // Size: 1, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_FACING = 0x0012, // 1 3 1 GAMEOBJECT_FACING = OBJECT_END + 0x000C, // Size: 1, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_DYN_FLAGS = 0x0013, // 1 1 256 GAMEOBJECT_DYN_FLAGS = OBJECT_END + 0x000D, // Size: 1, Type: INT, Flags: DYNAMIC
GAMEOBJECT_FACTION = 0x0014, // 1 1 1 GAMEOBJECT_FACTION = OBJECT_END + 0x000E, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_TYPE_ID = 0x0015, // 1 1 1 GAMEOBJECT_TYPE_ID = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_LEVEL = 0x0016, // 1 1 1 GAMEOBJECT_LEVEL = OBJECT_END + 0x0010, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_ARTKIT = 0x0017, // 1 1 1 GAMEOBJECT_ARTKIT = OBJECT_END + 0x0011, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_ANIMPROGRESS = 0x0018, // 1 1 256 GAMEOBJECT_ANIMPROGRESS = OBJECT_END + 0x0012, // Size: 1, Type: INT, Flags: DYNAMIC
GAMEOBJECT_PADDING = 0x0019, // 1 1 0 GAMEOBJECT_PADDING = OBJECT_END + 0x0013, // Size: 1, Type: INT, Flags: NONE
GAMEOBJECT_END = 0x001A, GAMEOBJECT_END = OBJECT_END + 0x0014,
}; };
enum EDynamicObjectFields enum EDynamicObjectFields
{ {
DYNAMICOBJECT_CASTER = 0x0006, // 2 4 1 DYNAMICOBJECT_CASTER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
DYNAMICOBJECT_BYTES = 0x0008, // 1 5 1 DYNAMICOBJECT_BYTES = OBJECT_END + 0x0002, // Size: 1, Type: BYTES, Flags: PUBLIC
DYNAMICOBJECT_SPELLID = 0x0009, // 1 1 1 DYNAMICOBJECT_SPELLID = OBJECT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
DYNAMICOBJECT_RADIUS = 0x000A, // 1 3 1 DYNAMICOBJECT_RADIUS = OBJECT_END + 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_POS_X = 0x000B, // 1 3 1 DYNAMICOBJECT_POS_X = OBJECT_END + 0x0005, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_POS_Y = 0x000C, // 1 3 1 DYNAMICOBJECT_POS_Y = OBJECT_END + 0x0006, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_POS_Z = 0x000D, // 1 3 1 DYNAMICOBJECT_POS_Z = OBJECT_END + 0x0007, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_FACING = 0x000E, // 1 3 1 DYNAMICOBJECT_FACING = OBJECT_END + 0x0008, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_PAD = 0x000F, // 1 5 1 DYNAMICOBJECT_PAD = OBJECT_END + 0x0009, // Size: 1, Type: BYTES, Flags: PUBLIC
DYNAMICOBJECT_END = 0x0010, DYNAMICOBJECT_END = OBJECT_END + 0x000A,
}; };
enum ECorpseFields enum ECorpseFields
{ {
CORPSE_FIELD_OWNER = 0x0006, // 2 4 1 CORPSE_FIELD_OWNER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
CORPSE_FIELD_FACING = 0x0008, // 1 3 1 CORPSE_FIELD_FACING = OBJECT_END + 0x0002, // Size: 1, Type: FLOAT, Flags: PUBLIC
CORPSE_FIELD_POS_X = 0x0009, // 1 3 1 CORPSE_FIELD_POS_X = OBJECT_END + 0x0003, // Size: 1, Type: FLOAT, Flags: PUBLIC
CORPSE_FIELD_POS_Y = 0x000A, // 1 3 1 CORPSE_FIELD_POS_Y = OBJECT_END + 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
CORPSE_FIELD_POS_Z = 0x000B, // 1 3 1 CORPSE_FIELD_POS_Z = OBJECT_END + 0x0005, // Size: 1, Type: FLOAT, Flags: PUBLIC
CORPSE_FIELD_DISPLAY_ID = 0x000C, // 1 1 1 CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x0006, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_ITEM = 0x000D, // 19 1 1 CORPSE_FIELD_ITEM = OBJECT_END + 0x0007, // Size: 19, Type: INT, Flags: PUBLIC
CORPSE_FIELD_BYTES_1 = 0x0020, // 1 5 1 CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x001A, // Size: 1, Type: BYTES, Flags: PUBLIC
CORPSE_FIELD_BYTES_2 = 0x0021, // 1 5 1 CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x001B, // Size: 1, Type: BYTES, Flags: PUBLIC
CORPSE_FIELD_GUILD = 0x0022, // 1 1 1 CORPSE_FIELD_GUILD = OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_FLAGS = 0x0023, // 1 1 1 CORPSE_FIELD_FLAGS = OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_DYNAMIC_FLAGS = 0x0024, // 1 1 256 CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x001E, // Size: 1, Type: INT, Flags: DYNAMIC
CORPSE_FIELD_PAD = 0x0025, // 1 1 0 CORPSE_FIELD_PAD = OBJECT_END + 0x001F, // Size: 1, Type: INT, Flags: NONE
CORPSE_END = 0x0026, CORPSE_END = OBJECT_END + 0x0020,
}; };
#endif #endif

View File

@ -56,6 +56,12 @@ WorldSession::~WorldSession()
DEBUG(logdebug("~WorldSession() this=0x%X _instance=0x%X",this,_instance)); DEBUG(logdebug("~WorldSession() this=0x%X _instance=0x%X",this,_instance));
} }
void WorldSession::SetMustDie(void)
{
_mustdie = true;
logdebug("WorldSession: Must die now.");
}
void WorldSession::Start(void) void WorldSession::Start(void)
{ {
log("Connecting to '%s' on port %u",GetInstance()->GetConf()->worldhost.c_str(),GetInstance()->GetConf()->worldport); log("Connecting to '%s' on port %u",GetInstance()->GetConf()->worldhost.c_str(),GetInstance()->GetConf()->worldport);
@ -70,9 +76,11 @@ void WorldSession::Start(void)
// if we cant connect, wait until the socket gives up (after 5 secs) // if we cant connect, wait until the socket gives up (after 5 secs)
while( (!MustDie()) && (!_socket->IsOk()) && (!GetInstance()->Stopped()) ) while( (!MustDie()) && (!_socket->IsOk()) && (!GetInstance()->Stopped()) )
{ {
logdev("WorldSession::Start(): Socket not ok, waiting...");
_sh.Select(3,0); _sh.Select(3,0);
GetInstance()->Sleep(100); GetInstance()->Sleep(100);
} }
logdev("WorldSession::Start() done, mustdie:%u, socket_ok:%u stopped:%u",MustDie(),_socket->IsOk(),GetInstance()->Stopped());
} }
void WorldSession::_LoadCache(void) void WorldSession::_LoadCache(void)
@ -169,7 +177,7 @@ void WorldSession::HandleWorldPacket(WorldPacket *packet)
(this->*table[hpos].handler)(*packet); (this->*table[hpos].handler)(*packet);
// if there is a script attached to that opcode, call it now. // if there is a script attached to that opcode, call it now.
// note: the pkt rpos needs to be reset in by the scripts! // note: the pkt rpos needs to be reset by the scripts!
std::string scname = "opcode::"; std::string scname = "opcode::";
scname += stringToLower(GetOpcodeName(packet->GetOpcode())); scname += stringToLower(GetOpcodeName(packet->GetOpcode()));
if(sc->ScriptExists(scname)) if(sc->ScriptExists(scname))
@ -186,6 +194,8 @@ void WorldSession::HandleWorldPacket(WorldPacket *packet)
{ {
logerror("Exception while handling opcode %u!",packet->GetOpcode()); logerror("Exception while handling opcode %u!",packet->GetOpcode());
logerror("Data: pktsize=%u, handler=0x%X queuesize=%u",packet->size(),table[hpos].handler,pktQueue.size()); logerror("Data: pktsize=%u, handler=0x%X queuesize=%u",packet->size(),table[hpos].handler,pktQueue.size());
logerror("Packet Hexdump:");
logerror("%s",toHexDump((uint8*)packet->contents(),packet->size(),true).c_str());
} }
delete packet; delete packet;
@ -229,6 +239,7 @@ OpcodeHandler *WorldSession::_GetOpcodeHandlerTable() const
{SMSG_COMPRESSED_UPDATE_OBJECT, &WorldSession::_HandleCompressedUpdateObjectOpcode}, {SMSG_COMPRESSED_UPDATE_OBJECT, &WorldSession::_HandleCompressedUpdateObjectOpcode},
{SMSG_UPDATE_OBJECT, &WorldSession::_HandleUpdateObjectOpcode}, {SMSG_UPDATE_OBJECT, &WorldSession::_HandleUpdateObjectOpcode},
{SMSG_CAST_RESULT, &WorldSession::_HandleCastResultOpcode}, {SMSG_CAST_RESULT, &WorldSession::_HandleCastResultOpcode},
{SMSG_CAST_SUCCESS, &WorldSession::_HandleCastSuccessOpcode},
{SMSG_ITEM_QUERY_SINGLE_RESPONSE, &WorldSession::_HandleItemQuerySingleResponseOpcode}, {SMSG_ITEM_QUERY_SINGLE_RESPONSE, &WorldSession::_HandleItemQuerySingleResponseOpcode},
{SMSG_DESTROY_OBJECT, &WorldSession::_HandleDestroyObjectOpcode}, {SMSG_DESTROY_OBJECT, &WorldSession::_HandleDestroyObjectOpcode},
{SMSG_INITIAL_SPELLS, &WorldSession::_HandleInitialSpellsOpcode}, {SMSG_INITIAL_SPELLS, &WorldSession::_HandleInitialSpellsOpcode},
@ -758,11 +769,11 @@ void WorldSession::_HandleTelePortAckOpcode(WorldPacket& recvPacket)
{ {
uint32 unk32,time; uint32 unk32,time;
uint64 guid; uint64 guid;
uint8 unk8;
float x, y, z, o; float x, y, z, o;
guid = recvPacket.GetPackedGuid(); guid = recvPacket.GetPackedGuid();
recvPacket >> unk32 >> unk32 >> time >> x >> y >> z >> o >> unk32; recvPacket >> unk32 >> unk32 >> unk8 >> time >> x >> y >> z >> o >> unk32;
logdetail("Got teleported, data: x: %f, y: %f, z: %f, o: %f, guid: "I64FMT, x, y, z, o, guid); logdetail("Got teleported, data: x: %f, y: %f, z: %f, o: %f, guid: "I64FMT, x, y, z, o, guid);
@ -816,18 +827,23 @@ void WorldSession::_HandleChannelNotifyOpcode(WorldPacket& recvPacket)
void WorldSession::_HandleCastResultOpcode(WorldPacket& recvPacket) void WorldSession::_HandleCastResultOpcode(WorldPacket& recvPacket)
{ {
uint32 spellid; uint32 spellid,otherr = 0;
uint8 flag,result; uint8 result;
recvPacket >> spellid >> flag; recvPacket >> spellid >> result;
if(flag) if (recvPacket.rpos()+1 < recvPacket.size())
{ recvPacket >> otherr;
recvPacket >> result; logdetail("Cast of spell %u failed. result=%u, additional info=%u",spellid,result,otherr);
logdetail("Cast of spell %u failed. flag=%u, result=%u",spellid,flag,result);
} }
else
void WorldSession::_HandleCastSuccessOpcode(WorldPacket& recvPacket)
{ {
logdetail("Cast of spell %u successful.",spellid); uint32 spellId;
} uint64 casterGuid;
casterGuid = recvPacket.GetPackedGuid();
recvPacket >> spellId;
logdetail("Cast of spell %u successful.",spellId);
} }
void WorldSession::_HandleInitialSpellsOpcode(WorldPacket& recvPacket) void WorldSession::_HandleInitialSpellsOpcode(WorldPacket& recvPacket)
@ -881,7 +897,8 @@ void WorldSession::_HandleEmoteOpcode(WorldPacket& recvPacket)
if(plrname.empty()) if(plrname.empty())
{ {
SendQueryPlayerName(guid); SendQueryPlayerName(guid);
plrname="Unknown Entity"; _DelayWorldPacket(recvPacket, GetLagMS() * 1.2f);
return;
} }
} }
@ -1066,3 +1083,4 @@ void WorldSession::_HandleWhoOpcode(WorldPacket& recvPacket)
// TODO: delete world on LogoutComplete once implemented // TODO: delete world on LogoutComplete once implemented

View File

@ -54,7 +54,7 @@ public:
void Update(void); void Update(void);
void Start(void); void Start(void);
inline bool MustDie(void) { return _mustdie; } inline bool MustDie(void) { return _mustdie; }
inline void SetMustDie(void) { _mustdie = true; } void SetMustDie(void);
void SendWorldPacket(WorldPacket&); void SendWorldPacket(WorldPacket&);
inline bool InWorld(void) { return _logged; } inline bool InWorld(void) { return _logged; }
inline uint32 GetLagMS(void) { return _lag_ms; } inline uint32 GetLagMS(void) { return _lag_ms; }
@ -107,6 +107,7 @@ private:
void _HandleTelePortAckOpcode(WorldPacket& recvPacket); void _HandleTelePortAckOpcode(WorldPacket& recvPacket);
void _HandleChannelNotifyOpcode(WorldPacket& recvPacket); void _HandleChannelNotifyOpcode(WorldPacket& recvPacket);
void _HandleCastResultOpcode(WorldPacket& recvPacket); void _HandleCastResultOpcode(WorldPacket& recvPacket);
void _HandleCastSuccessOpcode(WorldPacket& recvPacket);
void _HandleCompressedUpdateObjectOpcode(WorldPacket& recvPacket); void _HandleCompressedUpdateObjectOpcode(WorldPacket& recvPacket);
void _HandleUpdateObjectOpcode(WorldPacket& recvPacket); void _HandleUpdateObjectOpcode(WorldPacket& recvPacket);
void _HandleItemQuerySingleResponseOpcode(WorldPacket& recvPacket); void _HandleItemQuerySingleResponseOpcode(WorldPacket& recvPacket);

View File

@ -2,6 +2,7 @@
#include "WorldPacket.h" #include "WorldPacket.h"
#include "WorldSession.h" #include "WorldSession.h"
#include "WorldSocket.h" #include "WorldSocket.h"
#include "Opcodes.h"
WorldSocket::WorldSocket(SocketHandler &h, WorldSession *s) : TcpSocket(h) WorldSocket::WorldSocket(SocketHandler &h, WorldSession *s) : TcpSocket(h)
{ {
@ -81,7 +82,7 @@ void WorldSocket::OnRead()
_crypt.DecryptRecv((uint8*)&hdr,sizeof(ServerPktHeader)); _crypt.DecryptRecv((uint8*)&hdr,sizeof(ServerPktHeader));
_remaining = ntohs(hdr.size)-2; _remaining = ntohs(hdr.size)-2;
_opcode = hdr.cmd; _opcode = hdr.cmd;
if(_opcode > 1000) // no opcode has yet a number over 1000 if(_opcode > MAX_OPCODE_ID) // no opcode has yet a number over 1000
{ {
logcritical("CRYPT ERROR: opcode=%u, remain=%u",_opcode,_remaining); // this should never be the case! logcritical("CRYPT ERROR: opcode=%u, remain=%u",_opcode,_remaining); // this should never be the case!
GetSession()->GetInstance()->SetError(); // no way to recover the crypt, must exit GetSession()->GetInstance()->SetError(); // no way to recover the crypt, must exit