private void btn_ServerRetry_Click(object sender, RoutedEventArgs e) { MemoryFunctions.HackMaxZoomLevel(); SoundModule.PlayAsyncSound("Shriek2.wav"); SoundModule.PlayAsyncSound("Shriek.wav"); //CHATLOG //SigScan ss = new SigScan(MemoryHandler.Instance.Process, new IntPtr(0x1000 + MemoryHandler.Instance.BaseAddress), 0xEE0000); //IntPtr result = ss.FindPattern(SigScan.SigToByte("85 c0 74 0e 8b 0d ? ? ? ? 6a 00 51 E8 ? ? ? ? A1"), "xxxxxx????xxxx????x", 19); //uint chatlogPtr = MemoryHandler.Instance.GetUInt32((uint)result); //System.Diagnostics.Debug.Print(chatlogPtr.ToString("X")); // HOTKEY HAX //SigScan ss = new SigScan(MemoryHandler.Instance.Process, new IntPtr(0x1000 + MemoryHandler.Instance.BaseAddress), 0xEE0000); //IntPtr result = ss.FindPattern(SigScan.SigToByte("55 8B EC 8B 45 08 C1 E0 04 03 45 0C 69 C0 ? ? ? ? 8D 54 08 48"), "xxxxxxxxxxxxxx????xxxx", 0); //System.Diagnostics.Debug.Print(result.ToString("X")); //MemoryFunctions.ForceHotkey(Convert.ToInt16(txt_Slot.Text), Convert.ToInt16(txt_bar.Text)); }
private void ScholarCureMode() { Recast recast = new Recast(); int curePotency = int.Parse(txt_CurePotency.Text); int cure2Potency = int.Parse(txt_Cure2Potency.Text); //int maxMissing = 0; int hurtPlayers = 0; Character tank = null, tank2 = null; List <Character> monsters = new List <Character>(); List <Character> fate = new List <Character>(); List <Character> players = new List <Character>(); List <Character> npcs = new List <Character>(); List <Character> damagedTargets = new List <Character>(); List <Character> deadTargets = new List <Character>(); Character statusAilment = null; MemoryFunctions.GetCharacters(monsters, fate, players, ref _user); MemoryFunctions.GetNPCs(npcs); _hotkeys.QuickRefreshAbilities(); if (_user.ContainsStatusEffect(292, 0, false)) { return; } players.AddRange(npcs); List <Character> targets = (from player in players from target in _targets where player.Name.ToLower() == target.ToLower() select player).ToList(); targets = targets.Distinct().ToList(); if (_user.Health_Current == 0) { return; } if (_user.ContainsStatusEffect(451, 0, false, (float)3.0)) { SoundModule.PlayAsyncSound("cursedVoice.wav"); while (_user.ContainsStatusEffect(451, 0, false)) { Thread.Sleep(100); } Thread.Sleep(200); } recast.Refresh(); if (recast.Abilities.Contains((int)Recast.eAbilities.Aetherflow) == false && _user.ContainsStatusEffect(304, 0, false, 1) == false) // Aetherflow { Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D5); } foreach (Character target in targets) { target.Refresh(); if (target.Name == txt_Tank.Text) { tank = target; } if (target.Name == txt_Tank2.Text) { tank2 = target; } if (target.Valid == false) { continue; } if (target.ContainsStatusEffect(292, 0, false)) { continue; } if (target.DistanceFrom(_user) >= 30) { continue; } if (target.Health_Current == 0) { deadTargets.Add(target); continue; } int healthMissing = target.Health_Max - target.Health_Current; if (healthMissing >= curePotency || target.Health_Percent < 70) { damagedTargets.Add(target); hurtPlayers++; } foreach (var item in lst_StatusEffects.Items) { if (target.ContainsStatusEffect(Int32.Parse(item.ToString()), 0, false) && target.ContainsStatusEffect(292, 0, false) == false) { statusAilment = target; } } } if (chk_SwiftcastRaiseAll.IsChecked == true) { deadTargets.Clear(); deadTargets.AddRange(from player in players where player.Valid where !player.ContainsStatusEffect(292, 0, false) where !(player.DistanceFrom(_user) >= 30) where player.Health_Current == 0 select player); } // Raise Tanks and Healers first deadTargets.Sort((a, b) => a.JobPriority.CompareTo(b.JobPriority)); // Summon Eos only if the dead people do not include a tank or healer if (recast.SubAbilities.Contains((int)Recast.eSubAbilities.SwiftCast) == false && recast.WeaponSpecials.Count == 0) { List <Character> userPets = (from pet in monsters where pet.Owner == _user.ID select pet).ToList(); if (userPets.Count == 0) { if (deadTargets.Count > 0) { if (deadTargets.First().JobPriority > 2) { Thread.Sleep(150); if (ForceSwiftcast()) { return; } Thread.Sleep(350); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Thread.Sleep(750); return; } } else { Thread.Sleep(150); if (ForceSwiftcast()) { return; } Thread.Sleep(200); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D6); Thread.Sleep(750); return; } } } // Check if tank needs healing first if (chk_TankPriority.IsChecked == true) { // Check who is main tank atm. if (tank != null && tank2 != null) { Character tank1Target = MemoryFunctions.GetCharacterFromID(tank.TargetID); Character tank2Target = MemoryFunctions.GetCharacterFromID(tank2.TargetID); Character highestHp = null; if (tank2Target != null) { highestHp = tank2Target; } if (tank1Target != null) { highestHp = tank1Target; } if (tank2Target != null && highestHp != null) { if (tank2Target.Health_Max > highestHp.Health_Max) { highestHp = tank2Target; } } if (highestHp != null) { Character monstersTarget = MemoryFunctions.GetCharacterFromID(highestHp.TargetID); if (monstersTarget != null) { if (monstersTarget.Name == tank2.Name) { Character ph = tank; tank = tank2; tank2 = ph; } } } } if (tank != null) { this.Title = "Main Tank: " + tank.Name; } if (CheckTankHealth(tank, deadTargets, recast, damagedTargets)) { return; } if (CheckTankHealth(tank2, deadTargets, recast, damagedTargets)) { return; } } if (_user.IsMoving || MemoryFunctions.GetGroundCursor() > 0) { if (_spellCastTimer != null) { _spellCastTimer.Stop(); _spellCastTimer = null; } _spellCast = false; if (damagedTargets.Count > 0) { damagedTargets.Sort((a, b) => a.Health_Percent.CompareTo(b.Health_Percent)); damagedTargets.First().Target(); } return; } if ((chk_SwiftcastRaise.IsChecked == true || chk_SwiftcastRaiseAll.IsChecked == true) && deadTargets.Count > 0 && recast.SubAbilities.Contains((int)Recast.eSubAbilities.SwiftCast) == false && recast.WeaponSpecials.Count == 0 && _user.Mana_Current >= 798) { deadTargets.First().Target(); Thread.Sleep(150); if (ForceSwiftcast()) { return; } Thread.Sleep(150); Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.Dash); Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.Dash); Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.Dash); Thread.Sleep(150); } else if (damagedTargets.Count > 0) { damagedTargets.Sort((a, b) => a.Health_Percent.CompareTo(b.Health_Percent)); damagedTargets.First().Target(); Thread.Sleep(100); recast.Refresh(); if (recast.WeaponSpecials.Count == 0) { if (_spellCast) { _spellCastTimer = new Stopwatch(); _spellCastTimer.Reset(); _spellCastTimer.Start(); _spellCast = false; } // Make sure we are not spamming spells too quickly. if (_spellCastTimer != null) { if (_spellCastTimer.ElapsedMilliseconds <= _castWaitTime) { return; } _spellCastTimer.Stop(); _spellCastTimer = null; } recast.Refresh(); Stopwatch timeout = new Stopwatch(); timeout.Reset(); timeout.Start(); while (recast.WeaponSpecials.Count == 0) { if (timeout.ElapsedMilliseconds > 1000) { _spellCast = false; break; } Utilities.Keyboard.KeyBoardHelper.KeyPress(hurtPlayers >= 3 ? Keys.Dash : Keys.D0); recast.Refresh(); _spellCast = true; _hotkeys.QuickRefreshAbilities(); } } } else if (statusAilment != null) { statusAilment.Target(); Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D0); } }
public override void Fight(Character user, Character monster, Recast recast) { base.Fight(user, monster, recast); bool ignoreDOT = false; Hotkeys hotkeys = new Hotkeys(); hotkeys.RefreshAbilities(); if (hotkeys[STRAIGHTSHOT].InRange == 0) { return; } //UIWindow ui = new UIWindow(); //ui.RefreshPointers(); // if (ui.GetActiveWindowName() == "chatlog") // return; monster.Target(); recast.Refresh(2.1); user.Refresh(); if (user.ContainsStatusEffect2(451, (float)3.5)) { Debug.Print("Cursed Voice"); SoundModule.PlayAsyncSound("cursedVoice.wav"); while (user.ContainsStatusEffect(451, 0, false)) { Thread.Sleep(100); } Thread.Sleep(200); user.Refresh(); } if (monster.Name.ToLower().Contains("renaud")) { return; } // Stop for turn 6 ability if (monster.UsingAbilityID == 1949) { //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } List <Character> nearMobs = monster.MonstersNear(100.0); // Blight Turn 6 if (nearMobs.Any(mob => mob.UsingAbilityID == 1949)) { //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } // Turn 7 Petrification if (nearMobs.Any(mob => mob.UsingAbilityID == 1979)) { SoundModule.PlayAsyncSound("petrification.wav"); //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } if (nearMobs.Any(mob => mob.UsingAbilityID == 1969)) { SoundModule.PlayAsyncSound("petrification.wav"); //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } if (user.ContainsStatusEffect(452, 0, false)) { SoundModule.PlayAsyncSound("Shriek.wav"); } //if (nearMobs.Any(mob => mob.UsingAbilityID == 1967)) //{ // if (user.ContainsStatusEffect(452, 0, false)) // { // SoundModule.PlayAsyncSound("Shriek.wav"); // } // else // { // SoundModule.PlayAsyncSound("Shriek2.wav"); // } //} if (MemoryFunctions.GetGroundCursor() > 0) { return; } foreach (string mobToIgnore in _ignoreDOTMobs) { if (monster.Name.ToLower().Contains(mobToIgnore.ToLower()) && monster.Name.ToLower().Contains("gaoler") == false) { ignoreDOT = true; } } if (MemoryFunctions.GetMapID() == 364 && monster.Name.Contains("Good King") == false) { ignoreDOT = true; } if (hotkeys[INTERNALRELEASE].PercentReady >= 99 && user.Level >= 26 && Global.DisableBuffs == false && user.TP_Current >= 40 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(INTERNALRELEASE, 21, MemoryFunctions.ActionType.Ability); hotkeys[INTERNALRELEASE].UseAbility(); } else if (recast.WeaponSpecials.Count == 0) { if ((user.ContainsStatusEffect(130, 0, false, (float)3.0) == false || user.ContainsStatusEffect(122, 0, false)) && user.Level >= 2 && user.TP_Current >= 70) { //MemoryFunctions.ForceAction(STRAIGHTSHOT, 20, MemoryFunctions.ActionType.WS); hotkeys[STRAIGHTSHOT].UseAbility(); } else if (monster.ContainsStatusEffect(124, user.ID, true, (float)2.5) == false && user.Level >= 6 && user.TP_Current >= 100 && ignoreDOT == false && monster.StatusEffects().Count < 29) { //MemoryFunctions.ForceAction(VENOMOUSBITE, 20, MemoryFunctions.ActionType.WS); hotkeys[VENOMOUSBITE].UseAbility(); } else if (monster.ContainsStatusEffect(129, user.ID, true, (float)2.5) == false && user.Level >= 30 && user.TP_Current >= 100 && monster.StatusEffects().Count < 29 && (ignoreDOT == false || monster.Name.ToLower().Contains("infernal nail"))) { //MemoryFunctions.ForceAction(WINDBITE, 20, MemoryFunctions.ActionType.WS); hotkeys[WINDBITE].UseAbility(); } else if (hotkeys[HAYMAKER].Highlighted && user.Level >= 10 && user.TP_Current >= 40) { //MemoryFunctions.ForceAction(HAYMAKER, 20, MemoryFunctions.ActionType.WS); hotkeys[HAYMAKER].UseAbility(); } else if (user.TP_Current >= 60) { //MemoryFunctions.ForceAction(HEAVYSHOT, 20, MemoryFunctions.ActionType.WS); hotkeys[HEAVYSHOT].UseAbility(); } } else if (hotkeys[INVIGORATE].PercentReady >= 100 && user.Level >= 4 && user.TP_Current <= 550 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(INVIGORATE, 20, MemoryFunctions.ActionType.Ability); hotkeys[INVIGORATE].UseAbility(); } else if (hotkeys[RAGINGSTRIKES].PercentReady >= 100 && user.Level >= 4 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(RAGINGSTRIKES, 19, MemoryFunctions.ActionType.Ability); hotkeys[RAGINGSTRIKES].UseAbility(); } else if (hotkeys[BLOODFORBLOOD].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") == false && monster.Name.Contains("Conflagration") == false && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) // && user.ContainsStatusEffect(125, 0, false) == false { //MemoryFunctions.ForceAction(BLOODFORBLOOD, 20, MemoryFunctions.ActionType.Ability); hotkeys[BLOODFORBLOOD].UseAbility(); } else if ( hotkeys[BLOODFORBLOOD].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") && monster.Health_Percent <= 55 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) // && user.ContainsStatusEffect(125, 0, false) == false { //MemoryFunctions.ForceAction(BLOODFORBLOOD, 20, MemoryFunctions.ActionType.Ability); hotkeys[BLOODFORBLOOD].UseAbility(); } else if (hotkeys[HAWKSEYE].PercentReady >= 100 && user.Level >= 26 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(HAWKSEYE, 15, MemoryFunctions.ActionType.Ability); hotkeys[HAWKSEYE].UseAbility(); } else if (hotkeys[BARRAGE].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") == false && monster.Name.Contains("Conflagration") == false && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BARRAGE, 12, MemoryFunctions.ActionType.Ability); hotkeys[BARRAGE].UseAbility(); } else if (hotkeys[BARRAGE].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") && monster.Health_Percent <= 55 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BARRAGE, 12, MemoryFunctions.ActionType.Ability); hotkeys[BARRAGE].UseAbility(); } else if (hotkeys[BLOODLETTER].PercentReady >= 99 && user.Level >= 12 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BLOODLETTER, 16, MemoryFunctions.ActionType.Ability); hotkeys[BLOODLETTER].UseAbility(); } else if (monster.Health_Percent <= 20 && hotkeys[MISERYSEND].PercentReady >= 99 && user.Level >= 8 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(MISERYSEND, 16, MemoryFunctions.ActionType.Ability); hotkeys[MISERYSEND].UseAbility(); } else if ( hotkeys[BLUNTARROW].PercentReady >= 99 && user.Level >= 42 && Global.StunBotOpen == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BLUNTARROW, 16, MemoryFunctions.ActionType.Ability); hotkeys[BLUNTARROW].UseAbility(); } }