What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

[Plugin][Example] Simple farm mobs

this is my code for stone arrow...can someone optimized it and add OUT's run back after dead code somewhere in here ? I don't know where to put it.
Code:
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  = 30;
            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 (buffTime("Double Recurve (Rank 4)") == 0 && skillCooldown("Double Recurve") == 0)
                UseSkillAndWait("Double Recurve", 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, 80); //Make new zone where we will farm. Its circle with center where your character stand at this moment with 80m radius.
            SetGroupStatus("autoexp", false); //Add checkbox to our character widget
            while (true)
            {            
                
                //If autoexp checkbox enabled in widget and our character alive
                if (GetGroupStatus("autoexp") && me.isAlive())
                {
                    CheckBuffs();
                    Creature bestMob = null;      

                    //if we have enouth mp and hp, or mobs want to kill us - try to find bestMob.
                    if ((mpp() > 40 && hpp() > 75) || 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) && GetGroupStatus("autoexp") && isAlive())
                            {      
                                //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) > 45 && angle(bestMob, me) < 315)
                                        TurnDirectly(bestMob);
                         
                                if (me.dist(bestMob) < 4 && isAlive(bestMob))
                                UseSkillAndWait("Redoubt");
                                UseSkillAndWait("Intensity");
                                UseSkillAndWait("Stalker's Mark");
                                UseSkillAndWait("Toxic Shot");  
                                UseSkillAndWait("Charged Bolt"); 
                                UseSkillAndWait("Piercing Shot");
                                
                                for (int i=0;i<2;i++)
                                    UseSkillAndWait("Endless Arrows");
                                   
                                //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 && GetGroupStatus("autoexp") && isAlive())
                            {
                                if (me.dist(bestMob) > 3)
                                   ComeTo(bestMob, 1);
                                PickupAllDrop(bestMob);     
                            }
                        } 
                        catch {}      
                        
                        //Use Double Recurve
                              if (buffTime("Double Recurve (Rank 4)") == 0)
     {
         UseSkill("Double Recurve");
        while (me.isCasting)
        Thread.Sleep(100);
        }
    //Use Refreshment
    if (buffTime("Refreshment (Rank 3)") == 0) 
            { 
                UseSkillAndWait("Refreshment"); 
            }  
{
    UseSkill("Play Instrument",true,true);  
    //skill used, we on the ground
    while ((mpp() < 100) && getAggroMobs().Count() == 0 && GetGroupStatus("autoexp") && isAlive())   
        Thread.Sleep(5000); //just waiting, while condition true. hpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
}

                    }
                }                     
                //Small delay, do not load the processor
            }               
        }
    }     
    
}
 
How do I get it to target me when casting a heal? and how do I get it to run back to death spot if it's extremely close to the res spawner
 
Last edited:
this is my code for stone arrow...can someone optimized it and add OUT's run back after dead code somewhere in here ? I don't know where to put it.
Code:
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  = 30;
            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 (buffTime("Double Recurve (Rank 4)") == 0 && skillCooldown("Double Recurve") == 0)
                UseSkillAndWait("Double Recurve", 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, 80); //Make new zone where we will farm. Its circle with center where your character stand at this moment with 80m radius.
            SetGroupStatus("autoexp", false); //Add checkbox to our character widget
            while (true)
            {            
                
                //If autoexp checkbox enabled in widget and our character alive
                if (GetGroupStatus("autoexp") && me.isAlive())
                {
                    CheckBuffs();
                    Creature bestMob = null;      

                    //if we have enouth mp and hp, or mobs want to kill us - try to find bestMob.
                    if ((mpp() > 40 && hpp() > 75) || 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) && GetGroupStatus("autoexp") && isAlive())
                            {      
                                //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) > 45 && angle(bestMob, me) < 315)
                                        TurnDirectly(bestMob);
                         
                                if (me.dist(bestMob) < 4 && isAlive(bestMob))
                                UseSkillAndWait("Redoubt");
                                UseSkillAndWait("Intensity");
                                UseSkillAndWait("Stalker's Mark");
                                UseSkillAndWait("Toxic Shot");  
                                UseSkillAndWait("Charged Bolt"); 
                                UseSkillAndWait("Piercing Shot");
                                
                                for (int i=0;i<2;i++)
                                    UseSkillAndWait("Endless Arrows");
                                   
                                //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 && GetGroupStatus("autoexp") && isAlive())
                            {
                                if (me.dist(bestMob) > 3)
                                   ComeTo(bestMob, 1);
                                PickupAllDrop(bestMob);     
                            }
                        } 
                        catch {}      
                        
                        //Use Double Recurve
                              if (buffTime("Double Recurve (Rank 4)") == 0)
     {
         UseSkill("Double Recurve");
        while (me.isCasting)
        Thread.Sleep(100);
        }
    //Use Refreshment
    if (buffTime("Refreshment (Rank 3)") == 0) 
            { 
                UseSkillAndWait("Refreshment"); 
            }  
{
    UseSkill("Play Instrument",true,true);  
    //skill used, we on the ground
    while ((mpp() < 100) && getAggroMobs().Count() == 0 && GetGroupStatus("autoexp") && isAlive())   
        Thread.Sleep(5000); //just waiting, while condition true. hpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
}

                    }
                }                     
                //Small delay, do not load the processor
            }               
        }
    }     
    
}


works ok, but very slow to move on to the next mob. anyway to improve it?
 
works ok, but very slow to move on to the next mob. anyway to improve it?

It's slow most likely because of the mana management. If you fall below 35% then you wait to regen to 35% before it continues. There seems to be no way to fix this as of now outside of potions/food which can be expensive.
 
It's slow most likely because of the mana management. If you fall below 35% then you wait to regen to 35% before it continues. There seems to be no way to fix this as of now outside of potions/food which can be expensive.
You can also add conditional statements to use mana regen abilities(presumably) as I've only just got the bot and are currently working on my script during downtime but in theory, you could add to the CheckBuffs() method to say cast meditate when you're low on mana, or more logically write your own method and call it before the mob re-engages its next target, i.e just before or after it checks its buffs.

If my theory is correct then you could do something like this...
Code:
public void outOfCombatRegen()
    {
        //Mana Regen
        while(mpp() < 35){
            if(skillCooldown("Mana Regen Skill") == 0)
                UseSkillAndWait("Mana Regen Skill");
            if(skillCooldown("Another mana regen skill") == 0)
                UseSkillAndWait("Another mana regen skill");
            if(itemCooldown("Mana Food") == 0)
                //Some way of using an item here, UseItem doesn't seem to be able to take a string so I'd have to look into it
        }
        
        //Health Regen
        while(hpp() < 35){
            if(skillCooldown("Health Regen Skill") == 0)
                UseSkillAndWait("Health Regen Skill");
            if(skillCooldown("Another Health regen skill") == 0)
                UseSkillAndWait("Another Health regen skill");
            if(itemCooldown("Health Food") == 0)
                //Some way of using an item here, UseItem doesn't seem to be able to take a string so I'd have to look into it
        }
    }

then you'd just slide it in at the start....
Code:
 public void PluginRun()
        {   
            new Task(() => { CancelAttacksOnAnothersMobs(); }).Start(); //Starting new thread
            RoundZone zone = new RoundZone(me.X, me.Y, 80); //Make new zone where we will farm. Its circle with center where your character stand at this moment with 80m radius.
            SetGroupStatus("autoexp", false); //Add checkbox to our character widget
            while (true)
            {   
                //If autoexp checkbox enabled in widget and our character alive
                if (GetGroupStatus("autoexp") && me.isAlive())
                {
                    CheckBuffs();
                    outOfCombatRegen();

It'd problably be worth also adding a conditional to stop regen'ing if you become in combat but *shrug* it's just a snippet
 
Last edited:
It's slow most likely because of the mana management. If you fall below 35% then you wait to regen to 35% before it continues. There seems to be no way to fix this as of now outside of potions/food which can be expensive.

nah the hp/mp of my char is way above 80%. its like it kills one mob then waits almost 60secs to attack again. could be something to do with the instrument part of the code?
 
well I Think the code only attack mobs when you are at around 99% mp & hp (for safety reason at higher level area since you can have 2-3 mobs jump on you while fighting one). The instrument is auto play after every fight when your hp drop below 100% and the skill is off cd.
 
hmm what different between this condition and simple spam UseSkillAndWait("Flamebolt"); without any conditions before target is dead?
 
Hi how do i add run after death in here? run from point A to B

Code:
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 (buffTime("Toughenz (Rank 3)") == 0 && skillCooldown("Toughenz") == 0)
                UseSkillAndWait("Toughenz", 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, 80); //Make new zone where we will farm. Its circle with center where your character stand at this moment with 80m radius.
            SetGroupStatus("autoexp", false); //Add checkbox to our character widget
            while (true)
            {   
                //If autoexp checkbox enabled in widget and our character alive
                if (GetGroupStatus("autoexp") && me.isAlive())
                {
                    CheckBuffs();
                    Creature bestMob = null;
                    //if we have enouth mp and hp, or mobs want to kill us - try to find bestMob.
                    if ((mpp() > 40 && hpp() > 75) || 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) && GetGroupStatus("autoexp") && isAlive())
                            {      
                                //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) > 45 && angle(bestMob, me) < 315)
                                        TurnDirectly(bestMob);
                                
                                if (me.dist(bestMob) < 4 && isAlive(bestMob))
                                    UseSkillAndWait("Charge");
                                UseSkillAndWait("Triple Slash");
                                for (int i=0;i<2;i++)
                                    UseSkillAndWait("Sunder Earth");
                                for (int i=0;i<2;i++)
                                    UseSkillAndWait("Whirlwind Slash");
                                    UseSkillAndWait("Shield Slam");
                                    UseSkillAndWait("Bull Rush");
                                    UseSkillAndWait("Ollo's Hammer");
                                   
                                //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 && GetGroupStatus("autoexp") && isAlive())
                            {
                                if (me.dist(bestMob) > 3)
                                   ComeTo(bestMob, 1);
                                PickupAllDrop(bestMob);     
                            }
                        } 
                        catch {}
                        
                    }
                }
                //Small delay, do not load the processor
                Thread.Sleep(10);
            }
        }
    }
}
 
Hi how do i add run after death in here? run from point A to B
+ I add

PHP:
 if (GetGroupStatus("autoexp") && me.isAlive())
                {
                  bla bla
                  }
            else
                    {
                   Thread.Sleep(30000);
                   ResToRespoint();
                   Thread.Sleep(10000);
                   Gps gps = new Gps(this);
                   gps.LoadDataBase(Application.StartupPath + "\\path.db3");
               }

but nothing happened when bot is die. ResToRespoint(); working?
 
Out (или кто-нибудь, кто разбирается=)), помоги пожалуйста!
Никак не работает "Имитация смерти" (гипноз, восстановление мп и хп лежа). Я куда только ни вставлял этот кусок кода, где условие с 99% МП. Точнее, условие работает, но только, если запустить бота с малым количеством МП, бот один раз падает, восстанавливается и все, дальше во время фарма, когда приходит условие восстанавливать МП, бот падает на долю секунды и тут же встает. Не понимаю, почему так?

Help please about skill "Play dead". Use code

PHP:
   if (mpp() < 20) 
        {
            UseSkill("Play Dead");  
    skill used, we on the ground
    while ((mpp() < 99) && getAggroMobs().Count() == 0 && GetGroupStatus("autoexp") && isAlive())   
    Thread.Sleep(100); //just waiting, while condition true. mpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy
}
but, when condition is restore mpp, bot down and up again, without 1 min restore. Why? I tried without "&& getAggroMobs().Count() == 0 && GetGroupStatus("autoexp") && isAlive())", without "while" condition, just "UseSkill and Thread.Sleep(60000);" alwais down on msecond and up again!!! Help please.
 
когда приходит условие восстанавливать МП, бот падает на долю секунды и тут же встает
isAlive что показывает в момент когда ты на земле?
 
Out, спасибо, уже решил. Дело было в том, что, когда бот падал, сбивался угол обзора и юзалось TurnDirectly(). Поставил CancelTrarget() перед юзанием скилла и все заработало=) так то условия верно срабатывали, бот на долю секунды, но ложился, а почему вставал - неясно было:)

HTML:
  if (mpp() < 20)  
        { 
            CancelTarget();
            Thread.Sleep(1000)
            UseSkill("Play Dead");   
    skill used, we on the ground 
    while ((mpp() < 99) && getAggroMobs().Count() == 0 && GetGroupStatus("autoexp") && isAlive())    
    Thread.Sleep(100); //just waiting, while condition true. mpp() 99 - becouse ArcheBuddy can calculate hp\mp inaccuracy 
}
 
This is not for using it as is but for retouching.
It will only work out of the box, as Out said, only for Sorcerers with Occultism for attacking and Songcraft for buff.

What you need to do is find out YOUR 3 most useful (aka potent, fast, combinable, whatever) skills and YOUR buff ... search for the skill names and write yours DONT SCREWUP THE SPELLING and the same with the buff.

So open up notepad++ new document, copy and paste the code section above, and edit away:

This one does the paralyzing arrow (occ), plus one frost arrow (Sor) and 2 fireballs (sor) to have the slow combo and the damage combo. so any skills you replace them with will fire in the same order .... skil 1, skill 2, skill 3, skill 3 (repeat)

Everything you need to start retouching is here read it carefully and test it.

Put the buff skill in this section
Code:
            public void CheckBuffs()
            {
                if (buffTime("Hummingbird Ditty (Rank 1)") == 0 && skillCooldown("Hummingbird Ditty") == 0)
                    UseSkillAndWait("Hummingbird Ditty", true);
            }

Your 3 skills would go in this part (look for this and replace yours)
Code:
                                UseSkillAndWait("Hell Spear");
                                UseSkillAndWait("Freezing Arrow");
                                for (int i = 0; i < 2; i++)
                                    UseSkillAndWait("Flamebolt");

Save it as WiderG99.cs

place it in the plugins folder ... it will compile it for you on bootup.

i tried using this as well, and it didnt work for me, im also a daggerspell. and changed the spell names and buff names.

i followed the exact steps, and changed everything perfectly, but nothing happens when i click start.

maybe im doing it wrong, as im new to this bot, and not a very good script writer at all.

although i believe i done everything correctly, does anyone care to help ?

also when Out says:" Dont forget to enable checkbox in your character widget."

what does this mean ? maybe thats whats not letting me run it ? or thats the problem im facing ?

please help
 
Last edited:
i tried using this as well, and it didnt work for me, im also a daggerspell. and changed the spell names and buff names.

i followed the exact steps, and changed everything perfectly, but nothing happens when i click start.

maybe im doing it wrong, as im new to this bot, and not a very good script writer at all.

although i believe i done everything correctly, does anyone care to help ?

also when Out says:" Dont forget to enable checkbox in your character widget."

what does this mean ? maybe thats whats not letting me run it ? or thats the problem im facing ?

please help

Try using my grinder https://www.thebuddyforum.com/arche...413-simple-daggerspell-grinder-deathwalk.html all the set up steps are in the OP aswell as the spec you need to use, it's designed for daggerspells, it also features a death walk
 
Никто не сталкивался с тем, что бот юзает скиллы в неправильной последовательности? к примеру
PHP:
if (hpp() < 95 && hpp(me.target) >= 50 && skillCooldown("Сокрушение разума") == 0 && skillCooldown("Хватка земли") == 0)
                                     {    
                                          Thread.Sleep(10);
                                          UseSkillAndWait("Сокрушение разума");      //1
                                         Thread.Sleep(10);
                                         UseSkillAndWait("Хватка земли");                //2
                                    }
                               
                                if (skillCooldown("Ледяная стрела") == 0 && hpp(me.target) >= 80) 
                               {                                                                  
                                    UseSkillAndWait("Ледяная стрела");                 //3
                                    }                               
                               if (hpp(me.target) < 95)    
                                    {   
                                    Thread.Sleep(10);
                                    UseSkillAndWait("Сгустки пламени");               //4
                                     }

Неоднократно бот начинает пулить моба с //4 скилла, когда остальные скиллы откатились. Я даже условие поставил, чтобы не юзался, если у моба хп 100%. Или использует //2 спелл, пропуская //1.
С чем это может быть связано?

Have problem. Sometimes bot pulling mobs with //4 spell indeed //1,2 or //3. I set condition - dont use //4 if hp mob<95%, but bot still pulling with that spell. Anybody know, why?
 
Никто не сталкивался с тем, что бот юзает скиллы в неправильной последовательности? к примеру
PHP:
if (hpp() < 95 && hpp(me.target) >= 50 && skillCooldown("Сокрушение разума") == 0 && skillCooldown("Хватка земли") == 0)
                                     {    
                                          Thread.Sleep(10);
                                          UseSkillAndWait("Сокрушение разума");      //1
                                         Thread.Sleep(10);
                                         UseSkillAndWait("Хватка земли");                //2
                                    }
                               
                                if (skillCooldown("Ледяная стрела") == 0 && hpp(me.target) >= 80) 
                               {                                                                  
                                    UseSkillAndWait("Ледяная стрела");                 //3
                                    }                               
                               if (hpp(me.target) < 95)    
                                    {   
                                    Thread.Sleep(10);
                                    UseSkillAndWait("Сгустки пламени");               //4
                                     }

Неоднократно бот начинает пулить моба с //4 скилла, когда остальные скиллы откатились. Я даже условие поставил, чтобы не юзался, если у моба хп 100%. Или использует //2 спелл, пропуская //1.
С чем это может быть связано?

Have problem. Sometimes bot pulling mobs with //4 spell indeed //1,2 or //3. I set condition - dont use //4 if hp mob<95%, but bot still pulling with that spell. Anybody know, why?
попробуй так
PHP:
 if((hpp() < 75) && (skillCooldown("Сокрушение разума") == 0) && (skillCooldown("Хватка земли") == 0)) 
                                    { 
                                        while (me.isGlobalCooldown)  
                                            Thread.Sleep(50); 
                                        while (me.isCasting) 
                                            Thread.Sleep(50); 
                                        UseSkill("Сокрушение разума"); 
                                        Thread.Sleep(10); 
                                        UseSkill("Хватка земли"); 
                                        Thread.Sleep(50);
 
Back
Top