Jump to content

jrouten

Members
  • Posts

    28
  • Joined

  • Last visited

Everything posted by jrouten

  1. // Continent (item1), DefaultPosition (item2), DefaultPositionSearchRange (item3), NewPosition (item4) var positionChange = new List<Tuple<ContinentId, Vector3, float, Vector3>> { new Tuple<ContinentId, Vector3, float, Vector3>(ContinentId.Kalimdor, new Vector3(1422.318, -4662.921, 35.46182), 0.5f, new Vector3(1422.063, -4665.421, 35.46295)), /// new Tuple<ContinentId... }; wManager.Events.MovementEvents.OnMovementPulse += delegate(List<Vector3> points, CancelEventArgs cancelable) { var continent = (ContinentId) Usefuls.ContinentId; foreach (var p in points) { foreach (var pchange in positionChange) { if (p != null && pchange.Item1 == continent && p.DistanceTo(pchange.Item2) <= pchange.Item3) { Logging.WriteDebug("Change path position of " + p + " to " + pchange.Item4); p.X = pchange.Item4.X; p.Y = pchange.Item4.Y; p.Z = pchange.Item4.Z; p.Type = pchange.Item4.Type; p.Action = pchange.Item4.Action; } } } }; If you look at Droidz' code, this code constantly scans the current nav path, and looks for any point that is within 0.5 meters of (1422.318, -4662.921, 35.46182) and replaces it with (1422.063, -4665.421, 35.46295) Basically, you have to know where these points are beforehand, and manually add each one to positionChange.
  2. So you need to handle these on a case-by-case basis. If you see a point that is inside a tree, and your profile ends up repeatedly using this point, you'll need to add code like Droidz linked that when it sees this point on the nav path, it replaces it with a better point that is outside the tree. I don't believe there is a way to know a point is inside an object, but if you know about specific troublesome waypoints, you can look for that waypoint and replace it every time you see it. Hope that makes sense, it's kind of hard to explain.
  3. What I was trying to illustrate is that the "bad" spot is not inside the wall. It is the point in the doorway. It "becomes" a bad spot when the pather decides it's "close enough" to the doorway waypoint, and cuts the corner.
  4. If your "PC's connection" is ethernet, and you also have a WiFi adapter, this is doable. If you use VMWare or some similar program to run virtual machines, you can run WoW inside a virtual machine. You can then give this virtual machine ONLY the WiFi network adapter, and it will use WiFi to your phone. If you only have WiFi for your internet connection on the PC, there are some things you can do, but it gets complicated. I'll research that answer a bit (for low cost solution) and check back ;)
  5. The problem seems to be that once the bot is within a certain distance of the current waypoint it's navigating towards (for example once inside 2 meters) it moves on to the next waypoint. The main reason for this is that the closer it gets to the point it is running towards, the more erratic it looks, trying to get "exactly" to the waypoint. The result of this, especially if the path is coming from the left or right of the doorway (not directly straight-in from the front), is that once it gets close to the doorway, it turns towards the next waypoint (inside the building) and runs into the doorframe or wall next to the doorway. The best way to make the bot navigate better through doorways is to somehow add a waypoint that is a few meters directly in front of the doorway, and navigate to that point before turning towards the door. In the attached image, figure 1 shows the current path behavior. When the path approaches the waypoint in the doorway, once it gets within X meters of the waypoint (the blue circle shows this range), it turns towards the next waypoint and tries to follow the orange dashed line. Figure 2 shows what happens if you add a waypoint directly in front of the doorway.
  6. I'm going to go out on a limb and assume that you are unaware that a good VPN service only runs about $3/month. If you're intent on using mobile internet (which has gotta be way more expensive), you would need to use a WiFi hotspot from your mobile device, and just connect your laptop/pc to your phone this way.
  7. Turns out the solution wasn't as simple as that. When I reset the settings file, there was no fight class selected, and it turns out something in my fight class was causing the casting to be interrupted.
  8. I had this problem on one of my characters, but not the others. I renamed my settings file "General-Playername.Servername.xml" to "General-bak-Playername.Servername.xml" and relaunched the bot. This created a new clean settings file, and now fishing works perfectly.
  9. Well ... By process of elimination, I found the culprit. ObjectManager.Me.InCombat If I check (get) that value, the bot turns off Auto Attack. @Droidz Looks like a bug, unless you don't intend for us to use that property any more.
  10. I also just noticed that if I stand outside melee range, the only ability in range is "Heroic Throw", and it will stand there and do that forever, and will not turn off auto attack. but as soon as I move into melee range, it turns off auto-attack. Again, this is only for mobs that are not targeting me (they are attacking someone else, not in my party). If the mob is attacking me, or someone in my party, auto attack stays on.
  11. @Droidz As I said in my original post, I have disabled all plugins in game. If I create a new fight class using the fight class creator, and add only one ability, it does not turn off attack. If I use my own custom fight class (c#), it turns off attack. My question is - how does a fight class cause the bot to turn off auto attack?
  12. I've fought with this, and tried seemingly everything, but I can't solve this problem. When I'm fighting a mob, or a group of mobs, and I am not getting hit (nothing is targeting me), the BOT will just turn off Auto Attack after a few seconds, and stop casting detrimental spells. My character is still in combat (the combat flag is on my player frame). It was suggested that it might be caused by an addon, so I disabled all addons in game, but the issue is still there. Is there something that I might be doing in my Fight Class that could cause the bot to turn off auto attack? Is there a setting somewhere that I might have missed that could cause the bot to turn off auto attack? I play on Retail. I am using Rotation only, no plugins, and my own custom C# fight class.
  13. @Droidz That doesn't help me, since we have no way of knowing when Auto Attack swing happens. If we know when Auto Attack swing happens, we could just set a timer. I know there are Interface Addons that track swing timer, so the event must be in the game client, and I was hoping you exposed it somewhere/somehow.
  14. For your "Target Buff" condition, try changing Need to True. Also, it's better practice to use "Buff Casted By Me" instead of "Target Buff", in case another priest has cast SWP on the target.
  15. For Live (7.2.0.24105), here is what I had to do to set MouseOverGUID: uint s_MouseOverGUID = 0x00F3EDC0; Memory.WowMemory.Memory.WriteInt128((uint)Memory.WowMemory.Memory.MainModuleAddress + s_MouseOverGUID, target.Guid); Note that when I added this code to my fight class, the game consistently crashes after a few minutes of combat. As I understand it, the equivalent code on WotLK also consistently crashes the game after a few minutes of combat.
  16. @Droidz Can you comment on my question though? Since this is an 16-byte Guid now on Live, is WriteInt128() the correct method to use for this? And are you aware of any other place or resource I can use to get tested offsets for 24015? PM me if you'd rather not reply publicly, or let me know if you'd rather I not be doing this...
  17. @Droidz Should I be using the WriteInt128() method for writing a GUID with the Live client? I've tested trying to read several of the offsets at http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/619264-wow-7-2-0-24015-offsets-post3731214.html#post3731214 and none of them seem to be returning what I expect (most are returning 0).
  18. I tried using WriteUInt64, but it generates an error since Target.Guid is an Int128. I was also nervous about using any of the known memory tools with Live, so was hoping to figure this out without having to poke/search. If all else fails, I guess I can create a new account and run it in a VM with proxy
  19. So, I've tried using this MouseOver cast on Live, and I am not having any luck. I tried @Droidz method above, like this uint s_MouseOverGUID = 0x00F3EDC0; Memory.WowMemory.Memory.WriteInt128(s_MouseOverGUID, target.Guid); SpellManager.CastSpellByNameOn(spell.Name, "mouseover"); This gives me You Have No Target in game unless I actually move the mouse over a target, and it will cast on that target even if the target I'm trying to override mouse-over for is a different target. I got the offset from here: http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/619264-wow-7-2-0-24015-offsets-post3731214.html#post3731214 I tried the LUA method like this: uint s_MouseOverGUID = 0x00F3EDC0; Memory.WowMemory.Memory.WriteInt128(s_MouseOverGUID, target.Guid); Lua.LuaDoString(string.Format("CastSpellByID(\"{0}\", \"mouseover\")", spell.Id.ToString())); And get the same thing. Suggestions?
  20. So I tested this using LUA, and it seems that only spells that actually list a range on their tooltip will work with IsInSpellRange(). Here's the code I tested: var lua = new[] { "inRange = 0", "local unit = \"target\"", "if UnitExists(unit) and UnitIsVisible(unit) then", string.Format(" inRange = IsSpellInRange(\"{0}\", unit)", spell.Name), " if inRange == nil then", " inRange = 2", " end", "end", }; var returnedValue = Lua.LuaDoString<int>(lua, "inRange"); Any spell without a range listed on the tooltip returns 2 (nil) from this snippet. For example, Revenge does not list a range, but it's description states that it will "deal damage to all enemies in front of you", and through testing has an effective range of 8m (plus the target's CombatReach). Similarly, the spell Shockwave (a talent) does not list a range on the tooltip, but the description says "Sends a wave of force in a frontal cone, causing 25,052 damage and stunning all enemies within 10 yards for 3 sec." It also returns a 2 (nil). And AoE spells like Demoralizing Shout and Thunder Clap list their effective range in the spell's description, but does not list an explicit range in the tooltip, and return 2 (nil) when calling IsSpellInRange().
  21. IsSpellInRange is only available via LUA?
  22. Actually, I believe I might have figured this out... If I add together my player's CombatReach and the Target's CombatReach, that seems to make up the difference. So to get the minimum distance I must be from the target: Spell.MinRange + Me.CombatReach + Target.CombatReach Of course, if MinRange is 0, we don't need to consider CombatReach, and can ignore it. And likewise, the maximum distance to target would be: Spell.MaxRange + Me.CombatReach + Target.CombatReach This can make a significant difference on very large mobs, when trying to calculate whether a spell can be cast. For you C# folks, here's a good function to check if a spell is in range to cast: public static bool isSpellInRange(Spell spell) { float minRange = spell.MinRange == 0 ? 0 : spell.MinRange + ObjectManager.Me.CombatReach + ObjectManager.Target.CombatReach; float maxRange = spell.MaxRange + ObjectManager.Me.CombatReach + ObjectManager.Target.CombatReach; return (minRange <= ObjectManager.Target.GetDistance) && (ObjectManager.Target.GetDistance <= maxRange); }
  23. I'm building a protection warrior fight class, and am having some issues with some of the spells and effective range to target. Heroic Throw: range must be greater than 8 but less than 30 Here is the scenario I set up: I positioned my character in game at the precise minimum range where I can cast Heroic Throw. I know this because if I move forward even a tiny distance, the Heroic Throw icon greys out. I then do a memory info dump, and get these values for my Target: InteractDistance = 9.3 CombatReach = 6.6 GetDistance = 16.10403 GetDistance2D = 16.0859 GetDistanceZ = 0.7640839 None of these distances is giving me what I'm looking for. From the perspective of being able to cast a spell, I should be at or very slightly above 8 meters. Even if I subtract CombatReach, that still leaves a distance of 9.9, which is still not accurate. Same for InteractDistance, which if subtracted leaves a distance of 6.9. How do I get a real range value that tells me "spell casting range" or whatever?
×
×
  • Create New...