Jump to content

Pasterke

Members
  • Posts

    165
  • Joined

  • Last visited

Everything posted by Pasterke

  1. Download the bot. Unzip it. Then you can update it. Choose your private server version and update. Change the name of the folder to macth your private server version. Then you can unpack the zip file again, and update it for another version of wow, etc... So basically you can have mutltiple versions of wrobot. Just rename the folders with the version you updated. wrobotLK, wrobotTBC, wrobotLegal .... Then just start the wrobot.exe in the folder you need for the game you play.
  2. I don't know how long you code in C#, but when coding an fight routine for wrobot, as soon you import the required dll references you get an error that says : there is an mismatch bewteen the architecture and ..... Then you go to the configuration manager and you set the cpu to x86 to get rid of this error. Then when you compile the routine you only get an x86 debug. And IMO, I don't think there are players here who don't have an x86_64 computer. Maybe the bot works with Windows XP, but that's an utopia. Dotnet uses 4.6.x and you can never install that on an windows xp machine. The highest version you can use on XP = 4.0 and to play sure the 3.5 version is the only one that works correct. Anyway, I got hit by the banwave also and after the ban, the first thing I did was get rid of the whole shit windows OS. I only needed it for using wrobot to play WoW. Now I have an 100% Linux OS and I play WoW on an new account under Linux or on my iMac. There are no bots for WoW for mac or linux. I'm sick to loose accounts for using an bot. Good luck in the future with botting on WoW, but i'm done for now. Maybe I develop my own bot in C++ or Java or Python, but for now, I'm coding software where I'm paid for it.
  3. You can try : string[] result = Lua.LuaDoString<string>("local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId=what you want to check",0); then result[0] should contains name, result[1] rank etc ...
  4. That way it's not possible. Or you use an foreach loop or an switch construction. But a,b,... stands for what ?
  5. Yes, you are right, I saw it also and changed it already.
  6. I tested it in French Client and it's working now.
  7. Realy ? And what with Predatory Swiftness procs ? If you want to heal yourself make sure in condtions Combat Only is set to false. Then add condition to the spell MeInCombat = false. Then he will use the Healing Touch spell to heal yourself when you are not in combat and you checked is spell in food settings.
  8. Try that : public static bool myDebuffExists(String debuff) { var auras = ObjectManager.Target.GetAllBuff(); foreach(var a in auras) { string aura = a.ToString(); if (aura.Contains(debuff) && (aura.Contains(ObjectManager.Me.Guid.ToString()) || aura.Contains(ObjectManager.Me.Guid128.ToString()))) return true; } return false; }
  9. Thread.sleep is the worst thinh you can use.
  10. There's an difference between wrotation and other products. Wrotation for example will not dismount if attacked, automaton of grinder will. If you cast bear form, he will use the bear spells, and will never return to cat form, unless you cast cat form. But, if you are not mounted and you been attacked, then he should auto change to cat form, if you don't have Bear Form. The routine checks if you have bear form and if you have, he uses the bear form routine. And it should working in party/instances because I use it there also and it's just working fine. Don't try battlegrounds or arena in auto mode, it will not work. Bg's and Arena's will only work with wrotation. The main reason for that is, to avoid the banhammer ! I used it most with automaton, that's realy the best thing this bot has. Want make money ? Take herbalism and skinning. Go to suramar, find a spot, put automat on, prowl, add the wanted targets to the list. Put yourself in middle of your chosen zone, set distance on 300. Start bot. You will never see that's an bot, because he don't use specific paths. If you are full of ancient mana, goto Nightfall Inn and buy buffs for 50 ancient mana over and over again until you have no ancient mana left. Then go back farming. Tip : if you have non-aggresive mobs in your zone (yellow name plates) you can just select those ones, he will auto attack the others when attacked. I'm still working on it while testing with automaton. I see that the dps is lowered and will change it. The main problem with this bot is, he don't cast the spells in order you want. For example, if you have predatory swiftness buff, i want that the bot cast it at once, and put it as priority over all other spells. What happens ? You have the buff and it takes 2 or more spells before he actually use it. That's totally wrong. I watch the bot closely to better understand it. So for now I try to force him to cast spells when I want it, but this costs alot of more requirements. You see, the bot's routine is an while loop. That means he iterate over and over the routine. When a condition is true, he cast the spell, but the time he cast the spell, the routine already iterate 1 or more times the routine. If a condition is true, he keep this in memory. So, if finished casting the 1st spell, he casts the true in his memory etc ... On one given moment you may have 2 or more trues in memory and he will cast those first instead of casting the spell on the exact moment you want it. That's the whole problem with this bot to do decent dps or decent healing. Instead of having General Settings, Advanced Settings, the products settings etc we should have settings foreach product. That's the whole mess up, you can setup your wrotation, but in advanced settings you don't check Start Fight With Elites, he will never attack an elite and what we have in dungeons/raids ? Ofc, all elites. You see the problem ?
  11. proving grounds or LFR. Don't test in dungeons !
  12. Strange, I use everywhere spell.id, this should be the same on every game client.
  13. Oui, il faut C# pour une fightclass heal. Mais vous avez ici un example. Ca marche tres bien pour druid restoration. Une fois que vous avez la mouture, c'est pas tres difficile pour l'adopter a une autre class heal.
  14. Ainsi joint la fightclass que j'utilise pour le moment en solution vs2015. Sorry, c'est celle la que j'utilise : DruidRestoration.zip
  15. using System.Configuration; using System.IO; using System.Linq; using System.Threading; using System.Xml; using robotManager; using robotManager.FiniteStateMachine; using robotManager.Helpful; using wManager.Wow.Class; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; using wManager.Wow.Bot.States; using Timer = robotManager.Helpful.Timer; using wManager.Wow.Enums; using MemoryRobot; public class Main : ICustomClass { public float Range { get { return 40; } } private RestoDruid _RestoDruid; public void Initialize() { _RestoDruid = new RestoDruid(); _RestoDruid.Pulse(); } public void Dispose() { if (_RestoDruid != null) { _RestoDruid.Stop(); } } public void ShowConfiguration() { MessageBox.Show("No Configuration for this Routine"); } } public class RestoDruid { private bool _isLaunched; public bool IsLaunched { get { return _isLaunched; } set { _isLaunched = value; } } public void Pulse() { _isLaunched = true; var thread = new Thread(RoutineThread) { Name = "RestoDruid_FightClass" }; thread.Start(); } public void Stop() { _isLaunched = false; Logging.WriteFight("Stop 'RestoDruid'"); } void RoutineThread() { Logging.WriteFight("'RestoDruid' Started"); while (_isLaunched) { Routine(); Thread.Sleep(10); // Temps d'attante pour éviter d'utiliser trop le processeurs } Logging.WriteFight("'RestoDruid' Stopped"); } public uint Healthstone = 5512; public uint AncientRejuvenationPotion = 127836; public uint AncientManaPotion = 188303; void Routine() { if (ObjectManager.Me.IsMounted) return; if (ObjectManager.Me.IsCast) return; if (ObjectManager.Me.HealthPercent <= 45 && needToUseItem(Healthstone)) return; if (ObjectManager.Me.ManaPercentage <= 30 && needToUseItem(AncientManaPotion)) return; if (needWildGrowth()) return; if (needHealingTouch()) return; return; } private Spell _healingTouch; public RestoDruid() { _healingTouch = new Spell("Healing Touch"); Logging.WriteFight("'RestoDruid' by Pasterke loaded"); } public bool needHealingTouch() { if (!CanUseSpell(_healingTouch)) return false; if (getPartyMembers().Count() > 0) { try { var t = getPartyMembers().Where(p => p.IsAlive && p.GetDistance <= 40 && !TraceLine.TraceLineGo(p.Position) && p.HealthPercent <= RestoSettings.CurrentSetting.HealingTouch) .OrderBy(p => p.HealthPercent).FirstOrDefault(); if (t != null && !ObjectManager.Me.GetMove) { SpellManager.CastSpellByNameOn(_healingTouch.Name, t.Name); Logging.WriteFight(_healingTouch.Name + " on " + t.Name); return true; } } catch (Exception e) { Logging.WriteDebug(e.Message); } } return false; } public bool needWildGrowth() { if (!CanUseSpell(_wildGrowth)) return false; if (getPartyMembers().Count() > 0) { try { WoWUnit unit = new WoWUnit(0); var t = getPartyMembers().Where(p => p.IsAlive && p.GetDistance <= 40 && !TraceLine.TraceLineGo(p.Position) && p.HealthPercent <= RestoSettings.CurrentSetting.WildGrowth).OrderBy(p => p.HealthPercent).ToList(); if (t.Count() > 0) { int count = 0; int tel = 0; Vector3 mainPos = t.FirstOrDefault().Position; unit = new WoWUnit(t.FirstOrDefault().GetBaseAddress); //Logging.WriteFight(unit.Name); count = t.Count(p => p.IsAlive && p.Position.DistanceTo(mainPos) <= 30 && p.HealthPercent <= RestoSettings.CurrentSetting.WildGrowth); //Logging.WriteFight("count players(t): " + count + " aantal leden: " + getPartyMembers().Count()); if (getPartyMembers().Count() > 5) { tel = 5; } else { tel = 3; } //Logging.WriteFight("tel variable: " + tel); if (count >= tel && !ObjectManager.Me.GetMove) { SpellManager.CastSpellByNameOn(_wildGrowth.Name, unit.Name); Logging.WriteFight("Casting: " + _wildGrowth.Name + " on: " + unit.Name); return true; } } } catch (Exception e) { Logging.WriteDebug(e.Message); } } return false; } bool CanUseSpell(Spell spell) { try { if (!spell.KnownSpell) return false; if (SpellManager.GetSpellCooldownTimeLeft(spell.Name) > 0) { return false; } return true; } catch (Exception e) { Logging.WriteDebug(e.Message); } return false; } public bool debuffExists(string debuff) { return (ObjectManager.Me.Guid == ObjectManager.Target.BuffCastedBy(debuff)); } public bool MeIsInParty { get { return getPartyMembers().Count() > 0 ? true : false; } } public bool myBuffExists(string buff, WoWUnit unit) { return unit.BuffCastedByAll(buff).Contains(ObjectManager.Me.Guid); } public bool hasMyHot(WoWUnit unit) { return unit.BuffCastedByAll("Regrowth").Contains(ObjectManager.Me.Guid) || unit.BuffCastedByAll("Rejuvenation").Contains(ObjectManager.Me.Guid) || unit.BuffCastedByAll("Wild Growth").Contains(ObjectManager.Me.Guid); } public IEnumerable<WoWUnit> getPartyMembers() { var units = new List<WoWUnit>(); var partyMembers = Party.GetPartyGUIDHomeAndInstance(); if (partyMembers.Any()) { foreach (Int128 u in partyMembers) { var un = new WoWUnit(ObjectManager.GetObjectByGuid(u).GetBaseAddress); units.Add(un); } units.Add(ObjectManager.Me); } return units; } public string GetTankPlayerName() { if (Usefuls.MapZoneName == "Proving Grounds") return "Oto the Protector"; 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"); } public bool needToUseItem(uint itemEntry) { if (!ItemsManager.HasItemById(itemEntry)) return false; if (Bag.GetContainerItemCooldown((int)itemEntry) > 0) return false; try { Lua.LuaDoString("local name = GetItemInfo(" + itemEntry + "); RunMacroText('/use ' .. name);"); } catch (Exception e) { Logging.WriteDebug("Use Item => " + e.Message); } return true; } public WoWUnit GetPartyTank() { if (getPartyMembers().Count() > 0) { try { var p = new WoWUnit(0); var playerName = GetTankPlayerName(); if (!string.IsNullOrWhiteSpace(playerName)) { playerName = playerName.ToLower().Trim(); var party = getPartyMembers(); foreach (var woWPlayer in party) { if (woWPlayer.Name.ToLower() == playerName) { return p = new WoWUnit(woWPlayer.GetBaseAddress); } } } } catch (Exception e) { Logging.WriteDebug(e.Message); } } return null; } } Example comment coder une routine avec C#.
  16. Pasterke

    Feral Druid

    With a druid you don't need food. Check it's spell not food. Fill in Healing Touch in food name and adjust %.
  17. Make sure you have no ancient mana before starting gathering. Buy buff for 50 ancient mana and repeat until you have no more ancient mana, or the quantity you want.
  18. Still try to getting it in place for legion.
  19. changed alot in the new version. You need to use Predatory Swiftness procs at once to avoid missing a new one. If mobs maxhealth < your maxhealth x 2, he will not use rip. There's no need to put rip on a target that dies before the full duration of rip debuff. In group its x 10. On normal mobs, combopoints are used at 3, else at 5.
  20. Open the file in an texteditor like notepad or notepad++. You will see the spell names. Put // at the begining to disable: //new Spelstate(.... and //before every line code until de new Spellstate.
  21. Version 1.0.5

    1322 downloads

    Hello, This is a try out to see if it works on non English games. Let me know if it works, then I can work further on it. I tested it in LFR and it worked for my English client.
×
×
  • Create New...