diff options
60 files changed, 360 insertions, 254 deletions
diff --git a/sql/updates/world/2014_10_26_00_world.sql b/sql/updates/world/2014_10_26_00_world.sql index 79d5842c14c..9d9d9312677 100644 --- a/sql/updates/world/2014_10_26_00_world.sql +++ b/sql/updates/world/2014_10_26_00_world.sql @@ -23,7 +23,6 @@ ALTER TABLE `game_event_npc_vendor` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT ALTER TABLE `game_event_npcflag` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `gameobject` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `linked_respawn` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; -ALTER TABLE `linked_respawn` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `pool_creature` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `pool_gameobject` CHANGE `guid` `guid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `smart_scripts` CHANGE `entryorguid` `entryorguid` BIGINT(20) NOT NULL DEFAULT '0'; diff --git a/sql/updates/world/2014_10_29_00_world.sql.txt b/sql/updates/world/2014_10_29_00_world.sql.txt new file mode 100644 index 00000000000..17a5769f634 --- /dev/null +++ b/sql/updates/world/2014_10_29_00_world.sql.txt @@ -0,0 +1 @@ +ALTER TABLE `linked_respawn` CHANGE `linkedGuid` `linkedGuid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0'; diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index a8387804957..d6985e2a1ad 100644 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -81,7 +81,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accountId) { do { - ObjectGuid guid(HighGuid::Player, (*result)[0].GetUInt64()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt64()); // Kick if player is online if (Player* p = ObjectAccessor::FindConnectedPlayer(guid)) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 9add2954ca5..0ee49095d72 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -735,7 +735,7 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr ca.date = time_t(fields[1].GetUInt32()); Tokenizer guids(fields[2].GetString(), ' '); for (uint32 i = 0; i < guids.size(); ++i) - ca.guids.insert(ObjectGuid(HighGuid::Player, uint64(strtoull(guids[i], nullptr, 10)))); + ca.guids.insert(ObjectGuid::Create<HighGuid::Player>(uint64(strtoull(guids[i], nullptr, 10)))); ca.changed = false; @@ -773,7 +773,7 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr CriteriaProgress& progress = m_criteriaProgress[id]; progress.counter = counter; progress.date = date; - progress.CompletedGUID = ObjectGuid(HighGuid::Player, guid); + progress.CompletedGUID = ObjectGuid::Create<HighGuid::Player>(guid); progress.changed = false; } while (criteriaResult->NextRow()); } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 6c73a4ad680..6639799a912 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -92,7 +92,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& return; uint32 bidderAccId = 0; - ObjectGuid bidderGuid(HighGuid::Player, auction->bidder); + ObjectGuid bidderGuid = ObjectGuid::Create<HighGuid::Player>(auction->bidder); Player* bidder = ObjectAccessor::FindConnectedPlayer(bidderGuid); // data for gm.log std::string bidderName; @@ -115,7 +115,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& if (logGmTrade) { - ObjectGuid ownerGuid = ObjectGuid(HighGuid::Player, auction->owner); + ObjectGuid ownerGuid = ObjectGuid::Create<HighGuid::Player>(auction->owner); std::string ownerName; if (!sObjectMgr->GetPlayerNameByGUID(ownerGuid, ownerName)) ownerName = sObjectMgr->GetTrinityStringForDBCLocale(LANG_UNKNOWN); @@ -156,7 +156,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans) { - ObjectGuid owner_guid(HighGuid::Player, auction->owner); + ObjectGuid owner_guid = ObjectGuid::Create<HighGuid::Player>(auction->owner); Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid); uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid); // owner exist (online or offline) @@ -168,7 +168,7 @@ void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTrans //call this method to send mail to auction owner, when auction is successful, it does not clear ram void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans) { - ObjectGuid owner_guid(HighGuid::Player, auction->owner); + ObjectGuid owner_guid = ObjectGuid::Create<HighGuid::Player>(auction->owner); Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid); uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid); // owner exist @@ -199,7 +199,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti if (!pItem) return; - ObjectGuid owner_guid(HighGuid::Player, auction->owner); + ObjectGuid owner_guid = ObjectGuid::Create<HighGuid::Player>(auction->owner); Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid); uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid); // owner exist @@ -222,7 +222,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti //this function sends mail to old bidder void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, SQLTransaction& trans) { - ObjectGuid oldBidder_guid(HighGuid::Player, auction->bidder); + ObjectGuid oldBidder_guid = ObjectGuid::Create<HighGuid::Player>(auction->bidder); Player* oldBidder = ObjectAccessor::FindConnectedPlayer(oldBidder_guid); uint32 oldBidder_accId = 0; @@ -244,7 +244,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new //this function sends mail, when auction is cancelled to old bidder void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans, Item* item) { - ObjectGuid bidder_guid = ObjectGuid(HighGuid::Player, auction->bidder); + ObjectGuid bidder_guid = ObjectGuid::Create<HighGuid::Player>(auction->bidder); Player* bidder = ObjectAccessor::FindConnectedPlayer(bidder_guid); uint32 bidder_accId = 0; @@ -761,7 +761,7 @@ std::string AuctionEntry::BuildAuctionMailBody(uint64 lowGuid, uint32 bid, uint3 { std::ostringstream strm; strm.width(16); - strm << std::right << std::hex << ObjectGuid(HighGuid::Player, lowGuid); // HIGHGUID_PLAYER always present, even for empty guids + strm << std::right << std::hex << ObjectGuid::Create<HighGuid::Player>(lowGuid); // HIGHGUID_PLAYER always present, even for empty guids strm << std::dec << ':' << bid << ':' << buyout; strm << ':' << deposit << ':' << cut; return strm.str(); diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index cd450dcb2a1..2eebf5ca534 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -193,7 +193,7 @@ bool ArenaTeam::LoadArenaTeamFromDB(QueryResult result) TeamId = fields[0].GetUInt32(); TeamName = fields[1].GetString(); - CaptainGuid = ObjectGuid(HighGuid::Player, fields[2].GetUInt64()); + CaptainGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()); Type = fields[3].GetUInt8(); BackgroundColor = fields[4].GetUInt32(); EmblemStyle = fields[5].GetUInt8(); @@ -232,7 +232,7 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result) break; ArenaTeamMember newMember; - newMember.Guid = ObjectGuid(HighGuid::Player, fields[1].GetUInt64()); + newMember.Guid = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64()); newMember.WeekGames = fields[2].GetUInt16(); newMember.WeekWins = fields[3].GetUInt16(); newMember.SeasonGames = fields[4].GetUInt16(); diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 8fb45f3a4d2..fc52178c52d 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -241,7 +241,7 @@ class Battleground /* Battleground */ // Get methods: std::string const& GetName() const { return m_Name; } - ObjectGuid GetGUID() { return m_Guid; } + uint64 GetGUID() { return m_Guid; } BattlegroundTypeId GetTypeID(bool GetRandom = false) const { return GetRandom ? m_RandomTypeID : m_TypeID; } BattlegroundBracketId GetBracketId() const { return m_BracketId; } uint32 GetInstanceID() const { return m_InstanceID; } @@ -267,7 +267,7 @@ class Battleground bool IsRandom() const { return m_IsRandom; } // Set methods: - void SetGuid(ObjectGuid newGuid) { m_Guid = newGuid; } + void SetGuid(uint64 newGuid) { m_Guid = newGuid; } void SetName(std::string const& name) { m_Name = name; } void SetTypeID(BattlegroundTypeId TypeID) { m_TypeID = TypeID; } void SetRandomTypeID(BattlegroundTypeId TypeID) { m_RandomTypeID = TypeID; } @@ -539,7 +539,7 @@ class Battleground bool m_PrematureCountDown; uint32 m_PrematureCountDownTimer; std::string m_Name; - ObjectGuid m_Guid; + uint64 m_Guid; /* Pre- and post-update hooks */ diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 62bb68dda01..eae6a831290 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -154,7 +154,7 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro ObjectGuid bgGuid; if (bg) - bgGuid = bg->GetGUID(); + ;//bgGuid = bg->GetGUID(); else StatusID = STATUS_NONE; @@ -358,7 +358,7 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro void BattlegroundMgr::BuildStatusFailedPacket(WorldPacket* data, Battleground* bg, Player* player, uint8 QueueSlot, GroupJoinBattlegroundResult result) { ObjectGuid guidBytes1 = player->GetGUID(); // player who caused the error - ObjectGuid guidBytes2 = bg->GetGUID(); + ObjectGuid guidBytes2;// = bg->GetGUID(); ObjectGuid unkGuid3; data->Initialize(SMSG_BATTLEFIELD_STATUS_FAILED); @@ -652,7 +652,7 @@ Battleground* BattlegroundMgr::CreateNewBattleground(BattlegroundTypeId original bg->SetRandomTypeID(bgTypeId); bg->SetRated(isRated); bg->SetRandom(isRandom); - bg->SetGuid(ObjectGuid(HighGuid::Null, uint64(bgTypeId) | UI64LIT(0x1F10000000000000))); + bg->SetGuid(uint64(bgTypeId) | UI64LIT(0x1F10000000000000)); // Set up correct min/max player counts for scoreboards if (bg->isArena()) @@ -755,7 +755,7 @@ bool BattlegroundMgr::CreateBattleground(BattlegroundTemplate const* bgTemplate) bg->SetStartMaxDist(bgTemplate->MaxStartDistSq); bg->SetLevelRange(bgTemplate->MinLevel, bgTemplate->MaxLevel); bg->SetScriptId(bgTemplate->ScriptId); - bg->SetGuid(ObjectGuid(HighGuid::Null, uint64(bgTemplate->Id) | UI64LIT(0x1F10000000000000))); + bg->SetGuid(uint64(bgTemplate->Id) | UI64LIT(0x1F10000000000000)); AddBattleground(bg); diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index a0a2a2c6d73..fff949e6bbd 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -58,7 +58,7 @@ void CalendarMgr::LoadFromDB() Field* fields = result->Fetch(); uint64 eventId = fields[0].GetUInt64(); - ObjectGuid creatorGUID = ObjectGuid(HighGuid::Player, fields[1].GetUInt64()); + ObjectGuid creatorGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64()); std::string title = fields[2].GetString(); std::string description = fields[3].GetString(); CalendarEventType type = CalendarEventType(fields[4].GetUInt8()); @@ -91,8 +91,8 @@ void CalendarMgr::LoadFromDB() uint64 inviteId = fields[0].GetUInt64(); uint64 eventId = fields[1].GetUInt64(); - ObjectGuid invitee = ObjectGuid(HighGuid::Player, fields[2].GetUInt64()); - ObjectGuid senderGUID = ObjectGuid(HighGuid::Player, fields[3].GetUInt64()); + ObjectGuid invitee = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()); + ObjectGuid senderGUID = ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt64()); CalendarInviteStatus status = CalendarInviteStatus(fields[4].GetUInt8()); uint32 statusTime = fields[5].GetUInt32(); CalendarModerationRank rank = CalendarModerationRank(fields[6].GetUInt8()); diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 6c939cd926a..afe55563290 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -950,7 +950,7 @@ GameObject* ChatHandler::GetObjectGlobalyWithGuidOrNearWithDbGuid(ObjectGuid::Lo Player* pl = m_session->GetPlayer(); - GameObject* obj = pl->GetMap()->GetGameObject(ObjectGuid(HighGuid::GameObject, entry, lowguid)); + GameObject* obj = pl->GetMap()->GetGameObject(ObjectGuid::Create<HighGuid::GameObject>(pl->GetMapId(), entry, lowguid)); if (!obj && sObjectMgr->GetGOData(lowguid)) // guid is DB guid of object { @@ -1100,7 +1100,7 @@ ObjectGuid ChatHandler::extractGuidFromLink(char* text) ObjectGuid::LowType lowguid = strtoull(idS, nullptr, 10); if (CreatureData const* data = sObjectMgr->GetCreatureData(lowguid)) - return ObjectGuid(HighGuid::Creature, data->id, lowguid); + return ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, lowguid); else return ObjectGuid::Empty; } @@ -1109,7 +1109,7 @@ ObjectGuid ChatHandler::extractGuidFromLink(char* text) ObjectGuid::LowType lowguid = strtoull(idS, nullptr, 10); if (GameObjectData const* data = sObjectMgr->GetGOData(lowguid)) - return ObjectGuid(HighGuid::GameObject, data->id, lowguid); + return ObjectGuid::Create<HighGuid::GameObject>(data->mapid, data->id, lowguid); else return ObjectGuid::Empty; } diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 9171a3e54cc..3272c29a447 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -58,7 +58,7 @@ void LFGMgr::_LoadFromDB(Field* fields, ObjectGuid guid) if (!guid.IsParty()) return; - SetLeader(guid, ObjectGuid(HighGuid::Player, fields[0].GetUInt64())); + SetLeader(guid, ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64())); uint32 dungeon = fields[17].GetUInt32(); uint8 state = fields[18].GetUInt8(); diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index d7f7d2ca467..b68b725ecd9 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -66,7 +66,8 @@ bool AreaTrigger::CreateAreaTrigger(ObjectGuid::LowType guidlow, uint32 triggerE return false; } - WorldObject::_Create(guidlow, HighGuid::AreaTrigger, caster->GetPhaseMask()); + Object::_Create(ObjectGuid::Create<HighGuid::AreaTrigger>(GetMapId(), triggerEntry, guidlow)); + SetPhaseMask(caster->GetPhaseMask(), false); SetEntry(triggerEntry); SetDuration(spell->GetDuration()); diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index feb3e740e8f..15465ed11e4 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -65,7 +65,7 @@ void Corpse::RemoveFromWorld() bool Corpse::Create(ObjectGuid::LowType guidlow, Map* map) { SetMap(map); - Object::_Create(guidlow, 0, HighGuid::Corpse); + Object::_Create(ObjectGuid::Create<HighGuid::Corpse>(map->GetId(), 0, guidlow)); return true; } @@ -86,7 +86,8 @@ bool Corpse::Create(ObjectGuid::LowType guidlow, Player* owner) //in other way we will get a crash in Corpse::SaveToDB() SetMap(owner->GetMap()); - WorldObject::_Create(guidlow, HighGuid::Corpse, owner->GetPhaseMask()); + Object::_Create(ObjectGuid::Create<HighGuid::Corpse>(GetMapId(), 0, guidlow)); + SetPhaseMask(owner->GetPhaseMask(), false); SetObjectScale(1); SetGuidValue(CORPSE_FIELD_OWNER, owner->GetGUID()); @@ -169,7 +170,7 @@ bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields) float o = fields[3].GetFloat(); uint32 mapId = fields[4].GetUInt16(); - Object::_Create(guid, 0, HighGuid::Corpse); + Object::_Create(ObjectGuid::Create<HighGuid::Corpse>(mapId, 0, guid)); SetUInt32Value(CORPSE_FIELD_DISPLAY_ID, fields[5].GetUInt32()); _LoadIntoDataField(fields[6].GetCString(), CORPSE_FIELD_ITEM, EQUIPMENT_SLOT_END); @@ -177,7 +178,7 @@ bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields) SetUInt32Value(CORPSE_FIELD_BYTES_2, fields[8].GetUInt32()); SetUInt32Value(CORPSE_FIELD_FLAGS, fields[9].GetUInt8()); SetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS, fields[10].GetUInt8()); - SetGuidValue(CORPSE_FIELD_OWNER, ObjectGuid(HighGuid::Player, fields[16].GetUInt64())); + SetGuidValue(CORPSE_FIELD_OWNER, ObjectGuid::Create<HighGuid::Player>(fields[16].GetUInt64())); m_time = time_t(fields[11].GetUInt32()); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 57181986863..3a27207b833 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -472,7 +472,7 @@ void Creature::Update(uint32 diff) if (!allowed) // Will be rechecked on next Update call break; - ObjectGuid dbtableHighGuid(HighGuid::Creature, GetEntry(), m_DBTableGuid); + ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Creature>(GetMapId(), GetEntry(), m_DBTableGuid); time_t linkedRespawntime = GetMap()->GetLinkedRespawnTime(dbtableHighGuid); if (!linkedRespawntime) // Can respawn Respawn(); @@ -1194,7 +1194,10 @@ bool Creature::CreateFromProto(ObjectGuid::LowType guidlow, uint32 entry, Creatu SetOriginalEntry(entry); - Object::_Create(guidlow, entry, (vehId || cinfo->VehicleId) ? HighGuid::Vehicle : HighGuid::Creature); + if (vehId || cinfo->VehicleId) + Object::_Create(ObjectGuid::Create<HighGuid::Vehicle>(GetMapId(), entry, guidlow)); + else + Object::_Create(ObjectGuid::Create<HighGuid::Creature>(GetMapId(), entry, guidlow)); if (!UpdateEntry(entry, data)) return false; @@ -1229,7 +1232,7 @@ bool Creature::LoadCreatureFromDB(ObjectGuid::LowType guid, Map* map, bool addTo m_DBTableGuid = guid; if (map->GetInstanceId() == 0) { - if (map->GetCreature(ObjectGuid(HighGuid::Creature, data->id, guid))) + if (map->GetCreature(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, guid))) return false; } else diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index 1131cc2c758..4cd75299c0e 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -91,10 +91,11 @@ bool DynamicObject::CreateDynamicObject(ObjectGuid::LowType guidlow, Unit* caste return false; } - WorldObject::_Create(guidlow, HighGuid::DynamicObject, caster->GetPhaseMask()); + WorldObject::_Create(ObjectGuid::Create<HighGuid::DynamicObject>(GetMapId(), spell->Id, guidlow)); + SetPhaseMask(caster->GetPhaseMask(), false); SetEntry(spell->Id); - SetObjectScale(1); + SetObjectScale(1.0f); SetGuidValue(DYNAMICOBJECT_CASTER, caster->GetGUID()); SetUInt32Value(DYNAMICOBJECT_BYTES, spell->SpellVisual[0] | (type << 28)); SetUInt32Value(DYNAMICOBJECT_SPELLID, spell->Id); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 4821014ced0..c3805be45cc 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -194,7 +194,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u if (goinfo->type == GAMEOBJECT_TYPE_TRANSPORT) m_updateFlag |= UPDATEFLAG_TRANSPORT; - Object::_Create(guidlow, goinfo->entry, HighGuid::GameObject); + Object::_Create(ObjectGuid::Create<HighGuid::GameObject>(map->GetId(), goinfo->entry, guidlow)); m_goInfo = goinfo; @@ -404,7 +404,7 @@ void GameObject::Update(uint32 diff) time_t now = time(NULL); if (m_respawnTime <= now) // timer expired { - ObjectGuid dbtableHighGuid(HighGuid::GameObject, GetEntry(), m_DBTableGuid); + ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::GameObject>(GetMapId(), GetEntry(), m_DBTableGuid); time_t linkedRespawntime = GetMap()->GetLinkedRespawnTime(dbtableHighGuid); if (linkedRespawntime) // Can't respawn, the master is dead { diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp index 4e33c4fe295..0e4b2990bd3 100644 --- a/src/server/game/Entities/Item/Container/Bag.cpp +++ b/src/server/game/Entities/Item/Container/Bag.cpp @@ -77,7 +77,7 @@ bool Bag::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner if (!itemProto || itemProto->ContainerSlots > MAX_BAG_SIZE) return false; - Object::_Create(guidlow, 0, HighGuid::Item); + Object::_Create(ObjectGuid::Create<HighGuid::Item>(guidlow)); SetEntry(itemid); SetObjectScale(1.0f); diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index af2f75622ad..2eb4026bf07 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -266,7 +266,7 @@ Item::Item() bool Item::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner) { - Object::_Create(guidlow, 0, HighGuid::Item); + Object::_Create(ObjectGuid::Create<HighGuid::Item>(guidlow)); SetEntry(itemid); SetObjectScale(1.0f); @@ -413,7 +413,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi // create item before any checks for store correct guid // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB - Object::_Create(guid, 0, HighGuid::Item); + Object::_Create(ObjectGuid::Create<HighGuid::Item>(guid)); // Set entry, MUST be before proto check SetEntry(entry); @@ -428,8 +428,8 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi SetOwnerGUID(owner_guid); bool need_save = false; // need explicit save data at load fixes - SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid(HighGuid::Player, fields[0].GetUInt64())); - SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid(HighGuid::Player, fields[1].GetUInt64())); + SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64())); + SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64())); SetCount(fields[2].GetUInt32()); uint32 duration = fields[3].GetUInt32(); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index c99a5a3cde0..6fc422c65cf 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -130,11 +130,10 @@ void Object::_InitValues() m_objectUpdated = false; } -void Object::_Create(ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh) +void Object::_Create(ObjectGuid const& guid) { if (!m_uint32Values) _InitValues(); - ObjectGuid guid(guidhigh, entry, guidlow); SetGuidValue(OBJECT_FIELD_GUID, guid); SetUInt16Value(OBJECT_FIELD_TYPE, 0, m_objectType); m_PackGUID.Set(guid); @@ -1532,12 +1531,6 @@ void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/) transport->RemovePassenger(this); } -void WorldObject::_Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask) -{ - Object::_Create(guidlow, 0, guidhigh); - m_phaseMask = phaseMask; -} - void WorldObject::RemoveFromWorld() { if (!IsInWorld()) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 353dfc1b917..b989aca0b17 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -211,7 +211,7 @@ class Object Object(); void _InitValues(); - void _Create(ObjectGuid::LowType guidlow, uint32 entry, HighGuid guidhigh); + void _Create(ObjectGuid const& guid); std::string _ConcatFields(uint16 startIndex, uint16 size) const; void _LoadIntoDataField(std::string const& data, uint32 startOffset, uint32 count); @@ -591,7 +591,6 @@ class WorldObject : public Object, public WorldLocation virtual void Update (uint32 /*time_diff*/) { } - void _Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask); virtual void RemoveFromWorld() override; void GetNearPoint2D(float &x, float &y, float distance, float absAngle) const; diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 41ea166a6d5..ebcf110b5f4 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -22,27 +22,60 @@ #include <sstream> #include <iomanip> -ObjectGuid const ObjectGuid::Empty = ObjectGuid(); +char const* TypeNames[] = +{ + "Null", + "Uniq", + "Player", + "Item", + "StaticDoor", + "Transport", + "Conversation", + "Creature", + "Vehicle", + "Pet", + "GameObject", + "DynamicObject", + "AreaTrigger", + "Corpse", + "LootObject", + "SceneObject", + "Scenario", + "AIGroup", + "DynamicDoor", + "ClientActor", + "Vignette", + "CallForHelp", + "AIResource", + "AILock", + "AILockTicket", + "ChatChannel", + "Party", + "Guild", + "WowAccount", + "BNetAccount", + "GMTask", + "MobileSession", + "RaidGroup", + "Spell", + "Mail", + "WebObj", + "LFGObject", + "LFGList", + "UserRouter", + "PVPQueueGroup", + "UserClient", + "PetBattle", + "UniqueUserClient", + "BattlePet", +}; char const* ObjectGuid::GetTypeName(HighGuid high) { - switch (high) - { - case HighGuid::Item: return "Item"; - case HighGuid::Player: return "Player"; - case HighGuid::GameObject: return "Gameobject"; - case HighGuid::Creature: return "Creature"; - case HighGuid::Pet: return "Pet"; - case HighGuid::Vehicle: return "Vehicle"; - case HighGuid::DynamicObject: return "DynObject"; - case HighGuid::Corpse: return "Corpse"; - case HighGuid::AreaTrigger: return "AreaTrigger"; - case HighGuid::Transport: return "Transport"; - case HighGuid::Party: return "Party"; - case HighGuid::Guild: return "Guild"; - default: - return "<unknown>"; - } + if (high > HighGuid::Count) + return "<unknown>"; + + return TypeNames[uint32(high)]; } std::string ObjectGuid::ToString() const @@ -70,7 +103,7 @@ void ObjectGuid::SetRawValue(std::vector<uint8> const& guid) memcpy(this, guid.data(), sizeof(*this)); } -void PackedGuid::Set(ObjectGuid guid) +void PackedGuid::Set(ObjectGuid const& guid) { uint8 lowMask = 0; uint8 highMask = 0; @@ -133,6 +166,81 @@ std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid) return stream; } +class GuidFormat +{ +public: + inline static ObjectGuid Global(HighGuid type, ObjectGuid::LowType counter) + { + return ObjectGuid(uint64(uint64(type) << 58), counter); + } + + inline static ObjectGuid RealmSpecific(HighGuid type, ObjectGuid::LowType counter) + { + return ObjectGuid(uint64(uint64(type) << 58 | uint64(realmHandle.Index) << 42), counter); + } + + inline static ObjectGuid MapSpecific(HighGuid type, uint8 subType, uint16 mapId, uint32 serverId, uint32 entry, ObjectGuid::LowType counter) + { + return ObjectGuid(uint64((uint64(type) << 58) | (uint64(realmHandle.Index & 0x1FFF) << 42) | (uint64(mapId & 0x1FFF) << 29) | (uint64(entry & 0x7FFFFF) << 6)), + uint64((uint64(serverId & 0xFFFFFF) << 40) | (counter & UI64LIT(0xFFFFFFFFFF)))); + } +}; + +#define GLOBAL_GUID_CREATE(highguid) template<> ObjectGuid ObjectGuid::Create<highguid>(LowType counter) { return GuidFormat::Global(highguid, counter); } +#define REALM_GUID_CREATE(highguid) template<> ObjectGuid ObjectGuid::Create<highguid>(LowType counter) { return GuidFormat::RealmSpecific(highguid, counter); } +#define MAP_GUID_CREATE(highguid) template<> ObjectGuid ObjectGuid::Create<highguid>(uint16 mapId, uint32 entry, LowType counter) { return GuidFormat::MapSpecific(highguid, 0, mapId, 0, entry, counter); } + +GLOBAL_GUID_CREATE(HighGuid::Uniq) +GLOBAL_GUID_CREATE(HighGuid::Party) +GLOBAL_GUID_CREATE(HighGuid::WowAccount) +GLOBAL_GUID_CREATE(HighGuid::BNetAccount) +GLOBAL_GUID_CREATE(HighGuid::GMTask) +GLOBAL_GUID_CREATE(HighGuid::RaidGroup) +GLOBAL_GUID_CREATE(HighGuid::Spell) +GLOBAL_GUID_CREATE(HighGuid::Mail) +GLOBAL_GUID_CREATE(HighGuid::UserRouter) +GLOBAL_GUID_CREATE(HighGuid::PVPQueueGroup) +GLOBAL_GUID_CREATE(HighGuid::UserClient) +GLOBAL_GUID_CREATE(HighGuid::UniqueUserClient) +GLOBAL_GUID_CREATE(HighGuid::BattlePet) +REALM_GUID_CREATE(HighGuid::Player) +REALM_GUID_CREATE(HighGuid::Item) // This is not exactly correct, there are 2 more unknown parts in highguid: (high >> 10 & 0xFF), (high >> 18 & 0xFFFFFF) +REALM_GUID_CREATE(HighGuid::Transport) +REALM_GUID_CREATE(HighGuid::Guild) +MAP_GUID_CREATE(HighGuid::Conversation) +MAP_GUID_CREATE(HighGuid::Creature) +MAP_GUID_CREATE(HighGuid::Vehicle) +MAP_GUID_CREATE(HighGuid::Pet) +MAP_GUID_CREATE(HighGuid::GameObject) +MAP_GUID_CREATE(HighGuid::DynamicObject) +MAP_GUID_CREATE(HighGuid::AreaTrigger) +MAP_GUID_CREATE(HighGuid::Corpse) +MAP_GUID_CREATE(HighGuid::LootObject) +MAP_GUID_CREATE(HighGuid::SceneObject) +MAP_GUID_CREATE(HighGuid::Scenario) +MAP_GUID_CREATE(HighGuid::AIGroup) +MAP_GUID_CREATE(HighGuid::DynamicDoor) +MAP_GUID_CREATE(HighGuid::Vignette) +MAP_GUID_CREATE(HighGuid::CallForHelp) +MAP_GUID_CREATE(HighGuid::AIResource) +MAP_GUID_CREATE(HighGuid::AILock) +MAP_GUID_CREATE(HighGuid::AILockTicket) + +ObjectGuid const ObjectGuid::Empty = ObjectGuid(); +ObjectGuid const ObjectGuid::TradeItem = ObjectGuid::Create<HighGuid::Uniq>(uint64(10)); + +template<HighGuid type> +ObjectGuid ObjectGuid::Create(LowType counter) +{ + static_assert(false, "Invalid guid construction method for this guid type."); +} + +template<HighGuid type> +ObjectGuid ObjectGuid::Create(uint16 mapId, uint32 entry, LowType counter) +{ + static_assert(false, "Invalid guid construction method for this guid type."); +} + template ObjectGuid::LowType ObjectGuidGenerator<HighGuid::Player>::Generate(); template ObjectGuid::LowType ObjectGuidGenerator<HighGuid::Creature>::Generate(); template ObjectGuid::LowType ObjectGuidGenerator<HighGuid::Pet>::Generate(); diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 7a3c05c3b37..247982a2837 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -62,7 +62,7 @@ enum class HighGuid Uniq = 1, Player = 2, Item = 3, - StaticDoor = 4, + StaticDoor = 4, //NYI Transport = 5, Conversation = 6, Creature = 7, @@ -77,7 +77,7 @@ enum class HighGuid Scenario = 16, AIGroup = 17, DynamicDoor = 18, - ClientActor = 19, + ClientActor = 19, //NYI Vignette = 20, CallForHelp = 21, AIResource = 22, @@ -89,23 +89,26 @@ enum class HighGuid WowAccount = 28, BNetAccount = 29, GMTask = 30, - MobileSession = 31, + MobileSession = 31, //NYI RaidGroup = 32, Spell = 33, Mail = 34, - WebObj = 35, - LFGObject = 36, - LFGList = 37, + WebObj = 35, //NYI + LFGObject = 36, //NYI + LFGList = 37, //NYI UserRouter = 38, PVPQueueGroup = 39, UserClient = 40, - PetBattle = 41, + PetBattle = 41, //NYI UniqueUserClient = 42, - BattlePet = 43 + BattlePet = 43, + + Count, }; class ObjectGuid; class PackedGuid; +class GuidFormat; struct PackedGuidReader { @@ -120,15 +123,21 @@ class ObjectGuid friend std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid); friend ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid); friend class PackedGuid; + friend class GuidFormat; public: static ObjectGuid const Empty; + static ObjectGuid const TradeItem; typedef uint64 LowType; + template<HighGuid type> + static ObjectGuid Create(LowType counter); + + template<HighGuid type> + static ObjectGuid Create(uint16 mapId, uint32 entry, LowType counter); + ObjectGuid() : _low(0), _high(0) { } - ObjectGuid(HighGuid hi, uint32 entry, LowType counter) : _low(counter ? uint64(counter) | (uint64(entry) << 32) | (uint64(hi) << ((hi == HighGuid::Corpse || hi == HighGuid::AreaTrigger) ? 48 : 52)) : 0), _high(0) { } - ObjectGuid(HighGuid hi, LowType counter) : _low(counter ? uint64(counter) | (uint64(hi) << ((hi == HighGuid::Corpse || hi == HighGuid::AreaTrigger) ? 48 : 52)) : 0), _high(0) { } ObjectGuid(ObjectGuid const&) = default; PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); } @@ -136,24 +145,19 @@ class ObjectGuid std::vector<uint8> GetRawValue() const; void SetRawValue(std::vector<uint8> const& guid); void SetRawValue(uint64 high, uint64 low) { _high = high; _low = low; } - void Clear() { _low = 0; } + void Clear() { _high = 0; _low = 0; } PackedGuid WriteAsPacked() const; - HighGuid GetHigh() const - { - uint32 temp = ((uint64(_low) >> 48) & 0x0000FFFF); - return HighGuid((temp == uint32(HighGuid::Corpse) || temp == uint32(HighGuid::AreaTrigger)) ? temp : ((temp >> 4) & 0x00000FFF)); - } - uint32 GetEntry() const { return HasEntry() ? uint32((_low >> 32) & UI64LIT(0x00000000000FFFFF)) : 0; } - LowType GetCounter() const - { - return _low & UI64LIT(0x00000000FFFFFFFF); - } + HighGuid GetHigh() const { return HighGuid((_high >> 58) & 0x3F); } + uint32 GetRealmId() const { return uint32((_high >> 42) & 0x1FFF); } + uint32 GetMapId() const { return uint32((_high >> 29) & 0x1FFF); } + uint32 GetEntry() const { return uint32((_high >> 6) & 0x7FFFFF); } + LowType GetCounter() const { return _low & UI64LIT(0x000000FFFFFFFFFF); } static LowType GetMaxCounter(HighGuid /*high*/) { - return UI64LIT(0xFFFFFFFF); + return UI64LIT(0xFFFFFFFFFF); } uint32 GetMaxCounter() const { return GetMaxCounter(GetHigh()); } @@ -188,26 +192,26 @@ class ObjectGuid bool IsAnyTypeGameObject() const { return IsGameObject() || IsMOTransport(); } bool IsParty() const { return GetHigh() == HighGuid::Party; } bool IsGuild() const { return GetHigh() == HighGuid::Guild; } + bool IsSceneObject() const { return GetHigh() == HighGuid::SceneObject; } + bool IsConversation() const { return GetHigh() == HighGuid::Conversation; } static TypeID GetTypeId(HighGuid high) { switch (high) { - case HighGuid::Item: return TYPEID_ITEM; - //case HIGHGUID_CONTAINER: return TYPEID_CONTAINER; HIGHGUID_CONTAINER==HIGHGUID_ITEM currently - case HighGuid::Creature: return TYPEID_UNIT; - case HighGuid::Pet: return TYPEID_UNIT; - case HighGuid::Player: return TYPEID_PLAYER; - case HighGuid::GameObject: return TYPEID_GAMEOBJECT; - case HighGuid::DynamicObject: return TYPEID_DYNAMICOBJECT; - case HighGuid::Corpse: return TYPEID_CORPSE; - case HighGuid::AreaTrigger: return TYPEID_AREATRIGGER; - case HighGuid::Transport: return TYPEID_GAMEOBJECT; - case HighGuid::Vehicle: return TYPEID_UNIT; - // unknown - case HighGuid::Party: - case HighGuid::Guild: - default: return TYPEID_OBJECT; + case HighGuid::Item: return TYPEID_ITEM; + case HighGuid::Creature: + case HighGuid::Pet: + case HighGuid::Vehicle: return TYPEID_UNIT; + case HighGuid::Player: return TYPEID_PLAYER; + case HighGuid::GameObject: + case HighGuid::Transport: return TYPEID_GAMEOBJECT; + case HighGuid::DynamicObject: return TYPEID_DYNAMICOBJECT; + case HighGuid::Corpse: return TYPEID_CORPSE; + case HighGuid::AreaTrigger: return TYPEID_AREATRIGGER; + case HighGuid::SceneObject: return TYPEID_SCENEOBJECT; + case HighGuid::Conversation: return TYPEID_CONVERSATION; + default: return TYPEID_OBJECT; } } @@ -235,13 +239,6 @@ class ObjectGuid { switch (high) { - case HighGuid::Item: - case HighGuid::Player: - case HighGuid::DynamicObject: - case HighGuid::Corpse: - case HighGuid::Transport: - case HighGuid::Party: - return false; case HighGuid::GameObject: case HighGuid::Creature: case HighGuid::Pet: @@ -253,6 +250,7 @@ class ObjectGuid bool HasEntry() const { return HasEntry(GetHigh()); } + ObjectGuid(uint64 high, uint64 low) : _low(low), _high(high) { } explicit ObjectGuid(uint32 const&) = delete; // no implementation, used to catch wrong type assignment uint64 _low; @@ -276,9 +274,9 @@ class PackedGuid public: explicit PackedGuid() : _packedGuid(PACKED_GUID_MIN_BUFFER_SIZE) { _packedGuid << uint16(0); } - explicit PackedGuid(ObjectGuid guid) : _packedGuid(PACKED_GUID_MIN_BUFFER_SIZE) { Set(guid); } + explicit PackedGuid(ObjectGuid const& guid) : _packedGuid(PACKED_GUID_MIN_BUFFER_SIZE) { Set(guid); } - void Set(ObjectGuid guid); + void Set(ObjectGuid const& guid); size_t size() const { return _packedGuid.size(); } diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 1e1ed30cf33..083d08cc41a 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -175,7 +175,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c } Map* map = owner->GetMap(); - if (!Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, owner->GetPhaseMask(), petEntry, petId)) + if (!Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, owner->GetPhaseMask(), petEntry)) return false; for (auto itr : owner->GetPhases()) @@ -771,7 +771,7 @@ bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map, uint32 phas { TC_LOG_DEBUG("entities.pet", "Pet::CreateBaseForTamed"); uint32 petId = sObjectMgr->GeneratePetNumber(); - if (!Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, phaseMask, cinfo->Entry, petId)) + if (!Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, phaseMask, cinfo->Entry)) return false; setPowerType(POWER_FOCUS); @@ -1865,13 +1865,13 @@ bool Pet::IsPermanentPetFor(Player* owner) const } } -bool Pet::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32 Entry, uint32 petId) +bool Pet::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32 Entry) { ASSERT(map); SetMap(map); SetPhaseMask(phaseMask, false); - Object::_Create(guidlow, petId, HighGuid::Pet); + Object::_Create(ObjectGuid::Create<HighGuid::Pet>(map->GetId(), Entry, guidlow)); m_DBTableGuid = guidlow; m_originalEntry = Entry; diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h index 0d24c1cbd81..9d5340f5a73 100644 --- a/src/server/game/Entities/Pet/Pet.h +++ b/src/server/game/Entities/Pet/Pet.h @@ -55,7 +55,7 @@ class Pet : public Guardian bool IsPermanentPetFor(Player* owner) const; // pet have tab in character windows and set UNIT_FIELD_PETNUMBER - bool Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32 Entry, uint32 pet_number); + bool Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32 Entry); bool CreateBaseAtCreature(Creature* creature); bool CreateBaseAtCreatureInfo(CreatureTemplate const* cinfo, Unit* owner); bool CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map, uint32 phaseMask); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9fd817198c5..fc7410b702f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -982,7 +982,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo // should check that skin, face, hair* are valid via DBC per race/class // also do it in Player::BuildEnumData, Player::LoadFromDB - Object::_Create(guidlow, 0, HighGuid::Player); + Object::_Create(ObjectGuid::Create<HighGuid::Player>(guidlow)); m_name = createInfo->Name; @@ -1964,7 +1964,7 @@ bool Player::BuildEnumData(PreparedQueryResult result, ByteBuffer* dataBuffer) Field* fields = result->Fetch(); - ObjectGuid guid(HighGuid::Player, fields[0].GetUInt64()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); std::string name = fields[1].GetString(); uint8 playerRace = fields[2].GetUInt8(); uint8 playerClass = fields[3].GetUInt8(); @@ -1983,7 +1983,7 @@ bool Player::BuildEnumData(PreparedQueryResult result, ByteBuffer* dataBuffer) uint64 guildId = fields[13].GetUInt64(); ObjectGuid guildGuid; if (guildId) - guildGuid = ObjectGuid(HighGuid::Guild, guildId); + guildGuid = ObjectGuid::Create<HighGuid::Guild>(guildId); uint32 playerFlags = fields[14].GetUInt32(); uint32 atLoginFlags = fields[15].GetUInt16(); Tokenizer equipment(fields[19].GetString(), ' '); @@ -4809,7 +4809,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe { do { - if (Player* pFriend = ObjectAccessor::FindPlayer(ObjectGuid(HighGuid::Player, (*resultFriends)[0].GetUInt64()))) + if (Player* pFriend = ObjectAccessor::FindPlayer(ObjectGuid::Create<HighGuid::Player>((*resultFriends)[0].GetUInt64()))) { pFriend->GetSocial()->RemoveFromSocialList(playerguid, false); sSocialMgr->SendFriendStatus(pFriend, FRIEND_REMOVED, playerguid, false); @@ -5017,7 +5017,7 @@ void Player::DeleteOldCharacters(uint32 keepDays) do { Field* fields = result->Fetch(); - Player::DeleteFromDB(ObjectGuid(HighGuid::Player, fields[0].GetUInt64()), fields[1].GetUInt32(), true, true); + Player::DeleteFromDB(ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()), fields[1].GetUInt32(), true, true); } while (result->NextRow()); } @@ -7592,7 +7592,7 @@ void Player::UpdateConquestCurrencyCap(uint32 currency) void Player::SetInGuild(ObjectGuid::LowType guildId) { if (guildId) - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid(HighGuid::Guild, guildId)); + SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Create<HighGuid::Guild>(guildId)); else SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); @@ -17229,7 +17229,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) return false; } - Object::_Create(guid.GetCounter(), 0, HighGuid::Player); + Object::_Create(guid); m_name = fields[2].GetString(); @@ -17431,7 +17431,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) // currently we do not support transport in bg else if (transLowGUID) { - ObjectGuid transGUID(HighGuid::Transport, transLowGUID); + ObjectGuid transGUID = ObjectGuid::Create<HighGuid::Transport>(transLowGUID); Transport* transport = NULL; if (GameObject* go = HashMapHolder<GameObject>::Find(transGUID)) @@ -18155,7 +18155,7 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) Field* fields = result->Fetch(); if (Item* item = _LoadItem(trans, zoneId, timeDiff, fields)) { - ObjectGuid bagGuid(HighGuid::Item, fields[11].GetUInt64()); + ObjectGuid bagGuid = ObjectGuid::Create<HighGuid::Item>(fields[11].GetUInt64()); uint8 slot = fields[12].GetUInt8(); uint8 err = EQUIP_ERR_OK; @@ -18275,7 +18275,7 @@ void Player::_LoadVoidStorage(PreparedQueryResult result) uint64 itemId = fields[0].GetUInt64(); uint32 itemEntry = fields[1].GetUInt32(); uint8 slot = fields[2].GetUInt8(); - ObjectGuid creatorGuid(HighGuid::Player, fields[3].GetUInt64()); + ObjectGuid creatorGuid = ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt64()); uint32 randomProperty = fields[4].GetUInt32(); uint32 suffixFactor = fields[5].GetUInt32(); @@ -18379,7 +18379,7 @@ Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, F Tokenizer GUIDlist(strGUID, ' '); GuidSet looters; for (Tokenizer::const_iterator itr = GUIDlist.begin(); itr != GUIDlist.end(); ++itr) - looters.insert(ObjectGuid(HighGuid::Player, uint64(strtoull(*itr, nullptr, 10)))); + looters.insert(ObjectGuid::Create<HighGuid::Player>(uint64(strtoull(*itr, nullptr, 10)))); if (looters.size() > 1 && item->GetTemplate()->GetMaxStackSize() == 1 && item->IsSoulBound()) { @@ -18473,7 +18473,7 @@ void Player::_LoadMailedItems(Mail* mail) Item* item = NewItemOrBag(proto); - if (!item->LoadFromDB(itemGuid, ObjectGuid(HighGuid::Player, fields[13].GetUInt64()), fields, itemTemplate)) + if (!item->LoadFromDB(itemGuid, ObjectGuid::Create<HighGuid::Player>(fields[13].GetUInt64()), fields, itemTemplate)) { TC_LOG_ERROR("entities.player", "Player::_LoadMailedItems - Item in mail (%u) doesn't exist !!!! - item guid: " UI64FMTD ", deleted from mail", mail->messageID, itemGuid); @@ -21363,8 +21363,8 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type) do // this part effectively does nothing, since the deletion / modification only takes place _after_ the PetitionQuery. Though I don't know if the result remains intact if I execute the delete query beforehand. { // and SendPetitionQueryOpcode reads data from the DB Field* fields = result->Fetch(); - ObjectGuid ownerguid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); - ObjectGuid petitionguid = ObjectGuid(HighGuid::Item, fields[1].GetUInt64()); + ObjectGuid ownerguid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); + ObjectGuid petitionguid = ObjectGuid::Create<HighGuid::Item>(fields[1].GetUInt64()); // send update if charter owner in game Player* owner = ObjectAccessor::FindConnectedPlayer(ownerguid); @@ -26393,7 +26393,7 @@ void Player::SendEquipmentSetList() if (itr->second.IgnoreMask & (1 << i)) data << ignoredItemGuid; else - data << ObjectGuid(HighGuid::Item, itr->second.Items[i]); + data << ObjectGuid::Create<HighGuid::Item>(itr->second.Items[i]); } ++count; // client have limit but it checked at loading and set @@ -27543,7 +27543,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy Map* map = GetMap(); uint32 pet_number = sObjectMgr->GeneratePetNumber(); - if (!pet->Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, GetPhaseMask(), entry, pet_number)) + if (!pet->Create(sObjectMgr->GetGenerator<HighGuid::Pet>()->Generate(), map, GetPhaseMask(), entry)) { TC_LOG_ERROR("misc", "no such creature entry %u", entry); delete pet; diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index def232fd576..8f2a1ac6060 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -324,7 +324,7 @@ PlayerSocial* SocialMgr::LoadFromDB(PreparedQueryResult result, ObjectGuid const { Field* fields = result->Fetch(); - friendGuid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); flags = fields[1].GetUInt8(); note = fields[2].GetString(); diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 189c715861f..98fb132cdd6 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -58,7 +58,7 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid, return false; } - Object::_Create(guidlow, 0, HighGuid::Transport); + Object::_Create(ObjectGuid::Create<HighGuid::Transport>(guidlow)); GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry); diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 4237a5bc135..780360dc945 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1123,7 +1123,7 @@ void GameEventMgr::UpdateEventNPCFlags(uint16 event_id) // get the creature data from the low guid to get the entry, to be able to find out the whole guid if (CreatureData const* data = sObjectMgr->GetCreatureData(itr->first)) { - Creature* cr = HashMapHolder<Creature>::Find(ObjectGuid(HighGuid::Creature, data->id, itr->first)); + Creature* cr = HashMapHolder<Creature>::Find(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, itr->first)); // if we found the creature, modify its npcflag if (cr) { @@ -1254,7 +1254,7 @@ void GameEventMgr::GameEventUnspawn(int16 event_id) { sObjectMgr->RemoveCreatureFromGrid(*itr, data); - if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::Creature, data->id, *itr), (Creature*)NULL)) + if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, *itr), (Creature*)NULL)) creature->AddObjectToRemoveList(); } } @@ -1276,7 +1276,7 @@ void GameEventMgr::GameEventUnspawn(int16 event_id) { sObjectMgr->RemoveGameobjectFromGrid(*itr, data); - if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::GameObject, data->id, *itr), (GameObject*)NULL)) + if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::GameObject>(data->mapid, data->id, *itr), (GameObject*)NULL)) pGameobject->AddObjectToRemoveList(); } } @@ -1302,7 +1302,7 @@ void GameEventMgr::ChangeEquipOrModel(int16 event_id, bool activate) continue; // Update if spawned - Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::Creature, data->id, itr->first), (Creature*)NULL); + Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, itr->first), (Creature*)NULL); if (creature) { if (activate) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index dd8f61fa912..a33a3cd436f 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1381,8 +1381,8 @@ void ObjectMgr::LoadLinkedRespawn() break; } - guid = ObjectGuid(HighGuid::Creature, slave->id, guidLow); - linkedGuid = ObjectGuid(HighGuid::Creature, master->id, linkedGuidLow); + guid = ObjectGuid::Create<HighGuid::Creature>(slave->mapid, slave->id, guidLow); + linkedGuid = ObjectGuid::Create<HighGuid::Creature>(master->mapid, master->id, linkedGuidLow); break; } case CREATURE_TO_GO: @@ -1418,8 +1418,8 @@ void ObjectMgr::LoadLinkedRespawn() break; } - guid = ObjectGuid(HighGuid::Creature, slave->id, guidLow); - linkedGuid = ObjectGuid(HighGuid::GameObject, master->id, linkedGuidLow); + guid = ObjectGuid::Create<HighGuid::Creature>(slave->mapid, slave->id, guidLow); + linkedGuid = ObjectGuid::Create<HighGuid::GameObject>(master->mapid, master->id, linkedGuidLow); break; } case GO_TO_GO: @@ -1455,8 +1455,8 @@ void ObjectMgr::LoadLinkedRespawn() break; } - guid = ObjectGuid(HighGuid::GameObject, slave->id, guidLow); - linkedGuid = ObjectGuid(HighGuid::GameObject, master->id, linkedGuidLow); + guid = ObjectGuid::Create<HighGuid::GameObject>(slave->mapid, slave->id, guidLow); + linkedGuid = ObjectGuid::Create<HighGuid::GameObject>(master->mapid, master->id, linkedGuidLow); break; } case GO_TO_CREATURE: @@ -1492,8 +1492,8 @@ void ObjectMgr::LoadLinkedRespawn() break; } - guid = ObjectGuid(HighGuid::GameObject, slave->id, guidLow); - linkedGuid = ObjectGuid(HighGuid::Creature, master->id, linkedGuidLow); + guid = ObjectGuid::Create<HighGuid::GameObject>(slave->mapid, slave->id, guidLow); + linkedGuid = ObjectGuid::Create<HighGuid::Creature>(master->mapid, master->id, linkedGuidLow); break; } } @@ -1513,7 +1513,7 @@ bool ObjectMgr::SetCreatureLinkedRespawn(ObjectGuid::LowType guidLow, ObjectGuid CreatureData const* master = GetCreatureData(guidLow); ASSERT(master); - ObjectGuid guid(HighGuid::Creature, master->id, guidLow); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Creature>(master->mapid, master->id, guidLow); if (!linkedGuidLow) // we're removing the linking { @@ -1544,7 +1544,7 @@ bool ObjectMgr::SetCreatureLinkedRespawn(ObjectGuid::LowType guidLow, ObjectGuid return false; } - ObjectGuid linkedGuid(HighGuid::Creature, slave->id, linkedGuidLow); + ObjectGuid linkedGuid = ObjectGuid::Create<HighGuid::Creature>(slave->mapid, slave->id, linkedGuidLow); _linkedRespawnStore[guid] = linkedGuid; PreparedStatement *stmt = WorldDatabase.GetPreparedStatement(WORLD_REP_CREATURE_LINKED_RESPAWN); @@ -2177,7 +2177,7 @@ void ObjectMgr::RemoveGameobjectFromGrid(ObjectGuid::LowType guid, GameObjectDat Player* ObjectMgr::GetPlayerByLowGUID(ObjectGuid::LowType lowguid) const { - return ObjectAccessor::FindPlayer(ObjectGuid(HighGuid::Player, lowguid)); + return ObjectAccessor::FindPlayer(ObjectGuid::Create<HighGuid::Player>(lowguid)); } // name must be checked to correctness (if received) before call this function @@ -2190,7 +2190,7 @@ ObjectGuid ObjectMgr::GetPlayerGUIDByName(std::string const& name) const PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) - return ObjectGuid(HighGuid::Player, (*result)[0].GetUInt64()); + return ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt64()); return ObjectGuid::Empty; } @@ -5584,7 +5584,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) Player* player = NULL; if (serverUp) - player = ObjectAccessor::FindConnectedPlayer(ObjectGuid(HighGuid::Player, m->receiver)); + player = ObjectAccessor::FindConnectedPlayer(ObjectGuid::Create<HighGuid::Player>(m->receiver)); if (player && player->m_mailsLoaded) { // this code will run very improbably (the time is between 4 and 5 am, in game is online a player, who has old mail diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 8ca8c6d82f5..640410483e9 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -93,7 +93,7 @@ bool Group::Create(Player* leader) { ObjectGuid leaderGuid = leader->GetGUID(); - m_guid = ObjectGuid(HighGuid::Party, sGroupMgr->GenerateGroupId()); + m_guid = ObjectGuid::Create<HighGuid::Party>(sGroupMgr->GenerateGroupId()); m_leaderGuid = leaderGuid; m_leaderName = leader->GetName(); leader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); @@ -162,15 +162,15 @@ bool Group::Create(Player* leader) void Group::LoadGroupFromDB(Field* fields) { m_dbStoreId = fields[16].GetUInt32(); - m_guid = ObjectGuid(HighGuid::Party, sGroupMgr->GenerateGroupId()); - m_leaderGuid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + m_guid = ObjectGuid::Create<HighGuid::Party>(sGroupMgr->GenerateGroupId()); + m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); // group leader not exist if (!sObjectMgr->GetPlayerNameByGUID(m_leaderGuid, m_leaderName)) return; m_lootMethod = LootMethod(fields[1].GetUInt8()); - m_looterGuid = ObjectGuid(HighGuid::Player, fields[2].GetUInt64()); + m_looterGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()); m_lootThreshold = ItemQualities(fields[3].GetUInt8()); for (uint8 i = 0; i < TARGETICONCOUNT; ++i) @@ -192,7 +192,7 @@ void Group::LoadGroupFromDB(Field* fields) else m_raidDifficulty = Difficulty(r_diff); - m_masterLooterGuid = ObjectGuid(HighGuid::Player, fields[15].GetUInt64()); + m_masterLooterGuid = ObjectGuid::Create<HighGuid::Player>(fields[15].GetUInt64()); if (m_groupType & GROUPTYPE_LFG) sLFGMgr->_LoadFromDB(fields, GetGUID()); @@ -201,7 +201,7 @@ void Group::LoadGroupFromDB(Field* fields) void Group::LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles) { MemberSlot member; - member.guid = ObjectGuid(HighGuid::Player, guidLow); + member.guid = ObjectGuid::Create<HighGuid::Player>(guidLow); // skip non-existed member if (!sObjectMgr->GetPlayerNameByGUID(member.guid, member.name)) @@ -958,7 +958,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) //roll for over-threshold item if it's one-player loot if (item->Quality >= uint32(m_lootThreshold)) { - ObjectGuid newitemGUID = ObjectGuid(HighGuid::Item, sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); + ObjectGuid newitemGUID = ObjectGuid::Create<HighGuid::Item>(sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); Roll* r = new Roll(newitemGUID, *i); //a vector is filled with only near party members @@ -1042,7 +1042,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) continue; } - ObjectGuid newitemGUID = ObjectGuid(HighGuid::Item, sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); + ObjectGuid newitemGUID = ObjectGuid::Create<HighGuid::Item>(sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); Roll* r = new Roll(newitemGUID, *i); //a vector is filled with only near party members @@ -1103,7 +1103,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) //roll for over-threshold item if it's one-player loot if (item->Quality >= uint32(m_lootThreshold)) { - ObjectGuid newitemGUID = ObjectGuid(HighGuid::Item, sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); + ObjectGuid newitemGUID = ObjectGuid::Create<HighGuid::Item>(sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); Roll* r = new Roll(newitemGUID, *i); for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) @@ -1178,7 +1178,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) continue; item = sObjectMgr->GetItemTemplate(i->itemid); - ObjectGuid newitemGUID = ObjectGuid(HighGuid::Item, sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); + ObjectGuid newitemGUID = ObjectGuid::Create<HighGuid::Item>(sObjectMgr->GetGenerator<HighGuid::Item>()->Generate()); Roll* r = new Roll(newitemGUID, *i); for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 5d48fdf1328..125239dd539 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -199,8 +199,8 @@ void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const void Guild::EventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& content) const { - ObjectGuid guid1 = ObjectGuid(HighGuid::Player, m_playerGuid1); - ObjectGuid guid2 = ObjectGuid(HighGuid::Player, m_playerGuid2); + ObjectGuid guid1 = ObjectGuid::Create<HighGuid::Player>(m_playerGuid1); + ObjectGuid guid2 = ObjectGuid::Create<HighGuid::Player>(m_playerGuid2); data.WriteBit(guid1[2]); data.WriteBit(guid1[4]); @@ -276,7 +276,7 @@ void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const void Guild::BankEventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& content) const { - ObjectGuid logGuid = ObjectGuid(HighGuid::Player, m_playerGuid); + ObjectGuid logGuid = ObjectGuid::Create<HighGuid::Player>(m_playerGuid); bool hasItem = m_eventType == GUILD_BANK_LOG_DEPOSIT_ITEM || m_eventType == GUILD_BANK_LOG_WITHDRAW_ITEM || m_eventType == GUILD_BANK_LOG_MOVE_ITEM || m_eventType == GUILD_BANK_LOG_MOVE_ITEM2; @@ -1815,7 +1815,7 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name) ObjectGuid oldGuildGuid; if (ObjectGuid::LowType oldId = pInvitee->GetGuildId()) - oldGuildGuid = ObjectGuid(HighGuid::Guild, oldId); + oldGuildGuid = ObjectGuid::Create<HighGuid::Guild>(oldId); ObjectGuid newGuildGuid = GetGUID(); @@ -2390,7 +2390,7 @@ bool Guild::LoadFromDB(Field* fields) { m_id = fields[0].GetUInt64(); m_name = fields[1].GetString(); - m_leaderGuid = ObjectGuid(HighGuid::Player, fields[2].GetUInt64()); + m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()); m_emblemInfo.LoadFromDB(fields); m_info = fields[8].GetString(); m_motd = fields[9].GetString(); @@ -2424,7 +2424,7 @@ void Guild::LoadRankFromDB(Field* fields) bool Guild::LoadMemberFromDB(Field* fields) { ObjectGuid::LowType lowguid = fields[1].GetUInt64(); - Member *member = new Member(m_id, ObjectGuid(HighGuid::Player, lowguid), fields[2].GetUInt8()); + Member *member = new Member(m_id, ObjectGuid::Create<HighGuid::Player>(lowguid), fields[2].GetUInt8()); if (!member->LoadFromDB(fields)) { _DeleteMemberFromDB(lowguid); @@ -2511,7 +2511,7 @@ void Guild::LoadGuildNewsLogFromDB(Field* fields) fields[1].GetUInt32(), // guid fields[6].GetUInt32(), // timestamp //64 bits? GuildNews(fields[2].GetUInt8()), // type - ObjectGuid(HighGuid::Player, fields[3].GetUInt64()), // player guid + ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt64()), // player guid fields[4].GetUInt32(), // Flags fields[5].GetUInt32())); // value } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index c2cd60ac0a6..1481ec3b042 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -777,7 +777,7 @@ public: // Getters ObjectGuid::LowType GetId() const { return m_id; } - ObjectGuid GetGUID() const { return ObjectGuid(HighGuid::Guild, m_id); } + ObjectGuid GetGUID() const { return ObjectGuid::Create<HighGuid::Guild>(m_id); } ObjectGuid GetLeaderGUID() const { return m_leaderGuid; } std::string const& GetName() const { return m_name; } std::string const& GetMOTD() const { return m_motd; } diff --git a/src/server/game/Guilds/GuildFinderMgr.cpp b/src/server/game/Guilds/GuildFinderMgr.cpp index 976560a51bc..81a16a5d2f1 100644 --- a/src/server/game/Guilds/GuildFinderMgr.cpp +++ b/src/server/game/Guilds/GuildFinderMgr.cpp @@ -54,7 +54,7 @@ void GuildFinderMgr::LoadGuildSettings() do { Field* fields = result->Fetch(); - ObjectGuid guildId(HighGuid::Guild, fields[0].GetUInt64()); + ObjectGuid guildId = ObjectGuid::Create<HighGuid::Guild>(fields[0].GetUInt64()); uint8 availability = fields[1].GetUInt8(); uint8 classRoles = fields[2].GetUInt8(); uint8 interests = fields[3].GetUInt8(); @@ -94,8 +94,8 @@ void GuildFinderMgr::LoadMembershipRequests() do { Field* fields = result->Fetch(); - ObjectGuid guildId(HighGuid::Guild, fields[0].GetUInt64()); - ObjectGuid playerId(HighGuid::Player, fields[1].GetUInt64()); + ObjectGuid guildId = ObjectGuid::Create<HighGuid::Guild>(fields[0].GetUInt64()); + ObjectGuid playerId = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64()); uint8 availability = fields[2].GetUInt8(); uint8 classRoles = fields[3].GetUInt8(); uint8 interests = fields[4].GetUInt8(); diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index d9b78f0b9ad..cb14d45d750 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -445,7 +445,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) } // impossible have online own another character (use this for speedup check in case online owner) - ObjectGuid ownerGuid(HighGuid::Player, auction->owner); + ObjectGuid ownerGuid = ObjectGuid::Create<HighGuid::Player>(auction->owner); Player* auction_owner = ObjectAccessor::FindPlayer(ownerGuid); if (!auction_owner && sObjectMgr->GetPlayerAccountIdByGUID(ownerGuid) == player->GetSession()->GetAccountId()) { diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index c4302a21b02..83302e3201f 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -451,7 +451,7 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData) if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { Field* fields = result->Fetch(); - inviteeGuid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + inviteeGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); inviteeTeam = Player::TeamForRace(fields[1].GetUInt8()); inviteeGuildId = Player::GetGuildIdFromDB(inviteeGuid); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index e6ad38649b0..58e431ac2bd 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -240,7 +240,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result) do { - ObjectGuid guid(HighGuid::Player, (*result)[0].GetUInt64()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt64()); TC_LOG_INFO("network", "Loading char guid %s from account %u.", guid.ToString().c_str(), GetAccountId()); diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 2864bf62405..ce7cdad7247 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -553,7 +553,7 @@ void WorldSession::HandleMailTakeItem(WorldPacket& recvData) if (m->COD > 0) //if there is COD, take COD money from player and send them to sender by mail { - ObjectGuid sender_guid(HighGuid::Player, m->sender); + ObjectGuid sender_guid = ObjectGuid::Create<HighGuid::Player>(m->sender); Player* receiver = ObjectAccessor::FindConnectedPlayer(sender_guid); uint32 sender_accId = 0; @@ -707,7 +707,7 @@ void WorldSession::HandleGetMailList(WorldPacket& recvData) switch ((*itr)->messageType) { case MAIL_NORMAL: // sender guid - data << ObjectGuid(HighGuid::Player, (*itr)->sender); + data << ObjectGuid::Create<HighGuid::Player>((*itr)->sender); break; case MAIL_CREATURE: case MAIL_GAMEOBJECT: @@ -816,7 +816,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket& recvData) bodyItem->SetText(m->body); if (m->messageType == MAIL_NORMAL) - bodyItem->SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid(HighGuid::Player, m->sender)); + bodyItem->SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid::Create<HighGuid::Player>(m->sender)); bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_MAIL_TEXT_MASK); @@ -871,7 +871,7 @@ void WorldSession::HandleQueryNextMailTime(WorldPacket& /*recvData*/) if (sentSenders.count(m->sender)) continue; - data << (m->messageType == MAIL_NORMAL ? ObjectGuid(HighGuid::Player, m->sender) : ObjectGuid::Empty); // player guid + data << (m->messageType == MAIL_NORMAL ? ObjectGuid::Create<HighGuid::Player>(m->sender) : ObjectGuid::Empty); // player guid data << uint32(m->messageType != MAIL_NORMAL ? m->sender : 0); // non-player entries data << uint32(m->messageType); data << uint32(m->stationery); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index bd327f32feb..df1fa4fed24 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -606,7 +606,7 @@ void WorldSession::HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std { Field* fields = result->Fetch(); - friendGuid = ObjectGuid(HighGuid::Player, 0, fields[0].GetUInt64()); + friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); team = Player::TeamForRace(fields[1].GetUInt8()); friendAccountId = fields[2].GetUInt32(); @@ -691,7 +691,7 @@ void WorldSession::HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result) if (result) { - IgnoreGuid = ObjectGuid(HighGuid::Player, (*result)[0].GetUInt64()); + IgnoreGuid = ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt64()); if (!IgnoreGuid.IsEmpty()) { diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index 53f6acfd012..93187b6bb2f 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -292,7 +292,7 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket& recvData) for (uint8 i = 1; i <= signs; ++i) { Field* fields2 = result->Fetch(); - data << ObjectGuid(HighGuid::Player, fields2[0].GetUInt64()); // Player GUID + data << ObjectGuid::Create<HighGuid::Player>(fields2[0].GetUInt64()); // Player GUID data << uint32(0); // there 0 ... result->NextRow(); @@ -328,7 +328,7 @@ void WorldSession::SendPetitionQueryOpcode(ObjectGuid petitionguid) if (result) { Field* fields = result->Fetch(); - ownerguid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + ownerguid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); name = fields[1].GetString(); type = fields[2].GetUInt8(); } @@ -472,7 +472,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket& recvData) } fields = result->Fetch(); - ObjectGuid ownerGuid(HighGuid::Player, fields[0].GetUInt64()); + ObjectGuid ownerGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); uint64 signs = fields[1].GetUInt64(); uint8 type = fields[2].GetUInt8(); @@ -598,7 +598,7 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket& recvData) return; Field* fields = result->Fetch(); - ObjectGuid ownerguid(HighGuid::Player, 0, fields[0].GetUInt64()); + ObjectGuid ownerguid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); Player* owner = ObjectAccessor::FindConnectedPlayer(ownerguid); if (owner) // petition owner online @@ -709,7 +709,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket& recvData) for (uint8 i = 1; i <= signs; ++i) { Field* fields2 = result->Fetch(); - data << ObjectGuid(HighGuid::Player, fields2[0].GetUInt64()); // Player GUID + data << ObjectGuid::Create<HighGuid::Player>(fields2[0].GetUInt64()); // Player GUID data << uint32(0); // there 0 ... result->NextRow(); @@ -747,7 +747,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) if (result) { Field* fields = result->Fetch(); - ownerguid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + ownerguid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); name = fields[1].GetString(); type = fields[2].GetUInt8(); } @@ -854,7 +854,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) for (uint8 i = 0; i < signatures; ++i) { Field* fields = result->Fetch(); - guild->AddMember(ObjectGuid(HighGuid::Player, fields[0].GetUInt64())); + guild->AddMember(ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64())); result->NextRow(); } } @@ -881,7 +881,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) for (uint8 i = 0; i < signatures; ++i) { Field* fields = result->Fetch(); - ObjectGuid memberGUID(HighGuid::Player, fields[0].GetUInt64()); + ObjectGuid memberGUID = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); TC_LOG_DEBUG("network", "PetitionsHandler: Adding arena team (guid: %u) member %s", arenaTeam->GetId(), memberGUID.ToString().c_str()); arenaTeam->AddMember(memberGUID); result->NextRow(); diff --git a/src/server/game/Handlers/VoidStorageHandler.cpp b/src/server/game/Handlers/VoidStorageHandler.cpp index 8b6659ba98c..d6b0f264cea 100644 --- a/src/server/game/Handlers/VoidStorageHandler.cpp +++ b/src/server/game/Handlers/VoidStorageHandler.cpp @@ -130,7 +130,7 @@ void WorldSession::HandleVoidStorageQuery(WorldPacket& recvData) if (!item) continue; - ObjectGuid itemId(HighGuid::Item, item->ItemId); + ObjectGuid itemId = ObjectGuid::Create<HighGuid::Item>(item->ItemId); ObjectGuid creatorGuid = item->CreatorGuid; data.WriteBit(creatorGuid[3]); @@ -387,7 +387,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPacket& recvData) for (uint8 i = 0; i < depositCount; ++i) { - ObjectGuid itemId(HighGuid::Item, depositItems[i].first.ItemId); + ObjectGuid itemId = ObjectGuid::Create<HighGuid::Item>(depositItems[i].first.ItemId); ObjectGuid creatorGuid = depositItems[i].first.CreatorGuid; data.WriteBit(creatorGuid[7]); data.WriteBit(itemId[7]); @@ -409,7 +409,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPacket& recvData) for (uint8 i = 0; i < withdrawCount; ++i) { - ObjectGuid itemId(HighGuid::Item, withdrawItems[i].ItemId); + ObjectGuid itemId = ObjectGuid::Create<HighGuid::Item>(withdrawItems[i].ItemId); data.WriteBit(itemId[1]); data.WriteBit(itemId[7]); data.WriteBit(itemId[3]); @@ -424,7 +424,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPacket& recvData) for (uint8 i = 0; i < withdrawCount; ++i) { - ObjectGuid itemId(HighGuid::Item, withdrawItems[i].ItemId); + ObjectGuid itemId = ObjectGuid::Create<HighGuid::Item>(withdrawItems[i].ItemId); data.WriteByteSeq(itemId[3]); data.WriteByteSeq(itemId[1]); data.WriteByteSeq(itemId[0]); @@ -437,7 +437,7 @@ void WorldSession::HandleVoidStorageTransfer(WorldPacket& recvData) for (uint8 i = 0; i < depositCount; ++i) { - ObjectGuid itemId(HighGuid::Item, depositItems[i].first.ItemId); + ObjectGuid itemId = ObjectGuid::Create<HighGuid::Item>(depositItems[i].first.ItemId); ObjectGuid creatorGuid = depositItems[i].first.CreatorGuid; data << uint32(depositItems[i].first.ItemSuffixFactor); @@ -542,7 +542,7 @@ void WorldSession::HandleVoidSwapItem(WorldPacket& recvData) bool usedDestSlot = player->GetVoidStorageItem(newSlot) != NULL; ObjectGuid itemIdDest; if (usedDestSlot) - itemIdDest = ObjectGuid(HighGuid::Item, player->GetVoidStorageItem(newSlot)->ItemId); + itemIdDest = ObjectGuid::Create<HighGuid::Item>(player->GetVoidStorageItem(newSlot)->ItemId); if (!player->SwapVoidStorageItem(oldSlot, newSlot)) { diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index 1eb88b622a7..3051729d49a 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -131,7 +131,7 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/ void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans) { - ObjectGuid receiverGuid(HighGuid::Player, receiver_guid); + ObjectGuid receiverGuid = ObjectGuid::Create<HighGuid::Player>(receiver_guid); Player* receiver = ObjectAccessor::FindConnectedPlayer(receiverGuid); uint32 rc_account = 0; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index 4f101b312dc..2e651999522 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -85,7 +85,7 @@ void OPvPCapturePoint::SendChangePhase() SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct); } -void OPvPCapturePoint::AddGO(uint32 type, ObjectGuid::LowType guid, uint32 entry) +void OPvPCapturePoint::AddGO(uint32 type, uint32 mapId, ObjectGuid::LowType guid, uint32 entry /*= 0*/) { if (!entry) { @@ -95,11 +95,11 @@ void OPvPCapturePoint::AddGO(uint32 type, ObjectGuid::LowType guid, uint32 entry entry = data->id; } - m_Objects[type] = ObjectGuid(HighGuid::GameObject, entry, guid); + m_Objects[type] = ObjectGuid::Create<HighGuid::GameObject>(mapId, entry, guid); m_ObjectTypes[m_Objects[type]] = type; } -void OPvPCapturePoint::AddCre(uint32 type, ObjectGuid::LowType guid, uint32 entry) +void OPvPCapturePoint::AddCre(uint32 type, uint32 mapId, ObjectGuid::LowType guid, uint32 entry /*= 0*/) { if (!entry) { @@ -109,7 +109,7 @@ void OPvPCapturePoint::AddCre(uint32 type, ObjectGuid::LowType guid, uint32 entr entry = data->id; } - m_Creatures[type] = ObjectGuid(HighGuid::Creature, entry, guid); + m_Creatures[type] = ObjectGuid::Create<HighGuid::Creature>(mapId, entry, guid); m_CreatureTypes[m_Creatures[type]] = type; } @@ -117,7 +117,7 @@ bool OPvPCapturePoint::AddObject(uint32 type, uint32 entry, uint32 map, float x, { if (ObjectGuid::LowType guid = sObjectMgr->AddGOData(entry, map, x, y, z, o, 0, rotation0, rotation1, rotation2, rotation3)) { - AddGO(type, guid, entry); + AddGO(type, map, guid, entry); return true; } @@ -128,7 +128,7 @@ bool OPvPCapturePoint::AddCreature(uint32 type, uint32 entry, uint32 map, float { if (ObjectGuid::LowType guid = sObjectMgr->AddCreData(entry, map, x, y, z, o, spawntimedelay)) { - AddCre(type, guid, entry); + AddCre(type, map, guid, entry); return true; } @@ -147,7 +147,7 @@ bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, float x, fl return false; } - m_capturePointGUID = ObjectGuid(HighGuid::GameObject, entry, sObjectMgr->AddGOData(entry, map, x, y, z, o, 0, rotation0, rotation1, rotation2, rotation3)); + m_capturePointGUID = ObjectGuid::Create<HighGuid::GameObject>(map, entry, sObjectMgr->AddGOData(entry, map, x, y, z, o, 0, rotation0, rotation1, rotation2, rotation3)); if (!m_capturePointGUID) return false; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.h b/src/server/game/OutdoorPvP/OutdoorPvP.h index fd363d6c724..1381d03c9b9 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.h +++ b/src/server/game/OutdoorPvP/OutdoorPvP.h @@ -131,8 +131,8 @@ class OPvPCapturePoint GameObject* m_capturePoint; - void AddGO(uint32 type, ObjectGuid::LowType guid, uint32 entry = 0); - void AddCre(uint32 type, ObjectGuid::LowType guid, uint32 entry = 0); + void AddGO(uint32 type, uint32 mapId, ObjectGuid::LowType guid, uint32 entry = 0); + void AddCre(uint32 type, uint32 mapId, ObjectGuid::LowType guid, uint32 entry = 0); bool SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o = 0, float rotation0 = 0, float rotation1 = 0, float rotation2 = 0, float rotation3 = 0); diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index c60c0db17cb..4eec8ab780b 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -221,7 +221,7 @@ void PoolGroup<Creature>::Despawn1Object(uint64 guid) { sObjectMgr->RemoveCreatureFromGrid(guid, data); - if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::Creature, data->id, guid), (Creature*)NULL)) + if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, guid), (Creature*)NULL)) creature->AddObjectToRemoveList(); } } @@ -234,7 +234,7 @@ void PoolGroup<GameObject>::Despawn1Object(uint64 guid) { sObjectMgr->RemoveGameobjectFromGrid(guid, data); - if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::GameObject, data->id, guid), (GameObject*)NULL)) + if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::GameObject>(data->mapid, data->id, guid), (GameObject*)NULL)) pGameobject->AddObjectToRemoveList(); } } @@ -510,7 +510,7 @@ template <> void PoolGroup<Creature>::ReSpawn1Object(PoolObject* obj) { if (CreatureData const* data = sObjectMgr->GetCreatureData(obj->guid)) - if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::Creature, data->id, obj->guid), (Creature*)NULL)) + if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, obj->guid), (Creature*)NULL)) creature->GetMap()->AddToMap(creature); } @@ -519,7 +519,7 @@ template <> void PoolGroup<GameObject>::ReSpawn1Object(PoolObject* obj) { if (GameObjectData const* data = sObjectMgr->GetGOData(obj->guid)) - if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::GameObject, data->id, obj->guid), (GameObject*)NULL)) + if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::GameObject>(data->mapid, data->id, obj->guid), (GameObject*)NULL)) pGameobject->GetMap()->AddToMap(pGameobject); } @@ -607,7 +607,7 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint64 guid = fields[0].GetUInt32(); + uint64 guid = fields[0].GetUInt64(); uint32 pool_id = fields[1].GetUInt32(); float chance = fields[2].GetFloat(); diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index f7371a6c395..349e0195242 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -827,7 +827,7 @@ void Map::ScriptsProcess() else //check hashmap holders { if (CreatureData const* data = sObjectMgr->GetCreatureData(step.script->CallScript.CreatureEntry)) - cTarget = ObjectAccessor::GetObjectInWorld<Creature>(data->mapid, data->posX, data->posY, ObjectGuid(HighGuid::Creature, data->id, uint64(step.script->CallScript.CreatureEntry)), cTarget); + cTarget = ObjectAccessor::GetObjectInWorld<Creature>(data->mapid, data->posX, data->posY, ObjectGuid::Create<HighGuid::Creature>(data->mapid, data->id, uint64(step.script->CallScript.CreatureEntry)), cTarget); } if (!cTarget) diff --git a/src/server/game/Server/Protocol/PacketLog.cpp b/src/server/game/Server/Protocol/PacketLog.cpp index 8ee3fade39f..486353cf788 100644 --- a/src/server/game/Server/Protocol/PacketLog.cpp +++ b/src/server/game/Server/Protocol/PacketLog.cpp @@ -86,7 +86,7 @@ void PacketLog::Initialize() header.Signature[0] = 'P'; header.Signature[1] = 'K'; header.Signature[2] = 'T'; header.FormatVersion = 0x0301; header.SnifferId = 'T'; - header.Build = 15595; + header.Build = 19034; header.Locale[0] = 'e'; header.Locale[1] = 'n'; header.Locale[2] = 'U'; header.Locale[3] = 'S'; std::memset(header.SessionKey, 0, sizeof(header.SessionKey)); header.SniffStartUnixtime = time(NULL); diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 967d087c9d9..7c74c4cc7b0 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -53,7 +53,7 @@ bool GmTicket::LoadFromDB(Field* fields) // ticketId, guid, name, message, createTime, mapId, posX, posY, posZ, lastModifiedTime, closedBy, assignedTo, comment, response, completed, escalated, viewed, haveTicket uint8 index = 0; _id = fields[ index].GetUInt32(); - _playerGuid = ObjectGuid(HighGuid::Player, fields[++index].GetUInt64()); + _playerGuid = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetUInt64()); _playerName = fields[++index].GetString(); _message = fields[++index].GetString(); _createTime = fields[++index].GetUInt32(); @@ -66,9 +66,9 @@ bool GmTicket::LoadFromDB(Field* fields) if (closedBy < 0) _closedBy.SetRawValue(0, uint64(closedBy)); else - _closedBy = ObjectGuid(HighGuid::Player, uint64(closedBy)); + _closedBy = ObjectGuid::Create<HighGuid::Player>(uint64(closedBy)); - _assignedTo = ObjectGuid(HighGuid::Player, fields[++index].GetUInt64()); + _assignedTo = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetUInt64()); _comment = fields[++index].GetString(); _response = fields[++index].GetString(); _completed = fields[++index].GetBool(); diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index 14447c0d871..556913c60a6 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -666,7 +666,7 @@ DumpReturn PlayerDumpReader::LoadDump(std::string const& file, uint32 account, s CharacterDatabase.CommitTransaction(trans); // in case of name conflict player has to rename at login anyway - sWorld->AddCharacterNameData(ObjectGuid(HighGuid::Player, guid), name, gender, race, playerClass, level); + sWorld->AddCharacterNameData(ObjectGuid::Create<HighGuid::Player>(guid), name, gender, race, playerClass, level); sObjectMgr->GetGenerator<HighGuid::Item>()->Set(sObjectMgr->GetGenerator<HighGuid::Item>()->GetNextAfterMaxUsed() + items.size()); sObjectMgr->_mailId += mails.size(); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 4a1caf21bd8..0ecb781d378 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -3244,7 +3244,7 @@ void World::LoadCharacterNameData() do { Field* fields = result->Fetch(); - AddCharacterNameData(ObjectGuid(HighGuid::Player, fields[0].GetUInt64()), fields[1].GetString(), + AddCharacterNameData(ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()), fields[1].GetString(), fields[3].GetUInt8() /*gender*/, fields[2].GetUInt8() /*race*/, fields[4].GetUInt8() /*class*/, fields[5].GetUInt8() /*level*/); ++count; } while (result->NextRow()); diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 4e47d403347..cfde57f3184 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -133,7 +133,7 @@ public: DeletedInfo info; - info.guid = ObjectGuid(HighGuid::Player, fields[0].GetUInt64()); + info.guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); info.name = fields[1].GetString(); info.accountId = fields[2].GetUInt32(); @@ -921,7 +921,7 @@ public: return false; } - if (sObjectMgr->GetPlayerAccountIdByGUID(ObjectGuid(HighGuid::Player, guid))) + if (sObjectMgr->GetPlayerAccountIdByGUID(ObjectGuid::Create<HighGuid::Player>(guid))) { handler->PSendSysMessage(LANG_CHARACTER_GUID_IN_USE, guid); handler->SetSentErrorMessage(true); @@ -969,7 +969,7 @@ public: ObjectGuid guid; // character name can't start from number if (isNumeric(playerStr)) - guid = ObjectGuid(HighGuid::Player, strtoull(playerStr, nullptr, 10)); + guid = ObjectGuid::Create<HighGuid::Player>(strtoull(playerStr, nullptr, 10)); else { std::string name = handler->extractPlayerNameFromLink(playerStr); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index c258adbf730..0c37b1491c3 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -990,7 +990,7 @@ public: ObjectGuid::LowType guid = strtoull(e, nullptr, 10); uint32 index = (uint32)atoi(f); - Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid(HighGuid::Item, guid)); + Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid::Create<HighGuid::Item>(guid)); if (!i) return false; @@ -1021,7 +1021,7 @@ public: uint32 index = (uint32)atoi(f); uint32 value = (uint32)atoi(g); - Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid(HighGuid::Item, guid)); + Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid::Create<HighGuid::Item>(guid)); if (!i) return false; @@ -1045,7 +1045,7 @@ public: ObjectGuid::LowType guid = strtoull(e, nullptr, 10); - Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid(HighGuid::Item, guid)); + Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid::Create<HighGuid::Item>(guid)); if (!i) return false; diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 478d4dafb1f..2ae2f2c3fd8 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -140,7 +140,7 @@ public: Transport* transport = NULL; - if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HighGuid::Creature, id, guid), (Creature*)NULL)) + if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid::Create<HighGuid::Creature>(mapId, id, guid), (Creature*)NULL)) { x = creature->GetPositionX(); y = creature->GetPositionY(); diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 3915a3bf88d..7b293efbefe 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -328,7 +328,7 @@ public: return false; } - GameObject* target = handler->GetSession()->GetPlayer()->GetMap()->GetGameObject(ObjectGuid(HighGuid::GameObject, id, guidLow)); + GameObject* target = handler->GetSession()->GetPlayer()->GetMap()->GetGameObject(ObjectGuid::Create<HighGuid::GameObject>(mapId, id, guidLow)); handler->PSendSysMessage(LANG_GAMEOBJECT_DETAIL, guidLow, objectInfo->name.c_str(), guidLow, id, x, y, z, mapId, o, phase); diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp index 667f702e52a..99a0766f728 100644 --- a/src/server/scripts/Commands/cs_group.cpp +++ b/src/server/scripts/Commands/cs_group.cpp @@ -269,7 +269,7 @@ public: const char* onlineState = ""; // Parse the guid to uint32... - ObjectGuid parseGUID(HighGuid::Player, strtoull(args, nullptr, 10)); + ObjectGuid parseGUID = ObjectGuid::Create<HighGuid::Player>(strtoull(args, nullptr, 10)); // ... and try to extract a player out of it. if (sObjectMgr->GetPlayerNameByGUID(parseGUID, nameTarget)) diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index b17a197915a..2a090aa70a8 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -181,10 +181,10 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid itemGuid(HighGuid::Item, fields[0].GetUInt64()); + ObjectGuid itemGuid = ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt64()); uint32 itemBag = fields[1].GetUInt32(); uint8 itemSlot = fields[2].GetUInt8(); - ObjectGuid ownerGuid(HighGuid::Player, fields[3].GetUInt64()); + ObjectGuid ownerGuid = ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt64()); uint32 ownerAccountId = fields[4].GetUInt32(); std::string ownerName = fields[5].GetString(); @@ -282,8 +282,8 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid itemGuid(HighGuid::Item, fields[0].GetUInt64()); - ObjectGuid owner(HighGuid::Player, fields[1].GetUInt64()); + ObjectGuid itemGuid = ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt64()); + ObjectGuid owner = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64()); uint32 ownerAccountId = fields[2].GetUInt32(); std::string ownerName = fields[3].GetString(); @@ -314,8 +314,8 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid itemGuid(HighGuid::Item, fields[0].GetUInt64()); - ObjectGuid guildGuid(HighGuid::Guild, fields[1].GetUInt64()); + ObjectGuid itemGuid = ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt64()); + ObjectGuid guildGuid = ObjectGuid::Create<HighGuid::Guild>(fields[1].GetUInt64()); std::string guildName = fields[2].GetString(); char const* itemPos = "[in guild bank]"; @@ -476,7 +476,7 @@ public: if (!*args) return false; - ObjectGuid parseGUID(HighGuid::Player, strtoull(args, nullptr, 10)); + ObjectGuid parseGUID = ObjectGuid::Create<HighGuid::Player>(strtoull(args, nullptr, 10)); if (sObjectMgr->GetPlayerNameByGUID(parseGUID, targetName)) { diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 3b7743c959f..714d1851a3e 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -1280,7 +1280,7 @@ public: do { Field* characterFields = result2->Fetch(); - ObjectGuid guid(HighGuid::Player, characterFields[0].GetUInt64()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>(characterFields[0].GetUInt64()); std::string name = characterFields[1].GetString(); handler->PSendSysMessage(LANG_LOOKUP_PLAYER_CHARACTER, name.c_str(), guid.ToString().c_str()); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 0c55a93f2ad..bd7cb9175fa 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1390,7 +1390,7 @@ public: PreparedStatement* stmt = NULL; // To make sure we get a target, we convert our guid to an omniversal... - ObjectGuid parseGUID(HighGuid::Player, strtoull(args, nullptr, 10)); + ObjectGuid parseGUID = ObjectGuid::Create<HighGuid::Player>(strtoull(args, nullptr, 10)); // ... and make sure we get a target, somehow. if (sObjectMgr->GetPlayerNameByGUID(parseGUID, targetName)) diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 6f566871f5e..9d64ba60bc4 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -527,7 +527,7 @@ public: return false; if (CreatureData const* cr_data = sObjectMgr->GetCreatureData(lowguid)) - unit = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid(HighGuid::Creature, cr_data->id, lowguid)); + unit = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid::Create<HighGuid::Creature>(cr_data->mapid, cr_data->id, lowguid)); } else unit = handler->getSelectedCreature(); @@ -1323,7 +1323,7 @@ public: return false; } - ObjectGuid receiver_guid(HighGuid::Player, strtoull(receiver_str, nullptr, 10)); + ObjectGuid receiver_guid = ObjectGuid::Create<HighGuid::Player>(strtoull(receiver_str, nullptr, 10)); // check online security Player* receiver = ObjectAccessor::FindPlayer(receiver_guid); diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 878d5b1c758..58b86e9da74 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -846,11 +846,12 @@ public: if (result2) { bool hasError = false; + Map* map = handler->GetSession()->GetPlayer()->GetMap(); do { Field* fields = result2->Fetch(); ObjectGuid::LowType wpguid = fields[0].GetUInt64(); - Creature* creature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid(HighGuid::Creature, VISUAL_WAYPOINT, wpguid)); + Creature* creature = map->GetCreature(ObjectGuid::Create<HighGuid::Creature>(map->GetId(), VISUAL_WAYPOINT, wpguid)); if (!creature) { @@ -1051,11 +1052,12 @@ public: return false; } bool hasError = false; + Map* map = handler->GetSession()->GetPlayer()->GetMap(); do { Field* fields = result->Fetch(); ObjectGuid::LowType guid = fields[0].GetUInt64(); - Creature* creature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid(HighGuid::Creature, VISUAL_WAYPOINT, guid)); + Creature* creature = map->GetCreature(ObjectGuid::Create<HighGuid::Creature>(map->GetId(), VISUAL_WAYPOINT, guid)); if (!creature) { handler->PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, guid); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 95f0b36bed1..8e659a746ed 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -648,7 +648,7 @@ class npc_spinestalker : public CreatureScript // Increase add count if (!me->isDead()) { - _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -671,7 +671,7 @@ class npc_spinestalker : public CreatureScript void JustRespawned() override { ScriptedAI::JustRespawned(); - _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade } void JustDied(Unit* /*killer*/) override @@ -784,7 +784,7 @@ class npc_rimefang : public CreatureScript // Increase add count if (!me->isDead()) { - _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -807,7 +807,7 @@ class npc_rimefang : public CreatureScript void JustRespawned() override { ScriptedAI::JustRespawned(); - _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(DATA_SINDRAGOSA_FROSTWYRMS, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade } void JustDied(Unit* /*killer*/) override @@ -951,7 +951,7 @@ class npc_sindragosa_trash : public CreatureScript if (!me->isDead()) { if (me->GetEntry() == NPC_FROSTWING_WHELP) - _instance->SetGuidData(_frostwyrmId, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(_frostwyrmId, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -974,7 +974,7 @@ class npc_sindragosa_trash : public CreatureScript // Increase add count if (me->GetEntry() == NPC_FROSTWING_WHELP) - _instance->SetGuidData(_frostwyrmId, ObjectGuid(HighGuid::Creature, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade + _instance->SetGuidData(_frostwyrmId, ObjectGuid::Create<HighGuid::Creature>(631, me->GetEntry(), me->GetDBTableGUIDLow())); // this cannot be in Reset because reset also happens on evade } void SetData(uint32 type, uint32 data) override |