-
Posts
12432 -
Joined
-
Last visited
Reputation Activity
-
Droidz got a reaction from PierreDeRosette in Improving tank(Too)Far()
Hello,
To stop to go to tank if it is out of view you can use this code:
#region Tank too far bool tankfar() { WoWPlayer tank = getTanks().First(); while (tank.IsValid && tank.GetDistance > 15 && !wManager.Wow.Helpers.TraceLine.TraceLineGo(tank.Position)) { MovementManager.MoveTo(tank); System.Threading.Thread.Sleep(50); } MovementManager.StopMove(); return false; } #endregion
To generate path and go to tank you can use code like this:
#region Tank too far bool tankfar() { WoWPlayer tank = getTanks().First(); if (tank.IsValid && tank.GetDistance > 15) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWith(new WoWUnit(tank.GetBaseAddress), -1, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && tank.GetDistance > 15); } MovementManager.StopMove(); return false; } #endregion
-
Droidz got a reaction from BetterSister in Elite nearby? C#
Hello, I am not sure to understand exactly what you want, but you can use code like this:
int numberOfEliteNearTank = ObjectManager.GetWoWUnitHostile().Count(u => u.Position.DistanceTo(tank.Position) <= u.InteractDistance && u.IsElite && UnitCanAttack.CanAttack(u.GetBaseAddress, tank.GetBaseAddress)); if (numberOfEliteNearTank >= 3) { // .. }
-
Droidz got a reaction from TheSmokie in Snippets codes for quest profiles
Snippets codes for quest profiles
ps: Feel free to share your tips on this post. If your message is poorly presented or contains a question, it will be deleted.
-
Droidz reacted to Dreamful in Private bot sub
Yes our sub goes to all Wow Private server Versions :)
You just need to download the specific Bot version.
Cataclysm
Mist of Pandaria
-
Droidz reacted to tomei in Battlegrounder AB
Can't blacklist zone for this is arathi basin for random bgs for honor points. Next time I go there will get the position.
-
Droidz got a reaction from BetterSister in Battlegrounder Crashes
Hello, if "reduce input lag" option don't resolve your problem, can you try to launch wrobot with NoFakeCallStack.bat (download and move this file in wrobot folder, double click on it to launch WRobot) (if wow crash again, if you can send me wow crash files by private message).
-
Droidz got a reaction from tomei in Battlegrounder Crashes
Hello, if "reduce input lag" option don't resolve your problem, can you try to launch wrobot with NoFakeCallStack.bat (download and move this file in wrobot folder, double click on it to launch WRobot) (if wow crash again, if you can send me wow crash files by private message).
-
Droidz got a reaction from eeny in [Suggestion] Start all Bots with 1 Key and Force stop fight
Hello,
Sorry, I'll not add this.
But I planned to make a program that manages several sessions of WRobot (product change, profile change, restart) and Wow (launch, restart, relog,...)
-
Droidz got a reaction from BetterSister in [Suggestion] Start all Bots with 1 Key and Force stop fight
Hello,
Sorry, I'll not add this.
But I planned to make a program that manages several sessions of WRobot (product change, profile change, restart) and Wow (launch, restart, relog,...)
-
Droidz got a reaction from Cadbury in Auction bot bug or not developed yet?
If you can read this: http://wrobot.eu/forums/topic/1381-repairinstall-wrobot/#comment-966
And share your log file (of session where you get this problem): http://wrobot.eu/forums/topic/1779-how-to-post-your-log-file-with-your-topic/
-
Droidz reacted to Cadbury in Auction bot bug or not developed yet?
Got it to work! Reinstalled Wrobot and all those programs!
Cheers
-
Droidz reacted to Pablofransisco in Warrior Fighclass
Seems it started to work after restarting bot :O
-
Droidz got a reaction from BetterSister in How to add players unit to a list ?
Please send me your code/fightclass if you want best reply. I have written this for help an member to create an heal fightclass (not tested, it is sample code): using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Windows.Forms; using robotManager.Helpful; using wManager.Wow.Class; using wManager.Wow.Enums; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : ICustomClass { private HolyPaladin _holyPaladin; public float Range { get { return 29.0f; } } public void Initialize() { _holyPaladin = new HolyPaladin(); _holyPaladin.Pulse(); } public void Dispose() { _holyPaladin.Stop(); } public void ShowConfiguration() { MessageBox.Show("No settings for this FightClass."); } } class HolyPaladin { // Property: private bool _isLaunched; public bool IsLaunched { get { return _isLaunched; } set { _isLaunched = value; } } // Spells: private Spell _judgment; private Spell _flashOfLight; private Spell _lightOfDawn; private Spell _avengingWrath; private Spell _handOfProtection; private Spell _divineShield; private Spell _layOnHands; private Spell _holyShock; private Spell _holyRadiance; public HolyPaladin() { // Init spells: _judgment = new Spell("Judgment"); _flashOfLight = new Spell("Flash of Light"); _lightOfDawn = new Spell("Light of Dawn"); _avengingWrath = new Spell("Avenging Wrath"); _handOfProtection = new Spell("Hand of Protection"); _divineShield = new Spell("Divine Shield"); _layOnHands = new Spell("Lay On Hands"); _holyShock = new Spell("Holy Shock"); _holyRadiance = new Spell("Holy Radiance"); Logging.WriteFight("'Holy Paladin' by AudreyH loaded"); } public void Pulse() { _isLaunched = true; var thread = new Thread(RoutineThread) { Name = "HolyPaladin_FightClass" }; thread.Start(); } public void Stop() { _isLaunched = false; Logging.WriteFight("Stop 'Holy Paladin'"); } void RoutineThread() { Logging.WriteFight("'Holy Paladin' Started"); while (_isLaunched) { Routine(); Thread.Sleep(10); // Temps d'attante pour éviter d'utiliser trop le processeurs } Logging.WriteFight("'Holy Paladin' Stopped"); } void Routine() { if (!Conditions.InGameAndConnectedAndAlive) return; // Ranger par ordre de priorité if (Judgment()) return; if (HolyRadiance()) return; if (FlashOfLight()) return; if (LightOfDawn()) return; if (AvengingWrath()) return; if (HandOfProtection()) return; if (DivineShield()) return; if (LayOnHands()) return; if (HolyShock()) return; } // Usefuls methods List<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()) { if (ret.All(u => u.Guid != m.Target)) // Evite doublon dans la liste retournée { var targetUnit = new WoWUnit(ObjectManager.GetObjectByGuid(m.Target).GetBaseAddress); if (targetUnit.IsValid && targetUnit.IsAlive) { ret.Add(targetUnit); } } } } return ret; } 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(); foreach (var woWPlayer in party) { if (woWPlayer.Name.ToLower() == playerName) { p = new WoWPlayer(woWPlayer.GetBaseAddress); break; } } } return p; } // Spells methods bool Judgment() { if (!_judgment.KnownSpell) return false; if (!_judgment.IsSpellUsable) return false; var partyTargets = GetPartyTargets(); // Recupère les cibles des joueurs du groupe. foreach (var target in partyTargets) // On recherche dans la liste { if (target.IsValid && target.IsAlive) // Verif si target valid et en vie { if (target.GetDistance < _judgment.MaxRange) // Verif si bonne distance { if (!TraceLine.TraceLineGo(target.Position)) // TraceLine permet de vérifier un obstacle entre deux position (true si obstacle) { if (UnitCanAttack.CanAttack(target.GetBaseAddress)) // On peut attaquer la cible { Interact.InteractGameObject(target.GetBaseAddress, true); // sélectionne la cible in game MovementManager.Face(target); // Faire face à la cible _judgment.Launch(); // Lancer le sort return true; } } } } } return false; } bool BaseHealSpell(Spell spell, int maxHealthPercent, float maxDistance) { if (!spell.KnownSpell) return false; if (!spell.IsSpellUsable) return false; var partyMembers = GetPartyMembers(maxHealthPercent, maxDistance); 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(); // Lancer le sort return true; } } return false; } bool FlashOfLight() { return BaseHealSpell(_flashOfLight, 90, 40); } bool LightOfDawn() { if (!_lightOfDawn.KnownSpell) return false; if (!_lightOfDawn.IsSpellUsable) return false; if (ObjectManager.Me.GetPowerByPowerType(PowerType.HolyPower) < 3) return false; var partyMembers = GetPartyMembers(90, 30); if (partyMembers.Count >= 3) // Si minimum 3 alliés dans les 30 mètres avec moins de 90% de vie { _lightOfDawn.Launch(); // Lancer le sort return true; } return false; } bool AvengingWrath() { if (!_avengingWrath.KnownSpell) return false; if (!_avengingWrath.IsSpellUsable) return false; var partyTargets = GetPartyTargets(); // Recupère les cibles des joueurs du groupe. if (partyTargets.Count > 0 || ObjectManager.Me.InCombat) // Si un des joueurs ou moi en combat { _avengingWrath.Launch(); // Lancer le sort return true; } return false; } bool HandOfProtection() { if (!_handOfProtection.KnownSpell) return false; if (!_handOfProtection.IsSpellUsable) return false; if (ObjectManager.Me.InCombat && ObjectManager.Me.HealthPercent <= 20) // Si en combat et moins de 20% de vie { _handOfProtection.Launch(false, true, false, true); // Lancer le sort OnSelf return true; } return false; } bool DivineShield() { if (!_divineShield.KnownSpell) return false; if (!_divineShield.IsSpellUsable) return false; if (ObjectManager.Me.InCombat) // Si en combat { _divineShield.Launch(); // Lancer le sort return true; } return false; } bool LayOnHands() { if (!_layOnHands.KnownSpell) return false; if (!_layOnHands.IsSpellUsable) return false; if (ObjectManager.Me.HealthPercent <= 20)// Si moins de 20% de vie { _layOnHands.Launch(false, true, false, true); // Lancer le sort OnSelf return true; } return false; } bool HolyShock() { if (ObjectManager.Me.InCombat) return BaseHealSpell(_holyShock, 95, 40); return false; } bool HolyRadiance() { if (!_holyRadiance.KnownSpell) return false; if (!_holyRadiance.IsSpellUsable) return false; var partyMembers = GetPartyMembers(90, 40); // On recupere les membres du groupe avec moins de 90% de vie à 40 metres var bestPlayer = new WoWPlayer(0); // Le meilleur joueur pour recevoir le sort int bestHealthMissing = 0; // Score (plus le score est haut mieux c'est, ce score et le nombre de pourcentages de vie qui manque aux joueurs qui ce trouve dans les 10 metres du joueur bestPlayer) foreach (var partyMember in partyMembers) // On va rechercher le meilleur joueur { if (partyMember.IsValid && partyMember.IsAlive && !TraceLine.TraceLineGo(partyMember.Position)) { var partyMembersNearPartyPlayer = GetPartyMembers(partyMember.Position, 95, 10); // La on recherche les joueurs proches de partyMember qui ce trouve à 10 metres (porté du sort) (retourne également partyMember dans le résultat) if (partyMembersNearPartyPlayer.Count > 2) // Si ils sont minimum 2 joueurs dans les 10 metres { int healthMissing = 0; foreach (var p in partyMembersNearPartyPlayer) { if (p.IsValid && p.IsAlive) { healthMissing = healthMissing + (100 - (int)p.HealthPercent); } } if (healthMissing > bestHealthMissing) { // Si il manque plus de vie ici alors on le désigne comme le meilleur choix bestPlayer = new WoWPlayer(partyMember.GetBaseAddress); bestHealthMissing = healthMissing; } } } } // Si bestPlayer trouvé if (bestHealthMissing > 0 && bestPlayer.IsValid) { Interact.InteractGameObject(bestPlayer.GetBaseAddress, true); // sélectionne la cible in game MovementManager.Face(bestPlayer); // Faire face à la cible _holyRadiance.Launch(); // Lancer le sort return true; } return false; } } -
Droidz got a reaction from eeny in Use item on hostile "weakened" mob
Hello,
Add step type "PickUp" (put quest name in parameter) Add step type "RunCode", in parameter put this code: Thread t = new Thread(() => { uint itemId = 62899; int questId = 28000; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25) { ItemsManager.UseItem(itemId); } } Thread.Sleep(500); } }); t.Start(); (you need to have quest in your questlog, you can replace "62899" but the item id, "28000" by the quest id and "25" by the max target health)
Add step type "Pulse" (put quest name in parameter)
Add step type "TurnIn" (put quest name in parameter)
-
Droidz got a reaction from BetterSister in [Suggestion] ForceLeave Strand of the Ancients & Isle of Conquest
Hello, use this wrobot plugin:
-
Droidz got a reaction from BetterSister in Fight Classes.. Any up to date ones?
Hello, what class/spe do you use?
-
Droidz got a reaction from Benix in Impossible de laucher wow en 32 bits ?
Bonjour, pour lancer wow en 32bit: https://eu.battle.net/support/fr/article/basculer-en-mode-32-bits
Si cela ne fonctionne pas, vous pouvez aller dans le dossier où est installé Wow et supprimer/renommer le fichier "Wow-64.exe" puis lancer directement le fichier "Wow.exe".
-
Droidz reacted to Benix in Impossible de laucher wow en 32 bits ?
J'ai déja tenté la première solution, je vais tenter la deuxième en rentrant ce soir.
Je te remercie Droidz pour ta réactivité ;)
Edit: supprimer le fichier "wow-64.exe" marche parfaitement ! merci
-
Droidz reacted to kunfuninja12 in Wrobot issue
yeah i got it thanks though man i just had to install the runtimes from microsoft / the custom one you made for wrobot since windows 10 does not have it for some odd reason microsoft did not add it i appreciate the time that you took man i'll be buying another sub next year as well :D
-
Droidz reacted to eeny in Wrobot changes equipped epic items on gray item on char
havn't seen it since that update. =)
-
Droidz got a reaction from BetterSister in Banwave
Hello,
About HB, sincerely, without the contents created by the HB community (profiles, fight classes, plugin, ...), HB is an very basic bot, the dev team take few days to release update after new wow update (I have never understand why, security is false pretext, you can see result...) (I work alone, it takes me a few hours for normal update, and we can begin to work on the PTR server for beings ready when build is released on live server). After the banwave a few months ago, HB team have reopened the bot without knowing exactly what had caused the banwave, current banwave is a logical continuation... This is not the first fault, I was already here at the time where bossland began to writte bot with GatherBuddy, after few months it had already taken a banwave (because poorly coded). Even the banwave dating from there are 1 or 2 years old could be avoid because they had was warned that bliz had added a detection method.
About WRobot I have worked hard to make wrobot hard to detect (it is more easy to detect HB that WRobot (If any have knowbase he can test)), I use a special technique that I have not seen on another bots to hide WRobot in memory. I know what I'm doing (if I worked among bliz, the bots would have disappeared ^^). I cannot say that WRobot is undetectable (all is detectable), but I work to avoid it, and I think WRobot is among the most secure bots.
ps: Sorry for my English.
-
Droidz got a reaction from eeny in Banwave
Hello,
About HB, sincerely, without the contents created by the HB community (profiles, fight classes, plugin, ...), HB is an very basic bot, the dev team take few days to release update after new wow update (I have never understand why, security is false pretext, you can see result...) (I work alone, it takes me a few hours for normal update, and we can begin to work on the PTR server for beings ready when build is released on live server). After the banwave a few months ago, HB team have reopened the bot without knowing exactly what had caused the banwave, current banwave is a logical continuation... This is not the first fault, I was already here at the time where bossland began to writte bot with GatherBuddy, after few months it had already taken a banwave (because poorly coded). Even the banwave dating from there are 1 or 2 years old could be avoid because they had was warned that bliz had added a detection method.
About WRobot I have worked hard to make wrobot hard to detect (it is more easy to detect HB that WRobot (If any have knowbase he can test)), I use a special technique that I have not seen on another bots to hide WRobot in memory. I know what I'm doing (if I worked among bliz, the bots would have disappeared ^^). I cannot say that WRobot is undetectable (all is detectable), but I work to avoid it, and I think WRobot is among the most secure bots.
ps: Sorry for my English.
-
Droidz got a reaction from BetterSister in Snippets of LUA codes (for FightClass)
Calls function 'callback' after 'duration' seconds
http://wow.gamepedia.com/API_C_Timer.After
C_Timer.After(3, function() YOURCODEHERE end)
SAMPLE:
Moving backward during 2 secondes:
MoveBackwardStart() C_Timer.After(2, function() MoveBackwardStop() end) Sample of use: http://wrobot.eu/forums/topic/2482-shadow-priest-void-tendrils-help/?do=findComment&comment=11415
-
Droidz got a reaction from Amazing Snake in Flightmaster/Flightpoint
Look this sample: UseFlightPath.xml (guide is written in the first step).
-
Droidz got a reaction from eeny in Flightmaster/Flightpoint
Look this sample: UseFlightPath.xml (guide is written in the first step).