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

Personal healer

MoreFLow

New Member
Joined
Jan 22, 2015
Messages
12
Reaction score
0
Personal healer [debug]

Ive made this script to do the sunday dauta, with a healer bot. Basically it follows the party leader, on the set distance and heals when needed.
If you are playing on english servers, rename the healing spells and the names of healing buffs. - from RUSSIAN Calculator to - ENGLISH Calculator
--

Хилер бот, зделан для прохождения выходной дауты, но может и използоватся на других босах или ежедневном фарме. Следует за парти лидером на указаной дистанции и лечит если надо..

Code:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;

namespace _Healer_1{
   public class _Healer1 : Core
   {
////////////////////////////////////////////////////////
//////// EDITABLES
////////////////////////////////////////////////////////    
        bool doLogs = true;               // Logging for debug purposes.  
        private Double _followRange = 15.0;
        private Creature _leader = null;
        private Double _healRange = 15.0;
        private String _healSkill1 = "Дар жизни";
        private String _healSkill2 = "Свет и тьма";
        private String _healSkill3 = "Непрерывное исцеление";
        private String _healSkill4 = "Массовое исцеление";
        private String _HealBuffSkill = "Жертвенный огонь";
        private String _ConversionShield = "Энергетический щит";
        private String _HealingBuff1 = "Дар жизни";
        private String _HealingBuff2 = "Благословение";
        private Double _MinihealPercentage = 95.0;
        private Double _doublehealPercentage = 80.0;
        private Double _tripplehealPercentage = 60.0;
        private Double _superhealPercentage = 40.0; 
        private Double _MassHealPercentage = 30.0;     
////////////////////////////////////////////////////////
//////// Mainloop
////////////////////////////////////////////////////////  
       public void PluginRun()
       {
            ClearLogs();
            DebugLog("Script started"); 
            SetPartyLeader();
            while(true)
            {
                Thread.Sleep(500);
                if(_leader != null)
                {
                    if(/*_leader.inFight && */me.dist(_leader) < _healRange)
                    {
                        healRoutine();
                    }
                    else
                    {
                        moveToPlayer(_leader);  
                    }
                }                
            }
       }
////////////////////////////////////////////////////////
//////// Heal routine
////////////////////////////////////////////////////////        
      public void healRoutine()
      {
        Creature healTarget = getLowestHPMember();
        if(healTarget != null)
        { 
          if(me.target != healTarget)
          {
           SetTarget(healTarget);  
          }  
            if(me.dist(healTarget) < _healRange)
            {   
              if(healTarget.hpp <= _MassHealPercentage)
              {
                CheckIfHasbuff(_HealingBuff2, _HealBuffSkill);
                CheckIfHasbuff(_HealingBuff1, _healSkill1);
                UseSkillAndWait(_ConversionShield);  
                UseSkillAndWait(_healSkill2);
                UseSkillAndWait(_healSkill3);
                UseSkillAndWait(_healSkill3);
                UseSkillAndWait(_healSkill3);
                UseSkillAndWait(_healSkill3);
                UseSkillAndWait(_healSkill4);
              }
              if(healTarget.hpp <= _superhealPercentage)
              {
                CheckIfHasbuff(_HealingBuff2, _HealBuffSkill);
                CheckIfHasbuff(_HealingBuff1, _healSkill1);
                UseSkillAndWait(_ConversionShield);  
                UseSkillAndWait(_healSkill2);
                UseSkillAndWait(_healSkill3);
                UseSkillAndWait(_healSkill3);
              }
              if(healTarget.hpp <= _tripplehealPercentage)
              { 
                CheckIfHasbuff(_HealingBuff2, _HealBuffSkill);
                CheckIfHasbuff(_HealingBuff1, _healSkill1);  
                UseSkillAndWait(_healSkill2); 
              }
              if(healTarget.hpp <= _doublehealPercentage)
              {      
                CheckIfHasbuff(_HealingBuff2, _HealBuffSkill);
                CheckIfHasbuff(_HealingBuff1, _healSkill1);  
              }
              if(healTarget.hpp <= _MinihealPercentage)
              {  
                CheckIfHasbuff(_HealingBuff1, _healSkill1);
              }
            }
          }
        }
////////////////////////////////////////////////////////
//////// Get Lowest HP
//////////////////////////////////////////////////////// 
     public Creature getLowestHPMember(){
            List<PartyMember> party = getPartyMembers();
            PartyMember lowestHP = party[0];
            foreach(PartyMember member in party)
            {  
              if(((double)member.curhp / (double)member.maxhp) * 100 < ((double)lowestHP.curhp / (double)lowestHP.maxhp) * 100)
              {
                lowestHP = member;
              }
            }
            //DebugLog(lowestHP.nick + " has the lowest HP (" + lowestHP.curhp + " | " + (((double)lowestHP.curhp / (double)lowestHP.maxhp) * 100) + ")");
            return lowestHP.obj;
        }
////////////////////////////////////////////////////////
//////// UseSkill
////////////////////////////////////////////////////////  
        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);
        }      
////////////////////////////////////////////////////////
//////// Check if has buff, if not cast the buff
////////////////////////////////////////////////////////  
      public void CheckIfHasbuff(string Buffname, string Sklname, bool selftargeting = false)
      {
          if (!me.target.getBuffs().Exists(b => b.name == Buffname)) 
          {
              UseSkillAndWait(Sklname, selftargeting);    
          }
      }
////////////////////////////////////////////////////////
//////// Following party leader
////////////////////////////////////////////////////////  
        public void moveToPlayer(Creature obj)
        {
            ComeTo(obj, _followRange);
        }       
////////////////////////////////////////////////////////
//////// Seting up party leader
////////////////////////////////////////////////////////  
       public void SetPartyLeader()
       {
            _leader = getPartyLeaderObj();
            if(_leader == null || _leader == me)
            {
              DebugLog("No party leader found");
            } 
       }       
////////////////////////////////////////////////////////
//////// Debug
////////////////////////////////////////////////////////  
        public void DebugLog(string Logger_string)
        {
            if (doLogs == true)  
            {
               Log(Time() + Logger_string);
            }
        } 
////////////////////////////////////////////////////////
//////// GetTime
////////////////////////////////////////////////////////          
        public string Time() //- Get Time
        {
            string A = DateTime.Now.ToString("[hh:mm:ss] ");
            return A;
        }              
////////////////////////////////////////////////////////
//////// Stop
////////////////////////////////////////////////////////            
       public void PluginStop()
       {  
            DebugLog("Script stoped"); 
       }
////////////////////////////////////////////////////////
//////// INFO
////////////////////////////////////////////////////////          
       public static string GetPluginAuthor()
       {
           return "CAMOTbIK";
       }

       public static string GetPluginVersion()
       {
           return "0.0.0.1 ALPHA";
       }

       public static string GetPluginDescription()
       {
           return "Personal healer";
       }
   }
}
 
Last edited:
не запускается ошибка
hiler.dll: Неизвестная ошибка при выполнении, либо плагин был выгружен принудительно.
 
Made the following changes as it may help others as I am learning from this to enhance my Four Notes Project. Removed the names for just the ID's so there is no need for translation.

Code:
        private int _healSkill1 = 10547; // Resurgence
        private int _healSkill2 = 10534; // Antithesis
        private int _healSkill3 = 14929; // Fervent Healing
        private int _healSkill4 = 10720; // Mend
        private int _HealBuffSkill = 11379; // Mirror Light
        private int _ConversionShield = 11869; // Conversion Shield
        private int _HealingBuff1 = 10547; // Resurgence
        private int _HealingBuff2 = 16004; // Aranzeb's Boon
 
Back
Top