diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-04 19:11:13 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-04 19:11:13 +0100 |
commit | da2db28cab50d5d9d4f1864b6bfd7b47aaf648b9 (patch) | |
tree | 4e8369244061da69b93e14ef8886c72d063ea3c8 /src | |
parent | fc318a2da7f83468461896ae072ed36b736dc8e0 (diff) |
Core/PacketIO: Add some (possible) missing FlushBits
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Achievements/AchievementMgr.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Globals/ObjectMgr.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Guilds/Guild.cpp | 8 | ||||
-rwxr-xr-x | src/server/game/Guilds/Guild.h | 2 | ||||
-rwxr-xr-x | src/server/game/Handlers/AuthHandler.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Handlers/ItemHandler.cpp | 40 | ||||
-rwxr-xr-x | src/server/game/Handlers/TradeHandler.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.h | 2 |
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); |