From 2a6d228f8683cf0116afbbc9cbddf50e79e83cbd Mon Sep 17 00:00:00 2001 From: zeb <37308742+zeb139@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:48:54 -0400 Subject: [PATCH] added chat commands for GMs --- src/AuctionHouseBot.cpp | 23 ++++++++++++++++ src/AuctionHouseBot.h | 1 + src/AuctionHouseBotScript.cpp | 51 +++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index dceef71..948234a 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -1584,6 +1584,29 @@ void AuctionHouseBot::InitializeConfiguration() NeutralConfig.SetMaxItems(sConfigMgr->GetOption("AuctionHouseBot.Neutral.MaxItems", 15000)); } +void AuctionHouseBot::EmptyAuctionHouses() +{ + vector configs = { AllianceConfig, HordeConfig, NeutralConfig }; + auto trans = CharacterDatabase.BeginTransaction(); + + for (FactionSpecificAuctionHouseConfig config : configs) { + AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsMap(config.GetAHFID()); + auto auctionEntryMap = auctionHouse->GetAuctions(); + for (auto itr = auctionEntryMap.begin(); itr != auctionEntryMap.end();) + { + AuctionEntry* auction = itr->second; + + auction->DeleteFromDB(trans); + sAuctionMgr->RemoveAItem(auction->item_guid); + auctionHouse->RemoveAuction(auction); + + itr = auctionEntryMap.erase(itr); + } + } + + CharacterDatabase.CommitTransaction(trans); +} + uint32 AuctionHouseBot::GetRandomStackValue(std::string configKeyString, uint32 defaultValue) { uint32 stackValue = sConfigMgr->GetOption(configKeyString, defaultValue); diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index bd4d2fa..f5d6569 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -298,6 +298,7 @@ public: void Update(); void InitializeConfiguration(); + void EmptyAuctionHouses(); uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue); uint32 GetRandomStackIncrementValue(std::string configKeyString, uint32 defaultValue); void SetCyclesBetweenBuyOrSell(); diff --git a/src/AuctionHouseBotScript.cpp b/src/AuctionHouseBotScript.cpp index 1abe11c..52ba983 100644 --- a/src/AuctionHouseBotScript.cpp +++ b/src/AuctionHouseBotScript.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 */ +#include "Chat.h" #include "ScriptMgr.h" #include "AuctionHouseBot.h" #include "Log.h" @@ -118,9 +119,59 @@ public: } }; +class AHBot_CommandScript : public CommandScript +{ +public: + AHBot_CommandScript() : CommandScript("AHBot_CommandScript") { } + + Acore::ChatCommands::ChatCommandTable GetCommands() const override + { + static Acore::ChatCommands::ChatCommandTable AHBotCommandTable = { + {"update", HandleAHBotUpdateCommand, SEC_GAMEMASTER, Acore::ChatCommands::Console::Yes}, + {"reload", HandleAHBotReloadCommand, SEC_GAMEMASTER, Acore::ChatCommands::Console::Yes}, + {"empty", HandleAHBotEmptyCommand, SEC_GAMEMASTER, Acore::ChatCommands::Console::Yes} + }; + + static Acore::ChatCommands::ChatCommandTable commandTable = { + {"ahbot", AHBotCommandTable}, + }; + + return commandTable; + } + + static bool HandleAHBotUpdateCommand(ChatHandler* handler, const char* /*args*/) + { + LOG_INFO("module", "AuctionHouseBot: Updating Auction House..."); + handler->PSendSysMessage("AuctionHouseBot: Updating Auction House..."); + AuctionHouseBot::instance()->Update(); + return true; + } + + static bool HandleAHBotReloadCommand(ChatHandler* handler, char const* /*args*/) + { + LOG_INFO("module", "AuctionHouseBot: Reloading Config..."); + handler->PSendSysMessage("AuctionHouseBot: Reloading Config..."); + + // Reload config file with isReload = true + sConfigMgr->LoadModulesConfigs(true, false); + AuctionHouseBot::instance()->InitializeConfiguration(); + AuctionHouseBot::instance()->PopulateItemCandidatesAndProportions(); + return true; + } + + static bool HandleAHBotEmptyCommand(ChatHandler* handler, char const* /*args*/) + { + LOG_INFO("module", "AuctionHouseBot: Emptying Auction House..."); + handler->PSendSysMessage("AuctionHouseBot: Emptying Auction House..."); + AuctionHouseBot::instance()->EmptyAuctionHouses(); + return true; + } +}; + void AddAHBotScripts() { new AHBot_WorldScript(); new AHBot_AuctionHouseScript(); new AHBot_MailScript(); + new AHBot_CommandScript(); }