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

[Plugin] PartyBuffer

Zagreb

Member
Joined
Sep 12, 2014
Messages
455
Reaction score
2
Follows its master, buffs party, loots stuff, rolls on stuff if set to :)

PHP:
using System;
using System.Threading;
using System.Collections.Generic;
using ArcheBuddy.Bot.Classes;

namespace PartyBuffer
{
    public class PartyBuffer : Core
    {
        public static string GetPluginAuthor()
        {
            return "Zagreb";
        }

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

        public static string GetPluginDescription()
        {
            return "Well, it buffs party! And loots stuff...";
        }

        Creature master = null;             // Don't change this.
        String mastersName = "nameHere";    // Here you type name of a char to follow to.
        Double followRange = 5.0;           // It will keep following master at this range.
        bool doLoot = true;                 // Loot switch.
        bool doResPpl = true;               // Ressurect party members switch.
        bool diceLoot = true;               // Dice mode selection. It will roll if true and won't if false.

        Random randomRollTime = new Random();

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

        public void PluginRun()
        {
            Loop = true;

            if (!getCreatures().Exists(p => p.name == mastersName))
            {
                Log("Can't find my master. Stopping...");
            }
            else
            {
                Start();
            }
        }

        public void Start()
        {
            onLootDice += on_RollDice;

            while (Loop == true)
            {
                if (isAlive())
                {
                    if (ourMaster() != null)
                    {
                        master = ourMaster();

                        if (me.dist(master) <= followRange)
                        {
                            doGoodStuff();

                            if (doLoot == true)
                            {
                                lootAround();
                            }
                        }
                        else
                        {
                            ComeTo(master, followRange);
                            doGoodStuff();

                            if (doLoot == true)
                            {
                                lootAround();
                            }
                        }
                    }
                }
                else
                {
                    Log("I'm dead... :(");
                    Loop = false;
                }
                Thread.Sleep(100);
            }
        }

        public void on_RollDice(Item item)
        {
            if (diceLoot == true)
            {
                Thread.Sleep(randomRollTime.Next(1000, 2500));

                Log("Rolling on item: " + item.name);
                item.Dice(true);
            }
            else
            {
                Thread.Sleep(randomRollTime.Next(1000, 2500));
                item.Dice(false);
            }
        }

        public void lootAround()
        {
            foreach (var corps in getCreatures())
            {
                if (corps.dropAvailable && me.dist(corps) <= 20)
                {
                    if (me.dist(corps) <= 2)
                    {
                        PickupAllDrop(corps);
                    }
                    else
                    {
                        ComeTo(corps, 2);
                        PickupAllDrop(corps);
                    }
                    Thread.Sleep(100);
                }
            }
        }

        public Creature ourMaster()
        {
            Creature obj = null;

            foreach (var player in getCreatures())
            {
                if (player.name == mastersName)
                {
                    obj = player;
                    return obj;
                }
            }
            return obj;
        }

        public void doGoodStuff()
        {
            if (isSkillLearned(10546) == true)
            {
                foreach (PartyMember member in getPartyMembers())
                {
                    if (!isAlive(member.obj))
                    {
                        if (doResPpl == true)
                        {
                            if (me.dist(member.obj) > 25 && me.dist(member.obj) < 40)
                            {
                                SetTarget(member.obj);

                                ComeTo(member.obj, 20);
                                UseSkillAndWait(10546, false);

                                Log("Our fellow member " + member.nick + " has died." + "Resurrecting...");
                            }
                            else
                            {
                                SetTarget(member.obj);
                                UseSkillAndWait(10546, false);

                                Log("Our fellow member " + member.nick + " has died." + "Resurrecting...");
                            }
                        }
                        else
                        {
                            DeadPpl.Add(member.obj);
                        }
                    }
                }
            }
            if (isSkillLearned(11991) == true)
            {
                if (skillCooldown(11991) == 0)
                {
                    foreach (PartyMember member in getPartyMembers())
                    {
                        if (!DeadPpl.Contains(member.obj))
                        {
                            if (!member.obj.getBuffs().Exists(b => b.id == 841))
                            {
                                if (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
                                {
                                    SetTarget(member.obj);
                                    ComeTo(member.obj, 25);
                                    UseSkillAndWait(11991, false);
                                }
                                if (me.dist(member.obj) <= 25)
                                {
                                    SetTarget(member.obj);
                                    UseSkillAndWait(11991, false);
                                }
                                Thread.Sleep(1650);
                            }
                        }
                    }
                }
            }
            if (isSkillLearned(11377) == true)
            {
                if (skillCooldown(11377) == 0)
                {
                    foreach (PartyMember member in getPartyMembers())
                    {
                        if (!DeadPpl.Contains(member.obj))
                        {
                            if (!member.obj.getBuffs().Exists(b => b.id == 462) &&
                                !member.obj.getBuffs().Exists(b => b.id == 463) &&
                                !member.obj.getBuffs().Exists(b => b.id == 464) &&
                                !member.obj.getBuffs().Exists(b => b.id == 465) &&
                                !member.obj.getBuffs().Exists(b => b.id == 466))
                            {
                                if (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
                                {
                                    SetTarget(member.obj);
                                    ComeTo(member.obj, 25);
                                    UseSkillAndWait(11377, false);
                                }
                                if (me.dist(member.obj) <= 25)
                                {
                                    SetTarget(member.obj);
                                    UseSkillAndWait(11377, false);
                                }
                                Thread.Sleep(1650);
                            }
                        }
                    }
                }
            }
            if (isSkillLearned(16004) == true)
            {
                if (skillCooldown(16004) == 0)
                {
                    foreach (PartyMember member in getPartyMembers())
                    {
                        if (!DeadPpl.Contains(member.obj))
                        {
                            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 (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
                                {
                                    SetTarget(member.obj);
                                    ComeTo(member.obj, 25);
                                    UseSkillAndWait(16004, false);
                                }
                                if (me.dist(member.obj) <= 25)
                                {
                                    SetTarget(member.obj);
                                    UseSkillAndWait(16004, false);
                                }
                                while (me.isCasting || me.isGlobalCooldown)
                                    Thread.Sleep(50);

                                Thread.Sleep(2150);
                            }
                        }
                    }
                }
            }
            SetTarget(master);
        }

        public void UseSkillAndWait(uint skillId, bool selfTarget = false)
        {
            while (me.isCasting || me.isGlobalCooldown)
                Thread.Sleep(50);
            if (!UseSkill(skillId, true, selfTarget))
            {
                if (me.target != null && GetLastError() == LastError.NoLineOfSight)
                {
                    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);
                }
            }
            while (me.isCasting || me.isGlobalCooldown)
                Thread.Sleep(50);
        }

        public void PluginStop()
        {
            onLootDice -= on_RollDice;

            DeadPpl.Clear();
        }
    }
}
 
Last edited:
Can we get something that auto-buffs party members if they are missing their buffs? Just to have it up and running in the background as a healer?
 
На форум готовые dll загружать можно? Своего бы баффера выложил.
 
im testing and it is always casting Healing Buff, i think ID healing BUff isnt correct
 
Targets master and self and buffs fine, however it then infinitely loops casting buffs as it either doesn't check to see if you have the buff or doesn't wait till you don't.
 
Hey, possible to add "pass on dice roll"?

PHP:
public List<uint> ItemIdsHere = new List<uint>
{
    X1, X2, ..., Xn
};

public void on_RollDice(Item item) 
{ 
    if (diceLoot == true) 
    { 
        if (ItemIdsHere.Contains(item.id))
        {
            Thread.Sleep(randomRollTime.Next(1000, 2500)); 

            Log("Rolling on item: " + item.name); 
            item.Dice(true); 
        }
        else
        {
            Thread.Sleep(randomRollTime.Next(1000, 2500)); 
            item.Dice(false); 
        }
    }
    else 
    { 
        Thread.Sleep(randomRollTime.Next(1000, 2500)); 
        item.Dice(false); 
    } 
}
:)
 
Just another issue, the script will continue to buff in a loop because it thinks we do not have the buff. I believe Out said the fix to it is to add the "Rank" to the end of buffs.. But I don't see where I can add that to this script.

For example, I am using this for self buff:

if(buffTime("Aranzeb's Boon (Rank 2)") == 0 && skillCooldown("Aranzeb's Boon") == 0)
UseSkillAndWait("Aranzeb's Boon", true);

but if you can help fix this part that would be great
 
Targets master and self and buffs fine, however it then infinitely loops casting buffs as it either doesn't check to see if you have the buff or doesn't wait till you don't.

Hey Zag, this is still an issue
 
Back
Top