* update to support 2.4.3 client version (build 8606)
This commit is contained in:
parent
76ed684573
commit
0586c46e2e
@ -68,8 +68,8 @@ charname=Pseuwow
|
|||||||
|
|
||||||
|
|
||||||
// Client emulation configuration
|
// Client emulation configuration
|
||||||
ClientVersion=2.4.2
|
ClientVersion=2.4.3
|
||||||
ClientBuild=8278
|
ClientBuild=8606
|
||||||
ClientLanguage=enUS
|
ClientLanguage=enUS
|
||||||
// or change to enGB, deDE, ...
|
// or change to enGB, deDE, ...
|
||||||
|
|
||||||
|
|||||||
@ -70,6 +70,13 @@ struct AuthHandler
|
|||||||
void (RealmSession::*handler)(ByteBuffer&);
|
void (RealmSession::*handler)(ByteBuffer&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some paltform
|
||||||
|
#if defined( __GNUC__ )
|
||||||
|
#pragma pack(1)
|
||||||
|
#else
|
||||||
|
#pragma pack(push,1)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct sAuthLogonChallenge_S
|
struct sAuthLogonChallenge_S
|
||||||
{
|
{
|
||||||
uint8 cmd;
|
uint8 cmd;
|
||||||
@ -89,11 +96,18 @@ struct sAuthLogonProof_S
|
|||||||
uint8 cmd;
|
uint8 cmd;
|
||||||
uint8 error;
|
uint8 error;
|
||||||
uint8 M2[20];
|
uint8 M2[20];
|
||||||
uint16 unk1;
|
uint32 unk1;
|
||||||
uint32 unk2;
|
uint32 unk2;
|
||||||
uint32 unk3;
|
uint16 unk3;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some paltform
|
||||||
|
#if defined( __GNUC__ )
|
||||||
|
#pragma pack()
|
||||||
|
#else
|
||||||
|
#pragma pack(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
RealmSession::RealmSession(PseuInstance* instance)
|
RealmSession::RealmSession(PseuInstance* instance)
|
||||||
{
|
{
|
||||||
_instance = instance;
|
_instance = instance;
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
#ifndef _UPDATEFIELDS_AUTO_H
|
#ifndef _UPDATEFIELDS_AUTO_H
|
||||||
#define _UPDATEFIELDS_AUTO_H
|
#define _UPDATEFIELDS_AUTO_H
|
||||||
|
|
||||||
// Auto generated for version 2, 4, 1, 8125
|
// Auto generated for version 2, 4, 3, 8606
|
||||||
|
|
||||||
enum EObjectFields
|
enum EObjectFields
|
||||||
{
|
{
|
||||||
@ -43,10 +43,6 @@ enum EItemFields
|
|||||||
ITEM_FIELD_FLAGS = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
|
ITEM_FIELD_FLAGS = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
ITEM_FIELD_ENCHANTMENT = OBJECT_END + 0x0010, // Size: 33, Type: INT, Flags: PUBLIC
|
ITEM_FIELD_ENCHANTMENT = OBJECT_END + 0x0010, // Size: 33, Type: INT, Flags: PUBLIC
|
||||||
ITEM_FIELD_PROPERTY_SEED = OBJECT_END + 0x0031, // Size: 1, Type: INT, Flags: PUBLIC
|
ITEM_FIELD_PROPERTY_SEED = OBJECT_END + 0x0031, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
|
|
||||||
// custom
|
|
||||||
ITEM_FIELD_SUFFIX_FACTOR = ITEM_FIELD_PROPERTY_SEED,
|
|
||||||
|
|
||||||
ITEM_FIELD_RANDOM_PROPERTIES_ID = OBJECT_END + 0x0032, // Size: 1, Type: INT, Flags: PUBLIC
|
ITEM_FIELD_RANDOM_PROPERTIES_ID = OBJECT_END + 0x0032, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
ITEM_FIELD_ITEM_TEXT_ID = OBJECT_END + 0x0033, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
ITEM_FIELD_ITEM_TEXT_ID = OBJECT_END + 0x0033, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
||||||
ITEM_FIELD_DURABILITY = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
|
ITEM_FIELD_DURABILITY = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
|
||||||
@ -97,10 +93,6 @@ enum EUnitFields
|
|||||||
UNIT_FIELD_AURAAPPLICATIONS = OBJECT_END + 0x007E, // Size: 14, Type: BYTES, Flags: PUBLIC
|
UNIT_FIELD_AURAAPPLICATIONS = OBJECT_END + 0x007E, // Size: 14, Type: BYTES, Flags: PUBLIC
|
||||||
UNIT_FIELD_AURASTATE = OBJECT_END + 0x008C, // Size: 1, Type: INT, Flags: PUBLIC
|
UNIT_FIELD_AURASTATE = OBJECT_END + 0x008C, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x008D, // Size: 2, Type: INT, Flags: PUBLIC
|
UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x008D, // Size: 2, Type: INT, Flags: PUBLIC
|
||||||
|
|
||||||
// custom
|
|
||||||
UNIT_FIELD_OFFHANDATTACKTIME = UNIT_FIELD_BASEATTACKTIME + 1,
|
|
||||||
|
|
||||||
UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x008F, // Size: 1, Type: INT, Flags: PRIVATE
|
UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x008F, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x0090, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x0090, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
UNIT_FIELD_COMBATREACH = OBJECT_END + 0x0091, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
UNIT_FIELD_COMBATREACH = OBJECT_END + 0x0091, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
@ -113,7 +105,7 @@ enum EUnitFields
|
|||||||
UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x0098, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
|
UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x0098, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
|
||||||
UNIT_FIELD_BYTES_1 = OBJECT_END + 0x0099, // Size: 1, Type: BYTES, Flags: PUBLIC
|
UNIT_FIELD_BYTES_1 = OBJECT_END + 0x0099, // Size: 1, Type: BYTES, Flags: PUBLIC
|
||||||
UNIT_FIELD_PETNUMBER = OBJECT_END + 0x009A, // Size: 1, Type: INT, Flags: PUBLIC
|
UNIT_FIELD_PETNUMBER = OBJECT_END + 0x009A, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x009B, // Size: 1, Type: INT, Flags: PUBLIC - it's MS time, not time(NULL)...
|
UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x009B, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x009C, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x009C, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
||||||
UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x009D, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x009D, // Size: 1, Type: INT, Flags: OWNER_ONLY
|
||||||
UNIT_DYNAMIC_FLAGS = OBJECT_END + 0x009E, // Size: 1, Type: INT, Flags: DYNAMIC
|
UNIT_DYNAMIC_FLAGS = OBJECT_END + 0x009E, // Size: 1, Type: INT, Flags: DYNAMIC
|
||||||
@ -141,7 +133,7 @@ enum EUnitFields
|
|||||||
UNIT_FIELD_RESISTANCES = OBJECT_END + 0x00B4, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
|
UNIT_FIELD_RESISTANCES = OBJECT_END + 0x00B4, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
|
||||||
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x00BB, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x00BB, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
||||||
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x00C2, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x00C2, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
||||||
UNIT_FIELD_BASE_MANA = OBJECT_END + 0x00C9, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
UNIT_FIELD_BASE_MANA = OBJECT_END + 0x00C9, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x00CA, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x00CA, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
||||||
UNIT_FIELD_BYTES_2 = OBJECT_END + 0x00CB, // Size: 1, Type: BYTES, Flags: PUBLIC
|
UNIT_FIELD_BYTES_2 = OBJECT_END + 0x00CB, // Size: 1, Type: BYTES, Flags: PUBLIC
|
||||||
UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x00CC, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x00CC, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
|
||||||
@ -377,93 +369,36 @@ 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_SHIELD_BLOCK = UNIT_END + 0x0449, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_SHIELD_BLOCK = UNIT_END + 0x0449, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x044A, // Size: 64, Type: BYTES, Flags: PRIVATE
|
PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x044A, // Size: 128, Type: BYTES, Flags: PRIVATE
|
||||||
PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x048A, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x04CA, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_COINAGE = UNIT_END + 0x048B, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_COINAGE = UNIT_END + 0x04CB, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x048C, // Size: 7, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x04CC, // Size: 7, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x0493, // Size: 7, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x04D3, // Size: 7, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x049A, // Size: 7, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x04DA, // Size: 7, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x04A1, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x04E1, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x04A2, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x04E2, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x04A3, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x04E3, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_BYTES = UNIT_END + 0x04A4, // Size: 1, Type: BYTES, Flags: PRIVATE
|
PLAYER_FIELD_BYTES = UNIT_END + 0x04E4, // Size: 1, Type: BYTES, Flags: PRIVATE
|
||||||
PLAYER_AMMO_ID = UNIT_END + 0x04A5, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_AMMO_ID = UNIT_END + 0x04E5, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_SELF_RES_SPELL = UNIT_END + 0x04A6, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_SELF_RES_SPELL = UNIT_END + 0x04E6, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x04A7, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x04E7, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x04A8, // Size: 12, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x04E8, // Size: 12, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x04B4, // Size: 12, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x04F4, // Size: 12, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_KILLS = UNIT_END + 0x04C0, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE
|
PLAYER_FIELD_KILLS = UNIT_END + 0x0500, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_TODAY_CONTRIBUTION = UNIT_END + 0x04C1, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_TODAY_CONTRIBUTION = UNIT_END + 0x0501, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_YESTERDAY_CONTRIBUTION = UNIT_END + 0x04C2, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_YESTERDAY_CONTRIBUTION = UNIT_END + 0x0502, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS = UNIT_END + 0x04C3, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS = UNIT_END + 0x0503, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_BYTES2 = UNIT_END + 0x04C4, // Size: 1, Type: BYTES, Flags: PRIVATE
|
PLAYER_FIELD_BYTES2 = UNIT_END + 0x0504, // Size: 1, Type: BYTES, Flags: PRIVATE
|
||||||
PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x04C5, // Size: 1, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x0505, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x04C6, // Size: 24, Type: INT, Flags: PRIVATE
|
PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x0506, // Size: 24, Type: INT, Flags: PRIVATE
|
||||||
|
PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x051E, // Size: 18, Type: INT, Flags: PRIVATE
|
||||||
// custom // client names:
|
PLAYER_FIELD_HONOR_CURRENCY = UNIT_END + 0x0530, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
// RATING_WEAPON_SKILL
|
PLAYER_FIELD_ARENA_CURRENCY = UNIT_END + 0x0531, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_ALL_WEAPONS_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1,
|
PLAYER_FIELD_MOD_MANA_REGEN = UNIT_END + 0x0532, // Size: 1, Type: FLOAT, Flags: PRIVATE
|
||||||
// RATING_DEFENSE_SKILL
|
PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT = UNIT_END + 0x0533, // Size: 1, Type: FLOAT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_DEFENCE_RATING = PLAYER_FIELD_COMBAT_RATING_1+1,
|
PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x0534, // Size: 1, Type: INT, Flags: PRIVATE
|
||||||
// RATING_DODGE
|
PLAYER_FIELD_DAILY_QUESTS_1 = UNIT_END + 0x0535, // Size: 25, Type: INT, Flags: PRIVATE
|
||||||
PLAYER_FIELD_DODGE_RATING = PLAYER_FIELD_COMBAT_RATING_1+2,
|
PLAYER_END = UNIT_END + 0x054E,
|
||||||
// RATING_PARRY
|
|
||||||
PLAYER_FIELD_PARRY_RATING = PLAYER_FIELD_COMBAT_RATING_1+3,
|
|
||||||
// RATING_BLOCK
|
|
||||||
PLAYER_FIELD_BLOCK_RATING = PLAYER_FIELD_COMBAT_RATING_1+4,
|
|
||||||
// RATING_HIT_MELEE
|
|
||||||
PLAYER_FIELD_MELEE_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+5,
|
|
||||||
// RATING_HIT_RANGED
|
|
||||||
PLAYER_FIELD_RANGED_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+6,
|
|
||||||
// RATING_HIT_SPELL
|
|
||||||
PLAYER_FIELD_SPELL_HIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+7,
|
|
||||||
// RATING_CRIT_MELEE
|
|
||||||
PLAYER_FIELD_MELEE_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+8,
|
|
||||||
// RATING_CRIT_RANGED
|
|
||||||
PLAYER_FIELD_RANGED_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+9,
|
|
||||||
// RATING_CRIT_SPELL
|
|
||||||
PLAYER_FIELD_SPELL_CRIT_RATING = PLAYER_FIELD_COMBAT_RATING_1+10,
|
|
||||||
// RATING_HIT_TAKEN_MELEE
|
|
||||||
PLAYER_FIELD_HIT_TAKEN_MELEE_RATING = PLAYER_FIELD_COMBAT_RATING_1+11,
|
|
||||||
// RATING_HIT_TAKEN_RANGED
|
|
||||||
PLAYER_FIELD_HIT_TAKEN_RANGED_RATING = PLAYER_FIELD_COMBAT_RATING_1+12,
|
|
||||||
// RATING_HIT_TAKEN_SPELL
|
|
||||||
PLAYER_FIELD_HIT_TAKEN_SPELL_RATING = PLAYER_FIELD_COMBAT_RATING_1+13,
|
|
||||||
// RATING_CRIT_TAKEN_MELEE
|
|
||||||
PLAYER_FIELD_CRIT_TAKEN_MELEE_RATING = PLAYER_FIELD_COMBAT_RATING_1+14,
|
|
||||||
// RATING_CRIT_TAKEN_RANGED
|
|
||||||
PLAYER_FIELD_CRIT_TAKEN_RANGED_RATING = PLAYER_FIELD_COMBAT_RATING_1+15,
|
|
||||||
// RATING_CRIT_TAKEN_SPELL
|
|
||||||
PLAYER_FIELD_CRIT_TAKEN_SPELL_RATING = PLAYER_FIELD_COMBAT_RATING_1+16,
|
|
||||||
// RATING_HASTE_MELEE
|
|
||||||
PLAYER_FIELD_MELEE_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+17,
|
|
||||||
// RATING_HASTE_RANGED
|
|
||||||
PLAYER_FIELD_RANGED_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+18,
|
|
||||||
// RATING_HASTE_SPELL
|
|
||||||
PLAYER_FIELD_SPELL_HASTE_RATING = PLAYER_FIELD_COMBAT_RATING_1+19,
|
|
||||||
// RATING_WEAPON_SKILL_MAINHAND
|
|
||||||
PLAYER_FIELD_MELEE_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+20,
|
|
||||||
// RATING_WEAPON_SKILL_OFFHAND
|
|
||||||
PLAYER_FIELD_OFFHAND_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+21,
|
|
||||||
// RATING_WEAPON_SKILL_RANGED
|
|
||||||
PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING = PLAYER_FIELD_COMBAT_RATING_1+22,
|
|
||||||
// RATING_EXPERTISE
|
|
||||||
PLAYER_FIELD_EXPERTISE_RATING = PLAYER_FIELD_COMBAT_RATING_1+23,
|
|
||||||
|
|
||||||
PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x04DE, // Size: 18, Type: INT, Flags: PRIVATE
|
|
||||||
|
|
||||||
// custom
|
|
||||||
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+6,
|
|
||||||
PLAYER_FIELD_ARENA_TEAM_ID_5v5 = PLAYER_FIELD_ARENA_TEAM_INFO_1_1+12,
|
|
||||||
|
|
||||||
PLAYER_FIELD_HONOR_CURRENCY = UNIT_END + 0x04F0, // Size: 1, Type: INT, Flags: PRIVATE
|
|
||||||
PLAYER_FIELD_ARENA_CURRENCY = UNIT_END + 0x04F1, // Size: 1, Type: INT, Flags: PRIVATE
|
|
||||||
PLAYER_FIELD_MOD_MANA_REGEN = UNIT_END + 0x04F2, // Size: 1, Type: FLOAT, Flags: PRIVATE
|
|
||||||
PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT = UNIT_END + 0x04F3, // Size: 1, Type: FLOAT, Flags: PRIVATE
|
|
||||||
PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x04F4, // Size: 1, Type: INT, Flags: PRIVATE
|
|
||||||
PLAYER_FIELD_DAILY_QUESTS_1 = UNIT_END + 0x04F5, // Size: 25, Type: INT, Flags: PRIVATE
|
|
||||||
PLAYER_END = UNIT_END + 0x050E,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EGameObjectFields
|
enum EGameObjectFields
|
||||||
@ -504,18 +439,19 @@ enum EDynamicObjectFields
|
|||||||
enum ECorpseFields
|
enum ECorpseFields
|
||||||
{
|
{
|
||||||
CORPSE_FIELD_OWNER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
|
CORPSE_FIELD_OWNER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
|
||||||
CORPSE_FIELD_FACING = OBJECT_END + 0x0002, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
CORPSE_FIELD_PARTY = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
|
||||||
CORPSE_FIELD_POS_X = OBJECT_END + 0x0003, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
CORPSE_FIELD_FACING = OBJECT_END + 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_POS_Y = OBJECT_END + 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
CORPSE_FIELD_POS_X = OBJECT_END + 0x0005, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_POS_Z = OBJECT_END + 0x0005, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
CORPSE_FIELD_POS_Y = OBJECT_END + 0x0006, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x0006, // Size: 1, Type: INT, Flags: PUBLIC
|
CORPSE_FIELD_POS_Z = OBJECT_END + 0x0007, // Size: 1, Type: FLOAT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_ITEM = OBJECT_END + 0x0007, // Size: 19, Type: INT, Flags: PUBLIC
|
CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x001A, // Size: 1, Type: BYTES, Flags: PUBLIC
|
CORPSE_FIELD_ITEM = OBJECT_END + 0x0009, // Size: 19, Type: INT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x001B, // Size: 1, Type: BYTES, Flags: PUBLIC
|
CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x001C, // Size: 1, Type: BYTES, Flags: PUBLIC
|
||||||
CORPSE_FIELD_GUILD = OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: PUBLIC
|
CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x001D, // Size: 1, Type: BYTES, Flags: PUBLIC
|
||||||
CORPSE_FIELD_FLAGS = OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: PUBLIC
|
CORPSE_FIELD_GUILD = OBJECT_END + 0x001E, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x001E, // Size: 1, Type: INT, Flags: DYNAMIC
|
CORPSE_FIELD_FLAGS = OBJECT_END + 0x001F, // Size: 1, Type: INT, Flags: PUBLIC
|
||||||
CORPSE_FIELD_PAD = OBJECT_END + 0x001F, // Size: 1, Type: INT, Flags: NONE
|
CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x0020, // Size: 1, Type: INT, Flags: DYNAMIC
|
||||||
CORPSE_END = OBJECT_END + 0x0020,
|
CORPSE_FIELD_PAD = OBJECT_END + 0x0021, // Size: 1, Type: INT, Flags: NONE
|
||||||
|
CORPSE_END = OBJECT_END + 0x0022,
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -516,7 +516,7 @@ void WorldSession::_HandleAuthChallengeOpcode(WorldPacket& recvPacket)
|
|||||||
|
|
||||||
// note that if the sessionkey/auth is wrong or failed, the server sends the following packet UNENCRYPTED!
|
// note that if the sessionkey/auth is wrong or failed, the server sends the following packet UNENCRYPTED!
|
||||||
// so its not 100% correct to init the crypt here, but it should do the job if authing was correct
|
// so its not 100% correct to init the crypt here, but it should do the job if authing was correct
|
||||||
_socket->InitCrypt(GetInstance()->GetSessionKey()->AsByteArray(), 40);
|
_socket->InitCrypt(GetInstance()->GetSessionKey());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -123,8 +123,8 @@ void WorldSocket::SendWorldPacket(WorldPacket &pkt)
|
|||||||
SendBuf((char*)final.contents(),final.size());
|
SendBuf((char*)final.contents(),final.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSocket::InitCrypt(uint8 *key,uint32 len)
|
void WorldSocket::InitCrypt(BigNumber *k)
|
||||||
{
|
{
|
||||||
_crypt.SetKey(key,len);
|
_crypt.SetKey(k);
|
||||||
_crypt.Init();
|
_crypt.Init();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
#include "SysDefs.h"
|
#include "SysDefs.h"
|
||||||
|
|
||||||
class WorldSession;
|
class WorldSession;
|
||||||
|
class BigNumber;
|
||||||
|
|
||||||
struct ClientPktHeader
|
struct ClientPktHeader
|
||||||
{
|
{
|
||||||
@ -33,7 +34,7 @@ public:
|
|||||||
void OnException();
|
void OnException();
|
||||||
|
|
||||||
void SendWorldPacket(WorldPacket &pkt);
|
void SendWorldPacket(WorldPacket &pkt);
|
||||||
void InitCrypt(uint8*,uint32);
|
void InitCrypt(BigNumber *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WorldSession *_session;
|
WorldSession *_session;
|
||||||
|
|||||||
@ -307,6 +307,12 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\shared\Auth\BigNumber.h">
|
RelativePath=".\shared\Auth\BigNumber.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\shared\Auth\md5.c">
|
RelativePath=".\shared\Auth\md5.c">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "AuthCrypt.h"
|
#include "AuthCrypt.h"
|
||||||
#include <algorithm>
|
#include "Hmac.h"
|
||||||
|
|
||||||
AuthCrypt::AuthCrypt()
|
AuthCrypt::AuthCrypt()
|
||||||
{
|
{
|
||||||
@ -61,10 +61,21 @@ void AuthCrypt::EncryptSend(uint8 *data, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AuthCrypt::SetKey(uint8 *key, size_t len)
|
void AuthCrypt::SetKey(BigNumber *bn)
|
||||||
{
|
{
|
||||||
_key.resize(len);
|
uint8 *key = new uint8[SHA_DIGEST_LENGTH];
|
||||||
std::copy(key, key + len, _key.begin());
|
GenerateKey(key, bn);
|
||||||
|
_key.resize(SHA_DIGEST_LENGTH);
|
||||||
|
std::copy(key, key + SHA_DIGEST_LENGTH, _key.begin());
|
||||||
|
delete key;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AuthCrypt::GenerateKey(uint8 *key, BigNumber *bn)
|
||||||
|
{
|
||||||
|
HmacHash hash;
|
||||||
|
hash.UpdateBigNumber(bn);
|
||||||
|
hash.Finalize();
|
||||||
|
memcpy(key, hash.GetDigest(), SHA_DIGEST_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
AuthCrypt::~AuthCrypt()
|
AuthCrypt::~AuthCrypt()
|
||||||
|
|||||||
@ -22,6 +22,8 @@
|
|||||||
//#include <Common.h>
|
//#include <Common.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
class BigNumber;
|
||||||
|
|
||||||
class AuthCrypt
|
class AuthCrypt
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -33,16 +35,18 @@ class AuthCrypt
|
|||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
void SetKey(uint8 *, size_t);
|
void SetKey(BigNumber *);
|
||||||
|
|
||||||
void DecryptRecv(uint8 *, size_t);
|
void DecryptRecv(uint8 *, size_t);
|
||||||
void EncryptSend(uint8 *, size_t);
|
void EncryptSend(uint8 *, size_t);
|
||||||
|
|
||||||
bool IsInitialized() { return _initialized; }
|
bool IsInitialized() { return _initialized; }
|
||||||
|
|
||||||
|
static void GenerateKey(uint8 *, BigNumber *);
|
||||||
private:
|
private:
|
||||||
std::vector<uint8> _key;
|
std::vector<uint8> _key;
|
||||||
uint8 _send_i, _send_j, _recv_i, _recv_j;
|
uint8 _send_i, _send_j, _recv_i, _recv_j;
|
||||||
bool _initialized;
|
bool _initialized;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -2,4 +2,4 @@
|
|||||||
AM_CPPFLAGS = -I$(top_builddir)/Client -I$(top_builddir)/shared -I$(top_builddir)/Client/DefScript -I$(top_builddir)/Client/World -I$(top_builddir)/Client/Realm -Wall
|
AM_CPPFLAGS = -I$(top_builddir)/Client -I$(top_builddir)/shared -I$(top_builddir)/Client/DefScript -I$(top_builddir)/Client/World -I$(top_builddir)/Client/Realm -Wall
|
||||||
## Build pseuwow
|
## Build pseuwow
|
||||||
noinst_LIBRARIES = libauth.a
|
noinst_LIBRARIES = libauth.a
|
||||||
libauth_a_SOURCES = AuthCrypt.cpp BigNumber.cpp md5.c Sha1.cpp
|
libauth_a_SOURCES = AuthCrypt.cpp BigNumber.cpp md5.c Sha1.cpp Hmac.cpp
|
||||||
|
|||||||
@ -400,6 +400,14 @@
|
|||||||
RelativePath=".\shared\Auth\BigNumber.h"
|
RelativePath=".\shared\Auth\BigNumber.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\shared\Auth\md5.c"
|
RelativePath=".\shared\Auth\md5.c"
|
||||||
>
|
>
|
||||||
|
|||||||
@ -413,6 +413,14 @@
|
|||||||
RelativePath=".\shared\Auth\BigNumber.h"
|
RelativePath=".\shared\Auth\BigNumber.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\shared\Auth\Hmac.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\shared\Auth\md5.c"
|
RelativePath=".\shared\Auth\md5.c"
|
||||||
>
|
>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user