Open Auction House
Open Auction House
This is an open source auction house plugin written as alternative to the paid auction house sniper plugin.
The bot/plugin will bid up to the amount you defined with the maxprice parameter of the buyFromAuctionHouse method. Additionally you can tweak the 3 variables on top of the plugin to change the bidding behavior (overbidamount, waitSecondsForAuctionEnd, msToBidBeforeAuctionEnd).
After pasting the code to the plugin editor you need to add a line, calling the buyFromAuctionHouse method, for every item you want to go through.
version 2.3
log
Donate with Paypal
Open Auction House
This is an open source auction house plugin written as alternative to the paid auction house sniper plugin.
The bot/plugin will bid up to the amount you defined with the maxprice parameter of the buyFromAuctionHouse method. Additionally you can tweak the 3 variables on top of the plugin to change the bidding behavior (overbidamount, waitSecondsForAuctionEnd, msToBidBeforeAuctionEnd).
After pasting the code to the plugin editor you need to add a line, calling the buyFromAuctionHouse method, for every item you want to go through.
version 2.3
Code:
using System;
using System.Drawing;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace OpenAuctionHouse
{
public class OpenAuctionHouse : Core
{
private int overbidamount = 40; // attempt to bid 40c above current bid
private int waitSecondsForAuctionEnd = 180; // if a bid item is at < 3 minutes wait for it to end
private int msToBidBeforeAuctionEnd = 5000; // wait until timeleft = 5 seconds until bidding myself
private Random r = new Random();
public static string GetPluginAuthor()
{
return "lypnn";
}
public static string GetPluginVersion()
{
return "2.3.0.0";
}
public static string GetPluginDescription()
{
return "Open Auction House";
}
//Call on plugin start
public void PluginRun()
{
try
{
Log(DateTime.Now.ToShortTimeString() + " > ----- Open Auction House started -----");
while (true)
{
buyFromAuctionHouse("Lotus", 80, 2); // 80 copper per item, minimum amount 2
buyFromAuctionHouse("Azalea", 50, 2); // 50 copper per item, minimum amount 2
// add more items here
}
}
catch (Exception e)
{
if (e.GetType() != typeof(System.Threading.ThreadAbortException))
{
Log(DateTime.Now.ToShortTimeString() +" ERROR " +GetLastError().ToString() +" " +e.GetType().ToString() +" " +e.StackTrace);
Log(e.Message);
}
}
}
//Call on plugin stop
public void PluginStop()
{
Log(DateTime.Now.ToShortTimeString() + " > ----- Open Auction House stopped -----");
}
////////// no variables to edit below this line /////////////
//buyout an auction house item
public void buyFromAuctionHouse(string mySearchText, int maxprice, int minamount) // maxprice per item in copper, 1g = 1 00 00 copper
{
AuctionRequestParams req = new AuctionRequestParams(AuctionCategory.Off, 0, 0, mySearchText, false, ItemGrade.Common, AuctionSortType.Time, SortOrder.Asc);
int pip; // per item price
bool bidreturn;
List<AuctionItem> items = getAuctionBuyList(req, 0);
if(items != null)
{
foreach (AuctionItem item in items)
{
if (!item.item.name.Equals(mySearchText)) // auctionitem item name must match the searchText
continue;
if (Convert.ToInt32(item.time) > waitSecondsForAuctionEnd)
{
pip = (int)item.buyBackPrice / item.item.count;
if (item.item.count < minamount || item.buyBackPrice == 0 || pip > maxprice)
continue;
if (me.goldCount >= item.buyBackPrice)
{
Thread.Sleep(100 + r.Next(150));
bidreturn = item.MakeAuctionBid(item.buyBackPrice);
Thread.Sleep(1000 + r.Next(500));
if (bidreturn)
Log(DateTime.Now.ToShortTimeString() + " > Attempting to BUYOUT " + item.item.count + " " + item.item.name + " with per item price " + pip.ToString() + " ... succeeded !");
else
Log(DateTime.Now.ToShortTimeString() + " > Attempting to BUYOUT " + item.item.count + " " + item.item.name + " with per item price " + pip.ToString() + " ... failed.");
}
else
Log(DateTime.Now.ToShortTimeString() + " > not enough gold to buyout " + item.item.count + " " + item.item.name + " for " + item.buyBackPrice);
}
else // auction items time is nearly over, check if we want to bid on it
{
pip = (item.bidMoney != 0 ? item.bidMoney : item.sellPrice) / item.item.count;
if (pip + overbidamount <= maxprice && item.item.count >= minamount) // check if this is an item below maxprice
{
bidOnAuctionHouse(req, item.uniqId, maxprice);
break;
}
}
}
}
else
{
Log(DateTime.Now.ToShortTimeString() + " > " +GetLastError().ToString() +" Error ... will try again");
}
Thread.Sleep(2000 + r.Next(3000)); // Random sleep 2-5s
}
public void bidOnAuctionHouse(AuctionRequestParams req, ulong itemId, int maxprice)
{
int pip; // per item price
int myBidAmount;
int sleepTime;
bool bidreturn;
List<AuctionItem> items = getAuctionBuyList(req, 9);
foreach (AuctionItem item in items)
{
if (item.uniqId == itemId)
{
pip = (item.bidMoney != 0 ? item.bidMoney : item.sellPrice) / item.item.count;
if (pip + overbidamount <= maxprice)
{
sleepTime = Convert.ToInt32(item.time) * 1000 - Convert.ToInt32(r.Next(500)) - msToBidBeforeAuctionEnd;
Log(DateTime.Now.ToShortTimeString() + " > waiting " + ((int)sleepTime / 1000).ToString() + " seconds to attempt a last-second-bid on " + item.item.count + " " + item.item.name + " (current bid price per item: " + pip + " maxprice: " +maxprice +")");
if (sleepTime > 100)
Thread.Sleep(sleepTime);
break;
}
else
return; // the item has become too expensive
}
}
items = getAuctionBuyList(req, 9);
foreach (AuctionItem item in items)
{
if (item.uniqId == itemId)
{
pip = (item.bidMoney != 0 ? item.bidMoney : item.sellPrice) / item.item.count;
if (pip + overbidamount <= maxprice)
{
myBidAmount = (item.bidMoney != 0 ? item.bidMoney : item.sellPrice) + overbidamount;
if (me.goldCount >= myBidAmount)
{
bidreturn = item.MakeAuctionBid(myBidAmount);
Thread.Sleep(1000 + r.Next(500));
if (bidreturn)
Log(DateTime.Now.ToShortTimeString() + " > Successfully sent a BID on " + item.item.count + " " + item.item.name + " with " + myBidAmount + " (pip: " + (myBidAmount/item.item.count) + ")");
else
Log(DateTime.Now.ToShortTimeString() + " > Failed to send a BID on " + item.item.count + " " + item.item.name + " with " + myBidAmount + " (pip: " +(myBidAmount/item.item.count) +")");
}
else
Log(DateTime.Now.ToShortTimeString() + " > not enough gold to bid on " + item.item.count + " " + item.item.name + " with " + myBidAmount);
}
else
return; // the item has become too expensive
}
}
}
}
}
log
Code:
19.10. v2.3 ResponseTimout fix after AB update
7.10. v2.2 fixed bidding sellPrice and other bugs
1.10. v2.1 bugfix release
30. 9. v2 major release with bidding support
29. 9. v1 initial release with buyout support
Donate with Paypal
Last edited: