Jump to content

Pasterke

Members
  • Posts

    165
  • Joined

  • Last visited

Everything posted by Pasterke

  1. The best method is to add spell condition to Healing Touch : isSpellOverlayed true.
  2. The only possibility to make a heal class is in C#. You can't make a healer routine with the fightclass creator. That's why it's called fightclass :)
  3. The worst thing you can do is add Barrier to the rotation. Normaly, the raid leader will instruct the healers when to use such a cooldown.
  4. Depends if it's your 1st char. If you already have mounts, you can use one of them. Ofc you need to learn mount skill, for Alliance in SW, for Horde in Ogrimmar, Trainers are near the Flight Master.
  5. Select Gatherer. Product Settings Profile Creator Set Record Path on on. Minimize Window. Usefull addon : Gathermate2 and Gathermate2_data. In addon config Gathermate2 choose import (check what you want to import) Open your map and put it in mini mode. You will see the ores on your map. Now fly araound making a circle (you end where you start) If you reach your startpoint again, maximize Profile Creator. Hit the save button, and give it a name. Close Profile Creator. Load your just created profile. Hit start. Realy easy to create your own profile.
  6. If you have an level 100 and you can fly in draenor, then you need no profiles to level 90-100. Just get the treasures and the bonus quests for each zone.
  7. It's only the starting area quests that are different for each race. Once they are level 5, move them to a capital city and start a quest line for Alliance or Horde. example Alliance : goto SW, pick up Eversong Wood Quests, Westfall Quests, Redridge Mountain Quests, Duskwood Quests, Strangleton Quests, Western(35-40) + Eastern Plaguelands Quests (40+), Burning Steppes, Swamp of Sorrow, Blasted Lands. You setup the same quest line for each faction, it's easier than setup different quest lines for each race.
  8. Since WoD, Mangle is Bear Form only. Look in your spell book, need Bear Form !
  9. If you play WoW on an Linux or FreeBSD machine, you have to run WoW in 32-bit mode, otherwise you run into problems with wine. Only older computers can only run in 32 bit mode, but I think that playing WoW on such an older computer will be an pain in the ... Running an windows 32 bit version limits you in memory use, only 4GB of memory is available. I also think it's time to move to an 64-bits bot, but who am I ? :)
  10. what are you trying to do ? If your interact returns null, wrobot will crash. public WoWPlayer getNearestPlayer { get { var t = ObjectManager.GetObjectWoWPlayer().Where(p => p != null //from here on you can add checks && p.IsAlive && p.IsHorde //or p.IsAlliance && !TraceLine.TraceLineGo(p.Position) //test if no objects between you and target (target is in line of sight) && p.GetDistance <= 40).OrderBy(p => p.HealthPercent).ThenBy(p => p.GetDistance).ToList(); //1st sort on healtpercent and if you want then by distance if (t.Count() > 0) // check if t > 0, what means he find something you ask { WoWPlayer v = new WoWPlayer(t.FirstOrDefault().GetBaseAddress); return v; } return null; //if t == 0 then return null } } then yo can use getNearestPlayer to do something in your code if (getNearestPlayer != null) { try { Interact.InteractGameObject(getNearestPlayer.GetBaseAddress); spell.Launch(); } catch (Exception e) { Logging.WriteError("ErrorDescription: " + e.ToString()); } }
  11. Wild Growth is an aoe spell, max players means, how many players must be below the health percentage settings before casting Wild Growth. Party good value = 3, raid = 5
  12. Version 1.0.0

    319 downloads

    Druid Healing Routine. Recommended Talents : ysera's Gift, Soul of the Forest, Nature's Vigil, Germination. Open settings to set your spells by 1st use. Enjoy :)
  13. Test version 2.2, I use this one to heal parties and raids and it works. I don't say it works perfect, I think this bot is not optimized for healing tasks. The bot iterate over the healing spells and when he cannot cast, he iterate back over and then he 1st cast the spells that he could not cast. So, you don't have a just moment situation when he needs to cast, he always run behind. I try something in version 2.2 and now it works more or less as it should. I have healbot addon by the hand to use it when needed.
  14. Version 2.3

    300 downloads

    Discipline Priest Healing && Dps fightclass. For the moment, here a basic healing routine. I tested it out completely in Proving Grounds and with ilvl 614 it was quiet easy to get silver. How to use this routine ? There are 2 rotations, healing and dps. As soon you enter a party, the fightclass will auto switch to the healing routine. Word about atonement. It's very simple, you should not use it. The time of MoP smite priests is gone. The main goal of a healer is to heal, not to dps ! If you want to use it, feel free, the posiblility is there. If you use it and your mana is below 75% he will auto disable atonement. If you are in a party with more than 5 players, then you can't use atonement at all. Recommend Glyphs : Holy Fire, Reflective Shield, Penance. Recommended Talents : Desperate prayer - Body and Soul - Power Word: Solace (you should realy have this one) - cascade - words of mending Power Word: Solace is a great talent to get mana back, much better than mindbender. Cooldown is 10 sec and you never loose your mana generation, because you get your mana back as soon you cast it. With mindbender, the chance is that the target dies before you get your fully mana refunded. Power Word: Barrier is not in te rotation. Use it when you want or when raid leader told you when to use it. There are more things to add, but for the moment the healing routine does his work. [pasterke]_DiscPriestHealing_2.3.zip
  15. If there is any need for a pve fight class (healing, tank, dps) let me know. I will level a toon from scratch and write it while i'm progressing. Don't ask for PvP, I just hate PvP :)
  16. Version 2.1.0

    379 downloads

    After been banned again for 6 months with other bot, I will put some time in this one. No many ban reports here, so maybe it's safer :) As i'm playing DK, 1st thing I did is wrote a DK Blood Routine to fill my needs, and I want to share it with you :) Don't use Plague Leech as long you don't have Outbreak skill. As this is a tank routine I advice to take those talents : Plague Leech (see comment above) Blood Tap Death Pact Defile Best Glyphs : Blood Boil, Outbreak Be sure to look at the settings before starting the bot. Added HotKey to use Cooldowns. (todo: activate trinkets with cooldown hotkey) New functions ! I added my own movement to the fightclass. Be sure to disable manage character movement in the general settings! If you want movement, enable it in the fightclass settings. Why my own settings ? Simple, now you can move away from your target if you need (eg. ground effects, waiting for spellcast to finish ....) In the settings you can specify your movement keys. As soon you hold down a movement key, as long you hold the key down, the bot wil move in the direction of the pressed key. If you need to stand still a little bit until the target comes to you or you need to wait for the target to finish a spellcast (eg. 1st boss in cata dungeon Black Rock, where you need to stay away from boss, after chains are broken), just hold down the right mouse button. As long you hold the right mouse button down, the bot will not move. [pasterke]_BloodDK_28122015.zip
  17. BTW, Proving Grounds is also Supported.
  18. it's ok, everything is working now, I uploaded a version for everyone :) Ty for the help.
  19. Version 1.0.1

    1382 downloads

    Druid Healing Routine. Force of Nature is the best talent you can choose, it helps alot with healing. Used Talents : Force of Nature, Dream of Cenarius , Moment of Clarity. PS. Thanks to Droidz to help me out with my Lists and some Lua Code.
  20. It's OK, I restarted everything and will continue to make the fightclass :)
  21. I give up. Too many System.NullReferenceException errors because of the bad use of lists. As long as we can't refer to FirstOrDefault() == null it's impossible to get rid of those System.NullReferenceException. Normally it's so easy, you build a list, you sort the list and you take the FirstOrDefault(). But with wrobot structure to approach units, that's impossible. Class1.cs
  22. Why he's not casting wild mushroom ? using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using robotManager; using robotManager.FiniteStateMachine; using robotManager.Helpful; using wManager.Wow.Class; using wManager.Wow.Enums; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : ICustomClass { private DruidResto _druid; public float Range { get { return 39.0f; } } public void Initialize() { _druid = new DruidResto(); _druid.Pulse(); } public void Dispose() { _druid.Stop(); } public void ShowConfiguration() { MessageBox.Show("No settings for this FightClass."); } class DruidResto { // Property: private bool _isLaunched; public bool IsLaunched { get { return _isLaunched; } set { _isLaunched = value; } } // Spells: private Spell _regrowth; private Spell _wildgrowth; private Spell _healingtouch; private Spell _rejuvenation; private Spell _tranquility; private Spell _swiftmend; private Spell _wildmushroom; private Spell _genesis; private Spell _typhoon; private Spell _incapacitatingroar; private Spell _rebirth; private Spell _naturesvigil; private Spell _naturesSwiftness; private Spell _lifebloom; private Spell _clearcasting; private Spell _ironbark; private Spell _barkskin; private Spell _forceofnature; public DruidResto() { _regrowth = new Spell("Regrowth"); _wildgrowth = new Spell("Wild Growth"); _healingtouch = new Spell("Healing Touch"); _rejuvenation = new Spell("Rejuvenation"); _tranquility = new Spell("Tranquility"); _swiftmend = new Spell("Swiftmend"); _wildmushroom = new Spell("Wild Mushroom"); _genesis = new Spell("Genesis"); _typhoon = new Spell("Typhoon"); _incapacitatingroar = new Spell("Incapacitating Roar"); _rebirth = new Spell("Rebirth"); _naturesvigil = new Spell("Nature's Vigil"); _naturesSwiftness = new Spell("Nature's Swiftness"); _lifebloom = new Spell("Lifebloom"); _clearcasting = new Spell("Clearcasting"); _ironbark = new Spell("Iron Bark"); _barkskin = new Spell("Barkskin"); _forceofnature = new Spell("Force of Nature"); } public void Pulse() { _isLaunched = true; var thread = new Thread(RoutineThread) { Name = "Restoration Druid FightClass" }; thread.Start(); } public void Stop() { _isLaunched = false; Logging.WriteFight("Stop 'Restoration Druid'"); } void RoutineThread() { Logging.WriteFight("'Restoration Druid' Started"); while (_isLaunched) { Routine(); Thread.Sleep(10); // Temps d'attante pour éviter d'utiliser trop le processeurs } Logging.WriteFight("'Restoration Druid' Stopped"); } public const uint WILD_GROWTHI = 48438, REGROWTHI = 8936, HEALING_TOUCHI = 5185, REJUVENATIONI = 774, SWIFTMENDI = 18562, LIFEBLOOMI = 33763, WILD_MUSHROOMI = 145205, FORCE_OF_NATUREI = 102693, TRANQUILITYI = 740, GENESISI = 145518, EINDE = 0; void Routine() { if (!Conditions.InGameAndConnectedAndAlive) return; if (Lifebloom()) return; } IEnumerable<WoWUnit> GetPartyTargets() { var partyMembers = Party.GetPartyHomeAndInstance(); var ret = new List<WoWUnit>(); foreach (var m in partyMembers) { if (m.IsValid && m.IsAlive && m.InCombat && m.Target.IsNotZero()) { var targetUnit = new WoWUnit(ObjectManager.GetObjectByGuid(m.Target).GetBaseAddress); if (targetUnit.IsValid && targetUnit.IsAlive) { ret.Add(targetUnit); } } } return ret.Distinct(); } private List<WoWPlayer> GetPartyMembers(int maxHealthPercent = 100, float maxDistance = float.MaxValue, bool orderByHealth = true) { return GetPartyMembers(ObjectManager.Me.Position, maxHealthPercent, maxDistance, orderByHealth); } private List<WoWPlayer> GetPartyMembers(Vector3 positionCenter, int maxHealthPercent = 100, float maxDistance = float.MaxValue, bool orderByHealth = true) { var partyMembers = Party.GetPartyHomeAndInstance(); var ret = new List<WoWPlayer>(); foreach (var m in partyMembers) { if (m.IsValid && m.IsAlive && m.HealthPercent < maxHealthPercent && m.Position.DistanceTo(positionCenter) <= maxDistance) { ret.Add(m); } } if (orderByHealth) ret = new List<WoWPlayer>(ret.OrderBy(p => p.HealthPercent)); return ret; } string GetTankPlayerName() { var lua = new[] { "partyTank = \"\";", "for groupindex = 1,MAX_PARTY_MEMBERS do", " if (UnitInParty(\"party\" .. groupindex)) then", " local role = UnitGroupRolesAssigned(\"party\" .. groupindex);", " if role == \"TANK\" then", " local name, realm = UnitName(\"party\" .. groupindex);", " partyTank = name;", " return;", " end", " end", "end", }; return Lua.LuaDoString(lua, "partyTank"); } WoWPlayer GetTankPlayer() { var p = new WoWPlayer(0); var playerName = GetTankPlayerName(); if (!string.IsNullOrWhiteSpace(playerName)) { playerName = playerName.ToLower().Trim(); var party = GetPartyMembers().OrderBy(o => o.GetDistance); foreach (var woWPlayer in party) { if (woWPlayer.Name.ToLower() == playerName) { p = new WoWPlayer(woWPlayer.GetBaseAddress); break; } } } if (string.IsNullOrWhiteSpace(playerName)) { p = new WoWPlayer(ObjectManager.Me.GetBaseAddress); } return p; } bool BaseHealSpell(Spell spell, int maxHealthPercent, float maxDistance) { if (!spell.KnownSpell) return false; if (!spell.IsSpellUsable) return false; var partyMembers = GetPartyMembers(); foreach (var partyMember in partyMembers) { if (!TraceLine.TraceLineGo(partyMember.Position)) // TraceLine permet de vérifier un obstacle entre deux position (true si obstacle) { Interact.InteractGameObject(partyMember.GetBaseAddress, true); // sélectionne la cible in game //MovementManager.Face(partyMember); // Faire face à la cible spell.Launch(); return true; } } return false; } bool Lifebloom() { if (!_lifebloom.KnownSpell) return false; if (!_lifebloom.IsSpellUsable) return false; var partyMembers = GetTankPlayer(); if (!TraceLine.TraceLineGo(partyMembers.Position) && partyMembers.IsAlive && partyMembers.HealthPercent > 0 && !partyMembers.HaveBuff("Lifebloom")) { Interact.InteractGameObject(partyMembers.GetBaseAddress, true); // sélectionne la cible in game //MovementManager.Face(partyMembers); // Faire face à la cible _lifebloom.Launch(); // Lancer le sort return true; } return false; } private Vector3 mushroomPosition; private WoWPlayer mushroomTarget; private DateTime mushroomTime; private uint wildMushroomID = 145205; private bool needMushroom { get; set; } bool WildMushroom() { if (!_wildmushroom.KnownSpell) return false; if (!_wildmushroom.IsSpellUsable) return false; var partyMember = GetTankPlayer(); if (!TraceLine.TraceLineGo(partyMember.Position)) // lign of sight { Interact.InteractGameObject(partyMember.GetBaseAddress, true); //select target Vector3 location = partyMember.Position; SpellManager.CastSpellByIDAndPosition(WILD_MUSHROOMI, location); mushroomTarget = new WoWPlayer(partyMember.GetBaseAddress); mushroomPosition = location; mushroomTime.AddSeconds(29); return true; } return false; } } }
  23. Ok, thanks, will look at this example to create another one :)
  24. I realy think someting is wrong. If you choose the option to cast a buff onSelf : [F] 17:22:24 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:25 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:26 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:27 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:28 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:29 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:30 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:30 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:30 - Cast (onself) Mark of the Wild (Mark of the Wild) [F] 17:22:30 - Cast (onself) Mark of the Wild (Mark of the Wild) .......... I think that's also what keeps me frustrating with my lists.
  25. Ty, but : public static List<WoWPlayer> GetFriendlyPlayersAndMe() { List<WoWPlayer> listPlayersResult = new List<WoWPlayer>(); List<WoWPlayer> allPlayers = ObjectManager.GetObjectWoWPlayer(); foreach (var player in allPlayers) { if (player.IsValid && player.IsAlive && player.PlayerFaction == ObjectManager.Me.PlayerFaction) listPlayersResult.Add(player); } listPlayersResult.Add(ObjectManager.Me); // Add your character Logging.Write("First Element: " + listPlayersResult.FirstOrDefault()); // print the first element return listPlayersResult; } Result => 17:04:49 - First Element: wManager.Wow.ObjectManager.WoWPlayer. Problem still exists :( To make a Healing Routine, I need to know if the player is tank or not, to cast Lifebloom on him. Then I put the player in anoter list Tanks. If no tanks (solo playing) then the tanks is Me, so I cast Lifebloom on myself. Same thing for Wild Mushrooms.
×
×
  • Create New...