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.
Have you attached the wrong log? Or posted in the wrong thread?
Because according to that log, you did not even have MapRunner enabled.
There is only 1 error:
"2014-12-16 17:26:57,812 [18] ERROR Logger (null) - [InteractWith] The target could not be highlighted."
This is very common error that happens to everyone, nothing to worry about.
 
Last edited:
So currently the bot will not leave the map until there are 0 monsters left, I feel like this wastes a very large amount of time. So I am wondering is it possible that there is a variable I can change to make it 5 or 10 mobs? I think it would save huge amounts of time on every run as the bot back tracks quite a bit trying to complete this task. Ty for all your work ExVault :)

Edit: I'm an idiot, figured it out 10 seconds after I posted this. lol
 
So currently the bot will not leave the map until there are 0 monsters left, I feel like this wastes a very large amount of time. So I am wondering is it possible that there is a variable I can change to make it 5 or 10 mobs? I think it would save huge amounts of time on every run as the bot back tracks quite a bit trying to complete this task. Ty for all your work ExVault :)

Edit: I'm an idiot, figured it out 10 seconds after I posted this. lol
You cannot, pretty much... thats the price you should pay for good map clearing.
If you want to increase "/remaining" threshold that bot checks only after town run, you can do that. Open "MapRunner.cs" and find "MinMonsterRemaining" (line 24). Keep in mind that setting it higher than 20 will make no effect.
 
WORKS GREAT!

Thank you man!


I really would love to see this plugin to switch, when no maps in stash, enable-> to grindbot (settings there already) and grind for 2 hours or (just an idea: until it finds map -> rinse'n'repeat that extra task).! :)
 
Last edited:
You cannot run out of low level maps, they have really good drop chance.
Well, you can, theoretically, if you have like 1 map from the start.
Just make some stock of 3-5 maps and you will not run out of them for sure.
 
Last edited:
You cannot run out of low level maps, they have really good drop chance.
Well, you can, theoretically, if you have like 1 map from the start.
Just make some stock of 3-5 maps and you will not run out of them for sure.

Well I had 5 maps, but I kept dying on couple of them because dont have avoidbaddies thingy, so it wasted pretty much a lot of the maps. (my character is low bugdet "noobie") :) But cheap and good character though! can bot maps mostly..

Still its not that hard and bad thing to add such a brilliant and perfect plugin already. Why not make it better ? :)
 
first off: great plugin, it really works for me and i cant complain.

what i would like to do is a chicken/retreat mechanism for some crazy bloodlines(they are able to instagib you before autoquit/flask) like voidspawn and living blood.


this duct-taped code here should work inside exampleroutine but as far as i know maprunner is using his own routine, so im clueless where to start.
Code:
  private bool CombatTargetingOnInclusionCalcuation(NetworkObject entity)
        {
            try
            {
                var m = entity as Monster;
                if (m == null)
                    return false;

                if (AreaStateCache.Current.IsBlacklisted(m))
                    return false;

                // Do not consider inactive/dead mobs.
                if (!m.IsActive)
                    return false;

                // Ignore any mob that cannot die.
                if (m.CannotDie)
                    return false;

                // Ignore mobs that are too far to care about.
                if (m.Distance > (_currentLeashRange != -1 ? ExampleRoutineSettings.Instance.CombatRange : 300))
                    return false;
		[COLOR="#FF0000"]		// for testing purpose the first bloodline i was able to find
				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")) ||
                m.ImplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")))[/COLOR]
				{
					 // 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.HasAura("bloodlines_necrovigil"))
                {
                    Log.ErrorFormat("[CombatTargetingOnInclusionCalcuation] {0} ({1}) has bloodlines_necrovigil!", m.Name, m.Id);
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), "bloodlines_necrovigil");
                    return false;
                }
				
[COLOR="#0000FF"]				if (m.Name == "Animated Guardian" || 
[/COLOR]					 m.Name == "Kuduku" || 
					 m.Name == "Congealing Mud" || 
					 m.Name == "Congealing 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;
                }
				
				
            }
            catch (Exception ex)
            {
                Log.Error("[CombatOnInclusionCalcuation]", ex);
                return false;
            }
            return true;
        }
 
Code:
first off: great plugin, it really works for me and i cant complain.

what i would like to do is a chicken/retreat mechanism for some crazy bloodlines(they are able to instagib you before autoquit/flask) like voidspawn and living blood.


this duct-taped code here should work inside exampleroutine but as far as i know maprunner is using his own routine, so im clueless where to start.
[spoiler]
[code]
  private bool CombatTargetingOnInclusionCalcuation(NetworkObject entity)
        {
            try
            {
                var m = entity as Monster;
                if (m == null)
                    return false;

                if (AreaStateCache.Current.IsBlacklisted(m))
                    return false;

                // Do not consider inactive/dead mobs.
                if (!m.IsActive)
                    return false;

                // Ignore any mob that cannot die.
                if (m.CannotDie)
                    return false;

                // Ignore mobs that are too far to care about.
                if (m.Distance > (_currentLeashRange != -1 ? ExampleRoutineSettings.Instance.CombatRange : 300))
                    return false;
		[COLOR="#FF0000"]		// for testing purpose the first bloodline i was able to find
				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")) ||
                m.ImplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")))[/COLOR]
				{
					 // 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.HasAura("bloodlines_necrovigil"))
                {
                    Log.ErrorFormat("[CombatTargetingOnInclusionCalcuation] {0} ({1}) has bloodlines_necrovigil!", m.Name, m.Id);
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), "bloodlines_necrovigil");
                    return false;
                }
				
[COLOR="#0000FF"]				if (m.Name == "Animated Guardian" || 
[/COLOR]					 m.Name == "Kuduku" || 
					 m.Name == "Congealing Mud" || 
					 m.Name == "Congealing 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;
                }
				
				
            }
            catch (Exception ex)
            {
                Log.Error("[CombatOnInclusionCalcuation]", ex);
                return false;
            }
            return true;
        }
[/spoiler]

[/code]

This should be done by someone who knows what hes doing. Im not saying bad, but it good try! This thing should really be included into exilebuddy -> avoid very hard mobs or atleast kite them or something..
 
Well I had 5 maps, but I kept dying on couple of them because dont have avoidbaddies thingy, so it wasted pretty much a lot of the maps. (my character is low bugdet "noobie") :) But cheap and good character though! can bot maps mostly..

Still its not that hard and bad thing to add such a brilliant and perfect plugin already. Why not make it better ? :)
Its not so trivial as you think. That requires standalone plugin which will keep track of maps amount in your stash and do enable/disable maprunner based on that amount. And there is not so much need in that, because, as you said, you run out of maps because you keep dying. The game by itself offers you a high chances of low level map drop.
Also I highly recommend switching to map farming only on 70+ levels, unless you have strong build. Keep farming Library until your build can handle 66 maps.

as far as i know maprunner is using his own routine
MapRunner is using standard ExampleRoutine :)
 
i have a ground slam bot with 4,700 hp. 12k Ground Slam DPS (5L) | 17K Heavy Strike DPS (4L). but it keeps dying in maps... anything i can change to make it work better? i have tried messin with swapping ground slam between ranged and melee aoe. the problem is if i keep it as melee he rarely uses it, but if i set it to ranged aoe he never uses the heavy strike and boses wreck me before i can kill them... also how do i make it so it skips crypt n orchard maps?
 
i added a vaaal summon skeles as well as a cast on damage taken with imortal call, enduring cry, increased duration. we shall see. maybe ill add enfeeble instead of inc duration
 
i have a ground slam bot with 4,700 hp. 12k Ground Slam DPS (5L) | 17K Heavy Strike DPS (4L). but it keeps dying in maps... anything i can change to make it work better? i have tried messin with swapping ground slam between ranged and melee aoe. the problem is if i keep it as melee he rarely uses it, but if i set it to ranged aoe he never uses the heavy strike and boses wreck me before i can kill them... also how do i make it so it skips crypt n orchard maps?
Yep, if you have set both ranged and melee skills - bot will prioritize ranged. Because, well, you enter the "range range" before "melee range".
You need to change the CR so it will use ranged skill only for aoe.
I am not an expert of CR, but after brief look I think you should shrink the else statement in 1836 line to something like this:
Code:
else
{
    melee = true;
    slot = EnsurceCast(ExampleRoutineSettings.Instance.SingleTargetMeleeSlot);
}
You should set Heavy Strike to SingleTargetMeleeSlot and Ground Slam to AoeRangedSlot.
Ensure that your melee range is 10 and range range is your desired range for ground slam.
Again, I did not test that. It might not work.
Here is the edited CR for you.
 

Attachments

I
MapRunner is using standard ExampleRoutine :)

if so why does my code not work in maprunner but outside it does?
Code:
private bool CombatTargetingOnInclusionCalcuation(NetworkObject entity)
        {
            try
            {
                var m = entity as Monster;
                if (m == null)
                    return false;

                if (AreaStateCache.Current.IsBlacklisted(m))
                    return false;

                // Do not consider inactive/dead mobs.
                if (!m.IsActive)
                    return false;

                // Ignore any mob that cannot die.
                if (m.CannotDie)
                    return false;

                // Ignore mobs that are too far to care about.
                if (m.Distance > (_currentLeashRange != -1 ? ExampleRoutineSettings.Instance.CombatRange : 300))
                    return false;
				// for testing purpose the first bloodline i was able to find
				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")) ||
                m.ImplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesSpeedCharges")))
				{
					 // 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.HasAura("bloodlines_necrovigil"))
                {
                    Log.ErrorFormat("[CombatTargetingOnInclusionCalcuation] {0} ({1}) has bloodlines_necrovigil!", m.Name, m.Id);
                    AreaStateCache.Current.Blacklist(m.Id, TimeSpan.FromHours(1), "bloodlines_necrovigil");
                    return false;
                }
				
				if (m.Name == "Animated Guardian" || 
					 m.Name == "Kuduku" || 
					 m.Name == "Congealing Mud" || 
					 m.Name == "Congealing 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;
                }
				
				
            }
            catch (Exception ex)
            {
                Log.Error("[CombatOnInclusionCalcuation]", ex);
                return false;
            }
            return true;
        }

would you consider putting something similar like this into the maprunner plugin? just as avoiding maps or affixes to remake zone/lougout/skip dangerous mobs? in the GUI of Exilebuddy ofc
i dont think its a bad idea and shouldnt be to hard if you know what youre doing.

or in general a plugin to avoid those would be great
 
Last edited:
if so why does my code not work in maprunner but outside it does?
I have no idea :confused:

would you consider putting something similar like this into the maprunner plugin? just as avoiding maps or affixes to remake zone/lougout/skip dangerous mobs?
MapRunner does maps. No more, no less. It can avoid affixes, because they are related to maps.
For avoiding certain mobs you need a separate plugin.
 
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?
 
Status
Not open for further replies.
Back
Top