is a plugin that does nt autorun
PHP:
using System;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace YourNamespace
{
public class YourClass : Core
{
public static string GetPluginAuthor()
{
return "ArcheBuddy";
}
public static string GetPluginVersion()
{
return "1.0";
}
public static string GetPluginDescription()
{
return "Simple mobs farm";
}
//Try to find best mob in farm zone.
public Creature GetBestNearestMob(Zone zone)
{
Creature mob = null;
double dist = 999999;
foreach (var obj in getCreatures())
{
//If creature Npc and we can attack him and creature alive and distance to this creature less than other and creature have 100% hp or creature want to kill out character.
if (obj.type == BotTypes.Npc && isAttackable(obj) && (obj.firstHitter == null || obj.firstHitter == me) && isAlive(obj) && me.dist(obj) < dist && zone.ObjInZone(obj)
&& (hpp(obj) == 100 || obj.aggroTarget == me))
{
mob = obj;
dist = me.dist(obj);
}
}
return mob;
}
//Cancel skill if mob which we want to kill already attacked by another player.
public void CancelAttacksOnAnothersMobs()
{
while (true)
{
if (me.isCasting && me.target != null && me.target.firstHitter != null && me.target.firstHitter != me)
CancelSkill();
Thread.Sleep(100);
}
}
//Check our buffs
public void CheckBuffs()
{
//притвориться мертвым
if (mpp() < 55 && getAggroMobs().Count() == 0)
{
CancelTarget();
Thread.Sleep(1000);
UseSkill("Медитация");
//skill used, we on the ground
//while ((mpp() < 99) && isAlive() && GetGroupStatus("autoexp")) //&& getAggroMobs().Count() == 0 && GetGroupStatus("autoexp")
Thread.Sleep(1000); //just waiting, while condition true. mpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
}
//притвориться мертвым
if (mpp() < 15)
{
CancelTarget();
Thread.Sleep(1000);
UseSkill("Имитация смерти");
//skill used, we on the ground
//while ((mpp() < 99) && isAlive() && GetGroupStatus("autoexp")) //&& getAggroMobs().Count() == 0 && GetGroupStatus("autoexp")
Thread.Sleep(1000); //just waiting, while condition true. mpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
}
//var m = getMount();
//if (m == null)
// UseItem("Рыжий камышовый кот"); // юзаем маунта
//Thread.Sleep(1000);
//Thread.Sleep(2000);
//
// if (buffTime("Благословение божества II") == 0 && skillCooldown("Просвещение") == 0)
// UseSkillAndWait("Просвещение", true);
//if (buffTime("Гимн мудрости III") == 0 && skillCooldown("Гимн мудрости") == 0)
// UseSkillAndWait("Гимн мудрости", true);
//if (buffTime("Благословение") == 0 && skillCooldown("Жертвенный огонь") == 0)
//UseSkillAndWait("Жертвенный огонь", true);
//if (buffTime("Дар жизни") == 0 && hpp() < 85)
// UseSkillAndWait("Дар жизни", true);
//if (hpp() < 70)
// UseSkillAndWait("Свет и тьма", true);
if (buffTime("Магический щит V") == 0 && skillCooldown("Магический щит") == 0 && getAggroMobs().Count() == 0)
UseSkillAndWait("Магический щит", true);
}
public void UseSkillAndWait(string skillName, bool selfTarget = false)
{
//wait cooldowns first, before we try to cast skill
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(50);
if (!UseSkill(skillName, true, selfTarget))
{
if (me.target != null && GetLastError() == LastError.NoLineOfSight)
{
//No line of sight, try come to target.
if (dist(me.target) <= 5)
ComeTo(me.target, 2);
else if (dist(me.target) <= 10)
ComeTo(me.target, 3);
else if (dist(me.target) < 20)
ComeTo(me.target, 8);
else
ComeTo(me.target, 8);
}
}
//wait cooldown again, after we start cast skill
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(50);
}
public void PluginRun()
{
new Task(() => { CancelAttacksOnAnothersMobs(); }).Start(); //Starting new thread
RoundZone zone = new RoundZone(me.X, me.Y, 90); //Make new zone where we will farm. Its circle with center where your character stand at this moment with 80m radius.
// SetGroupStatus("autoexp", true); //Add checkbox to our character widget
while (true)
{
if (!me.isAlive())
//if(!isAlive())
{
Log(DateTime.Now + " I`m die");
while(me.resurrectionWaitingTime>0)
Thread.Sleep(100);
Thread.Sleep(3000);
ResToRespoint();
Thread.Sleep(70000);
RestoreExp();
Thread.Sleep(2000);;
// UseItem("Горный лев"); // юзаем маунта
//Thread.Sleep(2000);
//var m = getMount();
//if (m != null)
//SitToMount();
//StandFromMount() //слезть с маунта
//Gps gps = new Gps(this);
// gps.LoadDataBase(Application.StartupPath + "\\plugins\\SystemGrinder\\SystemFarmPath.db3");
// львы
//MoveTo(26217.97, 9423.32, 745.33);
//MoveTo(26149.78, 9448.55, 748.31);
//MoveTo(26166.54, 9474.39, 756.74);
//MoveTo(26239.41, 9503.15, 771.47);
//MoveTo(26265.77, 9513.78, 777.09);
//MoveTo(26265.88, 9526.27, 779.54);
//козлы
// MoveTo(25568.88, 9619.63, 693.66);
// MoveTo(25648.37, 9646.35, 697.69);
// MoveTo(25716.04, 9662.19, 699.66);
// MoveTo(25771.01, 9727.59, 700.93);
// MoveTo(25754.69, 9847.06, 700.93);
// MoveTo(25743.47, 9915.52, 700.94);
// MoveTo(25667.36, 9950.31, 700.93);
// MoveTo(25637.40, 9984.65, 700.94);
// MoveTo(25529.44, 9985.49, 700.56);
//MoveTo(25489.51, 10036.43, 701.08);
//MoveTo(25503.90, 10075.31, 711.36);
//MoveTo(25568.92, 10099.76, 749.39);
//MoveTo(25614.12, 10117.66, 776.51);
//MoveTo(25635.11, 10158.96, 803.61);
//MoveTo(25657.49, 10163.10, 814.63);
//MoveTo(25668.38, 10127.25, 825.82);
//MoveTo(25699.49, 10133.25, 835.62);
//MoveTo(25695.64, 10198.00, 859.73);
//MoveTo(25628.64, 10218.99, 862.52);
// саванны кабанчики, лазутчики
//MoveTo(25056.02, 6681.51, 334.64);
//MoveTo(24913.72, 6713.51, 328.22);
//MoveTo(24829.05, 6708.52, 323.30);
//MoveTo(24811.58, 6660.49, 321.37);
//саванны кабанчики, лазутчики со стороны края мира
//MoveTo(25051.02, 6675.31, 334.73);
//MoveTo(24959.40, 6489.35, 352.15);
//MoveTo(24818.24, 6492.56, 348.43);
//MoveTo(24819.17, 6526.04, 340.52);
//Север, справа мобы
//MoveTo(19541.65, 26891.83, 132.15);
//MoveTo(19567.71, 27120.89, 131.46);
//MoveTo(19470.46, 27286.98, 134.54);
//MoveTo(19468.45, 27371.18, 154.22);
// MoveTo(19468.99, 27430.91, 158.84);
//MoveTo(19506.79, 27448.90, 133.94);
//дозорные_саванна
//MoveTo(25065.92, 6681.01, 335.08);
//MoveTo(25153.32, 6812.17, 339.93);
//MoveTo(25150.63, 6883.23, 347.94);
//вараны саванна
//MoveTo(25069.93, 6687.10, 334.31);
//MoveTo(25174.78, 6738.21, 335.83);
//MoveTo(25331.34, 6728.75, 344.03);
//MoveTo(25322.32, 6692.11, 343.95);
//рокочущие перевалы, големы
MoveTo(25946.83, 8808.17, 645.79);
MoveTo(25948.54, 8838.16, 644.96);
MoveTo(25963.31, 8863.05, 644.42);
//MoveTo();
//MoveTo();
//MoveTo();
//MoveTo();
//MoveTo();
//MoveTo();
}
//If autoexp checkbox enabled in widget and our character alive 25345.87, 6633.74, 347.45
if (me.isAlive()) //GetGroupStatus("autoexp") &&
{
CheckBuffs();
Creature bestMob = null;
//if we have enouth mp and hp, or mobs want to kill us - try to find bestMob.
if ((mpp() > 5 && hpp() > 65) || getAggroMobs().Count > 0)
bestMob = GetBestNearestMob(zone);
//if mob exists
if (bestMob != null)
{
try
{
//while this mob alive and our character alive and checkbox in widget enabled
while (bestMob != null && isAlive(bestMob) && isExists(bestMob) && isAlive()) // && GetGroupStatus("autoexp")
{
//if another player attack this mob before our character.
if (bestMob.aggroTarget != me && bestMob.firstHitter != null && bestMob.firstHitter != me)
{
bestMob = null;
break;
}
//if we still dont attack our best mob, but another mob want to kill us
if (bestMob.firstHitter == null && getAggroMobs().Count > 0 && bestMob != GetBestNearestMob(zone))
bestMob = GetBestNearestMob(zone);
//Target our mob, if necessary
if (me.target != bestMob)
SetTarget(bestMob);
//Turn to our mob, if necessary
if (angle(bestMob, me) > 44 && angle(bestMob, me) < 315)
TurnDirectly(bestMob);
if (hpp() < 35)
{
CancelTarget();
CancelTarget();
Thread.Sleep(100);
UseSkill("Имитация смерти");
CancelTarget();
CancelTarget();
//skill used, we on the ground
/// while ((hpp() < 95) && GetGroupStatus("autoexp")) //&& getAggroMobs().Count() == 0 && GetGroupStatus("autoexp")
Thread.Sleep(100); //just waiting, while condition true. mpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
CancelTarget();
}
if (hpp() < 85 && hpp(me.target) >= 30 && skillCooldown("Сокрушение разума") == 0 && skillCooldown("Хватка земли") == 0)
{
Thread.Sleep(10);
UseSkillAndWait("Сокрушение разума");
Thread.Sleep(10);
UseSkill("Хватка земли");
}
//if (hpp() < 80 && hpp(me.target) >= 50 && skillCooldown("Кража жизни") == 0)
// {
// // && mpp() > 55
//
// UseSkillAndWait("Кража жизни");
// }
//if (skillCooldown("Ледяная стрела") == 0 && hpp(me.target) >= 80) //&& (buffTime(me.target,"Языки пламени") > 0)
// {
//
// UseSkillAndWait("Молния гнева");
// }
if (skillCooldown("Ледяная стрела") == 0 && hpp(me.target) >= 80 && mpp() > 15) //&& (buffTime(me.target,"Языки пламени") > 0)
{
UseSkillAndWait("Ледяная стрела");
}
if (hpp(me.target) < 101)
{
//for (int i=0;i<1;i++)
Thread.Sleep(10);
UseSkill("Сгустки пламени");
}
//Small delay, do not load the processor
Thread.Sleep(10);
}
//Try to pickup drop from mob, if drop available
while (bestMob != null && !isAlive(bestMob) && isExists(bestMob) && bestMob.type == BotTypes.Npc && ((Npc)bestMob).dropAvailable && isAlive()) //
{
if (me.dist(bestMob) > 2)
ComeTo(bestMob, 1);
PickupAllDrop(bestMob);
}
}
catch {}
}
}
//Small delay, do not load the processor
Thread.Sleep(10);
}
}
}
}






