aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-08-04 19:11:13 +0100
committerNay <dnpd.dd@gmail.com>2012-08-04 19:11:13 +0100
commitda2db28cab50d5d9d4f1864b6bfd7b47aaf648b9 (patch)
tree4e8369244061da69b93e14ef8886c72d063ea3c8 /src
parentfc318a2da7f83468461896ae072ed36b736dc8e0 (diff)
Core/PacketIO: Add some (possible) missing FlushBits
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp2
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp6
-rwxr-xr-xsrc/server/game/Guilds/Guild.cpp8
-rwxr-xr-xsrc/server/game/Guilds/Guild.h2
-rwxr-xr-xsrc/server/game/Handlers/AuthHandler.cpp2
-rwxr-xr-xsrc/server/game/Handlers/ItemHandler.cpp40
-rwxr-xr-xsrc/server/game/Handlers/TradeHandler.cpp8
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp2
-rwxr-xr-xsrc/server/game/Server/WorldSession.h2
10 files changed, 43 insertions, 31 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 4e25fa03a42..a0e3b923406 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -1013,6 +1013,8 @@ void AchievementMgr<Guild>::SendCriteriaUpdate(AchievementCriteriaEntry const* e
data.WriteBit(counter[7]);
data.WriteBit(guid[4]);
+ data.FlushBits();
+
data.WriteByteSeq(guid[5]);
data << uint32(progress->date); // unknown date
data.WriteByteSeq(counter[3]);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 6d8c828ac58..b1d84ddda39 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3429,16 +3429,16 @@ void ObjectMgr::GetPlayerClassLevelInfo(uint32 class_, uint8 level, uint32& base
if (level > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
level = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL);
-
+
GtOCTBaseHPByClassEntry const* hp = sGtOCTBaseHPByClassStore.LookupEntry((class_-1) * GT_MAX_LEVEL + level-1);
GtOCTBaseMPByClassEntry const* mp = sGtOCTBaseMPByClassStore.LookupEntry((class_-1) * GT_MAX_LEVEL + level-1);
-
+
if (!hp || !mp)
{
sLog->outError("Tried to get non-existant Class-Level combination data for base hp/mp. Class %u Level %u", class_, level);
return;
}
-
+
baseHP = uint32(hp->ratio);
baseMana = uint32(mp->ratio);
}
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index d4e461f3f57..e2e2f31c30c 100755
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1311,7 +1311,7 @@ void Guild::HandleGuildRanks(WorldSession* session)
// perhaps move to guild.cpp.....
ByteBuffer rankData(100);
WorldPacket data(SMSG_GUILD_RANK, 100);
-
+
data.WriteBits(_GetRanksSize(), 18);
for (uint8 i = 0; i < _GetRanksSize(); i++)
@@ -1599,7 +1599,7 @@ void Guild::HandleInviteMember(WorldSession* session, const std::string& name)
data.WriteByteSeq(newGuildGuid[4]);
data.append(m_name.c_str(), m_name.length());
-
+
data.WriteByteSeq(newGuildGuid[5]);
data.WriteByteSeq(newGuildGuid[3]);
data.WriteByteSeq(oldGuildGuid[4]);
@@ -1688,7 +1688,7 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, uint64 targetGuid, boo
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
return;
}
-
+
// Player cannot promote himself
if (member->IsSamePlayer(player->GetGUID()))
{
@@ -1741,7 +1741,7 @@ void Guild::HandleSetMemberRank(WorldSession* session, uint64 targetGuid, uint64
SendCommandResult(session, GUILD_INVITE, ERR_GUILD_PERMISSIONS);
return;
}
-
+
// Player cannot promote himself
if (member->IsSamePlayer(player->GetGUID()))
{
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 3d88083a67e..5e02e88a224 100755
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -820,7 +820,7 @@ private:
void _SendBankMoneyUpdate(WorldSession* session) const;
void _SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const;
void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const;
-
+
void SendGuildRanksUpdate(uint64 setterGuid, uint64 targetGuid, uint32 rank);
void _BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* param1 = NULL, const char* param2 = NULL, const char* param3 = NULL) const;
diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp
index 4a3f8d55fdc..5085bb15584 100755
--- a/src/server/game/Handlers/AuthHandler.cpp
+++ b/src/server/game/Handlers/AuthHandler.cpp
@@ -28,6 +28,8 @@ void WorldSession::SendAuthResponse(uint8 code, bool queued, uint32 queuePos)
packet.WriteBit(1); // has account info
+ packet.FlushBits();
+
// account info
packet << uint32(0); // BillingTimeRemaining
packet << uint8(Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, 3 - CATA; must be set in database manually for each account
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index a273857f081..bd799a7a2fa 100755
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -670,7 +670,7 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data)
bag = INVENTORY_SLOT_BAG_0;
else
bagItem = _player->GetItemByGuid(bagguid);
-
+
if (bagItem && bagItem->IsBag())
bag = bagItem->GetSlot();
@@ -684,10 +684,10 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data)
void WorldSession::HandleBuyItemOpcode(WorldPacket& recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BUY_ITEM");
- uint64 vendorguid, bagGuid;
+ uint64 vendorguid, bagGuid;
uint32 item, slot, count;
uint8 itemType; // 1 = item, 2 = currency
- int8 bagSlot;
+ int8 bagSlot;
recv_data >> vendorguid >> itemType >> item >> slot >> count >> bagGuid >> bagSlot;
@@ -696,12 +696,12 @@ void WorldSession::HandleBuyItemOpcode(WorldPacket& recv_data)
--slot;
else
return; // cheating
-
+
Item* bagItem = _player->GetItemByGuid(bagGuid);
-
+
if (bagItem && bagItem->IsBag())
bag = bagItem->GetSlot();
-
+
GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagSlot);
}
@@ -1642,9 +1642,9 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData)
ObjectGuid guid;
uint32 bag;
Player* player = GetPlayer();
-
+
recvData >> reforgeEntry >> slot >> bag;
-
+
guid[2] = recvData.ReadBit();
guid[6] = recvData.ReadBit();
guid[3] = recvData.ReadBit();
@@ -1653,7 +1653,9 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData)
guid[0] = recvData.ReadBit();
guid[7] = recvData.ReadBit();
guid[5] = recvData.ReadBit();
-
+
+ recvData.FlushBits();
+
recvData.ReadByteSeq(guid[2]);
recvData.ReadByteSeq(guid[3]);
recvData.ReadByteSeq(guid[6]);
@@ -1669,16 +1671,16 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData)
SendReforgeResult(false);
return;
}
-
- Item* item = player->GetItemByPos(bag, slot);
-
+
+ Item* item = player->GetItemByPos(bag, slot);
+
if (!item)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to reforge an invalid/non-existant item.", player->GetGUIDLow(), player->GetName());
SendReforgeResult(false);
return;
}
-
+
if (!reforgeEntry)
{
// Reset the item
@@ -1686,25 +1688,25 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData)
SendReforgeResult(true);
return;
}
-
+
if (!sItemReforgeStore.LookupEntry(reforgeEntry))
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to reforge an item with invalid reforge entry (%u).", player->GetGUIDLow(), player->GetName(), reforgeEntry);
SendReforgeResult(false);
return;
}
-
+
if (player->HasEnoughMoney(uint64(item->GetSpecialPrice()))) // cheating
{
SendReforgeResult(false);
return;
}
-
+
player->ModifyMoney(-int64(item->GetSpecialPrice()));
-
+
item->SetEnchantment(REFORGE_ENCHANTMENT_SLOT, reforgeEntry, 0, 0);
-
+
SendReforgeResult(true);
-
+
// ToDo: Apply and remove the destination/source stats to the player
}
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index 5c01bc7ea64..8e06ca88dd1 100755
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -42,29 +42,33 @@ void WorldSession::SendTradeStatus(TradeStatus status)
{
case TRADE_STATUS_BEGIN_TRADE:
data.WriteBits(0, 8); // zero guid
+ data.FlushBits();
break;
case TRADE_STATUS_OPEN_WINDOW:
+ data.FlushBits();
data << uint32(0); // unk
break;
case TRADE_STATUS_CLOSE_WINDOW:
data.WriteBit(0); // unk
+ data.FlushBits();
data << uint32(0); // unk
data << uint32(0); // unk
break;
case TRADE_STATUS_ONLY_CONJURED:
case TRADE_STATUS_NOT_ELIGIBLE:
+ data.FlushBits();
data << uint8(0); // unk
break;
case TRADE_STATUS_CURRENCY: // Not implemented
case TRADE_STATUS_CURRENCY_NOT_TRADABLE: // Not implemented
+ data.FlushBits();
data << uint32(0); // unk
data << uint32(0); // unk
default:
+ data.FlushBits();
break;
}
- data.FlushBits();
-
SendPacket(&data);
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 6172a8bc9b0..10dece5490a 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -314,7 +314,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupChangeSubGroupOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_DECLINE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupDeclineOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_DISBAND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupDisbandOpcode );
- //DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_RAID_CONVERT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupRaidConvertOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_SET_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSetLeaderOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GROUP_SWAP_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSwapSubGroupOpcode );
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 7e7d75b0428..0f7a63076e3 100755
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -672,6 +672,7 @@ void WorldSession::SendAuthWaitQue(uint32 position)
WorldPacket packet(SMSG_AUTH_RESPONSE, 1);
packet.WriteBit(0); // has queue info
packet.WriteBit(0); // has account info
+ packet.FlushBits();
packet << uint8(AUTH_OK);
SendPacket(&packet);
}
@@ -681,6 +682,7 @@ void WorldSession::SendAuthWaitQue(uint32 position)
packet.WriteBit(1); // has queue info
packet.WriteBit(0); // unk queue bool
packet.WriteBit(0); // has account info
+ packet.FlushBits();
packet << uint8(AUTH_WAIT_QUEUE);
packet << uint32(position);
SendPacket(&packet);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index abf3e5934b8..0433ef5581d 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -922,7 +922,7 @@ class WorldSession
// Transmogrification
void HandleTransmogrifyItems(WorldPacket& recvData);
-
+
// Reforge
void HandleReforgeItemOpcode(WorldPacket& recvData);
void SendReforgeResult(bool success);