本文整理汇总了C++中WorldPacket::ReadGuidBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::ReadGuidBytes方法的具体用法?C++ WorldPacket::ReadGuidBytes怎么用?C++ WorldPacket::ReadGuidBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::ReadGuidBytes方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleLfgProposalResultOpcode
void WorldSession::HandleLfgProposalResultOpcode(WorldPacket& recvData)
{
uint32 proposalID; // Proposal ID
bool accept;
ObjectGuid guid1;
ObjectGuid guid2;
recvData >> proposalID;
recvData.read_skip<uint32>();
recvData.read_skip<uint32>();
recvData.read_skip<uint32>();
recvData.ReadGuidMask(guid2, 4, 5, 0, 6, 2, 7, 1, 3);
recvData.ReadGuidBytes(guid2, 7, 4, 3, 2, 6, 0, 1, 5);
guid1[7] = recvData.ReadBit();
accept = recvData.ReadBit();
recvData.ReadGuidMask(guid1, 1, 3, 0, 5, 4, 6, 2);
recvData.ReadGuidBytes(guid1, 7, 1, 5, 6, 3, 4, 0, 2);
TC_LOG_DEBUG("lfg", "CMSG_LFG_PROPOSAL_RESULT %s proposal: %u accept: %u",
GetPlayerInfo().c_str(), proposalID, accept ? 1 : 0);
sLFGMgr->UpdateProposal(proposalID, GetPlayer()->GetGUID(), accept);
}
示例2: HandleRepairItemOpcode
void WorldSession::HandleRepairItemOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_REPAIR_ITEM");
ObjectGuid npcGuid, itemGuid;
bool guildBank; // new in 2.3.2, bool that means from guild bank money
recvData.ReadGuidMask(itemGuid, 2, 5);
npcGuid[3] = recvData.ReadBit();
guildBank = recvData.ReadBit();
npcGuid[7] = recvData.ReadBit();
itemGuid[4] = recvData.ReadBit();
npcGuid[2] = recvData.ReadBit();
recvData.ReadGuidMask(itemGuid, 0, 3);
recvData.ReadGuidMask(npcGuid, 6, 1, 4);
itemGuid[6] = recvData.ReadBit();
recvData.ReadGuidMask(npcGuid, 5, 0);
recvData.ReadGuidMask(itemGuid, 7, 1);
recvData.ReadByteSeq(itemGuid[2]);
recvData.ReadByteSeq(npcGuid[1]);
recvData.ReadByteSeq(itemGuid[1]);
recvData.ReadGuidBytes(npcGuid, 4, 7, 3, 2);
recvData.ReadByteSeq(itemGuid[7]);
recvData.ReadGuidBytes(npcGuid, 5, 0);
recvData.ReadGuidBytes(itemGuid, 5, 3, 4, 6);
recvData.ReadByteSeq(npcGuid[6]);
recvData.ReadByteSeq(itemGuid[0]);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(npcGuid, UNIT_NPC_FLAG_REPAIR);
if (!unit)
{
TC_LOG_DEBUG("network", "WORLD: HandleRepairItemOpcode - Unit (GUID: %u) not found or you can not interact with him.", uint32(GUID_LOPART(npcGuid)));
return;
}
// remove fake death
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
// reputation discount
float discountMod = _player->GetReputationPriceDiscount(unit);
if (itemGuid)
{
TC_LOG_DEBUG("network", "ITEM: Repair item, itemGUID = %u, npcGUID = %u", GUID_LOPART(itemGuid), GUID_LOPART(npcGuid));
Item* item = _player->GetItemByGuid(itemGuid);
if (item)
_player->DurabilityRepair(item->GetPos(), true, discountMod, guildBank);
}
else
{
TC_LOG_DEBUG("network", "ITEM: Repair all items, npcGUID = %u", GUID_LOPART(npcGuid));
_player->DurabilityRepairAll(true, discountMod, guildBank);
}
}
示例3: HandlePetitionDeclineOpcode
void WorldSession::HandlePetitionDeclineOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "Received opcode MSG_PETITION_DECLINE"); // ok
ObjectGuid petitionGuid;
uint64 ownerGuid;
recvData.ReadGuidMask(petitionGuid, 5, 6, 4, 3, 1, 7, 0, 2);
recvData.ReadGuidBytes(petitionGuid, 6, 2, 1, 5, 0, 7, 4, 3);
TC_LOG_DEBUG("network", "Petition %u declined by %u", GUID_LOPART(petitionGuid), _player->GetGUIDLow());
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_OWNER_BY_GUID);
stmt->setUInt32(0, GUID_LOPART(petitionGuid));
PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (!result)
return;
Field* fields = result->Fetch();
ownerGuid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);
Player* owner = ObjectAccessor::FindPlayer(ownerGuid);
if (owner) // petition owner online
owner->GetSession()->SendPetitionSignResults(petitionGuid, _player->GetGUID(), PETITION_SIGN_OK);
}
示例4: HandleMailMarkAsRead
//called when mail is read
void WorldSession::HandleMailMarkAsRead(WorldPacket& recvData)
{
ObjectGuid mailbox;
uint32 mailId;
recvData >> mailId;
recvData.ReadGuidMask(mailbox, 0, 2, 3);
recvData.ReadBit();
recvData.ReadGuidMask(mailbox, 4, 6, 7, 1, 5);
recvData.FlushBits();
recvData.ReadGuidBytes(mailbox, 1, 7, 2, 5, 6, 3, 4, 0);
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
if (Mail* mail = _player->GetMail(mailId))
{
if (_player->unReadMails)
--_player->unReadMails;
mail->checked |= MAIL_CHECK_MASK_READ;
mail->state = MAIL_STATE_CHANGED;
_player->m_mailsUpdated = true;
}
}
示例5: HandleMailReturnToSender
void WorldSession::HandleMailReturnToSender(WorldPacket& recvData)
{
ObjectGuid mailbox;
uint32 mailId;
recvData >> mailId;
recvData.ReadGuidMask(mailbox, 2, 0, 4, 6, 3, 1, 7, 5);
recvData.ReadGuidBytes(mailbox, 5, 6, 2, 0, 3, 1, 4, 7);
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
Player* player = _player;
Mail* m = player->GetMail(mailId);
if (!m || m->state == MAIL_STATE_DELETED || m->deliver_time > time(NULL))
{
player->SendMailResult(mailId, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR);
return;
}
//we can return mail now, so firstly delete the old one
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
stmt->setUInt32(0, mailId);
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID);
stmt->setUInt32(0, mailId);
trans->Append(stmt);
player->RemoveMail(mailId);
// only return mail if the player exists (and delete if not existing)
if (m->messageType == MAIL_NORMAL && m->sender)
{
MailDraft draft(m->subject, m->body);
if (m->mailTemplateId)
draft = MailDraft(m->mailTemplateId, false); // items already included
if (m->HasItems())
{
for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2)
{
if (Item* const item = player->GetMItem(itr2->item_guid))
draft.AddItem(item);
player->RemoveMItem(itr2->item_guid);
}
}
draft.AddMoney(m->money).SendReturnToSender(GetAccountId(), m->receiver, m->sender, trans);
}
CharacterDatabase.CommitTransaction(trans);
delete m; //we can deallocate old mail
player->SendMailResult(mailId, MAIL_RETURNED_TO_SENDER, MAIL_OK);
}
示例6: 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();
}
示例7: HandleTrainerListOpcode
void WorldSession::HandleTrainerListOpcode(WorldPacket& recvData)
{
ObjectGuid guid;
recvData.ReadGuidMask(guid, 0, 2, 7, 6, 1, 4, 5, 3);
recvData.ReadGuidBytes(guid, 3, 6, 7, 5, 1, 0, 2, 4);
SendTrainerList(guid);
}
示例8: 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());
}
示例9: 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();
}
示例10: HandleGuildFinderDeclineRecruit
void WorldSession::HandleGuildFinderDeclineRecruit(WorldPacket& recvPacket)
{
SF_LOG_DEBUG("network", "WORLD: Received CMSG_LF_GUILD_DECLINE_RECRUIT");
ObjectGuid RecruitGUID;
recvPacket.ReadGuidMask(RecruitGUID, 6, 7, 3, 1, 2, 0, 4, 5);
recvPacket.ReadGuidBytes(RecruitGUID, 0, 7, 1, 6, 4, 3, 5, 2);
if (!IS_PLAYER_GUID(RecruitGUID))
return;
sGuildFinderMgr->RemoveMembershipRequest(GUID_LOPART(RecruitGUID), GetPlayer()->GetGuildId());
}
示例11: HandleGossipHelloOpcode
void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_GOSSIP_HELLO");
ObjectGuid guid;
recvData.ReadGuidMask(guid, 2, 4, 0, 3, 6, 7, 5, 1);
recvData.ReadGuidBytes(guid, 4, 7, 1, 0, 5, 3, 6, 2);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
if (!unit)
{
TC_LOG_DEBUG("network", "WORLD: HandleGossipHelloOpcode - Unit (GUID: %u) not found or you can not interact with him.", uint32(GUID_LOPART(guid)));
return;
}
// set faction visible if needed
if (FactionTemplateEntry const* factionTemplateEntry = sFactionTemplateStore.LookupEntry(unit->getFaction()))
_player->GetReputationMgr().SetVisible(factionTemplateEntry);
GetPlayer()->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TALK);
// remove fake death
//if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
// GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
if (unit->IsArmorer() || unit->IsCivilian() || unit->IsQuestGiver() || unit->IsServiceProvider() || unit->IsGuard())
unit->StopMoving();
// If spiritguide, no need for gossip menu, just put player into resurrect queue
if (unit->IsSpiritGuide())
{
Battleground* bg = _player->GetBattleground();
if (bg)
{
bg->AddPlayerToResurrectQueue(unit->GetGUID(), _player->GetGUID());
sBattlegroundMgr->SendAreaSpiritHealerQueryOpcode(_player, bg, unit->GetGUID());
return;
}
}
if (!sScriptMgr->OnGossipHello(_player, unit))
{
// _player->TalkedToCreature(unit->GetEntry(), unit->GetGUID());
_player->PrepareGossipMenu(unit, unit->GetCreatureTemplate()->GossipMenuId, true);
_player->SendPreparedGossip(unit);
}
unit->AI()->sGossipHello(_player);
}
示例12: HandlePetitionQueryOpcode
void WorldSession::HandlePetitionQueryOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "Received opcode CMSG_PETITION_QUERY"); // ok
uint32 guildguid;
ObjectGuid petitionGuid;
recvData >> guildguid; // in Trinity always same as GUID_LOPART(petitionguid)
recvData.ReadGuidMask(petitionGuid, 2, 3, 1, 0, 4, 7, 6, 5);
recvData.ReadGuidBytes(petitionGuid, 0, 4, 7, 5, 1, 6, 3, 2);
TC_LOG_DEBUG("network", "CMSG_PETITION_QUERY Petition GUID %u Guild GUID %u", GUID_LOPART(petitionGuid), guildguid);
SendPetitionQueryOpcode(petitionGuid);
}
示例13: HandleMailTakeMoney
void WorldSession::HandleMailTakeMoney(WorldPacket& recvData)
{
ObjectGuid mailbox;
uint64 money;
uint32 mailId;
recvData >> mailId;
recvData >> money;
recvData.ReadGuidMask(mailbox, 7, 6, 3, 2, 4, 5, 0, 1);
recvData.ReadGuidBytes(mailbox, 7, 1, 4, 0, 3, 2, 6, 5);
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
Player* player = _player;
Mail* m = player->GetMail(mailId);
if ((!m || m->state == MAIL_STATE_DELETED || m->deliver_time > time(NULL)) ||
(money > 0 && m->money != money))
{
player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_ERR_INTERNAL_ERROR);
return;
}
if (!player->ModifyMoney(m->money, false))
{
player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_TOO_MUCH_GOLD);
return;
}
m->money = 0;
m->state = MAIL_STATE_CHANGED;
player->m_mailsUpdated = true;
player->SendMailResult(mailId, MAIL_MONEY_TAKEN, MAIL_OK);
// save money and mail to prevent cheating
SQLTransaction trans = CharacterDatabase.BeginTransaction();
player->SaveGoldToDB(trans);
player->_SaveMail(trans);
CharacterDatabase.CommitTransaction(trans);
}
示例14: HandlePetitionShowListOpcode
void WorldSession::HandlePetitionShowListOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "Received CMSG_PETITION_SHOWLIST");
ObjectGuid guid;
recvData.ReadGuidMask(guid, 1, 7, 2, 5, 4, 0, 3, 6);
recvData.ReadGuidBytes(guid, 6, 3, 2, 4, 1, 7, 5, 0);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_PETITIONER);
if (!unit)
{
TC_LOG_DEBUG("network", "WORLD: HandlePetitionerShowListOpcode - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid)));
return;
}
SendPetitionShowList(guid);
}
示例15: HandleAttackSwingOpcode
void WorldSession::HandleAttackSwingOpcode(WorldPacket& recvData)
{
ObjectGuid guid;
recvData.ReadGuidMask(guid, 6, 5, 7, 0, 3, 1, 4, 2);
recvData.ReadGuidBytes(guid, 6, 7, 1, 3, 2, 0, 4, 5);
TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_ATTACK_SWING Message guidlow:%u guidhigh:%u", GUID_LOPART(guid), GUID_HIPART(guid));
Unit* pEnemy = ObjectAccessor::GetUnit(*_player, guid);
if (!pEnemy)
{
// stop attack state at client
SendAttackStop(NULL);
return;
}
if (!_player->IsValidAttackTarget(pEnemy))
{
// stop attack state at client
SendAttackStop(pEnemy);
return;
}
//! Client explicitly checks the following before sending CMSG_ATTACK_SWING packet,
//! so we'll place the same check here. Note that it might be possible to reuse this snippet
//! in other places as well.
if (Vehicle* vehicle = _player->GetVehicle())
{
VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(_player);
ASSERT(seat);
if (!(seat->m_flags & VEHICLE_SEAT_FLAG_CAN_ATTACK))
{
SendAttackStop(pEnemy);
return;
}
}
_player->Attack(pEnemy, true);
}