From 1166c7c5273eabb258006a41ebffe08aee4c2bff Mon Sep 17 00:00:00 2001 From: zeb <37308742+zeb139@users.noreply.github.com> Date: Fri, 26 Sep 2025 21:50:19 -0400 Subject: [PATCH] added CyclesBetweenBuyOrSell variance --- conf/mod_ahbot.conf.dist | 11 +++++++---- src/AuctionHouseBot.cpp | 27 ++++++++++++++++++++++++--- src/AuctionHouseBot.h | 4 +++- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/conf/mod_ahbot.conf.dist b/conf/mod_ahbot.conf.dist index 65598e1..58b2db7 100644 --- a/conf/mod_ahbot.conf.dist +++ b/conf/mod_ahbot.conf.dist @@ -11,10 +11,13 @@ # Default: false (disabled) # # AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell -# How many cycles to wait between executing any buying or selling logic -# - At this time, the AzerothCore has it set as 1 minute inside the -# AuctionHouseMgr.cpp file -# Default 1 (once per AuctionHouseMgr.cpp update cycle) +# How many cycles to wait between executing any buying and selling logic. +# At this time, AzerothCore waits 1 minute between cycles as defined by +# the AuctionHouseMgr.cpp file. +# Value can be a single number in order to wait X cycles between buying +# and selling, or a pair of numbers separated by a ':' to wait a random +# number of cycles between X and Y before buying and selling. (e.g. 3:15 ) +# Default: 1 # # AuctionHouseBot.EnableSeller # Enable/Disable the part of AHBot that puts items up for auction diff --git a/src/AuctionHouseBot.cpp b/src/AuctionHouseBot.cpp index 67936ef..47743ee 100644 --- a/src/AuctionHouseBot.cpp +++ b/src/AuctionHouseBot.cpp @@ -41,7 +41,8 @@ AuctionHouseBot::AuctionHouseBot() : debug_Out_Filters(false), SellingBotEnabled(false), BuyingBotEnabled(false), - CyclesBetweenBuyOrSell(1), + CyclesBetweenBuyOrSellMin(1), + CyclesBetweenBuyOrSellMax(1), MaxBuyoutPriceInCopper(1000000000), BuyoutVariationReducePercent(0.15f), BuyoutVariationAddPercent(0.25f), @@ -1173,7 +1174,7 @@ void AuctionHouseBot::Update() // Only update if the update cycle has been hit LastCycleCount++; - if (LastCycleCount < CyclesBetweenBuyOrSell) + if (LastCycleCount < urand(CyclesBetweenBuyOrSellMin, CyclesBetweenBuyOrSellMax)) return; LastCycleCount = 0; @@ -1226,7 +1227,7 @@ void AuctionHouseBot::InitializeConfiguration() AddCharacters(charString); // Buyer & Seller core properties - CyclesBetweenBuyOrSell = sConfigMgr->GetOption("AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell", 1); + SetCyclesBetweenBuyOrSell(); ItemsPerCycle = sConfigMgr->GetOption("AuctionHouseBot.ItemsPerCycle", 75); MaxBuyoutPriceInCopper = sConfigMgr->GetOption("AuctionHouseBot.MaxBuyoutPriceInCopper", 1000000000); BuyoutVariationReducePercent = sConfigMgr->GetOption("AuctionHouseBot.BuyoutVariationReducePercent", 0.15f); @@ -1463,6 +1464,26 @@ uint32 AuctionHouseBot::GetRandomStackIncrementValue(std::string configKeyString return stackIncrementValue; } +void AuctionHouseBot::SetCyclesBetweenBuyOrSell() +{ + std::string cyclesConfigString = sConfigMgr->GetOption("AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell", "1"); + size_t pos = cyclesConfigString.find(':'); + if (pos != std::string::npos) + { + CyclesBetweenBuyOrSellMin = std::stoi(cyclesConfigString.substr(0, pos)); + CyclesBetweenBuyOrSellMax = std::stoi(cyclesConfigString.substr(pos + 1)); + + if (CyclesBetweenBuyOrSellMin < 1) + CyclesBetweenBuyOrSellMin = 1; + if (CyclesBetweenBuyOrSellMax < CyclesBetweenBuyOrSellMin) + CyclesBetweenBuyOrSellMax = CyclesBetweenBuyOrSellMin; + } + else + { + CyclesBetweenBuyOrSellMin = CyclesBetweenBuyOrSellMax = std::stoi(cyclesConfigString); + } +} + void AuctionHouseBot::AddCharacters(std::string characterGUIDString) { AHCharacters.clear(); diff --git a/src/AuctionHouseBot.h b/src/AuctionHouseBot.h index d187414..4c7efec 100644 --- a/src/AuctionHouseBot.h +++ b/src/AuctionHouseBot.h @@ -128,7 +128,8 @@ private: bool SellingBotEnabled; bool BuyingBotEnabled; - int CyclesBetweenBuyOrSell; + int CyclesBetweenBuyOrSellMin; + int CyclesBetweenBuyOrSellMax; uint32 MaxBuyoutPriceInCopper; float BuyoutVariationReducePercent; float BuyoutVariationAddPercent; @@ -290,6 +291,7 @@ public: void InitializeConfiguration(); uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue); uint32 GetRandomStackIncrementValue(std::string configKeyString, uint32 defaultValue); + void SetCyclesBetweenBuyOrSell(); void AddCharacters(std::string characterGUIDString); void AddItemIDsFromString(std::set& workingItemIDSet, std::string itemString, const char* parentOperationName); void AddToItemIDSet(std::set& workingItemIDSet, uint32 itemID, const char* parentOperationName);