51 TC_LOG_INFO(
"ahbot",
"All feature of AuctionHouseBot are disabled!");
56 TC_LOG_INFO(
"ahbot",
"AuctionHouseBot SELLER is disabled!");
59 TC_LOG_INFO(
"ahbot",
"AuctionHouseBot BUYER is disabled!");
63 TC_LOG_INFO(
"ahbot",
"AllowTwoSide.Interaction.Auction is enabled, AuctionHouseBot faction-specific settings might not work as expected!");
66 TC_LOG_WARN(
"ahbot",
"AllowTwoSide.Interaction.Auction is enabled, AuctionHouseBot should be enabled only for Neutral faction!");
81 _AHBotCharacters.push_back(ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt64()));
82 }
while (result->NextRow());
84 TC_LOG_DEBUG(
"ahbot",
"AuctionHouseBot found {} characters", result->GetRowCount());
87 TC_LOG_WARN(
"ahbot",
"AuctionHouseBot Account ID {} has no associated characters.", ahBotAccId);
110 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range 0...{}. Using {} instead.", fieldname,
GetConfig(index), maxvalue, maxvalue);
121 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range {}...{}. Using {} instead.", fieldname,
GetConfig(index), minvalue, maxvalue, maxvalue);
127 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range {}...{}. Using {} instead.", fieldname,
GetConfig(index), minvalue, maxvalue, minvalue);
313 return names[houseType];
332 std::vector<ObjectGuid> filteredCharacters;
336 if (charId != exclude)
337 filteredCharacters.push_back(charId);
339 if (filteredCharacters.empty())
487 statusInfo[ahType].ItemsCount = 0;
489 for (
AuctionQuality quality : EnumUtils::Iterate<AuctionQuality>())
490 statusInfo[ahType].QualityInfo[quality] = 0;
504 statusInfo[ahType].ItemsCount += item->
GetCount();
517 if (itr->second.Owner.IsEmpty() ||
sAuctionBotConfig->IsBotChar(itr->second.Owner))
518 if (all || itr->second.BidAmount == 0)
538 bool successStep =
false;
constexpr uint32 AuctionHouseIds[MAX_AUCTION_HOUSE_TYPE]
AuctionBotConfigUInt32Values
@ CONFIG_AHBOT_BUYER_BASEPRICE_GRAY
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_GRAY
@ CONFIG_AHBOT_NEUTRAL_PRICE_RATIO
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_ORANGE
@ CONFIG_AHBOT_BUYER_RECHECK_INTERVAL
@ CONFIG_AHBOT_ITEM_MIN_REQ_LEVEL
@ CONFIG_AHBOT_ITEM_GREEN_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_QUEST
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_GENERIC
@ CONFIG_AHBOT_ITEM_MAX_REQ_LEVEL
@ CONFIG_AHBOT_ITEMS_PER_CYCLE_NORMAL
@ CONFIG_AHBOT_CLASS_GLYPH_PRIORITY
@ CONFIG_AHBOT_BUYER_BASEPRICE_BLUE
@ CONFIG_AHBOT_HORDE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_QUEST_PRIORITY
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_QUIVER
@ CONFIG_AHBOT_CLASS_PROJECTILE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_GEM_PRIORITY
@ CONFIG_AHBOT_CLASS_QUIVER_PRIORITY
@ CONFIG_AHBOT_CLASS_GLYPH_MIN_REQ_LEVEL
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_GEM
@ CONFIG_AHBOT_CLASS_CONTAINER_PRICE_RATIO
@ CONFIG_AHBOT_BUYER_BASEPRICE_PURPLE
@ CONFIG_AHBOT_CLASS_MISC_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_MISC_MOUNT_MIN_SKILL_RANK
@ CONFIG_AHBOT_CLASS_MISC_PRIORITY
@ CONFIG_AHBOT_CLASS_MISC_MOUNT_MAX_SKILL_RANK
@ CONFIG_AHBOT_ITEM_GRAY_PRICE_RATIO
@ CONFIG_AHBOT_ITEMS_PER_CYCLE_BOOST
@ CONFIG_AHBOT_CLASS_RECIPE_PRIORITY
@ CONFIG_AHBOT_CLASS_ARMOR_PRIORITY
@ CONFIG_AHBOT_BUYER_BASEPRICE_YELLOW
@ CONFIG_AHBOT_CLASS_GLYPH_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_TRADEGOOD_PRIORITY
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_GLYPH
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_YELLOW
@ CONFIG_AHBOT_CLASS_TRADEGOOD_MIN_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_REAGENT_PRIORITY
@ CONFIG_AHBOT_ITEM_ORANGE_AMOUNT
@ CONFIG_AHBOT_CLASS_GLYPH_MAX_ITEM_LEVEL
@ CONFIG_AHBOT_ITEM_WHITE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_KEY_PRIORITY
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_MISC
@ CONFIG_AHBOT_BUYER_BASEPRICE_ORANGE
@ CONFIG_AHBOT_ITEM_BLUE_AMOUNT
@ CONFIG_AHBOT_HORDE_ITEM_AMOUNT_RATIO
@ CONFIG_AHBOT_CLASS_QUEST_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_MISC_MOUNT_MIN_REQ_LEVEL
@ CONFIG_AHBOT_CLASS_QUIVER_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_PROJECTILE_PRIORITY
@ CONFIG_AHBOT_CLASS_CONSUMABLE_PRIORITY
@ CONFIG_AHBOT_CLASS_GEM_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_GLYPH_MIN_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_CONTAINER_PRIORITY
@ CONFIG_AHBOT_CLASS_GENERIC_PRIORITY
@ CONFIG_AHBOT_ITEM_MAX_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_CONSUMABLE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_GENERIC_PRICE_RATIO
@ CONFIG_AHBOT_ITEM_GREEN_AMOUNT
@ CONFIG_AHBOT_CLASS_KEY_PRICE_RATIO
@ CONFIG_AHBOT_ITEM_ORANGE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_TRADEGOOD
@ CONFIG_AHBOT_CLASS_GLYPH_MAX_REQ_LEVEL
@ CONFIG_AHBOT_BUYER_BASEPRICE_GREEN
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_REAGENT
@ CONFIG_AHBOT_ITEM_WHITE_AMOUNT
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_BLUE
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_PURPLE
@ CONFIG_AHBOT_ITEM_MIN_SKILL_RANK
@ CONFIG_AHBOT_CLASS_TRADEGOOD_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_WEAPON_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_TRADEGOOD_MAX_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_ARMOR_PRICE_RATIO
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_WHITE
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_WEAPON
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_CONTAINER
@ CONFIG_AHBOT_ITEM_BLUE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_RECIPE
@ CONFIG_AHBOT_ALLIANCE_ITEM_AMOUNT_RATIO
@ CONFIG_AHBOT_CLASS_CONTAINER_MIN_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_ARMOR
@ CONFIG_AHBOT_ITEM_GRAY_AMOUNT
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_KEY
@ CONFIG_AHBOT_ITEM_YELLOW_PRICE_RATIO
@ CONFIG_AHBOT_ITEM_MAX_SKILL_RANK
@ CONFIG_AHBOT_NEUTRAL_ITEM_AMOUNT_RATIO
@ CONFIG_AHBOT_ITEM_MIN_ITEM_LEVEL
@ CONFIG_AHBOT_CLASS_REAGENT_PRICE_RATIO
@ CONFIG_AHBOT_ITEM_PURPLE_PRICE_RATIO
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_CONSUMABLE
@ CONFIG_AHBOT_CLASS_RECIPE_PRICE_RATIO
@ CONFIG_AHBOT_ALLIANCE_PRICE_RATIO
@ CONFIG_AHBOT_BUYER_CHANCEMULTIPLIER_GREEN
@ CONFIG_AHBOT_ITEM_YELLOW_AMOUNT
@ CONFIG_AHBOT_CLASS_CONTAINER_MAX_ITEM_LEVEL
@ CONFIG_AHBOT_ACCOUNT_ID
@ CONFIG_AHBOT_ITEM_PURPLE_AMOUNT
@ CONFIG_AHBOT_CLASS_RANDOMSTACKRATIO_PROJECTILE
@ CONFIG_AHBOT_CLASS_WEAPON_PRIORITY
@ CONFIG_AHBOT_BUYER_BASEPRICE_WHITE
@ CONFIG_AHBOT_CLASS_MISC_MOUNT_MAX_REQ_LEVEL
AuctionBotConfigFloatValues
@ CONFIG_AHBOT_BIDPRICE_MIN
@ CONFIG_AHBOT_BUYER_CHANCE_FACTOR
@ CONFIG_AHBOT_BIDPRICE_MAX
#define MAX_AUCTION_QUALITY
#define MAX_AUCTION_HOUSE_TYPE
#define sAuctionBotConfig
AuctionBotConfigBoolValues
@ CONFIG_AHBOT_CLASS_QUIVER_ALLOW_ZERO
@ CONFIG_AHBOT_ITEMS_MISC
@ CONFIG_AHBOT_CLASS_CONSUMABLE_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_TRADEGOOD_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_GEM_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_RECIPE_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_CONTAINER_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_KEY_ALLOW_ZERO
@ CONFIG_AHBOT_LOCKBOX_ENABLED
@ CONFIG_AHBOT_BUYER_ALLIANCE_ENABLED
@ CONFIG_AHBOT_BUYER_ENABLED
@ CONFIG_AHBOT_CLASS_REAGENT_ALLOW_ZERO
@ CONFIG_AHBOT_BUYER_HORDE_ENABLED
@ CONFIG_AHBOT_CLASS_PROJECTILE_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_QUEST_ALLOW_ZERO
@ CONFIG_AHBOT_CLASS_ARMOR_ALLOW_ZERO
@ CONFIG_AHBOT_BIND_QUEST
@ CONFIG_AHBOT_ITEMS_VENDOR
@ CONFIG_AHBOT_BIND_EQUIP
@ CONFIG_AHBOT_CLASS_GLYPH_ALLOW_ZERO
@ CONFIG_AHBOT_BIND_PICKUP
@ CONFIG_AHBOT_CLASS_WEAPON_ALLOW_ZERO
@ CONFIG_AHBOT_ITEMS_LOOT
@ CONFIG_AHBOT_SELLER_ENABLED
@ CONFIG_AHBOT_CLASS_MISC_ALLOW_ZERO
@ CONFIG_AHBOT_BUYER_NEUTRAL_ENABLED
@ CONFIG_AHBOT_BUYPRICE_SELLER
@ CHAR_SEL_CHARS_BY_ACCOUNT_ID
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_WARN(filterType__,...)
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
bool Initialize() override
bool Update(AuctionHouseType houseType) override
static char const * GetHouseTypeName(AuctionHouseType houseType)
bool GetConfigBuyerEnabled(AuctionHouseType houseType) const
void SetConfigMax(AuctionBotConfigUInt32Values index, char const *fieldname, uint32 defvalue, uint32 maxvalue)
uint32 _itemsPerCycleBoost
ObjectGuid GetRandChar() const
uint32 GetConfigItemAmountRatio(AuctionHouseType houseType) const
static AuctionBotConfig * instance()
uint32 GetConfig(AuctionBotConfigUInt32Values index) const
ObjectGuid GetRandCharExclude(ObjectGuid exclude) const
void SetConfigMinMax(AuctionBotConfigUInt32Values index, char const *fieldname, uint32 defvalue, uint32 minvalue, uint32 maxvalue)
uint32 GetConfigPriceRatio(AuctionHouseType houseType) const
void SetConfig(AuctionBotConfigBoolValues index, bool value)
void SetAHBotIncludes(const std::string &AHBotIncludes)
uint32 _itemsPerCycleNormal
uint32 GetConfigItemQualityAmount(AuctionQuality quality) const
void SetAHBotExcludes(const std::string &AHBotExcludes)
uint32 GetAuctionHouseId(AuctionHouseType houseType) const
bool IsBotChar(ObjectGuid characterID) const
std::vector< ObjectGuid > _AHBotCharacters
bool Initialize() override
void SetItemsAmountForQuality(AuctionQuality quality, uint32 val)
void SetItemsAmount(std::array< uint32, MAX_AUCTION_QUALITY > const &amounts)
bool Update(AuctionHouseType houseType) override
void SetItemsRatioForHouse(AuctionHouseType house, uint32 val)
void SetItemsRatio(uint32 al, uint32 ho, uint32 ne)
void PrepareStatusInfos(std::unordered_map< AuctionHouseType, AuctionHouseBotStatusInfoPerType > &statusInfo)
uint32 _operationSelector
void SetItemsRatio(uint32 al, uint32 ho, uint32 ne)
void SetItemsAmountForQuality(AuctionQuality quality, uint32 val)
static AuctionHouseBot * instance()
AuctionBotSeller * _seller
void SetItemsRatioForHouse(AuctionHouseType house, uint32 val)
void SetItemsAmount(std::array< uint32, MAX_AUCTION_QUALITY > const &amounts)
std::map< uint32, AuctionPosting >::iterator GetAuctionsEnd()
std::map< uint32, AuctionPosting >::iterator GetAuctionsBegin()
ItemTemplate const * GetTemplate() const
static ObjectGuid const Empty
void setUInt32(const uint8 index, const uint32 value)
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
std::vector< Item * > Items
uint32 GetQuality() const