示例#1
0
 private void BtnAttackTargetDummyClick(object sender, EventArgs e)
 {
     if (ObjectManager.InGame)
     {
         Langs.Load();
         if (ObjectManager.MyPlayer.IsValid && Langs.TrainingDummy(ObjectManager.MyPlayer.Target.Name))
         {
             if (_killDummy == null || !_killDummy.IsAlive)
             {
                 KeyHelper.LoadKeys();
                 BarMapper.MapBars();
                 if (CombatEngine.StartOk)
                 {
                     CombatEngine.BotStarted();
                 }
                 else
                 {
                     Logging.Write(LogType.Warning, "CustomClass returned false on StartOk not starting");
                     return;
                 }
                 _killDummy              = new Thread(KillTheDummy);
                 _killDummy.Name         = "KillDummy";
                 _killDummy.IsBackground = true;
                 _killDummy.Start();
             }
             BtnAttackTargetDummy.Enabled = false;
         }
         else
         {
             Logging.Write("Please target a Training dummy ingame");
         }
     }
 }
示例#2
0
        internal static void StartCombat(PUnit u)
        {
            if (ObjectManager.MyPlayer.IsDead)
            {
                Stop();
                return;
            }
            Unit.BaseAddress = u.BaseAddress;
            InvokeCombatStatusChanged(new GCombatEventArgs(CombatType.CombatStarted));
            _combatThread = new Thread(CombatThread)
            {
                IsBackground = true
            };
            _combatThread.Name = "CombatThread";
            _combatThread.Start();
            _combatResult = CombatResult.Unknown;
            while (_combatThread.IsAlive)
            {
                try
                {
                    if (Unit.IsDead)
                    {
                        _combatResult = CombatResult.Success;
                        break;
                    }

                    if (!Unit.IsValid || PBlackList.IsBlacklisted(Unit))
                    {
                        if (!Langs.TrainingDummy(ObjectManager.MyPlayer.Target.Name))
                        {
                            _combatResult = CombatResult.Bugged;
                            break;
                        }
                    }

                    if (ObjectManager.MyPlayer.IsDead)
                    {
                        _combatResult = CombatResult.Died;
                        break;
                    }

                    if (Unit.IsPet || Unit.IsTotem)
                    {
                        Logging.Write("We are attacking a totem or a pet... doh");
                        _combatResult = CombatResult.Bugged;
                        break;
                    }

                    if (!Langs.TrainingDummy(Unit.Name) && Unit.IsTagged && !Unit.IsTaggedByMe && !Unit.IsTargetingMe &&
                        Unit != ObjectManager.MyPlayer)
                    {
                        Logging.Write("Other player tag");
                        _combatResult = CombatResult.OtherPlayerTag;
                        break;
                    }
                }
                catch (Exception e)
                {
                    Logging.Write("Exeption in combat handler: " + e);
                }
                Thread.Sleep(160);
            }
            ExitCombat();
        }
示例#3
0
 private static void CombatThread()
 {
     try
     {
         Logging.Write("Started combat engine");
         if (ObjectManager.MyPlayer.IsMounted && !ObjectManager.MyPlayer.TravelForm)
         {
             KeyHelper.SendKey("GMount");
         }
         MoveHelper.ReleaseKeys();
         if (DefendAgainst() == null)
         {
             Logging.Write("Pulling: " + Unit.Name + " " + Unit.GUID);
             MoveHelper.MoveToUnit(Unit, 30);
             if (!Unit.TargetHostile())
             {
                 if (ObjectManager.GetAttackers.Count == 0)
                 {
                     PPullBlackList.Blacklist(Unit, 800, true);
                 }
             }
             Unit.Face();
             MoveHelper.ReleaseKeys();
             PullResult result = Pull();
             Logging.Write("Pull result: " + result);
             if (result.Equals(PullResult.CouldNotPull))
             {
                 PPullBlackList.Blacklist(Unit, 800, true);
                 return;
             }
             if (PPullBlackList.IsBlacklisted(Unit))
             {
                 return;
             }
         }
         else
         {
             Logging.Write("Got into combat with: " + Unit.Name);
             Unit.TargetHostile();
             Unit.Face();
         }
         Ticker combatTimeout;
         if (ObjectManager.MyPlayer.Level > 10)
         {
             combatTimeout = new Ticker(20 * 1000);
         }
         else
         {
             combatTimeout = new Ticker(40 * 1000);
         }
         while (!Unit.IsDead)
         {
             _combatLoopThread = new Thread(DoCombat)
             {
                 IsBackground = true
             };
             _combatLoopThread.Name = "DoCombat";
             _combatLoopThread.SetApartmentState(ApartmentState.STA);
             _combatLoopThread.Start();
             while (_combatLoopThread.IsAlive)
             {
                 Thread.Sleep(50);
                 if (!Langs.TrainingDummy(Unit.Name) && combatTimeout.IsReady && Unit.Health > 85)
                 {
                     Logging.Write("Combat took to long, bugged - blacklisting");
                     _combatResult = CombatResult.Bugged;
                     if (!PBlackList.IsBlacklisted(Unit))
                     {
                         PBlackList.Blacklist(Unit, 1200, false);
                     }
                     return;
                 }
             }
         }
     }
     catch
     {
     }
 }