What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

[Plugin] MapRunner

Status
Not open for further replies.

ExVault

Active Member
Joined
Oct 23, 2013
Messages
748
This is a plugin for doing maps. Please read the following sections to properly understand what it does and how plugin works.

Settings description
General Tab:
d4jLuT3.jpg


Main settings:

Mode: Eternal Laboratory or Hideout. To make plugin work in Hideout you, obviously, should have a Map Device. Please ensure that you have "Vendor - Stash - Map Device" trio as close as possible to make bot's route effective, but do not overlap them! Keep in mind that standard selling task will sell items to the first found master in a given priority: Haku, Vorici, Elreon, Catarina, Vagan, Tora, Zana.
This screenshot demonstrates one of the possible effective placements:
XZ9dMNh.jpg
Upgrade to: plugin will upgrade normal (white) maps to the specified rarity.

Max map level: plugin will not run maps higher than the specified level.

Stash tab for maps: plugin will primarily operate on this stash tab: put newly found maps to it and take maps for running from it. If specified tab does not contain any map, bot will search in all other tabs. If there is no space, bot will put maps to the first available tab.

Run unid maps: should or not plugin run unidentified maps. Please note that plugin does not identify maps by itself, thats an item filter's job.

Come to trials: options for those who wanna manually complete Endgame trials. After map is cleared, if trial entrance was detected, bot will come to it and stop.

Map selling:

Enable this option if you want plugin to sell 3 maps of the same kind.

Max map level: plugin will not sell maps higher than the specified level.

Min map amount: plugin will not sell maps if total map amount in stash tab for maps (excluding unique) is lower than the specified value. Use this option to avoid a rare case when plugin can sell all your maps.

Sell ignored maps: should or not plugin sell ignored maps regardless of their level. Use this option to avoid a common problem with ignored maps pile up a lot.


Aura precast:

Enable this option if you want plugin to apply auras and summon golem before entering a map.

Ignore hidden: should or not plugin apply auras which are not present on the skillbar.


Rare map rerolling:

Enable this option if you want plugin to reroll ignored affixes on rare maps.

Method: what orbs to use for rerolling. Please note that ScourTransmute method is just a downgrade to magic, use this if you set Upgrade to Magic and do not want to spend Alchemy orbs on newly found rare maps.


Chiseling:

Enable this option if you want plugin to apply chisels on normal (white) maps before upgrading them.

Min map level: plugin will not use chisels on maps lower than the specified level.

Quality: minimum map quality to stop the chiseling process.


Vaaling:

Enable this option if you want plugin to apply vaal orbs on map.

Min map level: plugin will not use vaal orbs on maps lower than the specified level.

Max map level: plugin will not use vaal orbs on maps higher than the specified level.


Statistics Tab:
Contains useful statistical information.


Map Ignoring Tab:
GvIyElP.jpg


Ignore by affix: plugin will not run maps with listed affixes.
For affix names look to Path of Exile Wiki. For example: if your want to ignore "Players have Blood Magic" you should add "of Hemomancy" , if you want to ignore "Monsters reflect x% of Elemental Damage" your should add "Mirrored".

Ignore by name: plugin will not run maps with listed names.

Ignore boss room in: plugin will not enter boss room in listed maps.


Mob Avoiding Tab:
1jFBjed.jpg


Plugin will do the specified action when listed unique mob is detected. Use this feature to avoid hard Map Bosses, Beyond Bosses or Rogue Exiles.
Currently Pit and Malformation bosses are internally set to chicken. This is because bot does not recognize new "dynamic" area transition objects as obstacles, thus sticks to them indefinitely. Solution can be made, but is not ready yet.

Chicken: plugin will instantly leave the current map. Logout if there are mobs nearby and portal out otherwise.

Ignore: plugin will simply ignore the mob, without leaving the map. Useful for slow but deadly bosses like Shadow of the Vaal.

How plugin chooses a map
All maps in the "Stash tab for maps" are your initial map pool. After excluding all "inappropriate" ones, plugin sorts all remaining maps by level and rarity, thus choosing the most highlevel and rare map.

What maps plugin will exclude from your initial pool:
- Unique maps.
- Ignored maps (by name).
- Maps with level higher than stated in settings (max map level).
- Unidentified maps, if disabled in settings.
- Maps with ignored affix and:
● map is also mirrored or corrupted.​
● map is rare and rare reroll is disabled in settings.​
● Upgrade is set to Normal.​

What plugin will do after map is chosen:

● Plugin will open "ready to use" maps without any additional actions. Those maps are:
- Mirrored, corrupted or unidentified ones.
- Magic maps with 2 affixes, both of them are not ignored.
- Rare maps without ignored affixes.
- Normal (white) maps if Upgrade is set to Normal.

● If map of choice is normal (white), plugin will upgrade it according to settings:
- Plugin will do chiseling if corresponding option is enabled. If plugin cannot find any chisel in your stash, it will disable chiseling option in settings.
- If Upgrade is set to Rare, plugin will use alchemy orb on map. If plugin cannot find any alchemy orb in your stash, it will set Upgrade to Magic.
- If Upgrade is set to Magic, plugin will use transmutation orb on map. If plugin cannot find any transmutation orb in your stash, it will set Upgrade to Normal.

● Rerolling magic map:
- If magic map has ignored affix, plugin will use alteration orb on it. If plugin cannot find any alteration orb in your stash, it will set Upgrade to Normal.
- If magic map has only 1 affix, plugin will use augmentation orb on it. If plugin cannot find any augmentation orb in your stash, it will set Upgrade to Normal.

● Rerolling rare map:
- If rare reroll option is disabled, plugin will put the map back to stash and choose another one.
- If rare map has ignored affix, plugin will reroll it according to the selected method in settings. If plugin cannot find orbs required for selected reroll method, it will disable Rare map rerolling option in settings.

● Vaaling:
- If corresponding option is enabled in settings and map is within the level range for vaaling, plugin will use vaal orb on it. If plugin cannot find any vaal orb in your stash, it will disable vaaling option in settings.
- After vaal orb was used, plugin will check again if map is appropriate for run (name, level, affixes, non-unique). If one of those checks fails, plugin will put the map back to stash and choose another one. The only exception is when map becomes unidentified, plugin will run it even if corresponding option is disabled, because such map retains all it's original affixes unchanged.

How plugin explores a map
There are 2 tasks in MapRunner used for exploration (to understand what a Task is, please read the BasicGrindBot Guide Design section).

TrackMobTask
This task constantly scans an area around your character saving positions of all found monsters. Then takes the closest position and goes to it. When close enough to a monster, Combat Routine triggers, leading (hopefully) to a monster's death. Dead monster then will be removed from position cache. Due to high monster density in maps, this task usually explores almost all map area by itself.
TrackMobTask plays a vital role in map exploration because it guarantees that every monster you encounter will be killed. Without this task any action that leads to a moving out of combat range (looting items, switching to another target) can leave monster alive. Now imagine a bot that skips rogue exiles, map bosses...
The negative side of this task is that sometimes bot will waste a lot of time going from one side of the map to another only to kill 1 mob. Deal with it!

MapExplorationTask
This task is located after the TrackMobTask in a task queue. It means that MapExplorationTask will trigger only if TrackMobTask is out of monster positions.
This is the standard Exilebuddy exploration task. Without explaining a complicated stuff, basically what it does is: when you enter a new zone it splits all walkable area of that zone into small cells. All cells around your character are automatically marked as visited. Normally task just moves your character to the closest non-visited cell. The ratio between visited and non-visited cells is your explored percent.
In most cases MapExplorationTask triggers when explored percent is already around 90% all thanks to TrackMobTask.

Different map types
There are 3 general map types and exploration differs between them:

● Boss room map. Its a map where boss is located in a remote room. Examples: Cemetery, Museum, Jungle Valley.
On this type of map when explored percent reaches 85% plugin checks if entrance to the boss room was found, if it was - bot enters the room, kills the boss and leaves the map, otherwise explores until its found.

● Multilevel map. Map that has more then 1 level. Examples: Vaal Pyramid, Residence, Overgrown Ruin.
On this type of map when there is nothing left to explore on the current level, bot goes to the next level. If entrance to the next level was not found - bot is on the last level and should leave the map.

● Regular map.
On this type of map when explored percent reaches 85% plugin checks if map boss was killed, if it was - bot leaves the map, otherwise explores until its killed.

Why there is no exploration complete percent option like in the default grind bot?
Short answer - because maps are not regular zones. Its a common thing to set explored percent for regular zones to like 60-75%, and it will be ok, because bot will just keep creating new instances. Regular zones are infinite - maps aren't. If you set 60% exploration for map - you will run out of them in approx 2 hours depending on your initial pool.
Also, fixed explored percent would not be so useful if you take into account an existence of TrackMobTask (remember that it has higher priority then MapExplorationTask?).
And the last thing, I am completely satisfied with the current exploration system, never felt the need in a fixed explored percent and have absolutely no reasons to code it.

Other information
● MapRunner does things only somehow related to maps. All other logic is done by standard Exilebuddy tasks. Please do not report bugs related to fighting (combat routine), looting, chest/strongbox opening, shrine taking, pathfinding (stuck), stashing etc.

● Currently unsupported maps (ignored internally, you do not have to manually add them to ignore list):
- Arena. That map has an unusual multilevel type. Levels can have no transition to the next level, meaning that bot should return to the previous level and try another entrance. That requires too much coding for only one map.
- Colosseum. Highlevel map (82), I saw it only on youtube and it looks like a regular multilevel type. I need to test it in game, but 82 maps are so rare that I really doubt anyone will miss it.
- Core. Harvest-like map, nuff said. You have to kill 3 minibosses to access the final one. Additional coding required. Also hardest map in the game.

Thanks:
- Thanks to 54sgdg4d6s for testing beta version of the plugin.
- Thanks to MrUnreal for testing/helping me.
- Thanks to cyberbot for supporting/helping me.
- Thanks to zamup for supplying me with high level maps.
- Thanks to clandestine for giving me the Awakening beta key.

Version history:
1.0 - initial release.
1.1 - added "upgrade level" functionality.
1.2 - changed exploration to one from OverwordAreaTweaks plugin. Possible fix to plugin loading after bot crash.
1.3 - added area transition functionality.
1.3.1 - removed corrupted normal maps from upgrade pool (thanks to powerpc for pointing that out). Increased area transition scan frequency.
1.3.2 - improved area transition logic.
1.3.3 - now bot can properly take transitions in Necropolis, Shrine, and Crematorium maps. Improved TrackMobTask.
1.4 - added Hideout support. Added ability to use chisels and vaal orbs. Further improved TrackMobTask. Fixed exploration issue in Jungle Valley bossroom. Fixed issue with area transitions in Labyrinth and Dry Peninsula maps. Fixed upgrade level issue, now bot will not try to place map in a full inventory (rare case when you have a lot of maps for upgrade). Improved FastMove (CTRL+Click), now its considerably faster. Now bot will not stop if run out of required orbs, instead it will switch to lower rarity.
1.4.1 Now bot does not stuck near invisible mobs. Fixed rare issue when bot leaves map without picking up all items. Inventory free space percent increased to 35 to avoid rare loot item issue.
1.5 Changes.
1.5.1 Fixed issue with bot going to town after death in Eternal Lab mode.
1.5.2 Fixed issue with bot not opening unidentified corrupted maps after vaaling.
1.5.3 Fixed rare map taking bug.
1.5.4 Changes.
1.5.5 Fixed infinite chisel searching bug.
1.5.6 Bloodlines tweaks.
1.6(unfinsihed) Just updates for 2.0.
1.6a(unfinsihed) Laboratory mode fix.
1.6 Changes.
1.6.1 Remaining check replaced with map boss killed check. Fixed bug with rare reroll. Added old map portals despawning wait. Added unique monster stats logging.
1.6.2 Added aurified curses support for aura precast.
1.6.3 Post Ascendancy bot compatible version. No currency stash tab support.
1.6.4 Fixes after api breaks. Added attempts to Map device logic.
1.6.5 Bossroom/multilevel exploration fix.
1.6.6 Fail to find path to area transition fixed.
1.6.7 Fixed a bug when endgame trial entrance was treated as boss room entrance. Added option to come to endgame trials, for those who wanna complete them manually.
1.6.8 Changes.
1.6.9 Fixed TrackMobTask sticking to Essence monsters.
1.6.10 Update for 2.5.0.
 
Last edited:
Thanks for the work.

Can you please set up a channel so that you can take donations from me/us?
 
Please think of a way. I know it is a huge time sink, and I hope some of us can keep you motivated.
 
I MOFOGGIN LOVE YOU <3333333333333333333333333333333333333333333333333333333333333333333333333333333 DONATION INCOMING
Jkqkf.jpg
 
i get this error when i try to add the plugin

[Load] An exception occurred: System.Exception: Process must have frozen or gotten out of sync: InjectionFinishedEvent_was_never_fired
at GreyMagic.Executor.WaitForInjection(Int32 timeout)
at GreyMagic.Executor.Execute(Int32 timeout)
at GreyMagic.Executor.GrabFrame()
at GreyMagic.ExternalProcessMemory.AcquireFrame(Boolean isHardLock)
at Loki.Game.LokiPoe.AcquireFrame(UInt32 frameDropWaitTimeMs, Int32 executionTimeOut, Boolean clearCache)
at Loki.Bot.BotManager.Load().
 
i get this error when i try to add the plugin

[Load] An exception occurred: System.Exception: Process must have frozen or gotten out of sync: InjectionFinishedEvent_was_never_fired
at GreyMagic.Executor.WaitForInjection(Int32 timeout)
at GreyMagic.Executor.Execute(Int32 timeout)
at GreyMagic.Executor.GrabFrame()
at GreyMagic.ExternalProcessMemory.AcquireFrame(Boolean isHardLock)
at Loki.Game.LokiPoe.AcquireFrame(UInt32 frameDropWaitTimeMs, Int32 executionTimeOut, Boolean clearCache)
at Loki.Bot.BotManager.Load().
This is a general bot error and it has nothing to do with my plugin.
 
Hm, weird, i get that error with the plugin but no error without the plugin. I tried a fresh install of the bot as well.
 
Hm, weird, i get that error with the plugin but no error without the plugin. I tried a fresh install of the bot as well.

Make sure your client is not minimized when you attach Exilebuddy, or anytime afterwards. That exception simply means that Exilebuddy was unable to execute code in the client, because it is not rendering.
 
Make sure your client is not minimized when you attach Exilebuddy, or anytime afterwards. That exception simply means that Exilebuddy was unable to execute code in the client, because it is not rendering.


Thanks for the help i get a new error this time

Code:
[OnStartup] A top-level exception has been caught.System.IO.FileNotFoundException: Could not load file or assembly 'MapRunner, Culture=neutral' or one of its dependencies. The system cannot find the file specified.
File name: 'MapRunner, Culture=neutral'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
   at System.Windows.Navigation.BaseUriHelper.GetLoadedAssembly(String assemblyName, String assemblyVersion, String assemblyKey)
   at MS.Internal.AppModel.ResourceContainer.GetResourceManagerWrapper(Uri uri, String& partName, Boolean& isContentFile)
   at MS.Internal.AppModel.ResourceContainer.GetPartCore(Uri uri)
   at System.IO.Packaging.Package.GetPartHelper(Uri partUri)
   at System.IO.Packaging.Package.GetPart(Uri partUri)
   at System.Windows.Application.GetResourceOrContentPart(Uri uri)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at MapRunner.MapRunnerGui.InitializeComponent() in c:\Users\Nue\Desktop\ExilebuddyBETA 0.1.2740.914\ebuddy\MapRunnerGui.xaml:line 1
   at MapRunner.MapRunnerGui..ctor() in c:\Users\Nue\Desktop\ExilebuddyBETA 0.1.2740.914\ebuddy\Plugins\MapRunner1.0\MapRunnerGui.xaml.cs:line 13
   at MapRunner.MapRunner.get_Control() in c:\Users\Nue\Desktop\ExilebuddyBETA 0.1.2740.914\ebuddy\Plugins\MapRunner1.0\MapRunner.cs:line 158
   at BotGui.Windows.MainWindow.HandleInterfaces(Object obj)
   at BotGui.Windows.MainWindow.<OnStartup>b__14()
   at System.Windows.Threading.DispatcherOperation.InvokeDelegateCore()
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback)
   at BotGui.Windows.MainWindow.<OnStartup>b__5(Object o)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
 
When you use provided bots, plugins, or routines, the names of the folders you put them in typically matters.

Create a folder called MapRunner in your Plugins folder and extract the files there.
 
When you use provided bots, plugins, or routines, the names of the folders you put them in typically matters.

Create a folder called MapRunner in your Plugins folder and extract the files there.

Cool, no errors now. It automatically extracted to a folder called "MapRunner1.0" so i figured that was fine. Changed it to "MapRunner" and no issue!
 
thxs for map runner !great job.
some improve .:1./remaining after cleaning all loot.not just return back from town.(when ur full ,go back town ,and come back ,cos 0 monster ,you will return back again.)
2.if u stop bot and return back .bot will never check /remaining again .even only 0 monster remaing.(please check when finished whole map)

thx alot
 
Hey exvault, so far your plugin has been great. Thanks for your work on this, I'll donate to you if theres a way to :)

One question, do you have a solution for the bot not picking up maps? I know its not an issue with your plugin, as the bot itself misses a lot of items, but do you have a solution for this by chance?
 
The bot shouldn't be missing any items if they are configured correctly in your item filter. The looting task was changed in the previous update to not give up so soon after changes were made in 1.2.4 that seemed to affect looting.

If you're having any bot issues, please post a thread in the Support forum and attach a full log so it can be looked into.
 
Hey exvault, so far your plugin has been great. Thanks for your work on this, I'll donate to you if theres a way to :)
One question, do you have a solution for the bot not picking up maps? I know its not an issue with your plugin, as the bot itself misses a lot of items, but do you have a solution for this by chance?
This is default loot item task problem. It's range is low. If you are playing melee its fine, but for ranged character bot skips a lot of items.

The bot shouldn't be missing any items if they are configured correctly in your item filter. The looting task was changed in the previous update to not give up so soon after changes were made in 1.2.4 that seemed to affect looting.
If you're having any bot issues, please post a thread in the Support forum and attach a full log so it can be looked into.
Its not that highlight problem. We need "loot range" option in settings.
 
Status
Not open for further replies.
Back
Top