本文整理汇总了C++中WorldPacket::ReadBits方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::ReadBits方法的具体用法?C++ WorldPacket::ReadBits怎么用?C++ WorldPacket::ReadBits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::ReadBits方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleGuildMOTDOpcode
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_MOTD");
uint32 motdLength = recvPacket.ReadBits(10);
std::string motd = recvPacket.ReadString(motdLength);
if (Guild* guild = _GetPlayerGuild(this, true))
guild->HandleSetMOTD(this, motd);
}
示例2: HandleLfgSetCommentOpcode
void WorldSession::HandleLfgSetCommentOpcode(WorldPacket& recvData)
{
uint32 length = recvData.ReadBits(9);
std::string comment = recvData.ReadString(length);
TC_LOG_DEBUG("lfg", "CMSG_LFG_SET_COMMENT %s comment: %s",
GetPlayerInfo().c_str(), comment.c_str());
sLFGMgr->SetComment(GetPlayer()->GetGUID(), comment);
}
示例3: HandleChannelUnbanOpcode
void WorldSession::HandleChannelUnbanOpcode(WorldPacket& recvPacket)
{
DEBUG_LOG("WORLD: Received opcode %s (%u, 0x%X)", recvPacket.GetOpcodeName(), recvPacket.GetOpcode(), recvPacket.GetOpcode());
// recvPacket.hexlike();
uint32 channelLen, nameLen;
std::string channelname, otp;
nameLen = recvPacket.ReadBits(7);
channelLen = recvPacket.ReadBits(8);
otp = recvPacket.ReadString(nameLen);
channelname = recvPacket.ReadString(channelLen);
if (!normalizePlayerName(otp))
return;
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channelname, _player))
chn->UnBan(_player->GetObjectGuid(), otp.c_str());
}
示例4: HandleGuildChangeInfoTextOpcode
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
{
uint32 length = recvPacket.ReadBits(12);
std::string info = recvPacket.ReadString(length);
sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), info.c_str());
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetInfo(this, info);
}
示例5: HandleChannelListOpcode
void WorldSession::HandleChannelListOpcode(WorldPacket& recvPacket)
{
DEBUG_LOG("WORLD: Received opcode %s (%u, 0x%X)", recvPacket.GetOpcodeName(), recvPacket.GetOpcode(), recvPacket.GetOpcode());
// recvPacket.hexlike();
std::string channelname = recvPacket.ReadString(recvPacket.ReadBits(8));
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channelname, _player))
chn->List(_player);
}
示例6: HandleChannelList
void WorldSession::HandleChannelList(WorldPacket& recvPacket)
{
uint32 channelId;
recvPacket >> channelId; // flags
recvPacket.ReadBit();
uint32 length = recvPacket.ReadBits(7);
recvPacket.ReadBits(7);
recvPacket.ReadBit();
std::string channelName = recvPacket.ReadString(length);
TC_LOG_DEBUG("chat.system", "%s %s Channel: %s",
recvPacket.GetOpcode() == CMSG_CHANNEL_DISPLAY_LIST ? "CMSG_CHANNEL_DISPLAY_LIST" : "CMSG_CHANNEL_LIST",
GetPlayerInfo().c_str(), channelName.c_str());
if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam()))
if (Channel* channel = cMgr->GetChannel(channelName, GetPlayer()))
channel->List(GetPlayer());
}
示例7: HandleGuildInviteOpcode
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
{
uint32 nameLength = recvPacket.ReadBits(7);
std::string invitedName = recvPacket.ReadString(nameLength);
sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), invitedName.c_str());
if (normalizePlayerName(invitedName))
if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleInviteMember(this, invitedName);
}
示例8: HandleLfgJoinOpcode
void WorldSession::HandleLfgJoinOpcode(WorldPacket& recvData)
{
if (!sLFGMgr->isOptionEnabled(lfg::LFG_OPTION_ENABLE_DUNGEON_FINDER | lfg::LFG_OPTION_ENABLE_RAID_BROWSER) ||
(GetPlayer()->GetGroup() && GetPlayer()->GetGroup()->GetLeaderGUID() != GetPlayer()->GetGUID() &&
(GetPlayer()->GetGroup()->GetMembersCount() == MAXGROUPSIZE || !GetPlayer()->GetGroup()->isLFGGroup())))
{
recvData.rfinish();
return;
}
uint32 roles;
bool unk1;
uint8 unk0;
recvData >> unk0;
for (int32 i = 0; i < 3; ++i)
recvData.read_skip<uint32>();
recvData >> roles;
uint32 numDungeons = recvData.ReadBits(22);
uint32 commentLen = recvData.ReadBits(8);
unk1 = recvData.ReadBit();
if (!numDungeons)
{
TC_LOG_DEBUG("lfg", "CMSG_LFG_JOIN %s no dungeons selected", GetPlayerInfo().c_str());
recvData.rfinish();
return;
}
std::string comment = recvData.ReadString(commentLen);
lfg::LfgDungeonSet newDungeons;
for (uint32 i = 0; i < numDungeons; ++i)
{
uint32 dungeon;
recvData >> dungeon;
newDungeons.insert((dungeon & 0x00FFFFFF)); // remove the type from the dungeon entry
}
TC_LOG_DEBUG("lfg", "CMSG_LFG_JOIN %s roles: %u, Dungeons: %u, Comment: %s",
GetPlayerInfo().c_str(), roles, uint8(newDungeons.size()), comment.c_str());
sLFGMgr->JoinLfg(GetPlayer(), uint8(roles), newDungeons, comment);
}
示例9: HandleGuildChangeInfoTextOpcode
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INFO_TEXT");
uint32 length = recvPacket.ReadBits(11);
std::string info = recvPacket.ReadString(length);
if (Guild* guild = _GetPlayerGuild(this, true))
guild->HandleSetInfo(this, info);
}
示例10: HandleGuildRankOpcode
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
{
std::string rankname;
uint32 rankId;
uint32 rights, MoneyPerDay;
DEBUG_LOG("WORLD: Received opcode CMSG_GUILD_RANK");
Guild* guild = sGuildMgr.GetGuildById(GetPlayer()->GetGuildId());
if (!guild)
{
recvPacket.rfinish(); // set to end to avoid warnings spam
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return;
}
if (GetPlayer()->GetObjectGuid() != guild->GetLeaderGuid())
{
recvPacket.rfinish(); // set to end to avoid warnings spam
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return;
}
recvPacket >> Unused<uint32>(); // unk
recvPacket >> Unused<uint32>(); // old rights
recvPacket >> rights;
uint32 BankRights[GUILD_BANK_MAX_TABS];
uint32 BankSlotPerDay[GUILD_BANK_MAX_TABS];
for (int i = 0; i < GUILD_BANK_MAX_TABS; ++i)
{
recvPacket >> BankRights[i];
recvPacket >> BankSlotPerDay[i];
}
recvPacket >> MoneyPerDay;
recvPacket >> rankId;
rankname = recvPacket.ReadString(recvPacket.ReadBits(7));
DEBUG_LOG("WORLD: Changed RankName to %s , Rights to 0x%.4X", rankname.c_str(), rights);
for (int i = 0; i < GUILD_BANK_MAX_TABS; ++i)
guild->SetBankRightsAndSlots(rankId, uint8(i), uint16(BankRights[i] & 0xFF), uint16(BankSlotPerDay[i]), true);
guild->SetBankMoneyPerDay(rankId, MoneyPerDay);
guild->SetRankName(rankId, rankname);
if (rankId == GR_GUILDMASTER) // prevent loss leader rights
rights = GR_RIGHT_ALL;
guild->SetRankRights(rankId, rights);
guild->Query(this);
guild->Roster(); // broadcast for tab rights update
}
示例11: HandleQueryNpcCompletitionRespOpcode
void WorldSession::HandleQueryNpcCompletitionRespOpcode(WorldPacket& recvData)
{
std::set<uint32> completedQuests;
std::set<uint32> npcEntryIds;
recvData.hexlike();
uint32 count = recvData.ReadBits(24);
uint8 unk1;
recvData >> unk1;
for (uint8 i = 0; i < count; ++i)
{
uint32 questId = recvData.ReadBits(24);
if (_player->GetQuestStatus(questId) == QUEST_STATUS_COMPLETE)
{
completedQuests.insert(questId);
if (std::set<uint32> const* list = sObjectMgr->GetInvolvedNpcsForQuest(questId))
for (std::set<uint32>::const_iterator itr = list->begin(); itr != list->end(); ++itr)
npcEntryIds.insert(*itr);
}
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_QUERY_COMPLETITION_NPC_RESPONSE with count : %u and questId %u ",count,questId);
}
WorldPacket sendData(SMSG_QUEST_NPC_QUERY_RESPONSE, 2 + 4 + (4 * count));
sendData.WriteBits<uint8>(completedQuests.size(), 23);
for (uint8 i = 0; i < completedQuests.size(); ++i)
sendData.WriteBits<uint8>(completedQuests.size(), 24);
for (std::set<uint32>::iterator itr = completedQuests.begin(); itr != completedQuests.end(); ++itr)
{
sendData << uint32(*itr);
for (std::set<uint32>::iterator citr = npcEntryIds.begin(); citr != npcEntryIds.end(); ++citr)
sendData << uint32(*itr);
}
SendPacket(&sendData);
}
示例12: HandleChannelList
void WorldSession::HandleChannelList(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Opcode %u", recvPacket.GetOpcode());
uint32 length = recvPacket.ReadBits(8);
std::string channelname = recvPacket.ReadString(length);
if (ChannelMgr* cMgr = channelMgr(_player->GetTeam()))
if (Channel* chn = cMgr->GetChannel(channelname, _player))
chn->List(_player);
}
示例13: HandleSetActiveVoiceChannel
void WorldSession::HandleSetActiveVoiceChannel(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_SET_ACTIVE_VOICE_CHANNEL");
uint32 channelId;
std::string channelName;
recvData >> channelId;
uint32 length = recvData.ReadBits(8);
channelName = recvData.ReadString(length);
}
示例14: HandleChannelVoiceOffOpcode
void WorldSession::HandleChannelVoiceOffOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_CHANNEL_VOICE_OFF");
uint32 length = recvData.ReadBits(8);
std::string channelName = recvData.ReadString(length);
if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam()))
if (Channel* channel = cMgr->GetChannel(channelName, GetPlayer()))
channel->MakeVoiceOff(&recvData, GetPlayer()->GetGUID());
}
示例15: HandleGuildInviteOpcode
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INVITE");
uint32 nameLength = recvPacket.ReadBits(9);
std::string invitedName = recvPacket.ReadString(nameLength);
if (normalizePlayerName(invitedName))
if (Guild* guild = _GetPlayerGuild(this, true))
guild->HandleInviteMember(this, invitedName);
}