using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace YourNamespace {
public class YourClass: Core {
public static string GetPluginAuthor()
{
return "amazingnessn";
}
public static string GetPluginVersion()
{
return "1.0";
}
public static string GetPluginDescription()
{
return "Farming Bot - Auto gather/plant your crops with auto farm ID";
}
private Gps gps;
// ----------------------------------------------- if you have more/less # of farms, add/comment out what you need --------------------------------
private long farm1id;
private long farm2id;
private long farm3id;
private long farm4id;
private long farm5id;
private long farm6id;
private long farm7id;
// ----------------------------------------------- gps file location, must be under /Plugins/Farms unless you alter pathname here to fit your file -----------------------------------------------
string _gpsfile = "\\plugins\\Farming\\farming.db3"; // COMMENT OUT IF NOT USING GPS
public void MoveToFarm1()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm zero");
}
public void MoveToFarm2()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm first");
}
public void MoveToFarm3()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm second");
}
public void MoveToFarm4()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm third");
}
public void MoveToFarm5()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm fourth");
}
public void MoveToFarm6()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm fifth");
}
public void MoveToFarm7()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Myfarm sixth");
}
public void MoveToVendor()
{
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + _gpsfile);
gps.GpsMove("Seed Merchant");
}
public void GetFarmIds()
{
// ------------------------------------------------- Change farm names here --------------------------------------------------------
var farm1name = "Myfarm zero";
var farm2name = "Myfarm first";
var farm3name = "Myfarm second";
var farm4name = "Myfarm third";
var farm5name = "Myfarm fourth";
var farm6name = "Myfarm fifth";
var farm7name = "Myfarm sixth";
// Don't edit this if you don't know what it does :p
int p = 0;
long d = me.uniqId;
List<long> farmids = new List<long>();
List<string> farmnames = new List<string>();
List<Creature> farms = getCreatures().Where(x => x.type == BotTypes.Housing).ToList();
List<Creature> farms1 = farms.Where(x => x.ownerUniqId == d).ToList();
foreach(var y in farms) {
if (farms1.Count > 0) {
Housing plnt = farms1.Where(crt => crt.ownerUniqId==me.uniqId).First() as Housing;
farmids.Add(plnt.uniqHousingId);
farmnames.Add(plnt.name);
farms1.RemoveAt(0);
}
}
// -------------------------------------------------------------- add/remove (only change numbers) as needed. Keep number values consistent ------------------------------------------------------
foreach(var i in farmnames){
if (farmnames[p] == farm1name) { this.farm1id = farmids[p]; }
if (farmnames[p] == farm2name) { this.farm2id = farmids[p]; }
if (farmnames[p] == farm3name) { this.farm3id = farmids[p]; }
if (farmnames[p] == farm4name) { this.farm4id = farmids[p]; }
if (farmnames[p] == farm5name) { this.farm5id = farmids[p]; }
if (farmnames[p] == farm6name) { this.farm6id = farmids[p]; }
if (farmnames[p] == farm7name) { this.farm7id = farmids[p]; }
p++;
}
}
public void PluginRun() {
ClearLogs();
Log("Starting Farm Bot...");
GetFarmIds();
uint farm1id = (uint)this.farm1id;
uint farm2id = (uint)this.farm2id;
uint farm3id = (uint)this.farm3id;
uint farm4id = (uint)this.farm4id;
uint farm5id = (uint)this.farm5id;
uint farm6id = (uint)this.farm6id;
uint farm7id = (uint)this.farm7id;
// --------------------------------------- stops if under this much labor, change if desired---------------------------------------------------
int laborstop = 200;
// ------------------------------------- put farmID, seed, plant, collect strings here --------------------------------------
//label1 ( helpful if you change what you plant later )
var farm1seed = "Зерна кукурузы";
var farm1plant = "Кукуруза";
var farm1collect = "Gathering: Spend 1 Labor to gather materials.";
//label2
var farm2seed = "Зерна кукурузы";
var farm2plant = "Кукуруза";
var farm2collect = "Gathering: Spend 1 Labor to gather materials.";
//label3
var farm3seed = "Зерна кукурузы";
var farm3plant = "Кукуруза";
var farm3collect = "Gathering: Spend 1 Labor to gather materials.";
//label4
var farm4seed = "Зерна кукурузы";
var farm4plant = "Кукуруза";
var farm4collect = "Gathering: Spend 1 Labor to gather materials.";
//label5
var farm5seed = "Зерна кукурузы";
var farm5plant = "Кукуруза";
var farm5collect = "Gathering: Spend 1 Labor to gather materials.";
//label6
var farm6seed = "Зерна кукурузы";
var farm6plant = "Кукуруза";
var farm6collect = "Gathering: Spend 1 Labor to gather materials.";
//label7
var farm7seed = "Зерна кукурузы";
var farm7plant = "Кукуруза";
var farm7collect = "Gathering: Spend 1 Labor to gather materials.";
// ----------------------------------------- how many seeds to buy when you get low -----------------------------------------
var farm1seedcount = itemCount(farm1seed); var farm1seedbuy = 2000;
var farm2seedcount = itemCount(farm2seed); var farm2seedbuy = 2000;
var farm3seedcount = itemCount(farm3seed); var farm3seedbuy = 2000;
var farm4seedcount = itemCount(farm4seed); var farm4seedbuy = 2000;
var farm5seedcount = itemCount(farm5seed); var farm5seedbuy = 2000;
var farm6seedcount = itemCount(farm6seed); var farm6seedbuy = 2000;
var farm7seedcount = itemCount(farm7seed); var farm7seedbuy = 2000;
while (true) {
//Gather infos
if (gameState == GameState.Ingame){
//get Labor points
int labor = me.laborPoints;
//Start Doin Stuff
//if Labor > 200
if (labor > laborstop) {
// ------------------------------------ COMMENT OUT IF NOT USING GPS ---------------------------------------
if (farm1seedcount < 200 | farm2seedcount < 200) {
MoveToVendor(); //--
Thread.Sleep(2000); //--
if (farm1seedcount < (farm1seedbuy / 10)) {BuyItems(farm1seed, farm1seedbuy);} //--
if (farm2seedcount < (farm2seedbuy / 10)) {BuyItems(farm2seed, farm2seedbuy);} //--
if (farm3seedcount < (farm3seedbuy / 10)) {BuyItems(farm3seed, farm3seedbuy);} //--
if (farm4seedcount < (farm4seedbuy / 10)) {BuyItems(farm4seed, farm4seedbuy);} //--
if (farm5seedcount < (farm5seedbuy / 10)) {BuyItems(farm5seed, farm5seedbuy);} //--
if (farm6seedcount < (farm6seedbuy / 10)) {BuyItems(farm6seed, farm6seedbuy);} //--
if (farm7seedcount < (farm7seedbuy / 10)) {BuyItems(farm7seed, farm7seedbuy);} //--
Thread.Sleep(5000); //--
MoveToFarm1();
Thread.Sleep(5000); //--
} //--
// ----------------------------------------------------------------------------------------------------------
//add/remove farms here
//Plant farm 1
MoveToFarm1();
SetPlantMotionType(PlantMotionType.Standart); // change motion type if needed
CollectItemsAtFarm(farm1plant, farm1collect, farm1id);
CollectItemsAtFarm(farm1plant, farm1collect, farm1id);
CollectItemsAtFarm(farm1plant, farm1collect, farm1id);
PlantItemsAtFarm(farm1seed, farm1id);
//Plant farm 2
MoveToFarm2();
CollectItemsAtFarm(farm2plant, farm2collect, farm2id);
CollectItemsAtFarm(farm2plant, farm2collect, farm2id);
CollectItemsAtFarm(farm2plant, farm2collect, farm2id);
PlantItemsAtFarm(farm2seed, farm2id);
//Plant farm 3
MoveToFarm3();
CollectItemsAtFarm(farm3plant, farm3collect, farm3id);
CollectItemsAtFarm(farm3plant, farm3collect, farm3id);
CollectItemsAtFarm(farm3plant, farm3collect, farm3id);
PlantItemsAtFarm(farm3seed, farm3id);
//Plant farm 4
MoveToFarm4();
CollectItemsAtFarm(farm4plant, farm4collect, farm4id);
CollectItemsAtFarm(farm4plant, farm4collect, farm4id);
CollectItemsAtFarm(farm4plant, farm4collect, farm4id);
PlantItemsAtFarm(farm4seed, farm4id);
//Plant farm 5
MoveToFarm5();
CollectItemsAtFarm(farm5plant, farm5collect, farm5id);
CollectItemsAtFarm(farm5plant, farm5collect, farm5id);
CollectItemsAtFarm(farm5plant, farm5collect, farm5id);
PlantItemsAtFarm(farm5seed, farm5id);
//Plant farm 6
MoveToFarm6();
CollectItemsAtFarm(farm6plant, farm6collect, farm6id);
CollectItemsAtFarm(farm6plant, farm6collect, farm6id);
CollectItemsAtFarm(farm6plant, farm6collect, farm6id);
PlantItemsAtFarm(farm6seed, farm6id);
//Plant farm 7
MoveToFarm7();
CollectItemsAtFarm(farm7plant, farm7collect, farm7id);
CollectItemsAtFarm(farm7plant, farm7collect, farm7id);
CollectItemsAtFarm(farm7plant, farm7collect, farm7id);
PlantItemsAtFarm(farm7seed, farm7id);
//if Labor < 200 wait
} else {
PlantItemsAtFarm(farm1seed, farm1id);
PlantItemsAtFarm(farm2seed, farm2id);
PlantItemsAtFarm(farm3seed, farm3id);
PlantItemsAtFarm(farm4seed, farm4id);
PlantItemsAtFarm(farm5seed, farm5id);
PlantItemsAtFarm(farm6seed, farm6id);
PlantItemsAtFarm(farm7seed, farm7id);
Log("Labor under 200, waiting to regen");
}
//Generate random time between 3-5 minutes
Random random = new Random();
decimal mseconds = random.Next(180, 300) * 1000;
decimal seconds = mseconds / 1000;
decimal minutes = seconds / 60;
Log("Waiting for " + minutes.ToString() + " minutes");
//sleep for random time
Thread.Sleep((int)mseconds);
}
}
}
//Call on plugin stop
public void PluginStop()
{ Log("Plugin Stopped...");
}
}
}