-
Posts
332 -
Joined
Content Type
Forums
Articles
Bug Tracker
Downloads
Store
Posts posted by Apexx
-
-
But.. if anyone needed code for this:
Boolean method:
internal static bool PlayerKnowShadowWeaving() { return Lua.LuaDoString<bool>(@" local numTabs = GetNumTalentTabs(); for t=1, numTabs do local numTalents = GetNumTalents(t); for i = 1, numTalents do nameTalent, _, _, _, currRank, _ = GetTalentInfo(t, i); if nameTalent == 'Shadow Weaving' and currRank > 0 then return true; end end end" ); }
Usage:
// Shadow Word: Pain- Only if player knows Shadow Weaving and has 5 stacks if (PlayerKnowShadowWeaving() && ObjectManager.Me.BuffStack(15258) >= 5 && !ObjectManager.Target.HaveBuff(SpellController.shadowWordPain.Ids)) { Logging.WriteDebug($"Shadow Weaving buff stack = {Player.BuffStack(SpellController.shadowWeaving.Ids)}"); // Launch Shadow Word: Pain }
-
Glad you were able to figure it out. Would you mind editing the post title to, "[Solved] title here". It helps a lot for people searching for similar issues and shows, "Solved". Thanks!
-
Try again after adjusting the following General Settings -> Enter advanced settings... -> Vendor (Selling or Buying) -> Min free bag slots
-
I am not quite sure if WRobot is able to distinguish between quest objects from any other game object that is interactable. You may need to make a list, or dictionary with quest id, and quest item id.. but you can just compare the nodeNearMe by the name of the object, aka Quest item.
var nodeNearMe = ObjectManager.GetObjectWoWGameObject().Where(t => t != null && t.CanOpen).OrderBy(u => ObjectManager.Me.Position.DistanceTo(u.Position)).FirstOrDefault(); if (nodeNearMe != null && nodeNearMe.Name == "Quest Item Name Here" && ObjectManager.Me.Position.DistanceTo(nodeNearMe.Position) <= 8) { // break bear for the nodes if (!ObjectManager.Me.InCombatFlagOnly && ObjectManager.Me.HaveBuff("Bear Form")) { Lua.LuaDoString("CastSpellByName(\"Bear Form\",1)"); Thread.Sleep(400); } }
-
I have to say that this occurred for me as well when flying the path I had setup for Fishing.
Once Pathfinder has a problem finding a direct "route" to the nearest path "node", it will fly up and spiral until the bot is stopped. -
I stumbled across a website the other day, while looking for an alternative to Rocketr to process payments, and validate plugins, fight classes, etc.
when I found, cryptlex (Powerful software licensing API).QuoteEasily generate license keys and validate them in your software apps. Additionally, you can offer trials, subscriptions, node-locked licenses, floating licenses and much more. -cryptlex.com
After working with the code a bit, I wanted to share a demo project, along with a demo product online, as well as license keys if anyone would like to test it out for themselves.
This project may have bugs and may not work 100%. I am hoping if other programmers check out the code they can offer ideas, comments, and even
constructive criticism using this method.There is a "WRobot" directory in the attached zip file that stores the files required to run the LexActivator C# wrapper as well as the plugin and the product.dat file.
Extract the files into their appropriate directory. -
Auto-accepts are not built into World of Warcraft on their own. This feature you are talking about sounds like an addon issue.
-
-
-
I managed to figure it out.
C# Code:
// Check if Player's reputation earned with a certain faction has reached above ### value wManager.Wow.Helpers.Lua.LuaDoString<bool>(@" for factionIndex = 1, GetNumFactions() do local name, description, standingId, bottomValue, topValue, earnedValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild, factionID = GetFactionInfo(factionIndex) if name == ""FACTION NAME HERE"" and earnedValue > #### then return true end end ");
And inside the Quest Editor Tools (Optional Settings -> Can Conditions:
return (wManager.Wow.Helpers.Lua.LuaDoString<bool>(@"for factionIndex = 1, GetNumFactions() do local name, description, standingId, bottomValue, topValue, earnedValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild, factionID = GetFactionInfo(factionIndex) if name == ""FACTION NAME HERE"" and earnedValue > #### then return true end end"));
-
I tried to search what is, "NpcMarkerId" and what it refers to. I am trying to figure out if a certain quest has become open and available based whether or not that player's reputation is high enough and the quest is available when interacting with the quest giver. I did not want to hijack an old thread so I made this one. Everything is working just fine, BUT it tried to pick up the second and third parts of the quests that are not yet available (because low rep) and will sit there for minutes before continuing.
I even set the Settings: Skip 'PickUp' quest after (sec) to 8 in hopes it would only try to pick it up for a shorter duration before moving on.
Thanks in advance!
-
-
-
I would like to create a simple addon with a basic frame that can be dragged around the screen, and will show strings of text from my plugin.
I am not quite sure how to communicate between the addon and Wrobot's plugin. Thank you in advance!
-
Hah, guess I never thought of it that way. Now I feel dumb. :P
-
I did not know that @Matenia, thanks! And the noise effects are client-side as well I presume?
-
I know I could do it my Fight class, but more importantly, it would be better if ALL those stuns were handled internally without the need of fightclasses.
-
I have been using WRobot for quite some time now. One thing that keeps coming up repeatedly and I don't know if it bothers anyone else or not,
but it would be really great if there was a way to "sleep" the Fightclass thread when the player is incapacitated, stunned, etc.. There is noting
that screams I am using a bot when it spams abilities several times a second and there is no way to actually perform the spells in game because
your player is stunned. If I were more knowledgeable on the internals of WRobot, I would attempt to write a plug-in, but I am not sure if can be done.Thanks for your time!
-
Hey @Droidz thank you again!
-
I may have something here if anyone is interested. It still needs more testing though.
Code:
private void FightEventsOnFightStart(WoWUnit wowUnit, CancelEventArgs cancelable) { try { if (Settings.Backpedal) Var.SetVar("CanBack", true); } catch (Exception ex) { MyFunctions.LogWrite("FightEventsOnFightStart() Exception:" + Environment.NewLine + ex.ToString(), true); } } private async void FightEventsOnFightLoop(WoWUnit wowUnit, CancelEventArgs cancelable) { Random _rand = new Random(); bool _playerAggro = false; bool _playerStuck = false; #region Backpedal if (Settings.Backpedal && // Make sure Include Backpedal is TRUE in Settings (!Player.IsPartyMember || ObjectManager.Me.IsInGroup) && // Let's not backpedal in groups! Var.Exist("CanBack") && // Make sure our Variable exists Var.GetVar<bool>("CanBack") && // Make sure the Variable is TRUE Player.InCombat && // Make sure Player is in combat !Player.IsIndoors && // Skip if Player is indoor !Player.IsCast && // Make sure the Player is NOT casting Target.IsAlive && // Make sure the Target is valid Target.IsTargetingMe && // Make sure the Unit is Targeting the player !wowUnit.IsCast && // We don't want to backpedal from a casting target! MyFunctions.TargetInCooldownLevelRange()) // Target level is > Settings CD lvl { try { // Player.IsFacing(Vector3 targetPosition, [float arcRadians = 0.2]) // Player.IsFacing(u.Position, 1.5f) // 1.5 radians = 85.9 degrees || Arc Length = 37.5yd || Sector Area = 468.75 yd^2 var EnemiesInFrontPlayerNearTarget = ObjectManager.GetWoWUnitHostile().Where(u => u.IsValid && u.IsAlive && !u.InCombat && Player.IsFacing(u.Position, 1.5f) && Player.Target != u.GetBaseAddress && u.Position.DistanceTo(Target.Position) <= Settings.BackpedalScanRadius && (u.Reaction == Reaction.Hated || u.Reaction == Reaction.Hostile || u.Reaction == Reaction.Unfriendly)).OrderBy(o => Player.Position.DistanceTo(o.Position)).ToList(); var EnemiesBehindPlayer = ObjectManager.GetWoWUnitHostile().Where(u => u.IsValid && u.IsAlive && !u.InCombat && !Player.IsFacing(u.Position, 1.5f) && Player.Target != u.GetBaseAddress && u.Position.DistanceTo(Player.Position) <= (Settings.BackpedalScanRadius + (Settings.BackpedalScanRadius / 2)) && (u.Reaction == Reaction.Hated || u.Reaction == Reaction.Hostile || u.Reaction == Reaction.Unfriendly)).OrderBy(o => Player.Position.DistanceTo(o.Position)).ToList(); if (EnemiesInFrontPlayerNearTarget != null && EnemiesInFrontPlayerNearTarget.Count > 0) { foreach (WoWUnit unit in EnemiesInFrontPlayerNearTarget.Take(3)) { MyFunctions.LogDebug("Backpedal -> Enemy (Front): " + unit.Level + "-" + unit.Name + " (Distance: " + System.Math.Round(Player.Position.DistanceTo(unit.Position), 3) + "yd"); } WoWUnit NearestFrontUnit = EnemiesInFrontPlayerNearTarget.FirstOrDefault(); if (EnemiesBehindPlayer != null && EnemiesBehindPlayer.Count < 1) { var timer = new robotManager.Helpful.Timer(_rand.Next(3000, 4000)); var timerCheckDistance = new robotManager.Helpful.Timer(_rand.Next(1500, 2250)); Vector3 PlayerStartPos = Player.Position; int EnemyCountBegin = MyFunctions.HostileUnitsInRange(100.0f); MyFunctions.LogDebug("Backpedal -> Found no enemies behind you. Begin Backpedal"); if (wowUnit != NearestFrontUnit && !_playerAggro) { Move.Backward(Move.MoveAction.DownKey); while (!_playerStuck && (!timer.IsReady || wowUnit.Position.DistanceTo(NearestFrontUnit.Position) <= Settings.BackpedalScanRadius)) { if (Player.GetMove && wowUnit.IsCast) { MyFunctions.LogDebug("Backpedal -> Your target is casting; Stopping movement"); Var.SetVar("CanBack", false); break; } if (MyFunctions.HostileUnitsInRange(100.0f) != EnemyCountBegin) { MyFunctions.LogDebug("Backpedal -> Enemy count changed, you may have aggro'd something; Stopping movement"); Var.SetVar("CanBack", false); break; } if (timerCheckDistance.IsReady && Player.Position.DistanceTo(PlayerStartPos) < 1) just over a 1.5 sec. { MyFunctions.LogDebug("Backpedal -> Player might be stuck; Stopping movement"); _playerStuck = true; Var.SetVar("CanBack", false); break; } if (Player.Position.DistanceTo(NearestFrontUnit.Position) > Settings.BackpedalScanRadius) { MyFunctions.LogDebug("Backpedal -> Distance is greater than " + Settings.BackpedalScanRadius + " yards; Stopping movement"); Var.SetVar("CanBack", false); break; } if (Settings.BackpedalScanRadius > 0 && Player.Position.DistanceTo(PlayerStartPos) > Settings.BackpedalScanRadius) { MyFunctions.LogFight("Backpedal -> Player has moved more than " + Settings.BackpedalScanRadius + " yards; Stopping movement"); Var.SetVar("CanBack", false); break; } if (TraceLine.TraceLineGo(wowUnit.Position)) { MyFunctions.LogFight("Backpedal -> Your target is out of line of sight; Stopping movement"); Var.SetVar("CanBack", false); break; } Thread.Sleep(100); return; } } } else if (EnemiesBehindPlayer != null && EnemiesBehindPlayer.Count > 0) { foreach (WoWUnit unit in EnemiesBehindPlayer) { MyFunctions.LogDebug("Backpedal -> Enemy (Back): " + unit.Level + "-" + unit.Name + " (Distance: " + System.Math.Round(Player.Position.DistanceTo(unit.Position), 3) + "yd"); } MyFunctions.LogDebug("Backpedal -> Skipping movement"); Var.SetVar("CanBack", false); return; } } } catch (Exception ex) { MyFunctions.LogWrite("FightEventsOnFightLoop -> Backpedal Exception:" + Environment.NewLine + ex.ToString(), true); } } }
-
There is no changing it. Your best bet is to contact the creator of the script and talk to him/her about it.
-
Is the fight class a DLL file, .cs file, or is it XML?
-
I would definitely get in touch with the developer and request they remove the Auto Face segment of code.
The bot will force it the entire combat and there will be nothing you can do about it as long as it's coded in. -
Hi, I am having problems understanding IsBehind. I would like to check if there are any mobs behind me. I am trying to add a backpedal feature to my fight class, but I don't think I am getting it correct. Here's what I tried:
var EnemiesBehind = new List<WoWUnit>(); EnemiesBehind.AddRange(ObjectManager.GetWoWUnitHostile().Where( u => u.IsValid && !u.InCombat && u.IsAlive && u.IsBehind(Player.Position, 180.0f) && u.GetDistance <= Settings.BackpedalScanRange).OrderBy( o => ObjectManager.Me.Position.DistanceTo(o.Position))); if (EnemiesBehind != null && EnemiesBehind.Count > 0) { MyFunctions.LogDebug("Enemy, (" + EnemiesBehind.FirstOrDefault().Level + ")" + EnemiesBehind.FirstOrDefault().Name + " found behind you, skipping backpedal!"); Var.SetVar("CanBack", false); return; }
Any help is much appreciated! Thank you!
Image Reference:
Mage dont stop conjouring Water
in Fight Classes assistance
Posted · Edited by Apexx
In Settings -> Advanced Settings -> Other tab, make sure to match your in game latency. This may or may not help. If that doesn't fix it, it sounds like an issue inside the selected Fight Classes.