Jump to content

Droidz

Administrators
  • Posts

    12519
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Droidz got a reaction from Nookz in Healing Class Legion   
    /* Changelog: 1.0.0 - initial release 1.0.1 - fixed not healing "recruit a friend" connected payers - fixed endless resurrection tries 1.0.2 - fixed FollowTank trying to follow target which is not in line of sight - improved FollowTank function - added Spell Circle of Healing - added Mass Resurrection if option "Resurrection on" is set to "all" - attack spells will now also be casted if your own target is the only valid one - purify will now check for debuffed partymembers instead of only low health partymembers - modified usage of Holy Word: Chastise - minor code fixes 1.0.3 - changed purify behaviour: wont move to target anymore - added option "Max healrange" - partymembers out of range will be ignored - changed Renew and Flash Heal to make use of "Max healrange" 1.0.4 - the debuff recognition is now much more strict - purify should work much more efficient now */ 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 robotManager; using robotManager.FiniteStateMachine; using robotManager.Helpful; using Timer = robotManager.Helpful.Timer; using wManager.Wow.Class; using wManager.Wow.Enums; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : ICustomClass { private MonkMistweaver _monk; public float Range { get { return 39.0f; } } private bool IsRunning; public void Initialize() { MonkMistWeaverSettings.Load(); if (!IsRunning) { _monk = new MonkMistweaver(); _monk.Pulse(); IsRunning = true; } } public void Dispose() { if (IsRunning) { _monk.Stop(); IsRunning = false; } } public void ShowConfiguration() { MonkMistWeaverSettings.Load(); MonkMistWeaverSettings.CurrentSetting.ToForm(); MonkMistWeaverSettings.CurrentSetting.Save(); } class MonkMistweaver { public static float HealRange = 40; public int maxhealrange; // Property: private bool _isLaunched; public bool IsLaunched { get { return _isLaunched; } set { _isLaunched = value; } } // Spells: private Spell _vivify; private Spell _envelopingmist; private Spell _zenpulse; private Spell _detox; private Spell _renewingmist; private Spell _Revival; private Spell _Lifecocoon; public MonkMistweaver() { _envelopingmist = new Spell("Enveloping Mist"); _vivify = new Spell("Vivify"); _zenpulse = new Spell("Zen Pulse"); _detox = new Spell("Detox"); _renewingmist = new Spell("Renewing Mist"); _Revival = new Spell("Revival"); _Lifecocoon = new Spell("Life Cocoon"); } public void Pulse() { _isLaunched = true; var thread = new Thread(RoutineThread) { Name = "Monk MistWeaver Healing Class" }; thread.Start(); } public void Stop() { _isLaunched = false; Logging.WriteFight("Stop 'MistWeaver Monk'"); } #region Routine void RoutineThread() { Logging.WriteFight("'MistWeaver Monk' Started"); if (MonkMistWeaverSettings.CurrentSetting.maxhealrange != null | MonkMistWeaverSettings.CurrentSetting.maxhealrange > 0) { maxhealrange = MonkMistWeaverSettings.CurrentSetting.maxhealrange; } else { maxhealrange = 80; } while (_isLaunched) { Routine(); Thread.Sleep(25); // time between Routine steps in ms - lower time results in higher cpu usage } Logging.WriteFight("'MistWeaver Monk' Stopped"); } void Routine() { if (!Conditions.InGameAndConnectedAndAlive || ObjectManager.Me.IsMounted || ObjectManager.Me.IsStunned || ObjectManager.Me.Silenced) { return; } if (!ObjectManager.Me.InCombat && !ObjectManager.Me.IsMounted ) { ZenPulse(); Vivify(); Detox(); FollowTank(); return; } // if (!Conditions.InGameAndConnectedAndAlive || ObjectManager.Me.IsMounted || !ObjectManager.Me.InCombat) // || !ObjectManager.Me.InCombat return; if (LifeCocoon()) return; if (Revival()) return; if (EnvelopingMist()) return; if (ZenPulse()) return; if (RenewingMist()) return; if (Vivify()) return; if (Detox()) return; if (FollowTank()) return; } #endregion #region Follow Tank bool FollowTank() { if (MonkMistWeaverSettings.CurrentSetting.FollowTank == false) return false; if (MonkMistWeaverSettings.CurrentSetting.FollowTank == null) return false; var FollowTanks = getTanks().Where(o => o.IsValid && !o.IsMounted).OrderBy(o => o.GetDistance); int FollowTankDistance = MonkMistWeaverSettings.CurrentSetting.FollowTankDistance; if (FollowTanks.Count() > 0) { var u = FollowTanks.First(); WoWPlayer tank = new WoWPlayer(u.GetBaseAddress); if (tank.GetDistance > FollowTankDistance) { while ((float)(System.Math.Round((tank.GetDistance),0)) > FollowTankDistance) { MovementManager.MoveTo(tank.Position); /* Logging.WriteDebug("Following Tank " + tank.Name); Logging.WriteDebug("Current Tank distance " + tank.GetDistance); Logging.WriteDebug("Wanted Tank distance " + FollowTankDistance); */ if ((float)(System.Math.Round((tank.GetDistance),0)) < FollowTankDistance) { MovementManager.StopMove(); return true; } } MovementManager.StopMove(); return true; } return false; } var FollowParty = getPartymembers().Where(o => o.IsValid && !o.IsMounted && (o.Name != ObjectManager.Me.Name)).OrderBy(o => o.GetDistance); if (FollowParty.Count() > 0) { var k = FollowParty.First(); WoWPlayer party = new WoWPlayer(k.GetBaseAddress); //Logging.WriteDebug("Is partymember in line of sight? " + TraceLine.TraceLineGo(party.Position)); if (party.GetDistance > FollowTankDistance) { MovementManager.MoveTo(party); //Logging.WriteDebug("Following Partymember " + party.Name); return false; } } return false; } #endregion #region RenewingMist bool RenewingMist() { if (!_renewingmist.KnownSpell) return false; if (!_renewingmist.IsSpellUsable) return false; var buffTanks = getTanks().Where(o => o.IsValid && !(o.HaveBuff("Renewing Mist"))).OrderBy(o => o.GetDistance); var buffHealers = getHealers().Where(o => o.IsValid && !(o.HaveBuff("Renewing Mist"))).OrderBy(o => o.GetDistance); if (buffTanks.Count() > 0 && buffHealers.Count() > 0) { var u = buffTanks.First(); WoWPlayer tank = new WoWPlayer(u.GetBaseAddress); if (!TraceLine.TraceLineGo(tank.Position) && (tank.Name != ObjectManager.Me.Name)) { //Logging.WriteDebug("Is " + tank.Name + " a healer? " + IsHealer(tank.Name) + " - " + GetHealerName() + " is the healer."); Interact.InteractGameObject(tank.GetBaseAddress, false); _renewingmist.Launch(); return true; } } return false; } #endregion #region Life Cocoon bool LifeCocoon() { if (!_Lifecocoon.KnownSpell) return false; if (!_Lifecocoon.IsSpellUsable) return false; if (MonkMistWeaverSettings.CurrentSetting.PercentLifeCocoonHealth == null) return false; int HandsHealth = MonkMistWeaverSettings.CurrentSetting.PercentLifeCocoonHealth; if (HandsHealth == 0) return false; var members = getPartymembers().Where(o => o.IsValid && o.IsAlive && o.HealthPercent <= HandsHealth && !TraceLine.TraceLineGo(o.Position)).OrderBy(o => o.HealthPercent); if (members.Count() > 0) { var u = members.First(); WoWPlayer healTarget = new WoWPlayer(u.GetBaseAddress); if (healTarget.IsAlive || healTarget.HealthPercent > 0) { while (TraceLine.TraceLineGo(healTarget.Position)) { MovementManager.MoveTo(healTarget); } MovementManager.StopMove(); Interact.InteractGameObject(healTarget.GetBaseAddress, false); _Lifecocoon.Launch(); return true; } } return false; } #endregion #region Enveloping Mist bool EnvelopingMist() { if (!_envelopingmist.KnownSpell) return false; if (!_envelopingmist.IsSpellUsable) return false; if (MonkMistWeaverSettings.CurrentSetting.PercentEnvelopingMistHealth == null) return false; int HandsHealth = MonkMistWeaverSettings.CurrentSetting.PercentEnvelopingMistHealth; if (HandsHealth == 0) return false; var members = getPartymembers().Where(o => o.IsValid && o.IsAlive && o.HealthPercent <= HandsHealth && !TraceLine.TraceLineGo(o.Position)).OrderBy(o => o.HealthPercent); if (members.Count() > 0) { var u = members.First(); WoWPlayer healTarget = new WoWPlayer(u.GetBaseAddress); if (healTarget.IsAlive || healTarget.HealthPercent > 0) { while (TraceLine.TraceLineGo(healTarget.Position)) { MovementManager.MoveTo(healTarget); } MovementManager.StopMove(); Interact.InteractGameObject(healTarget.GetBaseAddress, false); _envelopingmist.Launch(); return true; } } return false; } #endregion #region Vivify bool Vivify() { if (!_vivify.KnownSpell) return false; if (!_vivify.IsSpellUsable) return false; if (MonkMistWeaverSettings.CurrentSetting.PercentVivifyHealth == null) return false; int VivifyHealth = MonkMistWeaverSettings.CurrentSetting.PercentVivifyHealth; if (VivifyHealth == 0) return false; var members = getPartymembers().Where(o => o.IsValid && (o.IsAlive || o.HealthPercent > 0) && o.HealthPercent <= VivifyHealth).OrderBy(o => o.HealthPercent); if (members.Count() > 0) { var u = members.First(); WoWPlayer healTarget = new WoWPlayer(u.GetBaseAddress); if (healTarget.IsAlive || healTarget.HealthPercent > 0) { while (TraceLine.TraceLineGo(healTarget.Position)) { MovementManager.MoveTo(healTarget); } MovementManager.StopMove(); Interact.InteractGameObject(healTarget.GetBaseAddress, false); _vivify.Launch(); return true; } } return false; } #endregion #region Revival /* public int healthTr { get { return MonkMistWeaverSettings.CurrentSetting.PercentRevivalHealth != null ? MonkMistWeaverSettings.CurrentSetting.PercentRevivalHealth : 0; } } public int maxPlayersTr { get { return MonkMistWeaverSettings.CurrentSetting.PlayersCountRevival != null ? MonkMistWeaverSettings.CurrentSetting.PlayersCountRevival : 0; } }*/ bool Revival() { if (!_Revival.KnownSpell) return false; if (!_Revival.IsSpellUsable) return false; int healthTr = MonkMistWeaverSettings.CurrentSetting.PercentRevivalHealth; int maxPlayersTr = MonkMistWeaverSettings.CurrentSetting.Players; // PlayersCountRevival ??? if (healthTr == 0) return false; if (maxPlayersTr == 0) return false; var members = getPartymembers().Where(o => o.IsValid && o.IsAlive && o.HealthPercent <= healthTr && o.GetDistance <= 40); if (members.Count() >= maxPlayersTr) { _Revival.Launch(); return true; } return false; } #endregion #region Zen Pulse public int healthPOH { get { return MonkMistWeaverSettings.CurrentSetting.PercentZenPulseHealth != null ? MonkMistWeaverSettings.CurrentSetting.PercentZenPulseHealth : 0; } } public int maxplayersPOH { get { return MonkMistWeaverSettings.CurrentSetting.PlayersCountZenPulse != null ? MonkMistWeaverSettings.CurrentSetting.PlayersCountZenPulse : 0; } } bool ZenPulse() { if (!_zenpulse.KnownSpell) return false; if (!_zenpulse.IsSpellUsable) return false; if (healthPOH == 0) return false; if (maxplayersPOH == 0) return false; //Logging.WriteDebug("Wild Growth health : " + healthPOH); //Logging.WriteDebug("Wild Growth players: " + maxplayersPOH); var members = getPartymembers().Where(o => o.IsValid && o.IsAlive && o.HealthPercent <= healthPOH && !TraceLine.TraceLineGo(o.Position)).OrderBy(o => o.HealthPercent); if (members.Count() >= maxplayersPOH) { var u = members.First(); WoWPlayer healTarget = new WoWPlayer(u.GetBaseAddress); if (!TraceLine.TraceLineGo(healTarget.Position) && healTarget.IsAlive) { { Interact.InteractGameObject(healTarget.GetBaseAddress, false); _zenpulse.Launch(); return true; } } } return false; } #endregion #region Detox bool Detox() { if (!_detox.KnownSpell) return false; if (!_detox.IsSpellUsable) return false; var members = GetDebuffedPartymembers().OrderBy(o => o.HealthPercent); if (members.Count() > 0) { var u = members.First(); WoWPlayer healTarget = new WoWPlayer(u.GetBaseAddress); if (!TraceLine.TraceLineGo(healTarget.Position) && healTarget.IsAlive) { Interact.InteractGameObject(healTarget.GetBaseAddress, false); if (Lua.LuaDoString<bool>("for j=1,40 do local m=5; local d={UnitDebuff(\"target\",j)}; if (d[5]==\"Magic\" or d[5]==\"Disease\" or d[5]==\"Poison\") and d[7]>m then j=41 return 1 end end;")) { _detox.Launch(); Logging.WriteDebug("Detox " + healTarget.Name); return true; } return false; } } return false; } #endregion #region get in Healingrange bool GetInHealingrange(WoWPlayer healTarget) { if (healTarget.GetDistance > HealRange) { Logging.WriteDebug(healTarget.Name + " is out of range, lets move to him. "); while (healTarget.GetDistance > HealRange) { MovementManager.MoveTo(healTarget); } MovementManager.StopMove(); return true; } return false; } #endregion #region get party List<WoWPlayer> getPartymembers() { List<WoWPlayer> ret = new List<WoWPlayer>(); var u = Party.GetPartyHomeAndInstance().Where(p => p.GetDistance < maxhealrange && p.IsValid && !TraceLine.TraceLineGo(p.Position)); if (u.Count() > 0) { foreach (var unit in u) { WoWPlayer p = new WoWPlayer(unit.GetBaseAddress); ret.Add(p); } } WoWPlayer v = new WoWPlayer(ObjectManager.Me.GetBaseAddress); ret.Add(v); return ret; } List<WoWPlayer> getAllPartymembers() { List<WoWPlayer> ret = new List<WoWPlayer>(); var u = Party.GetPartyHomeAndInstance().Where(p => p.GetDistance < 80 && p.IsValid); if (u.Count() > 0) { foreach (var unit in u) { WoWPlayer p = new WoWPlayer(unit.GetBaseAddress); ret.Add(p); } } WoWPlayer v = new WoWPlayer(ObjectManager.Me.GetBaseAddress); ret.Add(v); return ret; } List<WoWUnit> GetPartyTargets() { List<WoWPlayer> party = Party.GetPartyHomeAndInstance(); List<WoWPlayer> partyMembers = new List<WoWPlayer>(); var ret = new List<WoWUnit>(); partyMembers.AddRange(party.Where(p => p.GetDistance < 40 && p.IsValid && p.HealthPercent > 0)); WoWPlayer Me = new WoWPlayer(ObjectManager.Me.GetBaseAddress); partyMembers.Add(Me); foreach (var m in partyMembers) { var targetUnit = new WoWUnit(ObjectManager.GetObjectByGuid(m.Target).GetBaseAddress); if (m.IsValid && (m.HealthPercent > 0) && (m.InCombat || targetUnit.InCombat) && m.Target.IsNotZero()) { if (ret.All(u => u.Guid != m.Target)) // prevent double list entrys { if (targetUnit.IsValid && targetUnit.IsAlive) { ret.Add(targetUnit); } } } } return ret; } List<WoWPlayer> GetDebuffedPartymembers() { List<WoWPlayer> ret = new List<WoWPlayer>(); List<WoWPlayer> u = new List<WoWPlayer>(); List<WoWPlayer> party = Party.GetPartyHomeAndInstance(); WoWPlayer Me = new WoWPlayer(ObjectManager.Me.GetBaseAddress); u.AddRange(party.Where(p => p.GetDistance < 40 && p.IsValid && p.HealthPercent > 0 && !TraceLine.TraceLineGo(p.Position))); u.Add(Me); if (u.Count() > 0) { //Logging.WriteDebug("Checking" + u.Count + " players for debuffs."); foreach (var unit in u) { WoWPlayer p = new WoWPlayer(unit.GetBaseAddress); List<Aura> debuffs = new List<Aura>(); debuffs = p.GetAllBuff(); //Logging.WriteDebug("Found " + debuffs.Count + " buffs on " + unit.Name); foreach (var m in debuffs) { //Logging.WriteDebug("Buff: " + m.GetSpell + " Flags: " + m.Flag); if (!m.Flag.HasFlag(AuraFlags.Passive) && m.Flag.HasFlag(AuraFlags.Harmful) && m.Flag.HasFlag(AuraFlags.Active) && m.Flag.HasFlag(AuraFlags.Negative) && m.Flag.HasFlag(AuraFlags.Duration)) { ret.Add(p); return ret; } } } } return ret; } #endregion #region get tanks List<WoWPlayer> getTanks() { List<WoWPlayer> ret = new List<WoWPlayer>(); var u = Party.GetPartyHomeAndInstance().Where(p => p.GetDistance < 80 && p.IsValid && !TraceLine.TraceLineGo(p.Position)); if (u.Count() > 0) { foreach (var unit in u) { //Logging.WriteDebug("Unit name: " + unit.Name.ToString().Trim()); if (IsTank(unit.Name.ToString())) { WoWPlayer p = new WoWPlayer(unit.GetBaseAddress); ret.Add(p); } } } /* if (ret.Count() == 0) { Logging.WriteDebug("Could not find a tank!"); WoWPlayer v = new WoWPlayer(ObjectManager.Me.GetBaseAddress); ret.Add(v); } */ 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"); } public bool IsTank(string unit) { var tankNaam = GetTankPlayerName(); WoWPlayer v = new WoWPlayer(ObjectManager.Me.GetBaseAddress); if (tankNaam.Contains(unit)) { return true; } return false; } #endregion #region getHealers List<WoWPlayer> getHealers() { List<WoWPlayer> ret = new List<WoWPlayer>(); var u = Party.GetPartyHomeAndInstance().Where(p => p.GetDistance < 80 && p.IsValid && !TraceLine.TraceLineGo(p.Position)); if (u.Count() > 0) { foreach (var unit in u) { //Logging.WriteDebug("Healer name: " + unit.Name.ToString().Trim()); if (IsHealer(unit.Name.ToString())) { WoWPlayer p = new WoWPlayer(unit.GetBaseAddress); ret.Add(p); } } } return ret; } string GetHealerName() { var lua = new[] { "partyHealer = \"\";", "for groupindex = 1,MAX_PARTY_MEMBERS do", " if (UnitInParty(\"party\" .. groupindex)) then", " local role = UnitGroupRolesAssigned(\"party\" .. groupindex);", " if role == \"HEALER\" then", " local name, realm = UnitName(\"party\" .. groupindex);", " partyHeaer = name;", " return;", " end", " end", "end", }; return Lua.LuaDoString(lua, "partyHealer"); } public bool IsHealer(string unit) { var healerNaam = GetHealerName(); if (healerNaam.Contains(unit)) { return true; } return false; } #endregion } #region settings [Serializable] public class MonkMistWeaverSettings : Settings { [Setting, DefaultValue(0)] [Category("Healing Spells")] [DisplayName("Life Cocoon HP%")] [Description("Cast Life Cocoon when HP% <= Value")] public int PercentLifeCocoonHealth { get; set; } [Setting, DefaultValue(0)] [Category("Group Healing Spells")] [DisplayName("Zen Pulse Players")] [Description("Cast Zen Pulse when player count with low HP >= Value. 0 = Disable")] public int PlayersCountZenPulse { get; set; } [Setting, DefaultValue(0)] [Category("Group Healing Spells")] [DisplayName("Zen Pulse HP%")] [Description("Cast Zen Pulse when players HP% <= Value")] public int PercentZenPulseHealth { get; set; } [Setting, DefaultValue(0)] [Category("Group Healing Spells")] [DisplayName("Revival HP%")] [Description("Cast Revival when players HP% <= Value")] public int PercentRevivalHealth { get; set; } [Setting, DefaultValue(0)] [Category("Group Healing Spells")] [DisplayName("Revival Players")] [Description("Cast Revival when playercount with low HP >= Value. 0 = Disable")] public int Players { get; set; } [Setting, DefaultValue(0)] [Category("Healing Spells")] [DisplayName("Vivify HP%")] [Description("Cast Vivify when HP% <= Value")] public int PercentVivifyHealth { get; set; } [Setting, DefaultValue(0)] [Category("Healing Spells")] [DisplayName("Enveloping Mist HP%")] [Description("Cast Enveloping Mist when HP% <= Value")] public int PercentEnvelopingMistHealth { get; set; } [Setting, DefaultValue(80)] [Category("Behaviour")] [DisplayName("Max Healrange")] [Description("Maximal distance between you and a valid healtarget")] public int maxhealrange { get; set; } [Setting, DefaultValue(false)] [Category("Behaviour")] [DisplayName("Follow Tank")] [Description("Follow the tank while in fight")] public bool FollowTank { get; set; } [Setting, DefaultValue(0)] [Category("Behaviour")] [DisplayName("Follow Tank Distance")] [Description("Move to tank if distance is higher than value")] public int FollowTankDistance { get; set; } private MonkMistWeaverSettings() { ConfigWinForm(new System.Drawing.Point(400, 600), "MistWeaver Monk " + Translate.Get("Settings")); } public static MonkMistWeaverSettings CurrentSetting { get; set; } public bool Save() { try { return Save(AdviserFilePathAndName("CustomClass-MistWeaver Monk", ObjectManager.Me.Name + "." + Usefuls.RealmName)); } catch (Exception e) { Logging.WriteError("MonkMistWeaverSettings > Save(): " + e); return false; } } public static bool Load() { try { if (File.Exists(AdviserFilePathAndName("CustomClass-MistweaverMonk", ObjectManager.Me.Name + "." + Usefuls.RealmName))) { CurrentSetting = Load<MonkMistWeaverSettings>(AdviserFilePathAndName("CustomClass-MistweaverMonk", ObjectManager.Me.Name + "." + Usefuls.RealmName)); return true; } CurrentSetting = new MonkMistWeaverSettings(); } catch (Exception e) { Logging.WriteError("MonkMistWeaverSettings > Load(): " + e); } return false; } } #endregion } It's code fixed (but no tested)
  2. Like
    Droidz got a reaction from Skemez in monk heals   
    I have test with pala.   In "Party" product settings don't forget to activate option "Healer".   In fight class by spell - Activate option "For friends". - Desactivate option "Combat only". - Add condition "Target distance" (for spell range) and "Target health percent".   ps: sample in attached file heal pala test.xml
  3. Like
    Droidz reacted to rmich in License Key is not working for Legion 7.3.5 (26124)   
    Hi. i got same problem. its telling key is activated in antoher version. Could you please fix it. Thank you.
  4. Like
    Droidz got a reaction from leonie in Change Profile after x   
    Hello, https://wrobot.eu/forums/topic/1717-gatherer-advanced-profile-how-to-change-zone-after-leveltime/
  5. Like
    Droidz got a reaction from TechMecca in Beginner in Lua (first script)   
    Hello,
    Your code can't work it doesn't have the good structure.
    Here is some code with a correct structure (although I don't think it works, it would need to be debugged):
    using System.Collections.Generic; using System.Threading; using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; using wManager.Wow.Enums; public class Main : wManager.Plugin.IPlugin { public void Initialize() { EventsLuaWithArgs.OnEventsLuaStringWithArgs += OnAuctionHouseShow; } private void OnAuctionHouseShow(string eventName, List<string> args) { if (eventName == "AUCTION_HOUSE_SHOW") { Logging.WriteDebug("Auction House is open"); Thread.Sleep(5000); SellGreenItems(); } } public void SellGreenItems() { foreach (WoWItem item in Bag.GetBagItem()) { if (item.GetItemInfo.ItemRarity == (int)WoWItemQuality.Uncommon) { Logging.WriteDebug($"Selling {item.Name}"); Bag.PickupContainerItem(item.Name); Thread.Sleep(1500); AuctionHelpers.StartAuction(50000, 50000, AuctionHelpers.Duration._12H, 1, 1); //Lua.LuaDoString($@"StartAuction(50000, 50000, 12, 1);"); } } } public void Dispose() { EventsLuaWithArgs.OnEventsLuaStringWithArgs -= OnAuctionHouseShow; } public void Settings() { } }  
  6. Like
    Droidz got a reaction from morrish in Problem with advanced settings (under general settings)   
    Hello,
    Right-click on WRobot.exe and then click Properties. On the Compatibility tab, select Disable Display Scaling On High DPI Settings, and then click OK:
    https://www.youtube.com/watch?v=0xS-UCuyq7s
  7. Like
    Droidz got a reaction from Marvelino123 in New Dragonflight Firestorm server, anyone tested yet?   
    I added support of 10.1.7.51261
  8. Like
    Droidz got a reaction from g i N in (help) Création d'un Plugin   
    using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Plugin; using Timer = System.Threading.Timer; public class Main : IPlugin { private bool _isEnabled; public void Initialize() { Logging.Write("[JunkRemover] Plugin initialized and activated"); _isEnabled = true; EventsLua.AttachEventLua("BAG_UPDATE", context => BagUpdateHandler()); } public void Dispose() { _isEnabled = false; Logging.Write("[JunkRemover] Plugin disposed"); } private Timer _debounceTimer; private void BagUpdateHandler() { Logging.Write("[JunkRemover] BAG_UPDATE"); if (_debounceTimer != null) { _debounceTimer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); _debounceTimer.Dispose(); } _debounceTimer = new Timer((state) => { if (_isEnabled) { Logging.Write("[JunkRemover] Checking bags for junk"); var needToRunAgain = Lua.LuaDoString<bool>(@" for i = 0, NUM_BAG_SLOTS do for j = 1, C_Container.GetContainerNumSlots(i) do local itemId = C_Container.GetContainerItemID(i, j) if itemId then local itemName, _, itemQuality = GetItemInfo(C_Container.GetContainerItemID(i, j)) if itemName and itemQuality == 0 then print('Deleting ' .. itemName) C_Container.PickupContainerItem(i, j) DeleteCursorItem() return true end end end end return false "); if (needToRunAgain) { BagUpdateHandler(); } } }, null, 1000, System.Threading.Timeout.Infinite); } public void Settings() { } }  
    JunkRemover.cs
  9. Like
    Droidz got a reaction from Elexir in (help) Création d'un Plugin   
    using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Plugin; using Timer = System.Threading.Timer; public class Main : IPlugin { private bool _isEnabled; public void Initialize() { Logging.Write("[JunkRemover] Plugin initialized and activated"); _isEnabled = true; EventsLua.AttachEventLua("BAG_UPDATE", context => BagUpdateHandler()); } public void Dispose() { _isEnabled = false; Logging.Write("[JunkRemover] Plugin disposed"); } private Timer _debounceTimer; private void BagUpdateHandler() { Logging.Write("[JunkRemover] BAG_UPDATE"); if (_debounceTimer != null) { _debounceTimer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); _debounceTimer.Dispose(); } _debounceTimer = new Timer((state) => { if (_isEnabled) { Logging.Write("[JunkRemover] Checking bags for junk"); var needToRunAgain = Lua.LuaDoString<bool>(@" for i = 0, NUM_BAG_SLOTS do for j = 1, C_Container.GetContainerNumSlots(i) do local itemId = C_Container.GetContainerItemID(i, j) if itemId then local itemName, _, itemQuality = GetItemInfo(C_Container.GetContainerItemID(i, j)) if itemName and itemQuality == 0 then print('Deleting ' .. itemName) C_Container.PickupContainerItem(i, j) DeleteCursorItem() return true end end end end return false "); if (needToRunAgain) { BagUpdateHandler(); } } }, null, 1000, System.Threading.Timeout.Infinite); } public void Settings() { } }  
    JunkRemover.cs
  10. Like
    Droidz got a reaction from hahaha0031 in New Dragonflight Firestorm server, anyone tested yet?   
    I added support of 10.1.7.51261
  11. Like
    Droidz got a reaction from j9000 in New Dragonflight Firestorm server, anyone tested yet?   
    I added support of 10.1.7.51261
  12. Thanks
    Droidz got a reaction from Elexir in New Dragonflight Firestorm server, anyone tested yet?   
    Hello,
    I added the support of the version "10.2.7 build 55664", you need to download again the updater to be able to select this version.
  13. Like
    Droidz reacted to Nookz in License Key is not working for Legion 7.3.5 (26124)   
    same problem 
    my license key is not working on legion 7.3.5 (26124)
    if you can help me plz
    @Droidz
    Thank you
  14. Like
    Droidz got a reaction from Craank in Repair/Install WRobot   
    Before request help, thank you to:
    Make sure you start wow in 32-bit and run Wow in Windowed mode. Make sure do you use WRobot on administrator Windows session. Keep Windows updated. Try to disable your antivirus/firewall, redownload and reinstall WRobot in empty folder. Delete completely WRobot folder, download and install it again (you can try to download preinstalled version). Try to put WRobot folder on your desktop and in root of the disc. (Re)Install DirectX, Framework (minimum 4.5) (or Framework Repair Tool), SlimDX (4.0 X86), Redistributable Visual C + + 2010  (X86). If the bot does not work at all, that WRobot freeze, change the version of DirectX that wow uses (do not forget to restart Wow) (if this don't resolve problem, you can try to launch WRobot with shortcut "WRobot No DX"). Reset key bindings Wow (the bot uses Forward, Backward, Jump, Sit / Stand, strafe right and left, but I suggest you reset everything). Some wow addon can cause problems, so disable all. Close Windows program like Skype, Teamviewer and all overlays e.g. Overwolf, Geforce Experience,  raptr, AMD Gaming Evolved, teamspeak (these programs can cause problems at WRobot, also programs for record screen or programs which draw/write in game window). Close/disable your VPN, Proxy and program like ProxyCap. If you have already run WRobot, you can try to remove folde "WRobot\Data\Meshes\". If WRobot window is not display correctly, you  can you try to Right-click on WRobot.exe and then click "Properties". On the "Compatibility" tab, select "Disable Display Scaling On High DPI Settings", and then click "OK" ( https://www.youtube.com/watch?v=0xS-UCuyq7s ). Some virus/malwares can block WRobot. Scan you computer AdwCleaner and/or Malwarebytes for remove malwares, and anti-virus like Eset or Kaspesky. Disable "Bliz Streaming" feature, for it, on the Battle.net App, go to upper left corner, click the down arrow, go to Settings. From there, go to Streaming and uncheck Enable Streaming. When WRobot is launched, you cannot minimize Wow, of course you can keep Wow in background and use your computer, but you cannot minize (put in taskbar) Wow (if minimized, WRobot don't works correctly). Sometime, you need to put "full control" at "WRobot.exe" (and WRobot folder): https://www.windowscentral.com/how-take-ownership-files-and-folders-windows-10 Do a search to see if a solution exists: https://www.google.com/search?q=site:wrobot.eu+adding+mailbox or http://wrobot.eu/search/. If you start to use bot, you can watch this video: http://wrobot.eu/forums/topic/3633-getting-started-with-wrobot-video/ If your problem is not resolved, request help on good forum, to get quick reply, don't forget to share your log file.
  15. Like
    Droidz got a reaction from Marvelino123 in New Dragonflight Firestorm server, anyone tested yet?   
    Hello,
    I'm releasing a compatible version in the next week. I'll post a message here when it's done.
  16. Like
    Droidz got a reaction from hahaha0031 in New Dragonflight Firestorm server, anyone tested yet?   
    Hello,
    I'm releasing a compatible version in the next week. I'll post a message here when it's done.
  17. Thanks
    Droidz got a reaction from jamsho0t in I need help with my fightclass thought lua code   
    Hello,
    No tested, but you can try this plugin :  CastSpellByName to Cast Macro.cs
    using robotManager.Helpful; public class Main : wManager.Plugin.IPlugin { public void Initialize() { Logging.Write("CastSpellByName to /cast plugin loaded."); robotManager.Events.Events.OnCustomEvent += OnEventsOnOnCustomEvent; } private void OnEventsOnOnCustomEvent(string name, object[] args, System.ComponentModel.CancelEventArgs cancelable) { if (name.StartsWith("SpellManager.CastSpellByName") && args.Length >= 1 && args[0] is string) { var spellName = (string)args[0]; if (!string.IsNullOrWhiteSpace(spellName)){ string luaUnit = null; if (args.Length >= 2 && args[1] is string) luaUnit = (string)args[1]; cancelable.Cancel = true; if (!string.IsNullOrWhiteSpace(luaUnit) && luaUnit != "player") { Logging.WriteDebug("Casting " + spellName + " on " + luaUnit + " with macro /cast"); wManager.Wow.Helpers.Lua.RunMacroText("/cast [@" + luaUnit + "] " + spellName); } else { Logging.WriteDebug("Casting " + spellName + " with macro /cast"); wManager.Wow.Helpers.Lua.RunMacroText("/cast " + spellName); } } } } public void Dispose() { robotManager.Events.Events.OnCustomEvent -= OnEventsOnOnCustomEvent; } public void Settings() { } } I haven't tested, but this plugin should enable fight classes that use the bot method "CastSpellByNameOn" (which is the case for most fight classes) to force the bot to use "/cast ..." instead. Therefore, use this plugin with your fight class configured normally (without using "/cast").
  18. Thanks
    Droidz got a reaction from jamsho0t in Применение умений на Sirus.su   
  19. Like
    Droidz reacted to rolloss10 in License Key is not working for Legion 7.3.5 (26124)   
    same problem here can you fix it please?
  20. Like
    Droidz got a reaction from kevinchow in New Dragonflight Firestorm server, anyone tested yet?   
    I will release a version for Dragon Flight in early September.
  21. Like
    Droidz got a reaction from hahaha0031 in New Dragonflight Firestorm server, anyone tested yet?   
    I will release a version for Dragon Flight in early September.
  22. Like
    Droidz got a reaction from gornov.12345 in Stop buying low lvl food and drinks   
    Hello, in "script can condition" put code like :
    return wManager.Wow.ObjectManager.ObjectManager.Me.Level >= 5 && wManager.Wow.ObjectManager.ObjectManager.Me.Level <= 15; Replace 5 by the minimum level, 15 by the maximum level (in the current code, the bot will buy your item if the level is equal to or bigger than 5 and equal to or lower than 15).
  23. Like
    Droidz got a reaction from happiness7 in Enter corpse in Dungeon   
    try
    using System.Windows.Forms; using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : wManager.Plugin.IPlugin { public void Initialize() { var badCorpsePos = new Vector3(-3362.286f, 4665.728f, -22.70619f); var enterDungeonPos = new Vector3(-3362.163f, 4636.226f, -101.049f); Logging.Write("[EnterCorpse] Started."); wManager.Events.OthersEvents.OnPathFinderFindPathResult += (from, to, path, mpq, success) => { if (ObjectManager.Me.IsDead && to.DistanceTo(badCorpsePos) < 10) { path.Clear(); path.AddRange(PathFinder.FindPath(enterDungeonPos)); } }; } public void Dispose() { Logging.Write("[EnterCorpse] Disposed."); } public void Settings() { MessageBox.Show("??"); } }  
  24. Like
    Droidz got a reaction from Move2 in [Request Plugin] close bot/client after X minutes when character can't reach corpse   
    Hello,
    using System.Threading; using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : wManager.Plugin.IPlugin { private bool _isStarted; public void Initialize() { _isStarted = true; var stopWatch = new System.Diagnostics.Stopwatch(); while (_isStarted) { if (Conditions.InGameAndConnectedAndProductStartedNotInPause) { if (ObjectManager.Me.IsDeadMe && stopWatch.Elapsed.TotalMinutes > 5) { Logging.Write("Bot is dead for more than 5 minutes, closing game."); wManager.Wow.Memory.WowMemory.CloseHookedProcess(); _isStarted = false; } else if (ObjectManager.Me.IsDeadMe) { stopWatch.Start(); } else { stopWatch.Reset(); } } Thread.Sleep(500); } } public void Dispose() { _isStarted = false; } public void Settings() { } }  
  25. Like
    Droidz got a reaction from Skemez in Possible to renew a license that expired?   
    Hello, you can find the renewal invoice here: https://wrobot.eu/clients/orders/
×
×
  • Create New...