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

Taking requests

The questing plugin would help the community quite a bit. I personally don't think an AH plugin should be released, but I feel the same with the land grabber. They're both very manipulative and exploitative, they actually hurt legitimate players.

Legitimate players are already hurt. I made modules to scan auctions and see who wins them; it's always the same 3-4 people (almost all level 6-20).
 
Code:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;

namespace Follower
{
    public class Follower : Core
    {
        public static string GetPluginAuthor()
        {
            return "2face/Mod by Zagreb";
        }

        public static string GetPluginVersion()
        {
            return "1.0.0.5";
        }

        public static string GetPluginDescription()
        {
            return "Follower Plugin";
        }

        private Creature _leader = null;    // Don't change this.
        private Double _followRange = 5.0;  // Well, it will keap folowing party leader at this range.
        private Double _healRange = 20.0;   // Within this distance it will cast heal at party members.
        private String Antithesis = "Antithesis";            //           
        private String MirrorLight = "Mirror Light";         //             
        private String Resurgence = "Resurgence";            // <-- Skill names. Find them in code and change rotation.        
        private String FerventHealing = "Fervent Healing";   //
        private String Mend = "Mend";                        //  

        private List<Creature> DeadPpl = new List<Creature>();
        private bool Loop;

        public void PluginRun()
        {
            Loop = true;

            _leader = getPartyLeaderObj();
            if (_leader == null || _leader == me)
            {
                Log("Please set leader");
            }
            else
            {
                Start();
            }
        }

        public void Start()
        {
            while (Loop == true)
            {
                Thread.Sleep(150);

                if (_leader != null)
                {
                    if (_leader.inFight && me.dist(_leader) < _healRange)
                    {
                        CheckBuffs();
                        healRoutine();
                    }
                    else
                    {
                        CheckBuffs();
                        moveToPlayer(_leader);
                    }
                }
            }
        }

        public void CheckBuffs()
        {
            while (me.isCasting)
            {
                Thread.Sleep(100);
            }

            if (isSkillLearned("Aranzeb's Boon") == true)
            {
                if (skillCooldown(16004) == 0)
                {
                    foreach (PartyMember member in getPartyMembers())
                    {
                        if (!member.obj.getBuffs().Exists(b => b.id == 2955) &&
                            !member.obj.getBuffs().Exists(b => b.id == 2956) &&
                            !member.obj.getBuffs().Exists(b => b.id == 7661))
                        {
                            if (member.obj == me)
                            {
                                UseSkillAndWait("Aranzeb's Boon", true);
                            }
                            if (me.dist(member.obj) > _healRange && !(me.dist(member.obj) > 20))
                            {
                                SetTarget(member.obj);
                                ComeTo(member.obj, _healRange);
                                UseSkillAndWait("Aranzeb's Boon", false);
                            }
                            if (me.dist(member.obj) <= _healRange)
                            {
                                SetTarget(member.obj);
                                UseSkillAndWait("Aranzeb's Boon", false);
                            }
                            Thread.Sleep(2150);
                        }
                    }
                }
            }
            if (isSkillLearned("Whirlwind's Blessing") == true)
            {
                if (skillCooldown(23596) == 0)
                {
                    foreach (PartyMember member in getPartyMembers())
                    {
                        if (!member.obj.getBuffs().Exists(b => b.id == 6851))
                        {
                            if (member.obj == me)
                            {
                                UseSkillAndWait("Whirlwind's Blessing", true);
                            }
                            if (me.dist(member.obj) > _healRange && !(me.dist(member.obj) > 20))
                            {
                                SetTarget(member.obj);
                                ComeTo(member.obj, _healRange);
                                UseSkillAndWait("Whirlwind's Blessing", false);
                            }
                            if (me.dist(member.obj) <= _healRange)
                            {
                                SetTarget(member.obj);
                                UseSkillAndWait("Whirlwind's Blessing", false);
                            }
                            Thread.Sleep(5150);
                        }
                    }
                }
            }
        }

        public Creature getLowestHPMember()
        {
            Creature obj = null;
            Double lowestHp = 99999999;
            Double pCurHP = 100;

            foreach (var member in getPartyMembers())
            {
                pCurHP = member.curhp * 100 / member.maxhp;

                if (pCurHP < lowestHp && !DeadPpl.Contains(member.obj))
                {
                    lowestHp = pCurHP;
                    obj = member.obj;
                }
            }
            return obj;
        }

        public double hasLowHP(Creature member)
        {
            return member.hp * 100 / member.maxHp;
        }

        public void healRoutine()
        {
            Creature healTarget = getLowestHPMember();

            if (healTarget != null)
            {
                if (me.dist(healTarget) < _healRange)
                {
                    if (hasLowHP(healTarget) < 95 && hasLowHP(healTarget) > 90)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(Resurgence, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(Resurgence, false);
                        }
                    }
                    if (hasLowHP(healTarget) < 85 && hasLowHP(healTarget) > 80)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                        }
                    }
                    if (hasLowHP(healTarget) < 75 && hasLowHP(healTarget) > 70)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(MirrorLight, true);
                            UseSkillAndWait(Resurgence, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(MirrorLight, false);
                            UseSkillAndWait(Resurgence, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                        }
                    }
                    if (hasLowHP(healTarget) <= 65 && hasLowHP(healTarget) > 60)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(MirrorLight, true);
                            UseSkillAndWait(Resurgence, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(MirrorLight, false);
                            UseSkillAndWait(Resurgence, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                        }
                    }
                    if (hasLowHP(healTarget) <= 55 && hasLowHP(healTarget) > 50)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(MirrorLight, true);
                            UseSkillAndWait(Resurgence, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(Mend, true);
                            UseSkillAndWait(Antithesis, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(MirrorLight, false);
                            UseSkillAndWait(Resurgence, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(Mend, false);
                            UseSkillAndWait(Antithesis, false);
                        }
                    }
                    if (hasLowHP(healTarget) <= 45)
                    {
                        if (healTarget == me)
                        {
                            UseSkillAndWait(MirrorLight, true);
                            UseSkillAndWait(Resurgence, true);
                            UseSkillAndWait(Antithesis, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(FerventHealing, true);
                            UseSkillAndWait(Mend, true);
                            UseSkillAndWait(Antithesis, true);
                            UseSkillAndWait(Antithesis, true);
                            UseSkillAndWait(Antithesis, true);
                        }
                        else
                        {
                            SetTarget(healTarget);
                            UseSkillAndWait(MirrorLight, false);
                            UseSkillAndWait(Resurgence, false);
                            UseSkillAndWait(Antithesis, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(FerventHealing, false);
                            UseSkillAndWait(Mend, false);
                            UseSkillAndWait(Antithesis, false);
                            UseSkillAndWait(Antithesis, false);
                            UseSkillAndWait(Antithesis, false);
                        }
                    }
                    if (hasLowHP(healTarget) <= 0)
                    {
                        if (healTarget == me)
                        {
                            Loop = false;
                            Log("I'm dead... :(");
                            return;
                        }

                        if (isSkillLearned("Revive") == true)
                        {
                            if (me.dist(healTarget) > 25 && !(me.dist(healTarget) > 40))
                            {
                                SetTarget(healTarget);
                                ComeTo(healTarget, _healRange);
                                UseSkillAndWait("Revive", false);
                            }
                            else
                            {
                                SetTarget(healTarget);
                                UseSkillAndWait("Revive", false);
                            }
                        }
                        else
                        {
                            DeadPpl.Add(healTarget);
                        }
                    }
                }
                else
                {
                    moveToPlayer(healTarget);
                }
            }
        }

        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 moveToPlayer(Creature obj)
        {
            ComeTo(obj, _followRange);
        }

        //Call on plugin stop
        public void PluginStop()
        {
            DeadPpl.Clear();
        }
    }
}

Updated... :D


could you take a look at this script? https://www.thebuddyforum.com/archeb...ml#post1755476

My healer keeps spamming resurgence all the time. Is there a way to set cooldown while its active?

Thanks in advance.
 
Back
Top