added CyclesBetweenBuyOrSell variance

This commit is contained in:
zeb
2025-09-26 21:50:19 -04:00
parent 81ea9ac469
commit 1166c7c527
3 changed files with 34 additions and 8 deletions

View File

@@ -11,10 +11,13 @@
# Default: false (disabled) # Default: false (disabled)
# #
# AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell # AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell
# How many cycles to wait between executing any buying or selling logic # How many cycles to wait between executing any buying and selling logic.
# - At this time, the AzerothCore has it set as 1 minute inside the # At this time, AzerothCore waits 1 minute between cycles as defined by
# AuctionHouseMgr.cpp file # the AuctionHouseMgr.cpp file.
# Default 1 (once per AuctionHouseMgr.cpp update cycle) # 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 # AuctionHouseBot.EnableSeller
# Enable/Disable the part of AHBot that puts items up for auction # Enable/Disable the part of AHBot that puts items up for auction

View File

@@ -41,7 +41,8 @@ AuctionHouseBot::AuctionHouseBot() :
debug_Out_Filters(false), debug_Out_Filters(false),
SellingBotEnabled(false), SellingBotEnabled(false),
BuyingBotEnabled(false), BuyingBotEnabled(false),
CyclesBetweenBuyOrSell(1), CyclesBetweenBuyOrSellMin(1),
CyclesBetweenBuyOrSellMax(1),
MaxBuyoutPriceInCopper(1000000000), MaxBuyoutPriceInCopper(1000000000),
BuyoutVariationReducePercent(0.15f), BuyoutVariationReducePercent(0.15f),
BuyoutVariationAddPercent(0.25f), BuyoutVariationAddPercent(0.25f),
@@ -1173,7 +1174,7 @@ void AuctionHouseBot::Update()
// Only update if the update cycle has been hit // Only update if the update cycle has been hit
LastCycleCount++; LastCycleCount++;
if (LastCycleCount < CyclesBetweenBuyOrSell) if (LastCycleCount < urand(CyclesBetweenBuyOrSellMin, CyclesBetweenBuyOrSellMax))
return; return;
LastCycleCount = 0; LastCycleCount = 0;
@@ -1226,7 +1227,7 @@ void AuctionHouseBot::InitializeConfiguration()
AddCharacters(charString); AddCharacters(charString);
// Buyer & Seller core properties // Buyer & Seller core properties
CyclesBetweenBuyOrSell = sConfigMgr->GetOption<uint32>("AuctionHouseBot.AuctionHouseManagerCyclesBetweenBuyOrSell", 1); SetCyclesBetweenBuyOrSell();
ItemsPerCycle = sConfigMgr->GetOption<uint32>("AuctionHouseBot.ItemsPerCycle", 75); ItemsPerCycle = sConfigMgr->GetOption<uint32>("AuctionHouseBot.ItemsPerCycle", 75);
MaxBuyoutPriceInCopper = sConfigMgr->GetOption<uint32>("AuctionHouseBot.MaxBuyoutPriceInCopper", 1000000000); MaxBuyoutPriceInCopper = sConfigMgr->GetOption<uint32>("AuctionHouseBot.MaxBuyoutPriceInCopper", 1000000000);
BuyoutVariationReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutVariationReducePercent", 0.15f); BuyoutVariationReducePercent = sConfigMgr->GetOption<float>("AuctionHouseBot.BuyoutVariationReducePercent", 0.15f);
@@ -1463,6 +1464,26 @@ uint32 AuctionHouseBot::GetRandomStackIncrementValue(std::string configKeyString
return stackIncrementValue; return stackIncrementValue;
} }
void AuctionHouseBot::SetCyclesBetweenBuyOrSell()
{
std::string cyclesConfigString = sConfigMgr->GetOption<std::string>("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) void AuctionHouseBot::AddCharacters(std::string characterGUIDString)
{ {
AHCharacters.clear(); AHCharacters.clear();

View File

@@ -128,7 +128,8 @@ private:
bool SellingBotEnabled; bool SellingBotEnabled;
bool BuyingBotEnabled; bool BuyingBotEnabled;
int CyclesBetweenBuyOrSell; int CyclesBetweenBuyOrSellMin;
int CyclesBetweenBuyOrSellMax;
uint32 MaxBuyoutPriceInCopper; uint32 MaxBuyoutPriceInCopper;
float BuyoutVariationReducePercent; float BuyoutVariationReducePercent;
float BuyoutVariationAddPercent; float BuyoutVariationAddPercent;
@@ -290,6 +291,7 @@ public:
void InitializeConfiguration(); void InitializeConfiguration();
uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue); uint32 GetRandomStackValue(std::string configKeyString, uint32 defaultValue);
uint32 GetRandomStackIncrementValue(std::string configKeyString, uint32 defaultValue); uint32 GetRandomStackIncrementValue(std::string configKeyString, uint32 defaultValue);
void SetCyclesBetweenBuyOrSell();
void AddCharacters(std::string characterGUIDString); void AddCharacters(std::string characterGUIDString);
void AddItemIDsFromString(std::set<uint32>& workingItemIDSet, std::string itemString, const char* parentOperationName); void AddItemIDsFromString(std::set<uint32>& workingItemIDSet, std::string itemString, const char* parentOperationName);
void AddToItemIDSet(std::set<uint32>& workingItemIDSet, uint32 itemID, const char* parentOperationName); void AddToItemIDSet(std::set<uint32>& workingItemIDSet, uint32 itemID, const char* parentOperationName);