50 TC_LOG_INFO(
"ahbot",
"All feature of AuctionHouseBot are disabled!");
55 TC_LOG_INFO(
"ahbot",
"AuctionHouseBot SELLER is disabled!");
58 TC_LOG_INFO(
"ahbot",
"AuctionHouseBot BUYER is disabled!");
62 TC_LOG_INFO(
"ahbot",
"AllowTwoSide.Interaction.Auction is enabled, AuctionHouseBot faction-specific settings might not work as expected!");
65 TC_LOG_WARN(
"ahbot",
"AllowTwoSide.Interaction.Auction is enabled, AuctionHouseBot should be enabled only for Neutral faction!");
84 Field* fields = result->Fetch();
87 }
while (result->NextRow());
90 TC_LOG_DEBUG(
"ahbot",
"AuctionHouseBot found {} characters", count);
93 TC_LOG_WARN(
"ahbot",
"AuctionHouseBot Account ID {} has no associated characters.", ahBotAccId);
116 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range 0...{}. Using {} instead.", fieldname,
GetConfig(index), maxvalue, maxvalue);
127 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range {}...{}. Using {} instead.", fieldname,
GetConfig(index), minvalue, maxvalue, maxvalue);
133 TC_LOG_ERROR(
"ahbot",
"AHBot: {} ({}) must be in range {}...{}. Using {} instead.", fieldname,
GetConfig(index), minvalue, maxvalue, minvalue);
314 return names[houseType];
333 std::vector<uint32> filteredCharacters;
337 if (charId != exclude)
338 filteredCharacters.push_back(charId);
340 if (filteredCharacters.empty())
488 statusInfo[ahType].ItemsCount = 0;
490 for (
AuctionQuality quality : EnumUtils::Iterate<AuctionQuality>())
491 statusInfo[ahType].QualityInfo[quality] = 0;
505 ++statusInfo[ahType].ItemsCount;
519 if (all || itr->second->bid == 0)
539 bool successStep =
false;
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__,...)
static uint32 GetCharactersCount(uint32 accountId)
bool Initialize() override
bool Update(AuctionHouseType houseType) override
uint32 GetRandCharExclude(uint32 exclude) const
static char const * GetHouseTypeName(AuctionHouseType houseType)
bool GetConfigBuyerEnabled(AuctionHouseType houseType) const
void SetConfigMax(AuctionBotConfigUInt32Values index, char const *fieldname, uint32 defvalue, uint32 maxvalue)
bool IsBotChar(uint32 characterID) const
uint32 _itemsPerCycleBoost
uint32 GetConfigItemAmountRatio(AuctionHouseType houseType) const
std::vector< uint32 > _AHBotCharacters
static AuctionBotConfig * instance()
uint32 GetConfig(AuctionBotConfigUInt32Values index) 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 GetRandChar() const
uint32 _itemsPerCycleNormal
uint32 GetConfigItemQualityAmount(AuctionQuality quality) const
void SetAHBotExcludes(const std::string &AHBotExcludes)
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)
AuctionEntryMap::iterator GetAuctionsEnd()
AuctionEntryMap::iterator GetAuctionsBegin()
Class used to access individual fields of database query result.
void setUInt32(uint8 index, uint32 value)
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
ObjectGuid::LowType owner
ObjectGuid::LowType itemGUIDLow