Jump to content

joaocoros

WRobot user
  • Posts

    17
  • Joined

  • Last visited

Posts posted by joaocoros

  1. I did some research and created my own pluging. It is kinda janky but seems to work well enough for what i want.
    Any suggestions on how to improve it are appreciated.

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading;
    using robotManager.Helpful;
    using wManager.Plugin;
    using wManager.Wow.Helpers;
    using wManager.Wow.ObjectManager;
    
    
    public class Main : IPlugin
    {
        private bool __isRunning;
    
        private string __zone;
    
        private List<WoWPlayer> __hordePlayers;
    
        private System.Timers.Timer __bgTimer;
        private System.Timers.Timer __workTimer;
        private System.Timers.Timer __restTimer;
        public void Initialize()
        {
            __isRunning = true;
            Logging.Write("BG Assist plugin started");
    
            __hordePlayers = new List<WoWPlayer>();
    
            __bgTimer = new System.Timers.Timer();
            __bgTimer.Interval = 60 * 60 * 1000; //1h
            __bgTimer.Elapsed += LeaveBg;
            __bgTimer.AutoReset = false;
    
            __workTimer = new System.Timers.Timer();
            __workTimer.Interval = 3 * 60 * 1000; // 3 mins
            __workTimer.Elapsed += PauseBot;
            __workTimer.AutoReset = false;
    
            __restTimer = new System.Timers.Timer();
            __restTimer.Interval = 2 * 60 * 1000; // 2 mins
            __restTimer.Elapsed += ResumeBot;
            __restTimer.AutoReset = false;
    
            MainLoop();
        }
    
        public void Dispose()
        {
            __isRunning = false;
    
            __bgTimer.Stop();
            __workTimer.Stop();
            __restTimer.Stop();
    
            __bgTimer.Elapsed -= LeaveBg;
            __workTimer.Elapsed -= PauseBot;
            __restTimer.Elapsed -= ResumeBot;
    
            Logging.Write("BG Assist plugin stopped");
    
        }
    
        public void Settings()
        {
            
        }
    
        private void MainLoop()
        {
            while (__isRunning)
            {
                if (Conditions.InGameAndConnectedAndProductStarted)
                {
                    __zone = Usefuls.MapZoneName;
    
                    if (__zone == "Alterac Valley" && !__bgTimer.Enabled)
                    {
                        // play for 1 hour max then leave the BG
                        Logging.Write("BG Assist - timer started");
                        __bgTimer.Start();
    
                        // play for 3 mins, rest for 2 mins
                        __workTimer.Start();
                    }
    
                    // Try to always fight the closest target
                    if (__zone == "Alterac Valley" && !Conditions.ProductInPause && ObjectManager.Me.IsAlive && (!ObjectManager.Me.InCombat || !ObjectManager.Me.HasTarget))
                    {
                        if (ObjectManager.GetObjectWoWPlayer().Any(x => x.IsHorde))
                        {
                            __hordePlayers = new List<WoWPlayer>();
    
                            // Grab a list of players and add all horde units to a list
                            foreach (WoWPlayer _unit in ObjectManager.GetObjectWoWPlayer())
                            {
                                if (_unit.IsHorde && _unit.IsAlive)
                                {
                                    __hordePlayers.Add(_unit);
                                }
                            }
    
                            // Spammy but useful for now...
                            Logging.Write($"BG Assist - starting fight with...{__hordePlayers.OrderBy(x => x.Position.DistanceTo(ObjectManager.Me.Position)).FirstOrDefault().Name}");
                            Fight.StopFight();
                            Fight.StartFight(__hordePlayers.OrderBy(x => x.Position.DistanceTo(ObjectManager.Me.Position)).FirstOrDefault().Guid, false);
                        }
                    }
                }
    
                Thread.Sleep(1000);
            }
    
        }
    
        private void LeaveBg(Object source, System.Timers.ElapsedEventArgs e)
        {
            Logging.Write($"BG Assist plugin - This bg has run for more than an hour. Taking a break...");
            Battleground.ExitBattleGround();
            __bgTimer.Stop();
            Thread.Sleep(10000);
    
        }
    
        private void PauseBot(Object source, System.Timers.ElapsedEventArgs e)
        {
            if (__zone == "Alterac Valley")
            {
                Logging.Write("BG Assist - resting...");
                robotManager.Products.Products.InPause = true;
                __restTimer.Start();
            }
        }
    
        private void ResumeBot(Object source, System.Timers.ElapsedEventArgs e)
        {
            Logging.Write("BG Assist - working again...");
            robotManager.Products.Products.InPause = false;
            __workTimer.Start();
    
        }
    }

     

×
×
  • Create New...