character just stands in place and dashes till out of mana, then continues to stand still.
Code:
using System;
using System.Drawing;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Text;
using System.ComponentModel;
namespace DefaultNameSpace{
public class DefaultClass : Core
{
public static string GetPluginAuthor()
{
return "Gajda";
}
public static string GetPluginVersion()
{
return "1.3.0";
}
public static string GetPluginDescription()
{
return "mining bot";
}
private Gps gps;
//Call on plugin start
public void PluginRun()
{
ClearLogs();
Log(DateTime.Now.ToLongTimeString() + " : Start");
gps = new Gps(this);
gps.LoadDataBase(Application.StartupPath + "\\Plugins\\Mining\\path.db3");
DoMineRun();
}
public List<DoodadObject> Sort(List<DoodadObject> tempitems)
{
Log(DateTime.Now.ToLongTimeString() + " : I see " + tempitems.Count + " items");
List<DoodadObject> items = new List<DoodadObject>();
for(int i=0;i<tempitems.Count;i++)
{
if(tempitems[i].name.Contains("ein") && (tempitems[i].dist(me)<20) &! tempitems[i].name.Contains("Remnant") )
items.Add(tempitems[i]);
}
Log(DateTime.Now.ToLongTimeString() + " : I see " + items.Count + " usable item(s)");
bool needSort = true;
if(items.Count<2)
needSort = false;
int loop = 1;
while(needSort)
{
Log(DateTime.Now.ToLongTimeString() + " : sorting run " + loop);
bool changed = false;
for(int i=0;i<items.Count-1;i++)
{
if(items[i].dist(me)>items[i+1].dist(me))
{
var tempItem = items[i];
items[i]=items[i+1];
items[i+1]=tempItem;
changed = true;
}
}
if(changed==false)
{
needSort = false;
}
loop++ ;
}
return items;
}
public void DoMineRun()
{
// i<11 is for route with 10 mining spots
for(int i=1;i<55;i++)
{
CheckAggro();
Log(DateTime.Now.ToLongTimeString() + " : movint to point " + i.ToString());
UseSkill("Dash");
while(!gps.GpsMove(i.ToString()))
{
Thread.Sleep(100);
}
Log(DateTime.Now.ToLongTimeString() + " : at point " + i.ToString());
CheckAggro();
while(Mine())
{
Thread.Sleep(100);
}
}
CheckAggro();
Log(DateTime.Now.ToLongTimeString() + " : moving to start");
gps.GpsMove("1");
CheckAggro();
Random rnd = new Random();
int wait = rnd.Next(150,210);
wait = wait*1000;
Log(DateTime.Now.ToLongTimeString() + " : wait " + wait.ToString());
Thread.Sleep(wait);
CheckAggro();
DoMineRun();
}
public bool Mine()
{
Log(DateTime.Now.ToLongTimeString() + " : looking for veins");
bool mined = false;
List<DoodadObject> items = Sort(getDoodads());
Log(DateTime.Now.ToLongTimeString() + " : founded " + items.Count);
foreach(var doodad in items)
{
Log(DateTime.Now.ToLongTimeString() + " : " + doodad.name + " " + doodad.dist(me));
}
foreach(var doodad in items)
{
if(doodad.name.Contains("ein") && (doodad.dist(me)<20) &! doodad.name.Contains("Remnant") )
{
mined = true;
Log(DateTime.Now.ToLongTimeString() + " : " + doodad.name + " " + doodad.id.ToString() + " " + doodad.dist(me));
var skills = doodad.getUseSkills();
double doodadCastDist = 0;
if (skills.Count > 0)
{
if (doodadCastDist == 0)
{
Thread.Sleep(500);
Log(DateTime.Now.ToLongTimeString() + " : mining");
TurnDirectly(doodad);
UseDoodadSkill(skills[0].id, doodad, true);
}
Thread.Sleep(1000);
}
}
}
return mined;
}
public void CheckAggro()
{
Log(DateTime.Now.ToLongTimeString() + " : CheckAggro");
if(getAggroMobs().Count > 0)
{
Log(DateTime.Now.ToLongTimeString() + " : " + getAggroMobs().Count.ToString());
foreach(var obj in getAggroMobs())
{
Log(DateTime.Now.ToLongTimeString() + " : " + obj.name);
SetTarget(obj);
TurnDirectly(me.target);
Log(DateTime.Now.ToLongTimeString() + " : fighting");
while(obj.isAlive())
{
TurnDirectly(me.target);
if(skillCooldown("Freezing Arrow")==0)
{
Log(DateTime.Now.ToLongTimeString() + " Freezing arrow");
UseSkill("Freezing Arrow", false);
Thread.Sleep(100);
}
else
{
if(skillCooldown("Crippling Mire")==0)
{
Log(DateTime.Now.ToLongTimeString() + " Crippling Mire");
UseSkill("Crippling Mire",false);
Thread.Sleep(100);
}
else
{
if(skillCooldown("Flamebolt")==0)
{
Log(DateTime.Now.ToLongTimeString() + " Flame Bolt");
UseSkill("Flamebolt",false);
Thread.Sleep(100);
}
}
}
if(!obj.inFight)
return;
}
Log(DateTime.Now.ToLongTimeString() + " : fight is over");
}
}
}
public void PluginStop()
{
}
}
}
Last edited: