本文整理汇总了C++中IS_CRE_OR_VEH_GUID函数的典型用法代码示例。如果您正苦于以下问题:C++ IS_CRE_OR_VEH_GUID函数的具体用法?C++ IS_CRE_OR_VEH_GUID怎么用?C++ IS_CRE_OR_VEH_GUID使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IS_CRE_OR_VEH_GUID函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPet
Creature* ObjectAccessor::GetCreatureOrPetOrVehicle(WorldObject const& u, uint64 guid)
{
if (IS_PET_GUID(guid))
return GetPet(u, guid);
if (IS_CRE_OR_VEH_GUID(guid))
return GetCreature(u, guid);
return NULL;
}
示例2: 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);
}
示例3: TC_LOG_DEBUG
void WorldSession::HandleLootOpcode(WorldPacket& recvData)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_LOOT");
uint64 guid;
recvData >> guid;
// Check possible cheat
if (!GetPlayer()->IsAlive() || !IS_CRE_OR_VEH_GUID(guid))
return;
GetPlayer()->SendLoot(guid, LOOT_CORPSE);
// interrupt cast
if (GetPlayer()->IsNonMeleeSpellCast(false))
GetPlayer()->InterruptNonMeleeSpells(false);
}
示例4: HandleLootOpcode
void WorldSession::HandleLootOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_LOOT");
uint64 guid;
recvData >> guid;
// Check possible cheat
if (!GetPlayer()->isAlive() || !IS_CRE_OR_VEH_GUID(guid))
return;
GetPlayer()->SendLoot(guid, LOOT_CORPSE);
// interrupt cast
if (GetPlayer()->IsNonMeleeSpellCasted(false))
GetPlayer()->InterruptNonMeleeSpells(false);
}
示例5: guids
void WorldSession::HandleLootMasterGiveOpcode(WorldPacket& recvData)
{
ObjectGuid target_playerguid = 0;
target_playerguid[6] = recvData.ReadBit();
target_playerguid[2] = recvData.ReadBit();
target_playerguid[1] = recvData.ReadBit();
target_playerguid[3] = recvData.ReadBit();
target_playerguid[7] = recvData.ReadBit();
target_playerguid[5] = recvData.ReadBit();
uint32 count = recvData.ReadBits(25);
if (count > 40)
return;
std::vector<ObjectGuid> guids(count);
std::vector<uint8> types(count);
uint8 bitOrder[8] = {4, 6, 7, 5, 0, 1, 3, 2};
for (uint32 i = 0; i < count; ++i)
recvData.ReadBitInOrder(guids[i], bitOrder);
target_playerguid[4] = recvData.ReadBit();
target_playerguid[0] = recvData.ReadBit();
recvData.FlushBits();
uint8 byteOrder[8] = {6, 7, 3, 1, 0, 5, 4, 2};
for (uint32 i = 0; i < count; ++i)
{
recvData.ReadBytesSeq(guids[i], byteOrder);
recvData >> types[i];
}
uint8 byteOrder2[8] = {7, 0, 5, 6, 4, 3, 2, 1};
recvData.ReadBytesSeq(target_playerguid, byteOrder2);
//recvData >> lootguid >> slotid >> target_playerguid;
if (!_player->GetGroup() || _player->GetGroup()->GetLooterGuid() != _player->GetGUID())
{
_player->SendLootRelease(GetPlayer()->GetLootGUID());
return;
}
Player* target = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(target_playerguid, 0, HIGHGUID_PLAYER));
if (!target)
return;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WorldSession::HandleLootMasterGiveOpcode (CMSG_LOOT_MASTER_GIVE, 0x02A3) Target = [%s].", target->GetName());
for (uint32 i = 0; i < count; ++i)
{
ObjectGuid lootguid = guids[i];
uint8 slotid = types[i];
Loot* loot = NULL;
if (IS_CRE_OR_VEH_GUID(GetPlayer()->GetLootGUID()))
{
Creature* creature = GetPlayer()->GetMap()->GetCreature(lootguid);
if (!creature)
return;
loot = &creature->loot;
}
else if (IS_GAMEOBJECT_GUID(GetPlayer()->GetLootGUID()))
{
GameObject* pGO = GetPlayer()->GetMap()->GetGameObject(lootguid);
if (!pGO)
return;
loot = &pGO->loot;
}
if (!loot)
return;
if (slotid >= 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(), slotid, (unsigned long)loot->items.size());
return;
}
LootItem& item = slotid >= loot->items.size() ? loot->quest_items[slotid - loot->items.size()] : loot->items[slotid];
ItemPosCountVec dest;
InventoryResult msg = target->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, item.itemid, item.count);
if (item.follow_loot_rules && !item.AllowedForPlayer(target))
msg = EQUIP_ERR_CANT_EQUIP_EVER;
if (msg != EQUIP_ERR_OK)
{
target->SendEquipError(msg, NULL, NULL, item.itemid);
// send duplicate of error massage to master looter
_player->SendEquipError(msg, NULL, NULL, item.itemid);
return;
}
// list of players allowed to receive this item in trade
AllowedLooterSet looters = item.GetAllowedLooters();
// not move item from loot to target inventory
Item* newitem = target->StoreNewItem(dest, item.itemid, true, item.randomPropertyId, looters);
//.........这里部分代码省略.........