Matenia 628 Posted December 2, 2017 Share Posted December 2, 2017 (edited) Hey @Droidz, currently in older expansions like vanilla/tbc/wrath the bot is lacking a few very important features that are probably not too hard for you to implement. I could try fixing all of these through my plugin, but it's hard to do, because a lot of bot behavior is unpredictable I don't know the inner workings of your code, so for a lot I have to do guess work. So here are some suggestions that early expansions really need: regen takes priority BEFORE "Attack before being attacked", currently especially after rezzing the bot will keep attacking new targets after combat because they are in 20 yards, even if they wouldn't attack you (it's better to rely on IsAttacked state during regen) smart rezz (and small bug fix), try to REALLY find a save spot to rezz, but more importantly recognize when you can't rezz and move a bit closer to the corpse, some servers don't calculate distance 100% the same as the client and won't accept rezz if you aren't a bit closer. I use code to solve this1 smart target/pulls - before pulling check if any units are near by the pulled unit (20 yards + number from general settings), then ALSO check every Vector3 2 yards between you and your target move around if the above conditions aren't met for any targets (find a line between you and target with no mobs between) (slightly improved AvoidIt plugin) If Conditions.ForceIgnoreIsAttacked is set, do NOT try to enter regen mode while you are still being attacked - keep running to the next waypoint or try to drop combat A way to avoid certain zones when doing long-travel (this is enough if we can add it through API) - for example if we are level 25, avoid Burning Steppes zone in all paths, but you can give an alternative "Task" or "Action" (where it would then take the tram, executing your own C# code, for example) ??? (reserved for more things) Spoiler 1. public static void FindCorpse() { if(Lua.LuaDoString<bool>("return StaticPopup1 and StaticPopup1:IsVisible() and StaticPopup1Button1:IsEnabled();") && ObjectManager.Me.IsDead && ObjectManager.Me.HaveBuff("Ghost")){ if (ObjectManager.Me.PositionCorpse != null) { Logging.WriteDebug("Found corpse, but haven't rezzed yet - moving closer!"); MovementManager.Go(new List<Vector3>{ ObjectManager.Me.PositionCorpse }); Thread.Sleep(500); MovementManager.StopMove(); /*MovementManager.Face(ObjectManager.Me.PositionCorpse); Move.Forward(timeMs: 2000);*/ } } } 2. Edited December 2, 2017 by Matenia Marsbar, Lbniese, eeny and 1 other 4 Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/ Share on other sites More sharing options...
Edgewood411 6 Posted December 2, 2017 Share Posted December 2, 2017 Please please please. For the love of god :) these are changes that could truly make this bot amazing. The problems listed here are currently what make this bot AFKable. Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/#findComment-36076 Share on other sites More sharing options...
miminio 11 Posted December 4, 2017 Share Posted December 4, 2017 Yes pls Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/#findComment-36157 Share on other sites More sharing options...
Matenia 628 Posted December 4, 2017 Author Share Posted December 4, 2017 Please don't quote the OP. Remove your quotes, leave your comments. It spams the thread. Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/#findComment-36158 Share on other sites More sharing options...
Droidz 2738 Posted December 4, 2017 Share Posted December 4, 2017 Hello, Quote regen takes priority BEFORE "Attack before being attacked", currently especially after rezzing the bot will keep attacking new targets after combat because they are in 20 yards, even if they wouldn't attack you (it's better to rely on IsAttacked state during regen) I added condition to check "attack before being attacked" only when player move (this will resolve this problem, after combat your character don't move). Quote smart rezz (and small bug fix), try to REALLY find a save spot to rezz, but more importantly recognize when you can't rezz and move a bit closer to the corpse, some servers don't calculate distance 100% the same as the client and won't accept rezz if you aren't a bit closer. I use code to solve this You get this problem only in vanilla? I'll add option (but I ignore when): https://wrobot.eu/forums/topic/7047-resurrecting-bugged-elysium/ Quote smart target/pulls - before pulling check if any units are near by the pulled unit (20 yards + number from general settings), then ALSO check every Vector3 2 yards between you and your target & Quote move around if the above conditions aren't met for any targets (find a line between you and target with no mobs between) (slightly improved AvoidIt plugin) Sincerely, it is hard to implement this (and "avoidit" add a lot of bugs). I keep note, I'll make some test but I ignore when and if I'll add this feature. Quote If Conditions.ForceIgnoreIsAttacked is set, do NOT try to enter regen mode while you are still being attacked - keep running to the next waypoint or try to drop combat Wait next update, WRobot will skip regen step if "ForceIgnore..." is enabled. Quote A way to avoid certain zones when doing long-travel (this is enough if we can add it through API) - for example if we are level 25, avoid Burning Steppes zone in all paths, but you can give an alternative "Task" or "Action" (where it would then take the tram, executing your own C# code, for example) I cannot add this, this depend mainly on your server (although servers usually use the same database). Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/#findComment-36179 Share on other sites More sharing options...
Matenia 628 Posted December 4, 2017 Author Share Posted December 4, 2017 (edited) Quote I added condition to check "attack before being attacked" only when player move (this will resolve this problem, after combat your character don't move). Thanks, that's great! Quote You get this problem only in vanilla? I'll add option (but I ignore when): https://wrobot.eu/forums/topic/7047-resurrecting-bugged-elysium/ Yep, it's a bug on all (?) vanilla servers currently. WoWClient calculuates distance from center to center. Servers calculate distance from hitbox border (I think). Some older servers don't have this implemented correctly. Quote Sincerely, it is hard to implement this (and "avoidit" add a lot of bugs). I keep note, I'll make some test but I ignore when and if I'll add this feature. I noticed it's very hard when I started with my plugin code to run away from combat (you have to avoid LoS, do pathing, avoid enemies and all while calculating alonger and longer path on an extra thread). Trying is better than nothing. Here is how HB had it implemented. It's not using a very optimized algorithm (if meshes are server side, maybe this is too much). Maybe you can take some inspiration from it. I think at least not pulling if there are mobs in a radius of x (20?) yards between you and a straight line to your target as in my graphic, would be simple to implement - without running around and finding a better pull position. If you need to brainstorm, feel free to join us on Discord. Quote Wait next update, WRobot will skip regen step if "ForceIgnore..." is enabled. It is okay to regen - but only if (Lua) UnitAffectingCombat is false. The problem is sometimes the bot will stand still while getting hit (due to ignore). Just to clarify :) Quote I cannot add this, this depend mainly on your server (although servers usually use the same database). I understand this depends on level/server/expansion/etc. But for vanilla-wotlk this barely changes. If you manage to add some API where I can interrupt pathing (or add C# Action class to it) I will make this work personally. All it needs is a solid way to recognize: - which zones does this path go through (maybe even through checking if 2 zones (list of outermost vectors) overlap - if range to vector x < 5 => execute Action => find new path Then it is only grunt work. I will keep a list of zones and levels, check if it smart to go through a zone. If not smart, add custom action to pathfinder. Intercept pathing event, check if path goes through "illegal" zone, path to safe spot, execute custom code at safe spot, you are at a different spot now, tell wRobot to do its regular pathing. For example, if an Alliance character wants to go from Stormwind to Ironforge, it will go through Burning Steppes => custom action follows path and makes it take tram, leave through portal => find new path now. Edited December 5, 2017 by Matenia Link to comment https://wrobot.eu/forums/topic/7895-feature-requesthelp-smart-targetingpulls/#findComment-36180 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now