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.
Would it be possible to add Affixes i want? such as inc rarity mobs, inc magic monsters, inc pack size and the bot will reroll blue maps til it hits that?
Maybe later. I see no reason in it. You will spend more alterations for rerolling than profit you get from extra pack size and rarity.
 
Adding parameter "if no maps found - nowhere - run basicgrindbot instead" -or similiar would be a cheerful thing to see in such an excellent plugin, and "when map found - activate maprunner" ofcourse.

Also it would be pleasent to see bot trying some daily quests as there isn't any application implemented to the bot yet. "Maprunner-basicgrindbot- and a new daily-quest-plugin" combination would certainly raise points on this project! :cool:
 
Last edited:
I'm dropping by just to say thanks again for this amazing plugin. Seeing how you've implemented the logic in how to roll maps makes me thinking that it would be awesome to have something similar for strongboxes.

Each strongbox type with a set of "acceptable" affixes and "banned" affixes, when we had a roll that had at least one acceptable affix and no banned affixes it was good to go.

I had a list made for whenever there was such thing or when I had the knowledge to do it myself.

http://i.imgur.com/h4qZOXY.png

Until the bot/cr/plugin was able to run away from Ice Nova strongboxes, easiest way should be Smoke Mine, most likely everyone has to ban them.

Jeweller Strongboxes should be Corrupted in order to get some sweet items aswell.
 
Last edited:
Would it be possible to make the bot complete the map before it returns and sells items? :)
 
lost a character due to a voidspawn in a map - i cant figure out why my code isnt working inside maprunner plugin, he just tries to ignore the scary monster but doesnt tp outside+remake.

not sure if Voidspawn is correct since i havent found one to be able to check the object explorer, but MonsterBloodlinesBeaconOnDeath is correct AND working outside of the Maprunner Plugin(also Animated Guardian skip works), the attached log below shows a beaconondeath mob - he just ignored it and kept going which isnt really ideal and what he is supposed to do.

Code:
				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")) ||
                m.ImplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")))
				{
					 // Tell the  bot we should not return to this instance.
                    AreaStateCache.SetNewInstanceOverride(LokiPoe.CurrentWorldArea.Id, true);

                    // Tell the bot we want to do a town run, and to not return via the portal we're about to make.
                    Loki.Bot.Logic.Bots.BasicGrindBot.BasicGrindBotSettings.Instance.NeedsTownRun = 2;

                    // Just blacklist the scary mob so we cna log it.
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), string.Format("Scary monster: {0}", m.Name));

                    // Return false, so we don't include it in targeting.
                    return false;
				}
				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesBeaconOnDeath")) ||
                m.ImplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesBeaconOnDeath")))
				{
					 // Tell the  bot we should not return to this instance.
                    AreaStateCache.SetNewInstanceOverride(LokiPoe.CurrentWorldArea.Id, true);

                    // Tell the bot we want to do a town run, and to not return via the portal we're about to make.
                    Loki.Bot.Logic.Bots.BasicGrindBot.BasicGrindBotSettings.Instance.NeedsTownRun = 2;

                    // Just blacklist the scary mob so we cna log it.
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), string.Format("Scary monster: {0}", m.Name));

                    // Return false, so we don't include it in targeting.
                    return false;
				}
				
				if (m.Name == "Animated Guardian" || 
					 m.Name == "Kuduku" || 
					 m.Name == "Congealing Mud" || 
					 m.Name == "Congealed Blood" || 
					 m.Name == "Kuduku, the False God5" || 
					 m.Name == "Kuduku, the False God6")
                {// Tell the  bot we should not return to this instance.
                    AreaStateCache.SetNewInstanceOverride(LokiPoe.CurrentWorldArea.Id, true);

                    // Tell the bot we want to do a town run, and to not return via the portal we're about to make.
                    Loki.Bot.Logic.Bots.BasicGrindBot.BasicGrindBotSettings.Instance.NeedsTownRun = 2;

                    // Just blacklist the scary mob so we cna log it.
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), string.Format("Scary monster: {0}", m.Name));

                    // Return false, so we don't include it in targeting.
                    return false;
                }


this is the appropriate logfile, maybe someone can see why its not working here
Code:
2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin Chicken is enabled.
2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin GemLeveler is enabled.
2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin MapRunner is enabled.
2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] The plugin Scheduler is enabled.
2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] The plugin StuckDetection is enabled.
2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] PlayerMover.Instance: Loki.Bot.v3.DefaultPlayerMover.
2014-12-27 06:48:26,218 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
2014-12-27 06:48:26,221 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 15365 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
2014-12-27 06:48:26,255 [29] INFO  Logger (null) - [IdTask] We cannot id items out of town/hideout. Skipping this task until an area change or restart.
2014-12-27 06:48:26,256 [29] INFO  Logger (null) - [WithdrawTask] We cannot withdraw items out of town/hideout. Skipping this task until an area change or restart.
2014-12-27 06:48:26,269 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
2014-12-27 06:48:26,269 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 14221 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
2014-12-27 06:48:26,271 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 694 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
2014-12-27 06:48:26,270 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
2014-12-27 06:48:26,770 [29] DEBUG Logger (null) - [ResetAnchorPoint] Setting AnchorPoint to {1914, 1183} for 1904110366.
2014-12-27 06:48:26,770 [29] DEBUG Logger (null) - [ResetAnchorPoint] Setting CurrentAnchorPoint to {1914, 1183} for 1904110366.
2014-12-27 06:48:26,775 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
2014-12-27 06:48:26,775 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 26644 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Sparking Mage
2014-12-27 06:48:27,848 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
2014-12-27 06:48:27,849 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2022, 1205} distance: 87
2014-12-27 06:48:28,910 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
2014-12-27 06:48:28,910 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2022, 1205} distance: 43
2014-12-27 06:48:30,016 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
2014-12-27 06:48:30,016 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2038, 1220} distance: 16
2014-12-27 06:48:30,263 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 1/50 attempt to kill it.
2014-12-27 06:48:30,498 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 2/50 attempt to kill it.
2014-12-27 06:48:30,728 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 3/50 attempt to kill it.
2014-12-27 06:48:30,955 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 4/50 attempt to kill it.
2014-12-27 06:48:31,177 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 5/50 attempt to kill it.
2014-12-27 06:48:31,972 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 6/50 attempt to kill it.
2014-12-27 06:48:32,207 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 7/50 attempt to kill it.
2014-12-27 06:48:32,458 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 8/50 attempt to kill it.
2014-12-27 06:48:32,698 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 9/50 attempt to kill it.
2014-12-27 06:48:32,934 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 10/50 attempt to kill it.
2014-12-27 06:48:33,158 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 11/50 attempt to kill it.
2014-12-27 06:48:33,164 [1] INFO  Logger (null) - [Stop] Now requesting the BotThread to stop.
 
tozededao
Thanks for kind words.
Yea, making strongbox plugin is not so hard. Maybe Ill do that in future.
I usually make tanky melee builds that can handle pretty much anything except Megaera and Palace Dominus. So, I do not really feel the need in such plugin.

Simia
Townrun triggers based on free space percent in your inventory. It will be changed in next version.

cayman123
MapRunner does not utilize "BasicGrindBotSettings.Instance.NeedsTownRun" and "AreaStateCache.SetNewInstanceOverride".
It will come to the map again and again until no portals left.

To change that you have to set MapRunner.IsOnMapRun to false.
The proper place for that is TrackMobsTask.cs
line 119:
Code:
foreach (var mob in mobs)
            {
                //detect your mob
                if (mob.ExplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")) ||
                mob.ImplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")))
                {
                        //tell the plugin that map run is finished
                        MapRunner.IsOnMapRun = false;
                        //chicken to char selection screen
                        Coroutines.LogoutToCharacterSelection()
                        return;
                 }

                if (AllMobs.ContainsKey(mob.Id) || ProcessedMobs.Contains(mob.Id)) continue;
                AllMobs.Add(mob.Id, mob.Position);
                ProcessedMobs.Add(mob.Id);
            }
If you are blacklisting that mob in CR, this code will not work sometimes, because as you can see TrackMobsTask scans only non-blacklisted mobs.
 
Last edited:
So would it not be possible for me to make the bot check remaining while it is still in the instance? Sorry if I am asking too many questions just trying to learn this fast.
I'm sure I am not the only one who has a surplus of 68-69 maps for the bot to run, the time the bot would save if it didn't have hunt 1-2 mobs for 1-2mins. I am aware of remaining check on town run but it doesn't seem to be enough.
 
So would it not be possible for me to make the bot check remaining while it is still in the instance? Sorry if I am asking too many questions just trying to learn this fast.
I'm sure I am not the only one who has a surplus of 68-69 maps for the bot to run, the time the bot would save if it didn't have hunt 1-2 mobs for 1-2mins. I am aware of remaining check on town run but it doesn't seem to be enough.
Hi Doxon,
From my Experience, try to learn things so you will know them, learning them fast usually isn't always the best solution.
That being said, glad to see you are trying to learn, and keep up the curiosity and motivation.
 
So would it not be possible for me to make the bot check remaining while it is still in the instance?
You can add timer to the RemainingCheckTask so it will execute in certain time intervals, rather than only after town run. It actually requires 3 additional lines of code.
Code:
public class RemainingCheckTask : ITask
    {
        private static readonly ILog Log = Logger.GetLoggerInstanceForType();
        private bool _enabled = true;
        internal static bool Required;

       [B][U] private Stopwatch timer = Stopwatch.StartNew();[/U][/B]

        public async Task<bool> Execute()
        {
           [B] [U]if (timer.ElapsedMilliseconds > YourTimeIntervalHere) Required = true;[/U][/B]

            if (!Required ||
                !LokiPoe.CurrentWorldArea.IsMap ||
                LokiPoe.Me.IsDead) return false;

            [B][U]timer.Restart();[/U][/B]

            Required = false;
            int remaining = GetRemainingMonsters();
            if (remaining > MapRunner.MinMonsterRemaining) return false;

            Log.Warn("Remaining monsters are below threshold. Now finishing map run.");

            if (MapRunnerSettings.Instance.Mode == MapRunnerSettings.OpenMethod.Laboratory)
                MapRunner.WpToSarnRequired = true;

            MapRunner.IsOnMapRun = false;
            await Coroutines.CreateAndTakePortalToTown();
            return false;
        }
You should also set "MinMonsterRemaining" in MapRunner.cs to your desired value.

I'm sure I am not the only one who has a surplus of 68-69 maps
Use "Upgrade Level" to get rid of excess maps.


it didn't have hunt 1-2 mobs
You can modify line 37 in TrackMobsTask:
Code:
if (AllMobs.Count < YourMinMobValueHere) return false;
However that cannot be guaranteed to work only on "map exploration ending".
 
Last edited:
Can you tell me why there is still space to pickup items and character is just going back to vendor / stash ?

Also, is it possible to make a pickup order ? so we pickup uniques / currency first so bot wont go back with 0 tps left without picking up something more important than just rare?
 
Last edited:
Can you tell me why there is still space to pickup items and character is just going back to vendor / stash ?
Townrun triggers based on free space percent (35%) in your inventory. It will be changed in next version.

Also, is it possible to make a pickup order ? so we pickup uniques / currency first so bot wont go back with 0 tps left without picking up something more important than just rare?
MapRunner utilizes default LootItemTask. It can by modified only by bot developer, not me.
Is it possible via separate plugin? - Yes.
 
Last edited:
You can add timer to the RemainingCheckTask so it will execute in certain time intervals, rather than only after town run. It actually requires 3 additional lines of code.
Code:
public class RemainingCheckTask : ITask
    {
        private static readonly ILog Log = Logger.GetLoggerInstanceForType();
        private bool _enabled = true;
        internal static bool Required;

       [B][U] private Stopwatch timer = Stopwatch.StartNew();[/U][/B]

        public async Task<bool> Execute()
        {
           [B] [U]if (timer.ElapsedMilliseconds > YourTimeIntervalHere) Required = true;[/U][/B]

            if (!Required ||
                !LokiPoe.CurrentWorldArea.IsMap ||
                LokiPoe.Me.IsDead) return false;

            [B][U]timer.Restart();[/U][/B]

            Required = false;
            int remaining = GetRemainingMonsters();
            if (remaining > MapRunner.MinMonsterRemaining) return false;

            Log.Warn("Remaining monsters are below threshold. Now finishing map run.");

            if (MapRunnerSettings.Instance.Mode == MapRunnerSettings.OpenMethod.Laboratory)
                MapRunner.WpToSarnRequired = true;

            MapRunner.IsOnMapRun = false;
            await Coroutines.CreateAndTakePortalToTown();
            return false;
        }
You should also set "MinMonsterRemaining" in MapRunner.cs to your desired value.


Use "Upgrade Level" to get rid of excess maps.



You can modify line 37 in TrackMobsTask:
Code:
if (AllMobs.Count < YourMinMobValueHere) return false;
However that cannot be guaranteed to work only on "map exploration ending".

When I add in your code I get this when the program starts.

Code:
Compiler Error: c:\Users\PC\Desktop\ExileBuddy\Plugins\MapRunner\RemainingCheckTask.cs(18,11) : error CS0246: The type or namespace name 'Stopwatch' could not be found (are you missing a using directive or an assembly reference?)
 
can you post mapruner with those remaning mobs updates? cuz i dont know how to edit those files :( greets
 
can you post mapruner with those remaning mobs updates? cuz i dont know how to edit those files :( greets
You can edit those files with standard text editor.
Here is the edited file for you.

Please consider: that code is for specific needs of the specific user. It was given as an example. It was not tested. It might not even work.
 

Attachments

thanks i will try to test it tomorrow ! greetings ! btw you cant implement auto /remaining into plugin ?
at least option to set monsters remaining then redo map
 
I've just posted a file with "auto" remaining check for you. The only thing you have to do is set your preferred time interval.
And how to set MinMonsterRemaining was already explained on previous page.

Currently I am satisfied how plugin does it's job (not quite, to be honest). For example:
- in the next version you will be able to set specific stash tab only for maps. Bot will put newly found maps only to that specific tab and take maps only from that tab.
- you will be able to set exploration complete percent, as in basic grind bot. Bot will explore the map until your percent, instead of always 100%.
- plugin will use default town run task, so bot will go to the town only if newly dropped item cannot be placed into inventory, instead of going to the town based on percentage of your inventory free space.

Those are the things that I feel plugin needs.
If you have specific needs, you can freely ask me for example of how that can be done. But the rest you have to do by yourself.
 
Last edited:
still amazing work :) ye i was shocked how good this plugin is ... really it do thing's with map like real people would do i mean fully automated but omg ... you have skills :D one i would like to have is "dodge function" kind of kite..
 
For some reason it goes thru every stash tab every new run, it seems it does not "remember" the last tab it found the most maps . . .
 
Status
Not open for further replies.
Back
Top