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; }
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); }); }
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); }
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 }
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 { } }
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(); }
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); }
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)); }