AHBot - Clean up some debug messages, fix a couple of possible conditions where performance could be affected, shorten some code to cut down on future typos - Even though your idea wasn't valid, it lead to some of this optimization, so, thanks MrSmite
--HG-- branch : trunk
This commit is contained in:
+56
-157
@@ -87,11 +87,32 @@ void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config)
|
|||||||
|
|
||||||
AuctionHouseEntry const* ahEntry = auctionmgr.GetAuctionHouseEntry(config->GetAHFID());
|
AuctionHouseEntry const* ahEntry = auctionmgr.GetAuctionHouseEntry(config->GetAHFID());
|
||||||
AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap(config->GetAHFID());
|
AuctionHouseObject* auctionHouse = auctionmgr.GetAuctionsMap(config->GetAHFID());
|
||||||
uint32 items = 0;
|
|
||||||
uint32 minItems = config->GetMinItems();
|
uint32 minItems = config->GetMinItems();
|
||||||
uint32 maxItems = config->GetMaxItems();
|
uint32 maxItems = config->GetMaxItems();
|
||||||
uint32 auctions = auctionHouse->Getcount();
|
uint32 auctions = auctionHouse->Getcount();
|
||||||
|
|
||||||
|
if (auctions >= minItems)
|
||||||
|
{
|
||||||
|
//if (debug_Out) sLog.outError("AHSeller: Auctions above minimum");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (auctions >= maxItems)
|
||||||
|
{
|
||||||
|
//if (debug_Out) sLog.outError("AHSeller: Auctions at or above maximum");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 items = 0;
|
||||||
|
if ((maxItems - auctions) > ItemsPerCycle)
|
||||||
|
items = ItemsPerCycle;
|
||||||
|
else
|
||||||
|
items = (maxItems - auctions);
|
||||||
|
|
||||||
|
if (debug_Out) sLog.outError("AHSeller: Adding %u Auctions", items);
|
||||||
|
|
||||||
uint32 AuctioneerGUID = 0;
|
uint32 AuctioneerGUID = 0;
|
||||||
|
|
||||||
switch (config->GetAHID())
|
switch (config->GetAHID())
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
@@ -109,19 +130,8 @@ void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auctions >= minItems)
|
if (debug_Out) sLog.outError("AHSeller: Current Auctineer GUID is %u", AuctioneerGUID);
|
||||||
{
|
|
||||||
if (debug_Out) sLog.outError("AHSeller: Auctions above minimum");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (auctions <= maxItems)
|
|
||||||
{
|
|
||||||
if ((maxItems - auctions) > ItemsPerCycle)
|
|
||||||
items = ItemsPerCycle;
|
|
||||||
else
|
|
||||||
items = (maxItems - auctions);
|
|
||||||
}
|
|
||||||
uint32 greyTGcount = config->GetPercents(AHB_GREY_TG);
|
uint32 greyTGcount = config->GetPercents(AHB_GREY_TG);
|
||||||
uint32 whiteTGcount = config->GetPercents(AHB_WHITE_TG);
|
uint32 whiteTGcount = config->GetPercents(AHB_WHITE_TG);
|
||||||
uint32 greenTGcount = config->GetPercents(AHB_GREEN_TG);
|
uint32 greenTGcount = config->GetPercents(AHB_GREEN_TG);
|
||||||
@@ -370,78 +380,22 @@ void AuctionHouseBot::addNewAuctions(Player *AHBplayer, AHBConfig *config)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (prototype->Quality)
|
if ((prototype->Quality > -1) && (prototype->Quality < 7))
|
||||||
{
|
{
|
||||||
case AHB_GREY:
|
if (config->GetMaxStack(prototype->Quality) > 1 && item->GetMaxStackCount() > 1)
|
||||||
if (config->GetMaxStack(AHB_GREY) > 1 && item->GetMaxStackCount() > 1)
|
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(prototype->Quality)));
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_GREY)));
|
|
||||||
else
|
else
|
||||||
stackCount = 1;
|
stackCount = 1;
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_GREY), config->GetMaxPrice(AHB_GREY));
|
buyoutPrice *= urand(config->GetMinPrice(prototype->Quality), config->GetMaxPrice(prototype->Quality));
|
||||||
buyoutPrice /= 100;
|
buyoutPrice /= 100;
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_GREY), config->GetMaxBidPrice(AHB_GREY));
|
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(prototype->Quality), config->GetMaxBidPrice(prototype->Quality));
|
||||||
bidPrice /= 100;
|
bidPrice /= 100;
|
||||||
break;
|
}
|
||||||
case AHB_WHITE:
|
else
|
||||||
if (config->GetMaxStack(AHB_WHITE) > 1 && item->GetMaxStackCount() > 1)
|
{
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_WHITE)));
|
// quality is something it shouldn't be, let's get out of here
|
||||||
else
|
if (debug_Out) sLog.outError("AHBuyer: Quality %u not Supported", prototype->Quality);
|
||||||
stackCount = 1;
|
continue;
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_WHITE), config->GetMaxPrice(AHB_WHITE));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_WHITE), config->GetMaxBidPrice(AHB_WHITE));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
case AHB_GREEN:
|
|
||||||
if (config->GetMaxStack(AHB_GREEN) > 1 && item->GetMaxStackCount() > 1)
|
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_GREEN)));
|
|
||||||
else
|
|
||||||
stackCount = 1;
|
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_GREEN), config->GetMaxPrice(AHB_GREEN));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_GREEN), config->GetMaxBidPrice(AHB_GREEN));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
case AHB_BLUE:
|
|
||||||
if (config->GetMaxStack(AHB_BLUE) > 1 && item->GetMaxStackCount() > 1)
|
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_BLUE)));
|
|
||||||
else
|
|
||||||
stackCount = 1;
|
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_BLUE), config->GetMaxPrice(AHB_BLUE));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_BLUE), config->GetMaxBidPrice(AHB_BLUE));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
case AHB_PURPLE:
|
|
||||||
if (config->GetMaxStack(AHB_PURPLE) > 1 && item->GetMaxStackCount() > 1)
|
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_PURPLE)));
|
|
||||||
else
|
|
||||||
stackCount = 1;
|
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_PURPLE), config->GetMaxPrice(AHB_PURPLE));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_PURPLE), config->GetMaxBidPrice(AHB_PURPLE));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
case AHB_ORANGE:
|
|
||||||
if (config->GetMaxStack(AHB_ORANGE) > 1 && item->GetMaxStackCount() > 1)
|
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_ORANGE)));
|
|
||||||
else
|
|
||||||
stackCount = 1;
|
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_ORANGE), config->GetMaxPrice(AHB_ORANGE));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_ORANGE), config->GetMaxBidPrice(AHB_ORANGE));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
case AHB_YELLOW:
|
|
||||||
if (config->GetMaxStack(AHB_YELLOW) > 1 && item->GetMaxStackCount() > 1)
|
|
||||||
stackCount = urand(1, minValue(item->GetMaxStackCount(), config->GetMaxStack(AHB_YELLOW)));
|
|
||||||
else
|
|
||||||
stackCount = 1;
|
|
||||||
buyoutPrice *= urand(config->GetMinPrice(AHB_YELLOW), config->GetMaxPrice(AHB_YELLOW));
|
|
||||||
buyoutPrice /= 100;
|
|
||||||
bidPrice = buyoutPrice * urand(config->GetMinBidPrice(AHB_YELLOW), config->GetMaxBidPrice(AHB_YELLOW));
|
|
||||||
bidPrice /= 100;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 etime = urand(1,3);
|
uint32 etime = urand(1,3);
|
||||||
@@ -551,23 +505,23 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
// if it is, we skip this iteration.
|
// if it is, we skip this iteration.
|
||||||
if (itr->second->owner == AHBplayerGUID)
|
if (itr->second->owner == AHBplayerGUID)
|
||||||
{
|
{
|
||||||
if (debug_Out) sLog.outError("AHBuyer: I own this item.");
|
//if (debug_Out) sLog.outError("AHBuyer: I own this item.");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Check that we haven't bidded in this auction already.
|
// Check that we haven't bidded in this auction already.
|
||||||
if (itr->second->bidder != AHBplayerGUID)
|
if (itr->second->bidder != AHBplayerGUID)
|
||||||
{
|
{
|
||||||
if (debug_Out) sLog.outError("AHBuyer: I have not bid on this item.");
|
|
||||||
uint32 tmpdata = itr->second->Id;
|
uint32 tmpdata = itr->second->Id;
|
||||||
possibleBids.push_back(tmpdata);
|
possibleBids.push_back(tmpdata);
|
||||||
|
if (debug_Out) sLog.outError("AHBuyer: I have not bid on %u"), itr->second->Id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (debug_Out) sLog.outError("AHBuyer: I have bid on this item.");
|
if (debug_Out) sLog.outError("AHBuyer: I have bid on %u"), itr->second->Id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32 count = 1;count < config->GetBidsPerInterval();++count)
|
for (uint32 count = 1;count <= config->GetBidsPerInterval();++count)
|
||||||
{
|
{
|
||||||
// Do we have anything to bid? If not, stop here.
|
// Do we have anything to bid? If not, stop here.
|
||||||
if (possibleBids.empty())
|
if (possibleBids.empty())
|
||||||
@@ -598,7 +552,7 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
Item *pItem = auctionmgr.GetAItem(auction->item_guidlow);
|
Item *pItem = auctionmgr.GetAItem(auction->item_guidlow);
|
||||||
if (!pItem)
|
if (!pItem)
|
||||||
{
|
{
|
||||||
if (debug_Out) sLog.outError("AHBuyer: Item doesn't exist, perhaps bought already?");
|
if (debug_Out) sLog.outError("AHBuyer: Item %u doesn't exist, perhaps bought already?", auction->item_guidlow);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -608,15 +562,9 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
// check which price we have to use, startbid or if it is bidded already
|
// check which price we have to use, startbid or if it is bidded already
|
||||||
uint32 currentprice;
|
uint32 currentprice;
|
||||||
if (auction->bid)
|
if (auction->bid)
|
||||||
{
|
|
||||||
currentprice = auction->bid;
|
currentprice = auction->bid;
|
||||||
if (debug_Out) sLog.outError("AHBuyer: Current Price: %u", auction->bid);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
currentprice = auction->startbid;
|
currentprice = auction->startbid;
|
||||||
if (debug_Out) sLog.outError("AHBuyer: Current Price: %u", auction->startbid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (debug_Out)
|
if (debug_Out)
|
||||||
{
|
{
|
||||||
@@ -645,13 +593,10 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Prepare portion from maximum bid
|
// Prepare portion from maximum bid
|
||||||
uint32 tmprate2 = urand(0, 100);
|
double bidrate = static_cast<double>(urand(1, 100)) / 100;
|
||||||
double tmprate = static_cast<double>(tmprate2);
|
|
||||||
double bidrate = tmprate / 100;
|
|
||||||
long double bidMax = 0;
|
long double bidMax = 0;
|
||||||
if (debug_Out)
|
if (debug_Out)
|
||||||
{
|
{
|
||||||
sLog.outError("AHBuyer: tmprate: %f", tmprate);
|
|
||||||
sLog.outError("AHBuyer: bidrate: %f", bidrate);
|
sLog.outError("AHBuyer: bidrate: %f", bidrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -660,83 +605,37 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
switch (prototype->Quality)
|
if ((prototype->Quality > -1) && (prototype->Quality < 7))
|
||||||
|
{
|
||||||
|
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality))
|
||||||
|
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREY))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREY);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_WHITE))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_WHITE);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREEN))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREEN);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_BLUE))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_BLUE);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_PURPLE))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_PURPLE);
|
|
||||||
case 5:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_ORANGE))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_ORANGE);
|
|
||||||
case 6:
|
|
||||||
if (currentprice < prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_YELLOW))
|
|
||||||
bidMax = prototype->SellPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_YELLOW);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// quality is something it shouldn't be, let's get out of here
|
// quality is something it shouldn't be, let's get out of here
|
||||||
if (debug_Out) sLog.outError("AHBuyer: bidMax(fail): %f", bidMax);
|
if (debug_Out) sLog.outError("AHBuyer: Quality %u not Supported", prototype->Quality);
|
||||||
continue;
|
continue;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
switch (prototype->Quality)
|
if ((prototype->Quality > -1) && (prototype->Quality < 7))
|
||||||
|
{
|
||||||
|
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality))
|
||||||
|
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(prototype->Quality);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREY))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREY);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_WHITE))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_WHITE);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREEN))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_GREEN);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_BLUE))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_BLUE);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_PURPLE))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_PURPLE);
|
|
||||||
case 5:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_ORANGE))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_ORANGE);
|
|
||||||
case 6:
|
|
||||||
if (currentprice < prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_YELLOW))
|
|
||||||
bidMax = prototype->BuyPrice * pItem->GetCount() * config->GetBuyerPrice(AHB_YELLOW);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// quality is something it shouldn't be, let's get out of here
|
// quality is something it shouldn't be, let's get out of here
|
||||||
if (debug_Out) sLog.outError("AHBuyer: bidMax(fail): %f", bidMax);
|
if (debug_Out) sLog.outError("AHBuyer: Quality %u not Supported", prototype->Quality);
|
||||||
continue;
|
continue;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug_Out) sLog.outError("AHBuyer: bidMax(succeed): %f", bidMax);
|
if (debug_Out) sLog.outError("AHBuyer: bidMax: %f", bidMax);
|
||||||
|
|
||||||
// check some special items, and do recalculating to their prices
|
// check some special items, and do recalculating to their prices
|
||||||
switch (prototype->Class)
|
switch (prototype->Class)
|
||||||
@@ -762,8 +661,8 @@ void AuctionHouseBot::addNewAuctionBuyerBotBid(Player *AHBplayer, AHBConfig *con
|
|||||||
uint32 bidprice = static_cast<uint32>(bidvalue);
|
uint32 bidprice = static_cast<uint32>(bidvalue);
|
||||||
if (debug_Out)
|
if (debug_Out)
|
||||||
{
|
{
|
||||||
sLog.outError("AHBuyer: bidprice: %u", bidprice);
|
|
||||||
sLog.outError("AHBuyer: bidvalue: %f", bidvalue);
|
sLog.outError("AHBuyer: bidvalue: %f", bidvalue);
|
||||||
|
sLog.outError("AHBuyer: bidprice: %u", bidprice);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check our bid is high enough to be valid. If not, correct it to minimum.
|
// Check our bid is high enough to be valid. If not, correct it to minimum.
|
||||||
|
|||||||
Reference in New Issue
Block a user