Everything posted by Droidz
-
Manage rotation, range ... bugged ?
Hello, Use an Fightclass is not a good way to manage target at attack. It is more recommended to make an "Custom Profile" or the best is to make an "Product" (bot) (you can activate option "Dont Start Fighting" in general settings but I recommand to not use Fightclass for this). I have make sample of custom class with your code (if this works like you want say me it I'll give code to join queue and enter in bg) (you can after use this code with small edit to make product dll): using System; using System.Collections.Generic; using System.Linq; using robotManager.FiniteStateMachine; using robotManager.Helpful; using robotManager.Products; using wManager; using wManager.Wow.Bot.States; using wManager.Wow.Enums; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class CustomProfile : Custom_Profile.ICustomProfile { private static readonly Engine Fsm = new Engine(); // Start custom profile public void Pulse() { try { // Update spell list SpellManager.UpdateSpellBook(); // Load CC: wManager.Wow.Helpers.CustomClass.LoadCustomClass(); // FSM : http://en.wikipedia.org/wiki/Finite-state_machine Fsm.States.Clear(); Fsm.AddState(new wManager.Wow.Bot.States.Relogger { Priority = 200 }); // Relog if disconnected Fsm.AddState(new wManager.Wow.Bot.States.Pause { Priority = 13 }); // Manage bot pause Fsm.AddState(new wManager.Wow.Bot.States.ResurrectBG { Priority = 12 }); // Resurrect player (bg mode) Fsm.AddState(new wManager.Wow.Bot.States.Resurrect { Priority = 12 }); // Resurrect player (b=normal mode) Fsm.AddState(new wManager.Wow.Bot.States.MyMacro { Priority = 11 }); // Manage MyMacro (user settings in general settings) Fsm.AddState(new wManager.Wow.Bot.States.FarmingBG { Priority = 10 }); // Farm in BG (for flag, door, ...) Fsm.AddState(new ManageTargetBG { Priority = 9, DistanceSearch = 150 }); // Search target at attacked (THIS CLASS IS AT TGE END OF THIS PAGE) //Fsm.AddState(new wManager.Wow.Bot.States.GrindingBG { Priority = 9, DistanceSearch = 150 }); // Search target at attacked Fsm.AddState(new wManager.Wow.Bot.States.IsAttacked { Priority = 8 }); // Launch combat if player attacked //Fsm.AddState(new wManager.Wow.Bot.States.Regeneration {Priority = 8}); // Regen health/mana //Fsm.AddState(new wManager.Wow.Bot.States.Looting { Priority = 7 }); // Loot npc dead //Fsm.AddState(new wManager.Wow.Bot.States.Farming { Priority = 6 }); // farm mines/herbs/... Fsm.AddState(new wManager.Wow.Bot.States.AntiAfk { Priority = 5 }); // Anti AFK Fsm.AddState(new wManager.Wow.Bot.States.Idle { Priority = 0 }); // If not states need to run, wait Fsm.States.Sort(); // Order states by Prority Fsm.StartEngine(10, "_customProfile"); // Launch FSN (with all added states) StopBotIf.LaunchNewThread(); // Launch bot security (tab "security" in general settings) // Attach onlevelup for spell book: EventsLua.AttachEventLua(LuaEventsId.PLAYER_LEVEL_UP, m => OnLevelUp()); // Follow lua event for get when player level up // Move during combat: //FightBG.MoveDuringCombat = true; Logging.Write("Custom Profile Started."); } catch (Exception e) { try { Dispose(); } catch { } Logging.WriteError("Bot > Pulse(): " + e); } } // Stop custom profile public void Dispose() { try { wManager.Wow.Helpers.CustomClass.DisposeCustomClass(); Fsm.StopEngine(); Fight.StopFight(); MovementManager.StopMove(); } catch (Exception e) { Logging.WriteError("Bot > Dispose(): " + e); } } // When player levelup void OnLevelUp() { Logging.Write("Level UP! Reload Fight Class."); // Update spell list SpellManager.UpdateSpellBook(); // Load CC: wManager.Wow.Helpers.CustomClass.ResetCustomClass(); } // Fsm state to manage target at attack public class ManageTargetBG : State { public override string DisplayName { get { return "Manage target BG"; } } public override int Priority { get { return _priority; } set { _priority = value; } } private int _priority; public override List<State> NextStates { get { return new List<State>(); } } public override List<State> BeforeStates { get { return new List<State>(); } } public List<int> EntryTarget = new List<int>(); public List<uint> FactionsTarget = new List<uint>(); public float DistanceSearch = 150; private WoWUnit _unit; // If this method return true, wrobot launch method Run(), if return false wrobot go to next state in FSM public override bool NeedToRun { get { if (wManagerSetting.CurrentSetting.DontStartFighting) return false; if (!Battleground.IsInBattleground() || !Battleground.BattlegroundIsStarted()) // Not run is not in bg return false; if (!Usefuls.InGame || Usefuls.IsLoadingOrConnecting || ObjectManager.Me.IsDeadMe || !ObjectManager.Me.IsValid || !Products.IsStarted) return false; // Get unit: _unit = new WoWUnit(0); var enemyPlayerList = new List<WoWUnit>(); if (FactionsTarget.Count > 0) enemyPlayerList.AddRange(ObjectManager.GetWoWUnitByFaction(FactionsTarget)); if (EntryTarget.Count > 0) enemyPlayerList.AddRange(ObjectManager.GetWoWUnitByEntry(EntryTarget)); if (ObjectManager.Me.PlayerFaction == "Alliance") enemyPlayerList.AddRange(ObjectManager.GetWoWUnitHorde()); if (ObjectManager.Me.PlayerFaction == "Horde") enemyPlayerList.AddRange(ObjectManager.GetWoWUnitAlliance()); // Your code WoWUnit[] cibles = new WoWUnit[enemyPlayerList.Count]; long[] ciblePv = new long[enemyPlayerList.Count]; int offset = 0; foreach (WoWUnit adversaire in enemyPlayerList) { cibles[offset] = adversaire; ciblePv[offset] = adversaire.Health; offset++; } Array.Sort(ciblePv, cibles); // You can replace your code to sort players by: // cibles = enemyPlayerList.OrderBy(p => p.Health).ToArray(); // And I think it is more appropriate to use HealthPercent instead Health for (int x = 0; x < enemyPlayerList.Count; x++) { if (cibles[x].IsValid && cibles[x].GetDistance < DistanceSearch && cibles[x].IsAlive && _unit.SummonedBy <= 0 && // Avoid pet _unit.Guid != ObjectManager.Pet.Guid && !wManagerSetting.IsBlackListedAllConditions(_unit)) // Check if blacklisted { bool result; PathFinder.FindPath(_unit.Position, out result); // Test if wrobot can make path to the target to avoid stuck if (result) { _unit = cibles[x]; return true; } } } _unit = new WoWUnit(0); return false; } } // If NeedToRun() == true public override void Run() { if (!_unit.IsValid) return; Logging.Write("Player Attack " + _unit.Name + " (lvl " + _unit.Level + ")"); FightBG.StartFight(_unit.Guid); // Launch Fight if (_unit.IsDead) { Statistics.Kills++; } FightBG.StopFight(); } } } ps: I haven't time to test it now, tell me if this don't works, save this file in "WRobot\Profiles\Custom Profile\" (.cs file) and use product "Custom Product).
-
mesh error
Hello, I'll not fix problem with path finder now, I'll fix it for WoD.
-
Monk healer channeling problem
Hello, If you can share your fightclass please (to look your spell settings). Do you have try to look on another fightclass how heal spell has setting?
-
Hi ... Have you an easy tip for :
Hello, To get if it is enemy player: if (ObjectManager.Target.Type == WoWObjectType.Player) { if (((WoWPlayer) ObjectManager.Target).PlayerFaction != ObjectManager.Me.PlayerFaction) { // Is enemy player } } To interact with your current target (this is useless because it is already your target): Interact.InteractGameObject(ObjectManager.Target.GetBaseAddress); I ignore exactly what is your objective, but if you want search and interact with an enemy player you can use code like: List<WoWPlayer> enemyPlayerList; if (ObjectManager.Me.IsAlliance) enemyPlayerList = ObjectManager.GetWoWUnitHorde(); else enemyPlayerList = ObjectManager.GetWoWUnitAlliance(); WoWPlayer nearestPlayerEnemy = ObjectManager.GetNearestWoWPlayer(enemyPlayerList); if (nearestPlayerEnemy.IsValid && nearestPlayerEnemy.IsAlive && nearestPlayerEnemy.GetDistance < 150) { Interact.InteractGameObject(nearestPlayerEnemy.GetBaseAddress); if (ObjectManager.Me.Target == nearestPlayerEnemy.Guid) { // OK } } To get the nearest attackable NPC: List<WoWUnit> unitList = ObjectManager.GetObjectWoWUnit(); List<WoWUnit> enemyUnitList = new List<WoWUnit>(); foreach (var woWUnit in unitList) { if (woWUnit.IsValid && woWUnit.IsAlive && woWUnit.Reaction <= Reaction.Neutral && UnitCanAttack.CanAttack(woWUnit.GetBaseAddress, ObjectManager.Me.GetBaseAddress)) enemyUnitList.Add(woWUnit); } WoWUnit nearestUnitEnemy = ObjectManager.GetNearestWoWUnit(enemyUnitList); if (nearestUnitEnemy.IsValid && nearestUnitEnemy.IsAlive && nearestUnitEnemy.GetDistance < 150) { Interact.InteractGameObject(nearestUnitEnemy.GetBaseAddress); if (ObjectManager.Me.Target == nearestUnitEnemy.Guid) { // OK } }
-
Bot Crashes on tethered internet
ps: And read this post:
-
Bot Crashes on tethered internet
Hello, Try to download already installed pack: http://download.wrobot.eu/wrobot/tmp/WRobotFullPack.zip If you can send me your log (you can found it in "Logs" folder).
-
Creation de profile
Bonjour, Le robot suit le chemin enregistré dans le profil, il sort du chemin que quand il à une cible (tuer un PNJ, ramasser une mine...) puis y revient.
-
With the Lvling Guest Profiles.
Hello, For the first problem, you need only to put same min/max level at the low level quest required and at the quest desired (it is easy way, you can also use C# code). For your second problem, I'll fix it.
-
Inquisition Spell in the fight engine
ps: And share your fightclass
-
Inquisition Spell in the fight engine
Hello, please post it in the forum, it is not wrobot bug. Do you have try to look how works this spell in the fight class delivered with the bot?
-
[Party] fail to follow in dungeons
Hello, Try to deactivate option " attack before being attacked " for don jon.
-
Win32Exception (0x80004005)
Hello, Look on google: https://www.google.fr/search?q=Win32Exception+(0x80004005)&oq=Win32Exception+(0x80004005)
-
Sleep Mode
Hello, This feature is added in bot "Schedule" (param "/Wait").
-
change the way coditions all work
Hello, I cannot add drop menu (this required a lot of change). For condition description I have reply here:
-
bot crashing unusable
Hello, Please post on forum, it is not bug (and I have reply ).
-
Can Run 2 Bots
Hello, You need to use Unlimited subscription to launch several wrobot at the same time or several normal subscription key (you cannot use same license key of normal subscription at the same time).
-
mailbox
Hello, Search on the forum, a lot of ask for this.
-
Description Box for Conditions
Hello, Nice idea. I have added this feature, if someone can help me to complete descriptions: case FightClassContionsType.None: info = Translate.Get(""); break; case FightClassContionsType.PetHealthPercent: info = Translate.Get(""); break; case FightClassContionsType.TargetHealthPercent: info = Translate.Get(""); break; case FightClassContionsType.HealthPercent: info = Translate.Get("Your Percent health (0 to 100)"); break; case FightClassContionsType.ComboPoint: info = Translate.Get(""); break; case FightClassContionsType.Mana: info = Translate.Get("Your mana"); break; case FightClassContionsType.Rage: info = Translate.Get("Your Rage"); break; case FightClassContionsType.Focus: info = Translate.Get("Your Focus"); break; case FightClassContionsType.Energy: info = Translate.Get("Your Energy"); break; case FightClassContionsType.Chi: info = Translate.Get("Your Chi (don't works, use \"Light Force\" for get Chi"); break; case FightClassContionsType.Runes: info = Translate.Get("Your runes"); break; case FightClassContionsType.RunicPower: info = Translate.Get("Your runic power"); break; case FightClassContionsType.SoulShards: info = Translate.Get("Your soul shards"); break; case FightClassContionsType.Eclipse: info = Translate.Get(""); break; case FightClassContionsType.HolyPower: info = Translate.Get(""); break; case FightClassContionsType.Alternate: info = Translate.Get(""); break; case FightClassContionsType.DarkForce: info = Translate.Get(""); break; case FightClassContionsType.LightForce: info = Translate.Get("Your light force (this return Chi)"); break; case FightClassContionsType.ShadowOrbs: info = Translate.Get(""); break; case FightClassContionsType.BurningEmbers: info = Translate.Get(""); break; case FightClassContionsType.DemonicFury: info = Translate.Get(""); break; case FightClassContionsType.ArcaneCharges: info = Translate.Get(""); break; case FightClassContionsType.TargetDistance: info = Translate.Get(""); break; case FightClassContionsType.DistancePetToTarget: info = Translate.Get(""); break; case FightClassContionsType.DistanceMeToPet: info = Translate.Get(""); break; case FightClassContionsType.MeLevel: info = Translate.Get(""); break; case FightClassContionsType.TargetLevel: info = Translate.Get(""); break; case FightClassContionsType.CombatStartSinceMs: info = Translate.Get(""); break; case FightClassContionsType.HostileUnitNear: info = Translate.Get(""); break; case FightClassContionsType.UnitAttackPlayerNear: info = Translate.Get(""); break; case FightClassContionsType.HostileUnitNearTarget: info = Translate.Get(""); break; case FightClassContionsType.UnitAttackPlayerNearTarget: info = Translate.Get(""); break; case FightClassContionsType.Buff: info = Translate.Get(""); break; case FightClassContionsType.TargetBuff: info = Translate.Get(""); break; case FightClassContionsType.PetBuff: info = Translate.Get(""); break; case FightClassContionsType.KnowSpell: info = Translate.Get(""); break; case FightClassContionsType.IsSpellUsable: info = Translate.Get(""); break; case FightClassContionsType.BuffCastedByMe: info = Translate.Get(""); break; case FightClassContionsType.TargetBuffCastedByMe: info = Translate.Get(""); break; case FightClassContionsType.PetBuffCastedByMe: info = Translate.Get(""); break; case FightClassContionsType.InBattleground: info = Translate.Get(""); break; case FightClassContionsType.HaveTarget: info = Translate.Get(""); break; case FightClassContionsType.HavePet: info = Translate.Get(""); break; case FightClassContionsType.MeInCombat: info = Translate.Get(""); break; case FightClassContionsType.MeInMove: info = Translate.Get(""); break; case FightClassContionsType.TargetInMove: info = Translate.Get(""); break; case FightClassContionsType.PetInMove: info = Translate.Get(""); break; case FightClassContionsType.TargetInCast: info = Translate.Get(""); break; case FightClassContionsType.PetInCast: info = Translate.Get(""); break; case FightClassContionsType.MeInCast: info = Translate.Get(""); break; case FightClassContionsType.TargetIsPlayer: info = Translate.Get(""); break; case FightClassContionsType.TargetIsSummoned: info = Translate.Get(""); break; case FightClassContionsType.TargetPetIsMyTarget: info = Translate.Get(""); break; case FightClassContionsType.TargetTargetingMe: info = Translate.Get(""); break; case FightClassContionsType.TargetTargetingMeOrMyPet: info = Translate.Get(""); break; case FightClassContionsType.TargetTargetingMyPet: info = Translate.Get(""); break; case FightClassContionsType.TargetTargetingPartyMember: info = Translate.Get(""); break; case FightClassContionsType.TargetIsElite: info = Translate.Get(""); break; case FightClassContionsType.TargetIsWorldBoss: info = Translate.Get(""); break; case FightClassContionsType.TargetIsBoss: info = Translate.Get(""); break; case FightClassContionsType.MeIsStunned: info = Translate.Get(""); break; case FightClassContionsType.TargetIsStunned: info = Translate.Get(""); break; case FightClassContionsType.PetIsStunned: info = Translate.Get(""); break; case FightClassContionsType.MeIsSwimming: info = Translate.Get(""); break; case FightClassContionsType.TargetIsSwimming: info = Translate.Get(""); break; case FightClassContionsType.PetIsSwimming: info = Translate.Get(""); break; case FightClassContionsType.MeIsFlying: info = Translate.Get(""); break; case FightClassContionsType.TargetIsFlying: info = Translate.Get(""); break; case FightClassContionsType.PetIsFlying: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot1: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot2: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot3: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot4: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot5: info = Translate.Get(""); break; case FightClassContionsType.RuneReadySlot6: info = Translate.Get(""); break; case FightClassContionsType.MeInGroup: info = Translate.Get(""); break; case FightClassContionsType.IsFacing: info = Translate.Get(""); break; case FightClassContionsType.IsBehind: info = Translate.Get(""); break; case FightClassContionsType.CSharpCode: info = Translate.Get(""); break; case FightClassContionsType.ItemCount: info = Translate.Get(""); break; case FightClassContionsType.LuaScript: info = Translate.Get(""); break; case FightClassContionsType.BuffStack: info = Translate.Get(""); break; case FightClassContionsType.BuffStackTarget: info = Translate.Get(""); break; case FightClassContionsType.BuffStackPet: info = Translate.Get(""); break;
-
Shutdown if Complete
Hello, Wait next update, I have added this option in tab "Security...".
-
BG Suggestion.
Hello, I'll don't add this feature, you have time to debuff when you wait in queue and wait than battleground start.
-
Bot freaks out
Hello, Can you share your log file please (you can found it in "Logs" folder).
-
NPCDB is empty
Hello, To complete your NPC DB (of tab "Tools") you can, In "Advanced general settings..." tab "Other options" activate option "Automatically add in database the NPCs of loaded profiles". And like has say Seumas, if your profile don't contain NPC you need to add it in you profile or in NpcDB a vendors or repairs. You can also use "Tundra Mammoth" (activate this option in "advanced general settings") if you have this mount. Check also if you settings to sell/repair is good >
-
When creating Grinding Profile....
Hello, since your post I have added in wrobot code more checks for npc state, I think that your problem is solved. If it is not solved, like have say creativextent blacklist mobs.
-
Party bot NEEDS ALOT of work :(
Hello, since your post I have added in wrobot code more checks for npc state, I think that your problem is solved. If it is not solved, like have say creativextent blacklist mobs.
-
AOE heal of Absorbtion Condition for
Hello, I'll add this.