Пример #1
0
        private void GUITimer_Tick(object sender, EventArgs e)
        {
            if (!Manager.IsInGame)
            {
                return;
            }

            if (ScriptManager.ScriptPool.Where(s => s.IsRunning).Contains(SelectedScript))
            {
                btnScriptStart.Enabled = false;
                btnScriptStop.Enabled  = true;
            }
            else
            {
                btnScriptStart.Enabled = true;
                btnScriptStop.Enabled  = false;
            }

            WoWLocalPlayer me = Manager.LocalPlayer;

            pbHealth.Maximum = (int)me.MaxHealth;
            pbHealth.Value   = (int)me.Health;

            pbPower.Maximum = (int)me.MaxPower;
            pbPower.Value   = (int)me.Power;
        }
Пример #2
0
        private void btnLoSTest_Click(object sender, EventArgs e)
        {
            const uint flags = 0x120171;

            WoWLocalPlayer me = Manager.LocalPlayer;

            if (me == null || !me.IsValid)
            {
                return;
            }
            Location start = me.Location;

            WoWObject target = me.Target;

            if (target == null || !target.IsValid)
            {
                return;
            }
            Location end = target.Location;

            start.Z += 1.3f;
            end.Z   += 1.3f;

            Manager.ExecutionQueue.AddExececution(() =>
            {
                Location result;
                bool los = (WoWWorld.Traceline(start, end, out result, flags) & 0xFF) == 0;
                Log.WriteLine("LoSTest: {0} -> {1} = {2} @ {3}", me.Location, target.Location, los, result);
            });
        }
Пример #3
0
        public override void OnStart()
        {
            if (!Manager.ObjectManager.IsInGame)
            {
                return;
            }

            WoWLocalPlayer lp = Manager.LocalPlayer;

            if (CHANGE_DISPLAYID)
            {
                DefaultDisplayID = lp.GetDescriptor <uint>(WoWUnitFields.UNIT_FIELD_NATIVEDISPLAYID);
                lp.SetDescriptor <uint>(WoWUnitFields.UNIT_FIELD_DISPLAYID, MORPH_DISPLAYID);
                Print("Changing display ID from {0} to {1}", DefaultDisplayID, MORPH_DISPLAYID);
            }

            if (CHANGE_SCALE)
            {
                DefaultScale = lp.GetDescriptor <float>(WoWObjectFields.OBJECT_FIELD_SCALE_X);
                lp.SetDescriptor <float>(WoWObjectFields.OBJECT_FIELD_SCALE_X, MORPH_SCALE);
                Print("Changing scale from {0:1} to {1:1}", DefaultScale, MORPH_SCALE);
            }

            // TODO: Implement CGUnit_C__UpdateModel VMT
        }
        private static void UpdateUnits()
        {
            player = ObjectManager.Me;
            target = ObjectManager.Target;
            pet    = ObjectManager.Pet;
            List <WoWUnit> relevantUnits = new List <WoWUnit>();

            relevantUnits.AddRange(ObjectManager.GetObjectWoWPlayer().Where(u => u.GetDistance <= 50));
            relevantUnits.AddRange(ObjectManager.GetObjectWoWUnit().Where(u => u.GetDistance <= 50));
            units.Clear();
            units.AddRange(relevantUnits);
        }
Пример #5
0
        public override void OnTerminate()
        {
            WoWLocalPlayer lp = Manager.LocalPlayer;

            if (CHANGE_DISPLAYID)
            {
                lp.SetDescriptor <uint>(WoWUnitFields.UNIT_FIELD_DISPLAYID, DefaultDisplayID);
            }
            if (CHANGE_SCALE)
            {
                lp.SetDescriptor <float>(WoWObjectFields.OBJECT_FIELD_SCALE_X, DefaultScale);
            }

            // TODO: Implement CGUnit_C__UpdateModel VMT
        }
Пример #6
0
        private void GUITimer_Tick(object sender, EventArgs e)
        {
            if (lstScripts.Items.Count == 0)
            {
                if (Manager.Scripts != null)
                {
                    SetupScripts();
                }
            }

            if (Manager.Scripts.Scripts.Where(s => s.IsRunning).Contains(SelectedScript))
            {
                btnScriptStart.Enabled = false;
                btnScriptStop.Enabled  = true;
            }
            else
            {
                btnScriptStart.Enabled = true;
                btnScriptStop.Enabled  = false;
            }

            if (!Manager.ObjectManager.IsInGame)
            {
                return;
            }

            try
            {
                WoWLocalPlayer lp = Manager.LocalPlayer;
                lblHealth.Text    = string.Format("{0}/{1} ({2:0}%)", lp.Health, lp.MaxHealth, lp.HealthPercentage);
                lblPowerText.Text = string.Format("{0}:", lp.PowerType);
                lblPower.Text     = string.Format("{0}/{1} ({2:0}%)", lp.Power, lp.MaxPower, lp.PowerPercentage);
                lblLevel.Text     = string.Format("{0}", lp.Level);
                lblZone.Text      = string.Format("{0} ({1})", WoWWorld.CurrentZone ?? "<unknown>",
                                                  WoWWorld.CurrentSubZone ?? "<unknown>");
            }
            catch
            {
            }
        }
Пример #7
0
        public void Direct3D_EndScene()
        {
            ulong localPlayerGuid = _getLocalPlayer();

            if (localPlayerGuid == 0)
            {
                return;
            }

            IntPtr localPlayerPointer = _getObjectByGuid(localPlayerGuid, -1);

            if (localPlayerPointer == IntPtr.Zero)
            {
                return;
            }

            LocalPlayer = new WoWLocalPlayer(localPlayerPointer);

            foreach (WoWObject obj in _objects.Values)
            {
                obj.Pointer = IntPtr.Zero;
            }

            _enumVisibleObjects(_ourCallback, 0);

            foreach (var pair in _objects.Where(p => p.Value.Pointer == IntPtr.Zero).ToList())
            {
                _objects.Remove(pair.Key);
            }

            if (Direct3D.FrameCount == 0)
            {
                Log.WriteLine("ObjectManager: {0} objects", _objects.Count);
            }

            Objects = _objects.Values.ToList();
        }
Пример #8
0
        public void OnPulse()
        {
            uint localPlayerPointer = WoWFunctions._getActivePlayer();

            if (localPlayerPointer == 0)
            {
                return;
            }
            LocalPlayer = new WoWLocalPlayer(localPlayerPointer);

            foreach (var obj in _objects.Values)
            {
                obj.Pointer = 0;
            }

            WoWFunctions._enumVisibleObjects(_ourCallback, 0);

            foreach (var pair in _objects.Where(p => p.Value.Pointer == 0).ToList())
            {
                _objects.Remove(pair.Key);
            }

            Objects = _objects.Values.ToList();
        }
 public static bool AffectingCombat(this WoWLocalPlayer me)
 {
     return(Lua.LuaDoString <bool>(@"return (UnitAffectingCombat(""player"") ~= nil)"));
 }
 public static bool CastingSpell(this WoWLocalPlayer me, params string[] names)
 {
     return(names.Any(name => name == me.CastingSpell.Name || name == CombatUtil.CurrentSpell));
 }
 public static bool IsCasting(this WoWLocalPlayer me)
 {
     return(CombatUtil.IsCasting);
 }
Пример #12
0
        public override void Update()
        {
            if ((DateTime.Now - lastupdate).TotalMilliseconds < 500)
            {
                return;
            }

            lastupdate = DateTime.Now;

            DateTime start = DateTime.Now;

            player = WoWAPI.WoWAPI.Player;
            target = WoWAPI.WoWAPI.Target;

            if (player.IsDead)
            {
                return;
            }

            Heal();

            /*if (!player.InCombat && !player.HaveBuff("Prowl") && SpellManager.KnowSpell("Pounce") && WoWAPI.WoWAPI.GetDistance(player, target) < target.AggroDistance + 5)
             *  prowl.LaunchUsable();*/

            if (player.InCombat)
            {
                if (target != null)
                {
                    if (!player.HaveBuff("Cat Form") && target.IsAttackable && WoWAPI.WoWAPI.GetDistance(player, target) < target.AggroDistance + 10)
                    {
                        catform.LaunchUsable();
                    }

                    if (target.HaveBuff("Mangle (Cat)") && !target.HaveBuff("Rake"))
                    {
                        rake.LaunchUsable();
                    }

                    if (!target.HaveBuff("Mangle (Cat)") && target.HaveBuff("Rake"))
                    {
                        manglecat.LaunchUsable();
                    }

                    if (player.ComboPoint < 5)
                    {
                        manglecat.LaunchUsable();
                        claw.LaunchUsable();
                    }
                    else if (player.ComboPoint == 5)
                    {
                        ferociousbite.LaunchUsable();
                    }
                }
            }
            else if (!player.IsMounted)
            {
                if (player.IsSwimming && !player.HaveBuff("Aquatic Form"))
                {
                    aquaticform.LaunchUsable();
                }

                /*if (player.GetMove && WoWAPI.WoWAPI.GetDistance(player.Position, MovementManager.CurrentPath.LastOrDefault()) > 50)
                 *  travelform.LaunchUsable();*/
            }

            if (target != null && target.IsAttackable && !target.HaveBuff("Faerie Fire") && !target.HaveBuff("Faerie Fire (Feral)") && !player.HaveBuff("Prowl"))
            {
                if (player.HaveBuff("Cat Form") || player.HaveBuff("Bear Form") || player.HaveBuff("Dire Bear Form"))
                {
                    if (WoWAPI.WoWAPI.GetDistance(player, target) < faeriefireferal.MaxRange)
                    {
                        // For some reason this spell is bugged and can't be cast like other spells...
                        Lua.RunMacroText("/cast Faerie Fire (Feral)(Rank 5)");
                        Lua.RunMacroText("/cast Faerie Fire (Feral)(Rank 4)");
                        Lua.RunMacroText("/cast Faerie Fire (Feral)(Rank 3)");
                        Lua.RunMacroText("/cast Faerie Fire (Feral)(Rank 2)");
                        Lua.RunMacroText("/cast Faerie Fire (Feral)(Rank 1)");
                    }
                }
                else
                {
                    faeriefire.LaunchUsable(true);
                }
            }

            if (player.ManaPercentage < 20)
            {
                innervate.LaunchUsable(true, false);
            }

            RunOnInterval();

            if (player.Level == 70)
            {
                try
                {
                    foreach (Process proc in Process.GetProcessesByName("wow"))
                    {
                        proc.Kill();
                    }
                }
                catch
                {
                }
            }

            Logging.WriteDebug(string.Format("FightClass update took {0} ms", (DateTime.Now - start).TotalMilliseconds));
        }