From 594911695a3fa1517fc551ed28861ce394ff2a3b Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 27 Apr 2021 17:33:05 +0200 Subject: [PATCH] ObjectGuid - Part I. (#35) Co-authored-by: UltraNix --- src/AuctionHouseBot.cpp | 98 ++++++++++++++--------------------- src/AuctionHouseBot.h | 5 +- src/AuctionHouseBotScript.cpp | 6 +-- 3 files changed, 44 insertions(+), 65 deletions(-) diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index fbe5238..3926c3b 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -170,26 +170,7 @@ void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config) if (debug_Out) sLog->outString("AHSeller: Adding %u Auctions", items); - uint32 AuctioneerGUID = 0; - - switch (config->GetAHID()) - { - case 2: - AuctioneerGUID = 79707; //Human in stormwind. - break; - case 6: - AuctioneerGUID = 4656; //orc in Orgrimmar - break; - case 7: - AuctioneerGUID = 23442; //goblin in GZ - break; - default: - if (debug_Out) sLog->outError( "AHSeller: GetAHID() - Default switch reached"); - AuctioneerGUID = 23442; //default to neutral 7 - break; - } - - if (debug_Out) sLog->outError( "AHSeller: Current Auctineer GUID is %u", AuctioneerGUID); + if (debug_Out) sLog->outError( "AHSeller: Current house id is %u", config->GetAHID()); uint32 greyTGcount = config->GetPercents(AHB_GREY_TG); uint32 whiteTGcount = config->GetPercents(AHB_WHITE_TG); @@ -424,14 +405,13 @@ void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config) SQLTransaction trans = CharacterDatabase.BeginTransaction(); AuctionEntry* auctionEntry = new AuctionEntry(); auctionEntry->Id = sObjectMgr->GenerateAuctionID(); - auctionEntry->auctioneer = AuctioneerGUID; - auctionEntry->item_guidlow = item->GetGUIDLow(); + auctionEntry->houseId = config->GetAHID(); + auctionEntry->item_guid = item->GetGUID(); auctionEntry->item_template = item->GetEntry(); auctionEntry->itemCount = item->GetCount(); - auctionEntry->owner = AHBplayer->GetGUIDLow(); + auctionEntry->owner = AHBplayer->GetGUID(); auctionEntry->startbid = bidPrice * stackCount; auctionEntry->buyout = buyoutPrice * stackCount; - auctionEntry->bidder = 0; auctionEntry->bid = 0; auctionEntry->deposit = dep; auctionEntry->expire_time = (time_t) etime + time(NULL); @@ -544,10 +524,10 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con continue; // get exact item information - Item *pItem = sAuctionMgr->GetAItem(auction->item_guidlow); + Item *pItem = sAuctionMgr->GetAItem(auction->item_guid); if (!pItem) { - if (debug_Out) sLog->outError( "AHBuyer: Item %u doesn't exist, perhaps bought already?", auction->item_guidlow); + if (debug_Out) sLog->outError( "AHBuyer: Item %s doesn't exist, perhaps bought already?", auction->item_guid.ToString().c_str()); continue; } @@ -626,9 +606,8 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con sLog->outString("-------------------------------------------------"); sLog->outString("AHBuyer: Info for Auction #%u:", auction->Id); sLog->outString("AHBuyer: AuctionHouse: %u", auction->GetHouseId()); - sLog->outString("AHBuyer: Auctioneer: %u", auction->auctioneer); - sLog->outString("AHBuyer: Owner: %u", auction->owner); - sLog->outString("AHBuyer: Bidder: %u", auction->bidder); + sLog->outString("AHBuyer: Owner: %s", auction->owner.ToString().c_str()); + sLog->outString("AHBuyer: Bidder: %s", auction->bidder.ToString().c_str()); sLog->outString("AHBuyer: Starting Bid: %u", auction->startbid); sLog->outString("AHBuyer: Current Bid: %u", currentprice); sLog->outString("AHBuyer: Buyout: %u", auction->buyout); @@ -638,7 +617,7 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con sLog->outString("AHBuyer: Bid Max: %Lf", bidMax); sLog->outString("AHBuyer: Bid Value: %Lf", bidvalue); sLog->outString("AHBuyer: Bid Price: %u", bidprice); - sLog->outString("AHBuyer: Item GUID: %u", auction->item_guidlow); + sLog->outString("AHBuyer: Item GUID: %s", auction->item_guid.ToString().c_str()); sLog->outString("AHBuyer: Item Template: %u", auction->item_template); sLog->outString("AHBuyer: Item Info:"); sLog->outString("AHBuyer: Item ID: %u", prototype->ItemId); @@ -654,10 +633,9 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con // Check whether we do normal bid, or buyout if ((bidprice < auction->buyout) || (auction->buyout == 0)) { - - if (auction->bidder > 0) + if (auction->bidder) { - if (auction->bidder == AHBplayer->GetGUIDLow()) + if (auction->bidder == AHBplayer->GetGUID()) { //pl->ModifyMoney(-int32(price - auction->bid)); } @@ -671,21 +649,21 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con } } - auction->bidder = AHBplayer->GetGUIDLow(); + auction->bidder = AHBplayer->GetGUID(); auction->bid = bidprice; // Saving auction into database - CharacterDatabase.PExecute("UPDATE auctionhouse SET buyguid = '%u',lastbid = '%u' WHERE id = '%u'", auction->bidder, auction->bid, auction->Id); + CharacterDatabase.PExecute("UPDATE auctionhouse SET buyguid = '%u',lastbid = '%u' WHERE id = '%u'", auction->bidder.GetCounter(), auction->bid, auction->Id); } else { SQLTransaction trans = CharacterDatabase.BeginTransaction(); //buyout - if ((auction->bidder) && (AHBplayer->GetGUIDLow() != auction->bidder)) + if ((auction->bidder) && (AHBplayer->GetGUID() != auction->bidder)) { sAuctionMgr->SendAuctionOutbiddedMail(auction, auction->buyout, session->GetPlayer(), trans); } - auction->bidder = AHBplayer->GetGUIDLow(); + auction->bidder = AHBplayer->GetGUID(); auction->bid = auction->buyout; // Send mails to buyer & seller @@ -694,7 +672,7 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con sAuctionMgr->SendAuctionWonMail(auction, trans); auction->DeleteFromDB( trans); - sAuctionMgr->RemoveAItem(auction->item_guidlow); + sAuctionMgr->RemoveAItem(auction->item_guid); auctionHouse->RemoveAuction(auction); CharacterDatabase.CommitTransaction(trans); } @@ -710,7 +688,7 @@ void AuctionHouseBot::Update() WorldSession _session(AHBplayerAccount, NULL, SEC_PLAYER, sWorld->getIntConfig(CONFIG_EXPANSION), 0, LOCALE_zhCN,0,false,false,0); Player _AHBplayer(&_session); _AHBplayer.Initialize(AHBplayerGUID); - sObjectAccessor->AddObject(&_AHBplayer); + ObjectAccessor::AddObject(&_AHBplayer); // Add New Bids if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION)) @@ -742,7 +720,7 @@ void AuctionHouseBot::Update() addNewAuctionBuyerBotBid(&_AHBplayer, &NeutralConfig, &_session); _lastrun_n = _newrun; } - sObjectAccessor->RemoveObject(&_AHBplayer); + ObjectAccessor::RemoveObject(&_AHBplayer); } void AuctionHouseBot::Initialize() @@ -1392,10 +1370,10 @@ void AuctionHouseBot::IncrementItemCounts(AuctionEntry* ah) // from auctionhousehandler.cpp, creates auction pointer & player pointer // get exact item information - Item *pItem = sAuctionMgr->GetAItem(ah->item_guidlow); + Item *pItem = sAuctionMgr->GetAItem(ah->item_guid); if (!pItem) { - if (debug_Out) sLog->outError( "AHBot: Item %u doesn't exist, perhaps bought already?", ah->item_guidlow); + if (debug_Out) sLog->outError( "AHBot: Item %s doesn't exist, perhaps bought already?", ah->item_guid.ToString().c_str()); return; } @@ -1404,25 +1382,25 @@ void AuctionHouseBot::IncrementItemCounts(AuctionEntry* ah) AHBConfig *config; - FactionTemplateEntry const* u_entry = sFactionTemplateStore.LookupEntry(ah->GetHouseFaction()); - if (!u_entry) + AuctionHouseEntry const* ahEntry = sAuctionHouseStore.LookupEntry(ah->GetHouseId()); + if (!ahEntry) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseId()); config = &NeutralConfig; } - else if (u_entry->ourMask & FACTION_MASK_ALLIANCE) + else if (ahEntry->houseId == AUCTIONHOUSE_ALLIANCE) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Alliance", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Alliance", ah->GetHouseId()); config = &AllianceConfig; } - else if (u_entry->ourMask & FACTION_MASK_HORDE) + else if (ahEntry->houseId == AUCTIONHOUSE_HORDE) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Horde", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Horde", ah->GetHouseId()); config = &HordeConfig; } else { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseId()); config = &NeutralConfig; } @@ -1436,25 +1414,25 @@ void AuctionHouseBot::DecrementItemCounts(AuctionEntry* ah, uint32 itemEntry) AHBConfig *config; - FactionTemplateEntry const* u_entry = sFactionTemplateStore.LookupEntry(ah->GetHouseFaction()); - if (!u_entry) + AuctionHouseEntry const* ahEntry = sAuctionHouseStore.LookupEntry(ah->GetHouseId()); + if (!ahEntry) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseId()); config = &NeutralConfig; } - else if (u_entry->ourMask & FACTION_MASK_ALLIANCE) + else if (ahEntry->houseId == AUCTIONHOUSE_ALLIANCE) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Alliance", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Alliance", ah->GetHouseId()); config = &AllianceConfig; } - else if (u_entry->ourMask & FACTION_MASK_HORDE) + else if (ahEntry->houseId == AUCTIONHOUSE_HORDE) { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Horde", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Horde", ah->GetHouseId()); config = &HordeConfig; } else { - if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseFaction()); + if (debug_Out) sLog->outError( "AHBot: %u returned as House Faction. Neutral", ah->GetHouseId()); config = &NeutralConfig; } @@ -1514,7 +1492,7 @@ void AuctionHouseBot::Commands(uint32 command, uint32 ahMapID, uint32 col, char* while (itr != auctionHouse->GetAuctionsEnd()) { - if (itr->second->owner == AHBplayerGUID) + if (itr->second->owner.GetCounter() == AHBplayerGUID) { itr->second->expire_time = sWorld->GetGameTime(); uint32 id = itr->second->Id; @@ -1793,7 +1771,7 @@ void AuctionHouseBot::LoadValues(AHBConfig *config) for (AuctionHouseObject::AuctionEntryMap::const_iterator itr = auctionHouse->GetAuctionsBegin(); itr != auctionHouse->GetAuctionsEnd(); ++itr) { AuctionEntry *Aentry = itr->second; - Item *item = sAuctionMgr->GetAItem(Aentry->item_guidlow); + Item *item = sAuctionMgr->GetAItem(Aentry->item_guid); if (item) { ItemTemplate const *prototype = item->GetTemplate(); diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index fc68b26..a091f7d 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -21,6 +21,7 @@ #define AUCTION_HOUSE_BOT_H #include "Common.h" +#include "ObjectGuid.h" struct AuctionEntry; class Player; @@ -1160,7 +1161,7 @@ private: bool SellMethod; uint32 AHBplayerAccount; - uint32 AHBplayerGUID; + ObjectGuid::LowType AHBplayerGUID; uint32 ItemsPerCycle; //Begin Filters @@ -1251,7 +1252,7 @@ public: void DecrementItemCounts(AuctionEntry* ah, uint32 itemEntry); void IncrementItemCounts(AuctionEntry* ah); void Commands(uint32, uint32, uint32, char*); - uint32 GetAHBplayerGUID() { return AHBplayerGUID; }; + ObjectGuid::LowType GetAHBplayerGUID() { return AHBplayerGUID; }; }; #define auctionbot AuctionHouseBot::instance() diff --git a/src/AuctionHouseBotScript.cpp b/src/AuctionHouseBotScript.cpp index 31e6b75..74a7c2f 100644 --- a/src/AuctionHouseBotScript.cpp +++ b/src/AuctionHouseBotScript.cpp @@ -30,7 +30,7 @@ public: void OnBeforeAuctionHouseMgrSendAuctionSuccessfulMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* /*auction*/, Player* owner, uint32& /*owner_accId*/, uint32& /*profit*/, bool& sendNotification, bool& updateAchievementCriteria, bool& /*sendMail*/) override { - if (owner && owner->GetGUIDLow() == auctionbot->GetAHBplayerGUID()) + if (owner && owner->GetGUID().GetCounter() == auctionbot->GetAHBplayerGUID()) { sendNotification = false; updateAchievementCriteria = false; @@ -39,14 +39,14 @@ public: void OnBeforeAuctionHouseMgrSendAuctionExpiredMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* /*auction*/, Player* owner, uint32& /*owner_accId*/, bool& sendNotification, bool& /*sendMail*/) override { - if (owner && owner->GetGUIDLow() == auctionbot->GetAHBplayerGUID()) + if (owner && owner->GetGUID().GetCounter() == auctionbot->GetAHBplayerGUID()) sendNotification = false; } void OnBeforeAuctionHouseMgrSendAuctionOutbiddedMail(AuctionHouseMgr* /*auctionHouseMgr*/, AuctionEntry* auction, Player* oldBidder, uint32& /*oldBidder_accId*/, Player* newBidder, uint32& newPrice, bool& /*sendNotification*/, bool& /*sendMail*/) override { if (oldBidder && !newBidder) - oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, auctionbot->GetAHBplayerGUID(), newPrice, auction->GetAuctionOutBid(), auction->item_template); + oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, ObjectGuid::Create(auctionbot->GetAHBplayerGUID()), newPrice, auction->GetAuctionOutBid(), auction->item_template); } void OnAuctionAdd(AuctionHouseObject* /*ah*/, AuctionEntry* auction) override