Added support for 3.3.0 PTR client.

This commit is contained in:
tomrus88 2009-10-06 13:44:48 +04:00
parent f37f27d3c2
commit c9636623bf
15 changed files with 83 additions and 55 deletions

View file

@ -1712,8 +1712,9 @@ void BattleGroundMgr::CreateInitialBattleGrounds()
} }
if (MinLvl == 0 || MaxLvl == 0 || MinLvl > MaxLvl) if (MinLvl == 0 || MaxLvl == 0 || MinLvl > MaxLvl)
{ {
MinLvl = bl->minlvl; // TODO: fix me
MaxLvl = bl->maxlvl; MinLvl = 0;//bl->minlvl;
MaxLvl = 80;//bl->maxlvl;
} }
start1 = fields[5].GetUInt32(); start1 = fields[5].GetUInt32();

View file

@ -567,16 +567,12 @@ struct BattlemasterListEntry
uint32 id; // 0 uint32 id; // 0
int32 mapid[8]; // 1-8 mapid int32 mapid[8]; // 1-8 mapid
uint32 type; // 9 (3 - BG, 4 - arena) uint32 type; // 9 (3 - BG, 4 - arena)
uint32 minlvl; // 10 uint32 maxplayersperteam; // 10
uint32 maxlvl; // 11 //uint32 unk1; // 11 (0 or 1)
uint32 maxplayersperteam; // 12 char* name[16]; // 12-27
// 13 minplayers // 28 string flag, unused
// 14 0 or 9 // 29 unused
// 15 //uint32 unk2; // 30 new 3.1
char* name[16]; // 16-31
// 32 string flag, unused
// 33 unused
//uint32 unk; // 34 new 3.1
}; };
#define MAX_OUTFIT_ITEMS 24 #define MAX_OUTFIT_ITEMS 24
@ -784,10 +780,14 @@ struct FactionEntry
int32 BaseRepValue[4]; // 10-13 m_reputationBase int32 BaseRepValue[4]; // 10-13 m_reputationBase
uint32 ReputationFlags[4]; // 14-17 m_reputationFlags uint32 ReputationFlags[4]; // 14-17 m_reputationFlags
uint32 team; // 18 m_parentFactionID uint32 team; // 18 m_parentFactionID
char* name[16]; // 19-34 m_name_lang //float unk1; // 19
// 35 string flags //float unk2; // 20
//char* description[16]; // 36-51 m_description_lang //uint32 unk3 // 21
// 52 string flags //uint32 unk4; // 22
char* name[16]; // 23-38 m_name_lang
// 39 string flags
//char* description[16]; // 40-55 m_description_lang
// 56 string flags
}; };
struct FactionTemplateEntry struct FactionTemplateEntry
@ -1077,23 +1077,24 @@ struct MapEntry
uint32 MapID; // 0 uint32 MapID; // 0
//char* internalname; // 1 unused //char* internalname; // 1 unused
uint32 map_type; // 2 uint32 map_type; // 2
// 3 0 or 1 for battlegrounds (not arenas) //uint32 unk_330; // 3
char* name[16]; // 4-19 // 4 0 or 1 for battlegrounds (not arenas)
// 20 name flags, unused char* name[16]; // 5-20
uint32 linked_zone; // 21 common zone for instance and continent map // 21 name flags, unused
//char* hordeIntro[16]; // 23-37 text for PvP Zones uint32 linked_zone; // 22 common zone for instance and continent map
// 38 intro text flags //char* hordeIntro[16]; // 23-38 text for PvP Zones
//char* allianceIntro[16]; // 39-54 text for PvP Zones // 39 intro text flags
// 55 intro text flags //char* allianceIntro[16]; // 40-55 text for PvP Zones
uint32 multimap_id; // 56 // 56 intro text flags
// 57 uint32 multimap_id; // 57
int32 entrance_map; // 58 map_id of entrance map // 58
float entrance_x; // 59 entrance x coordinate (if exist single entry) int32 entrance_map; // 59 map_id of entrance map
float entrance_y; // 60 entrance y coordinate (if exist single entry) float entrance_x; // 60 entrance x coordinate (if exist single entry)
// 61 -1, 0 and 720 float entrance_y; // 61 entrance y coordinate (if exist single entry)
uint32 addon; // 62 (0-original maps,1-tbc addon) // 62 -1, 0 and 720
// 63 some kind of time? uint32 addon; // 63 (0-original maps,1-tbc addon)
//uint32 maxPlayers; // 64 max players // 64 some kind of time?
//uint32 maxPlayers; // 65 max players
// Helpers // Helpers
uint32 Expansion() const { return addon; } uint32 Expansion() const { return addon; }
@ -1423,6 +1424,7 @@ struct SpellEntry
//uint32 PowerDisplayId; // 234 PowerDisplay.dbc, new in 3.1 //uint32 PowerDisplayId; // 234 PowerDisplay.dbc, new in 3.1
//float unk_320_4[3]; // 235-237 3.2.0 //float unk_320_4[3]; // 235-237 3.2.0
//uint32 spellDescriptionVariableID; // 238 3.2.0 //uint32 spellDescriptionVariableID; // 238 3.2.0
//uint32 SpellDifficultyId; // 239 3.3.0
// helpers // helpers
int32 CalculateSimpleValue(uint8 eff) const { return EffectBasePoints[eff]+int32(EffectBaseDice[eff]); } int32 CalculateSimpleValue(uint8 eff) const { return EffectBasePoints[eff]+int32(EffectBaseDice[eff]); }

View file

@ -27,7 +27,7 @@ const char AreaTriggerEntryfmt[]="niffffffff";
const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx"; const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx";
const char BankBagSlotPricesEntryfmt[]="ni"; const char BankBagSlotPricesEntryfmt[]="ni";
const char BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii"; const char BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii";
const char BattlemasterListEntryfmt[]="niiiiiiiiiiiixxxssssssssssssssssxxx"; const char BattlemasterListEntryfmt[]="niiiiiiiiiixssssssssssssssssxxx";
const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char CharTitlesEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi"; const char CharTitlesEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx"; const char ChatChannelsEntryfmt[]="iixssssssssssssssssxxxxxxxxxxxxxxxxxx";
@ -44,7 +44,7 @@ const char DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii";
const char DurabilityQualityfmt[]="nf"; const char DurabilityQualityfmt[]="nf";
const char EmotesEntryfmt[]="nxxiiix"; const char EmotesEntryfmt[]="nxxiiix";
const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx"; const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx";
const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiissssssssssssssssxxxxxxxxxxxxxxxxxx"; const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiixxxxssssssssssssssssxxxxxxxxxxxxxxxxxx";
const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii"; const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii";
const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxxxxxxxx"; const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxxxxxxxx";
const char GemPropertiesEntryfmt[]="nixxi"; const char GemPropertiesEntryfmt[]="nixxi";
@ -72,7 +72,7 @@ const char ItemRandomSuffixfmt[]="nxxxxxxxxxxxxxxxxxxiiiiiiiiii";
const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii"; const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii";
const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char MapEntryfmt[]="nxixssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxixx"; const char MapEntryfmt[]="nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxixx";
const char MapDifficultyEntryfmt[]="diixxxxxxxxxxxxxxxxxiix"; const char MapDifficultyEntryfmt[]="diixxxxxxxxxxxxxxxxxiix";
const char MovieEntryfmt[]="nxx"; const char MovieEntryfmt[]="nxx";
const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx"; const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx";
@ -84,7 +84,7 @@ const char SkillLineAbilityfmt[]="niiiixxiiiiixx";
const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char SpellCastTimefmt[]="nixx"; const char SpellCastTimefmt[]="nixx";
const char SpellDurationfmt[]="niii"; const char SpellDurationfmt[]="niii";
const char SpellEntryfmt[]="niiiiiiiiiixixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxxxxx"; const char SpellEntryfmt[]="niiiiiiiiiixixixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxxxxxx";
const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx"; const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx";
const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixxx"; const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixxx";
const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX";

View file

@ -572,11 +572,14 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
// rewarded honor points // rewarded honor points
data << uint32(MaNGOS::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills())); data << uint32(MaNGOS::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
data << float(1); // weird honor multiplier
data << uint32(pQuest->GetSrcItemId()); // source item id data << uint32(pQuest->GetSrcItemId()); // source item id
data << uint32(pQuest->GetFlags() & 0xFFFF); // quest flags data << uint32(pQuest->GetFlags() & 0xFFFF); // quest flags
data << uint32(pQuest->GetCharTitleId()); // CharTitleId, new 2.4.0, player gets this title (id from CharTitles) data << uint32(pQuest->GetCharTitleId()); // CharTitleId, new 2.4.0, player gets this title (id from CharTitles)
data << uint32(pQuest->GetPlayersSlain()); // players slain data << uint32(pQuest->GetPlayersSlain()); // players slain
data << uint32(pQuest->GetBonusTalents()); // bonus talents data << uint32(pQuest->GetBonusTalents()); // bonus talents
data << uint32(0); // bonus arena points
data << uint32(0); // unknown
int iI; int iI;
@ -601,6 +604,15 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
} }
} }
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // reward factions ids
data << uint32(0);
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // columnid+1 QuestFactionReward.dbc?
data << uint32(0);
for(iI = 0; iI < QUEST_REPUTATIONS_COUNT; ++iI) // unk (0)
data << uint32(0);
data << pQuest->GetPointMapId(); data << pQuest->GetPointMapId();
data << pQuest->GetPointX(); data << pQuest->GetPointX();
data << pQuest->GetPointY(); data << pQuest->GetPointY();
@ -610,6 +622,7 @@ void PlayerMenu::SendQuestQueryResponse( Quest const *pQuest )
data << Objectives; data << Objectives;
data << Details; data << Details;
data << EndText; data << EndText;
data << uint8(0); // some string
for (iI = 0; iI < QUEST_OBJECTIVES_COUNT; ++iI) for (iI = 0; iI < QUEST_OBJECTIVES_COUNT; ++iI)
{ {

View file

@ -313,6 +313,7 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
uint32 mailId; uint32 mailId;
recv_data >> mailbox; recv_data >> mailbox;
recv_data >> mailId; recv_data >> mailId;
recv_data.read_skip<uint32>(); // 3.3.0
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX)) if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return; return;

View file

@ -1518,13 +1518,17 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode( WorldPacket & recv_data )
sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK"); sLog.outDebug("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
//recv_data.hexlike(); //recv_data.hexlike();
recv_data.read_skip<uint64>(); // guid uint64 guid;
if(!recv_data.readPackGUID(guid))
return;
recv_data.read_skip<uint32>(); // unk recv_data.read_skip<uint32>(); // unk
MovementInfo movementInfo; MovementInfo movementInfo;
movementInfo.guid = guid;
ReadMovementInfo(recv_data, &movementInfo); ReadMovementInfo(recv_data, &movementInfo);
recv_data.read_skip<uint32>(); // unk2 recv_data.read_skip<float>(); // unk2
_player->m_movementInfo.SetMovementFlags(movementInfo.GetMovementFlags()); _player->m_movementInfo.SetMovementFlags(movementInfo.GetMovementFlags());
} }

View file

@ -325,7 +325,7 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags, uint32 flags2
} }
// 0x02200000 // 0x02200000
if((flags2 & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2)) || (unk_flags & 0x20)) if((flags2 & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (unk_flags & 0x20))
{ {
if(GetTypeId() == TYPEID_PLAYER) if(GetTypeId() == TYPEID_PLAYER)
*data << (float)((Player*)this)->m_movementInfo.s_pitch; *data << (float)((Player*)this)->m_movementInfo.s_pitch;

View file

@ -1299,4 +1299,8 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x4F6*/ { "CMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_LOGGEDIN, &WorldSession::HandleWorldStateUITimerUpdate }, /*0x4F6*/ { "CMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_LOGGEDIN, &WorldSession::HandleWorldStateUITimerUpdate },
/*0x4F7*/ { "SMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x4F7*/ { "SMSG_WORLD_STATE_UI_TIMER_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4F8*/ { "CMSG_UNKNOWN_1272", STATUS_NEVER, &WorldSession::Handle_NULL }, /*0x4F8*/ { "CMSG_UNKNOWN_1272", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4F9*/ { "UMSG_UNKNOWN_1273", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4FA*/ { "SMSG_UNKNOWN_1274", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x4FB*/ { "UMSG_UNKNOWN_1275", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x4FC*/ { "SMSG_UNKNOWN_1276", STATUS_NEVER, &WorldSession::Handle_ServerSide },
}; };

View file

@ -1307,7 +1307,11 @@ enum Opcodes
CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F6, CMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F6,
SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F7, SMSG_WORLD_STATE_UI_TIMER_UPDATE = 0x4F7,
CMSG_UNKNOWN_1272 = 0x4F8, // called from lua: CreateCharacter, paid race change CMSG_UNKNOWN_1272 = 0x4F8, // called from lua: CreateCharacter, paid race change
NUM_MSG_TYPES = 0x4F9 UMSG_UNKNOWN_1273 = 0x4F9, // not found 10522
SMSG_UNKNOWN_1274 = 0x4FA, // uint8
UMSG_UNKNOWN_1275 = 0x4FB, // not found 10522
SMSG_UNKNOWN_1276 = 0x4FC, // does nothing in 10522
NUM_MSG_TYPES = 0x4FD
}; };
/// Player state /// Player state

View file

@ -18268,7 +18268,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
// set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment // set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment
if(HasAuraType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY) || isInFlight()) if(HasAuraType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY) || isInFlight())
m_movementInfo.AddMovementFlag(MOVEMENTFLAG_FLYING2); m_movementInfo.AddMovementFlag(MOVEMENTFLAG_FLYING);
m_mover = this; m_mover = this;
} }

View file

@ -748,14 +748,14 @@ enum MovementFlags
MOVEMENTFLAG_LEVITATING = 0x00000400, MOVEMENTFLAG_LEVITATING = 0x00000400,
MOVEMENTFLAG_FLY_UNK1 = 0x00000800, MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
MOVEMENTFLAG_JUMPING = 0x00001000, MOVEMENTFLAG_JUMPING = 0x00001000,
MOVEMENTFLAG_UNK4 = 0x00002000, MOVEMENTFLAG_FALLING = 0x00002000,
MOVEMENTFLAG_FALLING = 0x00004000, MOVEMENTFLAG_UNK4 = 0x00004000,
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000 // 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
MOVEMENTFLAG_FLY_UP = 0x00400000, MOVEMENTFLAG_FLY_UP = 0x00400000, // swim up also
MOVEMENTFLAG_CAN_FLY = 0x00800000, MOVEMENTFLAG_FLY_DOWN = 0x00800000, // swim down also
MOVEMENTFLAG_FLYING = 0x01000000, MOVEMENTFLAG_CAN_FLY = 0x01000000, // can fly in 3.3?
MOVEMENTFLAG_FLYING2 = 0x02000000, // Actual flying mode MOVEMENTFLAG_FLYING = 0x02000000, // Actual flying mode
MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths
MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths
MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water

View file

@ -156,7 +156,6 @@ void WorldSession::HandleCreatureQueryOpcode( WorldPacket & recv_data )
CreatureInfo const *ci = objmgr.GetCreatureTemplate(entry); CreatureInfo const *ci = objmgr.GetCreatureTemplate(entry);
if (ci) if (ci)
{ {
std::string Name, SubName; std::string Name, SubName;
Name = ci->Name; Name = ci->Name;
SubName = ci->SubName; SubName = ci->SubName;

View file

@ -19,7 +19,7 @@
#ifndef _UPDATEFIELDS_AUTO_H #ifndef _UPDATEFIELDS_AUTO_H
#define _UPDATEFIELDS_AUTO_H #define _UPDATEFIELDS_AUTO_H
// Auto generated for version 3, 2, 2, 10505 // Auto generated for version 0, 3, 0, 10522
enum EObjectFields enum EObjectFields
{ {

View file

@ -738,7 +738,7 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi)
data >> mi->t_seat; data >> mi->t_seat;
} }
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20)) if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->unk1 & 0x20))
{ {
data >> mi->s_pitch; data >> mi->s_pitch;
} }
@ -783,7 +783,7 @@ void WorldSession::WriteMovementInfo(WorldPacket *data, MovementInfo *mi)
*data << mi->t_seat; *data << mi->t_seat;
} }
if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2))) || (mi->unk1 & 0x20)) if((mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) || (mi->unk1 & 0x20))
{ {
*data << mi->s_pitch; *data << mi->s_pitch;
} }

View file

@ -66,9 +66,9 @@ enum LoginResult
// we need to stick to 1 version or half of the stuff will work for someone // we need to stick to 1 version or half of the stuff will work for someone
// others will not and opposite // others will not and opposite
// will only support WoW, WoW:TBC and WoW:WotLK 3.2.2a client build 10505... // will only support WoW, WoW:TBC and WoW:WotLK 3.3.0 client build 10522...
#define EXPECTED_MANGOS_CLIENT_BUILD {10505, 0} #define EXPECTED_MANGOS_CLIENT_BUILD {10522, 0}
// At update excepted builds please update if need define DEFAULT_MAX_LEVEL // At update excepted builds please update if need define DEFAULT_MAX_LEVEL
// in DBCEnum.h to default max player level expected by build // in DBCEnum.h to default max player level expected by build