View attachment Exilebuddy 29744 2014-12-16 11.36.txt gettin this error
Have you attached the wrong log? Or posted in the wrong thread?View attachment 158603 gettin this error
You cannot, pretty much... thats the price you should pay for good map clearing.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
This is "Upgrade Level" feature, you can read about it on the first page.My bot keeps tryn to vendor up my 66s instead of running them... What am i doing wrong?
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.
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: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; }
[/code]
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.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 ?![]()
MapRunner is using standard ExampleRoutineas far as i know maprunner is using his own routine
Yep, if you have set both ranged and melee skills - bot will prioritize ranged. Because, well, you enter the "range range" before "melee range".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?
else
{
melee = true;
slot = EnsurceCast(ExampleRoutineSettings.Instance.SingleTargetMeleeSlot);
}
I
MapRunner is using standard ExampleRoutine![]()
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;
}
I have no ideaif so why does my code not work in maprunner but outside it does?
MapRunner does maps. No more, no less. It can avoid affixes, because they are related to maps.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?