本文整理汇总了C++中WorldPacket::ReadBitInOrder方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::ReadBitInOrder方法的具体用法?C++ WorldPacket::ReadBitInOrder怎么用?C++ WorldPacket::ReadBitInOrder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::ReadBitInOrder方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleLootRoll
void WorldSession::HandleLootRoll(WorldPacket& recvData)
{
ObjectGuid guid;
uint8 itemSlot;
uint8 rollType;
recvData >> itemSlot; //always 0
recvData >> rollType; // 0: pass, 1: need, 2: greed
uint8 bitOrder[8] = {4, 5, 3, 2, 6, 1, 0, 7};
recvData.ReadBitInOrder(guid, bitOrder);
uint8 byteOrder[8] = {5, 6, 1, 3, 2, 4, 7, 0};
recvData.ReadBytesSeq(guid, byteOrder);
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
group->CountRollVote(GetPlayer()->GetGUID(), itemSlot, rollType);
switch (rollType)
{
case ROLL_NEED:
GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED, 1);
break;
case ROLL_GREED:
GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED, 1);
break;
}
}
示例2: HandleActivateTaxiOpcode
void WorldSession::HandleActivateTaxiOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ACTIVATETAXI");
ObjectGuid guid;
std::vector<uint32> nodes;
nodes.resize(2);
recvData >> nodes[0] >> nodes[1];
uint8 bitsOrder[8] = { 3, 6, 0, 7, 4, 1, 5, 2 };
recvData.ReadBitInOrder(guid, bitsOrder);
recvData.FlushBits();
uint8 bytesOrder[8] = { 3, 0, 4, 5, 7, 1, 6, 2 };
recvData.ReadBytesSeq(guid, bytesOrder);
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ACTIVATETAXI from %d to %d", nodes[0], nodes[1]);
Creature* npc = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_FLIGHTMASTER);
if (!npc)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleActivateTaxiOpcode - Unit (GUID: %u) not found or you can't interact with it.", uint32(GUID_LOPART(guid)));
return;
}
GetPlayer()->ActivateTaxiPathTo(nodes, npc);
}
示例3: HandleLootMethodOpcode
void WorldSession::HandleLootMethodOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_LOOT_METHOD");
uint8 lootMethod;
ObjectGuid lootMaster;
uint32 lootThreshold;
recvData >> lootThreshold;
recvData >> lootMethod;
recvData.read_skip<uint32>();
uint8 bitOrder[8] = { 7, 1, 2, 0, 4, 5, 6, 3 };
recvData.ReadBitInOrder(lootMaster, bitOrder);
uint8 byteOrder[8] = { 7, 1, 3, 4, 6, 5, 0, 2 };
recvData.ReadBytesSeq(lootMaster, byteOrder);
Group* group = GetPlayer()->GetGroup();
if (!group)
return;
/** error handling **/
if (!group->IsLeader(GetPlayer()->GetGUID()))
return;
/********************/
// everything's fine, do it
group->SetLootMethod((LootMethod)lootMethod);
group->SetLooterGuid(lootMaster);
group->SetLootThreshold((ItemQualities)lootThreshold);
group->SendUpdate();
}
示例4: HandlePetitionDeclineOpcode
void WorldSession::HandlePetitionDeclineOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_DECLINE");
ObjectGuid petitionGuid;
uint8 bitsOrder[8] = { 1, 4, 6, 7, 3, 2, 0, 5 };
recvData.ReadBitInOrder(petitionGuid, bitsOrder);
recvData.FlushBits();
uint8 bytesOrder[8] = { 5, 3, 4, 6, 0, 7, 2, 1 };
recvData.ReadBytesSeq(petitionGuid, bytesOrder);
sLog->outDebug(LOG_FILTER_NETWORKIO, "Petition %u declined by %u", GUID_LOPART(petitionGuid), _player->GetGUIDLow());
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION);
stmt->setUInt32(0, GUID_LOPART(petitionGuid));
PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (!result)
return;
Field* fields = result->Fetch();
ObjectGuid ownerGuid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);
Player* owner = ObjectAccessor::FindPlayer(ownerGuid);
if (owner)
owner->GetSession()->SendPetitionSignResult(ownerGuid, petitionGuid, PETITION_SIGN_DECLINED);
}
示例5: HandleBfQueueInviteResponse
//Send by client when he click on accept for queue
void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData)
{
uint8 accepted;
ObjectGuid guid;
uint8 bitOrder[8] = {4, 7, 6, 1, 2, 5, 0, 3};
recvData.ReadBitInOrder(guid, bitOrder);
accepted = recvData.ReadBit();
recvData.FlushBits();
uint8 byteOrder[8] = {6, 4, 0, 1, 5, 7, 3, 2};
recvData.ReadBytesSeq(guid, byteOrder);
sLog->outError(LOG_FILTER_GENERAL, "HandleQueueInviteResponse: GUID:" UI64FMTD " Accepted:%u", (uint64)guid, accepted);
if (!accepted)
return;
Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid);
if (!bf)
return;
bf->PlayerAcceptInviteToQueue(_player);
}
示例6: HandleBfQueueRequest
void WorldSession::HandleBfQueueRequest(WorldPacket& recvData)
{
ObjectGuid guid;
uint8 bitOrder[8] = {3, 5, 7, 0, 6, 2, 1, 4};
recvData.ReadBitInOrder(guid, bitOrder);
recvData.FlushBits();
uint8 byteOrder[8] = {1, 0, 3, 2, 4, 7, 5, 6};
recvData.ReadBytesSeq(guid, byteOrder);
sLog->outError(LOG_FILTER_GENERAL, "HandleBfQueueRequest: GUID:" UI64FMTD " ", (uint64)guid);
if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid))
{
if (bf->IsWarTime())
bf->InvitePlayerToWar(_player);
else
{
uint32 timer = bf->GetTimer() / 1000;
if (timer < 15 * MINUTE)
bf->InvitePlayerToQueue(_player);
}
}
}
示例7: HandleRequestPartyMemberStatsOpcode
/*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/
void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS");
ObjectGuid Guid;
auto isFull = recvData.read<uint8>();
uint8 bitOrder[8] = { 5, 3, 4, 1, 6, 0, 2, 7 };
recvData.ReadBitInOrder(Guid, bitOrder);
recvData.FlushBits();
uint8 byteOrder[8] = { 0, 3, 1, 2, 7, 5, 4, 6 };
recvData.ReadBytesSeq(Guid, byteOrder);
Player* player = HashMapHolder<Player>::Find(Guid);
if (player && player->GetGroup() != GetPlayer()->GetGroup())
return;
uint32 mask = GROUP_UPDATE_FLAG_STATUS;
if (player)
{
mask |= GROUP_UPDATE_PLAYER;
if (player->GetPet())
mask |= GROUP_UPDATE_PET;
}
WorldPacket data;
BuildPartyMemberStatsChangedPacket(player, &data, mask, Guid, true);
SendPacket(&data);
}
示例8: HandleBlackMarketBidOnItem
void WorldSession::HandleBlackMarketBidOnItem(WorldPacket& recvData)
{
ObjectGuid NpcGUID;
uint32 ItemID, MarketID;
uint64 BidAmount;
recvData >> ItemID >> MarketID >> BidAmount;
uint8 bitOrder[8] = { 0, 5, 4, 3, 7, 6, 1, 2};
recvData.ReadBitInOrder(NpcGUID, bitOrder);
recvData.ReadGuidBytes(NpcGUID, 4, 3, 6, 5, 7, 1, 0, 2);
TC_LOG_DEBUG("blackMarket", ">> HandleBlackMarketBid >> MarketID : %u, BidAmount : " UI64FMTD ", ItemID : %u", MarketID, BidAmount, ItemID);
if (!BidAmount)
return;
BlackMarketAuction *auction = sBlackMarketMgr->GetAuction(MarketID);
if (!auction)
{
TC_LOG_DEBUG("blackMarket", "HandleBlackMarketBid - Auction (MarketID: %u) not found.", MarketID);
return;
}
if (auction->GetCurrentBidder() == GetPlayer()->GetGUIDLow())
{
TC_LOG_DEBUG("blackMarket", "HandleBlackMarketBid - Player (GUID: %u) is already the highest bidder.", GetPlayer()->GetGUIDLow());
return;
}
if (auction->GetCurrentBid() > BidAmount && BidAmount != auction->GetTemplate()->MinBid)
{
TC_LOG_DEBUG("blackMarket", "HandleBlackMarketBid - Player (GUID: %u) could not bid. The current bid (%u) is higher than the given amount (" UI64FMTD ").", GetPlayer()->GetGUIDLow(), auction->GetCurrentBid(), BidAmount);
return;
}
uint64 currentRequiredIncrement = auction->GetCurrentBid() + auction->GetMinIncrement();
if (currentRequiredIncrement > BidAmount)
{
TC_LOG_DEBUG("blackMarket", "HandleBlackMarketBid - Player (GUID: %u) could not bid. The BidAmount (" UI64FMTD ") is lower than the current requiredIncrement (" UI64FMTD ").", GetPlayer()->GetGUIDLow(), BidAmount, currentRequiredIncrement);
return;
}
uint64 newIncrement = BidAmount - currentRequiredIncrement;
if (!GetPlayer()->ModifyMoney(-int64(BidAmount)))
{
TC_LOG_DEBUG("blackMarket", "HandleBlackMarketBid - Player (GUID: %u) has not enough money to bid.", GetPlayer()->GetGUIDLow());
return;
}
sBlackMarketMgr->UpdateAuction(auction, currentRequiredIncrement, newIncrement, GetPlayer());
SendBlackMarketBidOnItemResult(ItemID);
SendBlackMarketRequestItemsResult();
}
示例9: HandleMoveTeleportAck
void WorldSession::HandleMoveTeleportAck(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "MSG_MOVE_TELEPORT_ACK");
ObjectGuid guid;
uint32 flags, time;
recvPacket >> flags >> time;
uint8 bitOrder[8] = {0, 7, 6, 2, 5, 1, 4, 3};
recvPacket.ReadBitInOrder(guid, bitOrder);
uint8 byteOrder[8] = {5, 4, 0, 1, 3, 7, 6, 2};
recvPacket.ReadBytesSeq(guid, byteOrder);
sLog->outDebug(LOG_FILTER_NETWORKIO, "Guid " UI64FMTD, uint64(guid));
sLog->outDebug(LOG_FILTER_NETWORKIO, "Flags %u, time %u", flags, time/IN_MILLISECONDS);
Player* plMover = _player->m_mover->ToPlayer();
if (!plMover || !plMover->IsBeingTeleportedNear())
return;
if (guid != plMover->GetGUID())
return;
plMover->SetSemaphoreTeleportNear(false);
plMover->SetIgnoreMovementCount(5);
uint32 old_zone = plMover->GetZoneId();
WorldLocation const& dest = plMover->GetTeleportDest();
plMover->UpdatePosition(dest, true);
uint32 newzone, newarea;
plMover->GetZoneAndAreaId(newzone, newarea);
plMover->UpdateZone(newzone, newarea);
// new zone
if (old_zone != newzone)
{
// honorless target
if (plMover->pvpInfo.inHostileArea)
plMover->CastSpell(plMover, 2479, true);
// in friendly area
else if (plMover->IsPvP() && !plMover->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP))
plMover->UpdatePvP(false, false);
}
// resummon pet
plMover->ResummonPetTemporaryUnSummonedIfAny();
//lets process all delayed operations on successful teleport
plMover->ProcessDelayedOperations();
}
示例10: HandleBlackMarketHelloOpcode
void WorldSession::HandleBlackMarketHelloOpcode(WorldPacket& recvData)
{
ObjectGuid NpcGUID;
uint8 bitOrder[8] = { 4, 5, 2, 7, 0, 1, 3, 6 };
recvData.ReadBitInOrder(NpcGUID, bitOrder);
recvData.ReadGuidBytes(NpcGUID, 4, 3, 0, 6, 2, 7, 5, 1);
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
SendBlackMarketHello(NpcGUID, sBlackMarketMgr->isBlackMarketOpen());
}
示例11: HandleLootMasterAskForRoll
void WorldSession::HandleLootMasterAskForRoll(WorldPacket& recvData)
{
ObjectGuid guid = 0;
uint8 slot = 0;
recvData >> slot;
uint8 bitOrder[8] = {4, 3, 7, 6, 5, 1, 0, 2};
recvData.ReadBitInOrder(guid, bitOrder);
uint8 byteOrder[8] = {4, 1, 0, 2, 5, 6, 7, 3};
recvData.ReadBytesSeq(guid, byteOrder);
if (!_player->GetGroup() || _player->GetGroup()->GetLooterGuid() != _player->GetGUID())
{
_player->SendLootRelease(GetPlayer()->GetLootGUID());
return;
}
Loot* loot = NULL;
if (IS_CRE_OR_VEH_GUID(GetPlayer()->GetLootGUID()))
{
Creature* creature = GetPlayer()->GetMap()->GetCreature(guid);
if (!creature)
return;
loot = &creature->loot;
}
else if (IS_GAMEOBJECT_GUID(GetPlayer()->GetLootGUID()))
{
GameObject* pGO = GetPlayer()->GetMap()->GetGameObject(guid);
if (!pGO)
return;
loot = &pGO->loot;
}
if (!loot || loot->alreadyAskedForRoll)
return;
if (slot >= loot->items.size() + loot->quest_items.size())
{
sLog->outDebug(LOG_FILTER_LOOT, "MasterLootItem: Player %s might be using a hack! (slot %d, size %lu)", GetPlayer()->GetName(), slot, (unsigned long)loot->items.size());
return;
}
LootItem& item = slot >= loot->items.size() ? loot->quest_items[slot - loot->items.size()] : loot->items[slot];
loot->alreadyAskedForRoll = true;
_player->GetGroup()->DoRollForAllMembers(guid, slot, _player->GetMapId(), loot, item, _player);
}
示例12: HandleBlackMarketRequestItemOpcode
void WorldSession::HandleBlackMarketRequestItemOpcode(WorldPacket& recvData)
{
ObjectGuid NpcGUID;
uint32 Timestamp;
recvData >> Timestamp;
uint8 bitOrder[8] = { 2, 6, 0, 3, 4, 5, 1, 7 };
recvData.ReadBitInOrder(NpcGUID, bitOrder);
recvData.ReadGuidBytes(NpcGUID, 6, 2, 3, 5, 7, 4, 1, 0);
SendBlackMarketRequestItemsResult();
}
示例13: HandleGuildDemoteOpcode
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DEMOTE");
ObjectGuid targetGuid;
uint8 bitOrder[8] = {7, 1, 5, 6, 2, 3, 0, 4};
recvPacket.ReadBitInOrder(targetGuid, bitOrder);
uint8 byteOrder[8] = {1, 2, 7, 5, 6, 0, 4, 3};
recvPacket.ReadBytesSeq(targetGuid, byteOrder);
if (Guild* guild = _GetPlayerGuild(this, true))
guild->HandleUpdateMemberRank(this, targetGuid, 0);
}
示例14: HandleGuildRemoveOpcode
void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_REMOVE");
ObjectGuid playerGuid;
uint8 bitOrder[8] = {5, 0, 7, 2, 6, 3, 4, 1};
recvPacket.ReadBitInOrder(playerGuid, bitOrder);
uint8 byteOrder[8] = {1, 4, 2, 5, 0, 7, 6, 3};
recvPacket.ReadBytesSeq(playerGuid, byteOrder);
if (Guild* guild = _GetPlayerGuild(this, true))
guild->HandleRemoveMember(this, playerGuid);
}
示例15: HandleGuildQueryRanksOpcode
void WorldSession::HandleGuildQueryRanksOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_QUERY_RANKS");
ObjectGuid guildGuid;
uint8 bitOrder[8] = {2, 1, 7, 3, 4, 6, 0, 5};
recvData.ReadBitInOrder(guildGuid, bitOrder);
uint8 byteOrder[8] = {5, 3, 4, 1, 2, 0, 6, 7};
recvData.ReadBytesSeq(guildGuid, byteOrder);
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (guild->IsMember(_player->GetGUID()))
guild->HandleGuildRanks(this);
}