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.
Use Object Explorer to find a mob bot sticks to. Post info here and Ill make plugin ignore it.
 
Those mods should be heavly avoided after the mob's death. The bot should not come near the pack of mobs with those mods to pickup/walk by because it's high risk of instant dead. I would add it somehow myself but I'm not yet familiar with the API so I'm asking for your help.

Code:
These will cause instant damage after dead (like this: https://www.youtube.com/watch?v=CKDacGmgqJw)
- [url]http://pathofexile.gamepedia.com/Special:Browse/DexMissionMonsterExplodesOnDeathCold1[/url]
- [url]http://pathofexile.gamepedia.com/Special:Browse/DexMissionMonsterExplodesOnDeathFire1[/url]
- [url]http://pathofexile.gamepedia.com/Special:Browse/DexMissionMonsterExplodesOnDeathLightning1[/url]

These will cause damage after some time (like this: [url]https://www.youtube.com/watch?v=8QLPIhzYYPI[/url])
- [url]http://pathofexile.gamepedia.com/Special:Browse/MonsterBloodlinesBeaconOnDeathCold[/url]
- [url]http://pathofexile.gamepedia.com/Special:Browse/MonsterBloodlinesBeaconOnDeathFire[/url]
- [url]http://pathofexile.gamepedia.com/Special:Browse/MonsterBloodlinesBeaconOnDeathLightning[/url]
 
Tormiasz
Making bot "avoid" something (i.e. stand still do nothing until mines explode) is not a trivial task.
Looting is done by LootItemTask and this task do not care if something dangerous lies near item.
You should add a task before LootItemTask which will constantly scan game objects for those mines. And here is the most tricky part: when mines are found you should calculate a point where distance to all mines is greater than X. Move to that point and wait until mine objects despawn.
 
Tormiasz
Making bot "avoid" something (i.e. stand still do nothing until mines explode) is not a trivial task.
Looting is done by LootItemTask and this task do not care if something dangerous lies near item.
You should add a task before LootItemTask which will constantly scan game objects for those mines. And here is the most tricky part: when mines are found you should calculate a point where distance to all mines is greater than X. Move to that point and wait until mine objects despawn.

Just get a better build. Problem solved.
 
Tormiasz
Making bot "avoid" something (i.e. stand still do nothing until mines explode) is not a trivial task.
Looting is done by LootItemTask and this task do not care if something dangerous lies near item.
You should add a task before LootItemTask which will constantly scan game objects for those mines. And here is the most tricky part: when mines are found you should calculate a point where distance to all mines is greater than X. Move to that point and wait until mine objects despawn.

So something like this? Wrote in notepad lol

Code:
var bot = BotManager.CurrentBot;
var currentTaskManager = (TaskManager)bot.Execute("GetTaskManager");
var avoidBearersTask = currentTaskManager.GetTaskByName("AvoidBearers");
if (!currentTaskManager.TaskList.Contains(avoidBearersTask))
{
	var lootItemTask = currentTaskManager.GetTaskByName("LootItemTask");
	if (lootItemTask != null)
		currentTaskManager.AddBefore(new AvoidBearersTask(), "LootItemTask");
}


And the task logic.
Code:
var bearermob = LokiPoe.ObjectManager.GetObjectsByType<Monster>().FirstOrDefault(t => LokiPoe.Me.Position.Distance(t) < 30 && t.IsDead && t.HasCurrentAction);
if (bearermob != null)
{                    {
	Log.InfoFormat("[Logic] Running away from {0} corpse", bearermob.Name);
	Vector2i pos1 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 45, 40), 40);
	Vector2i pos2 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 90, 40), 40);
	Vector2i pos3 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 135, 40), 40);
	Vector2i pos4 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 180, 40), 40);
	Vector2i pos5 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 225, 40), 40);
	Vector2i pos6 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 270, 40), 40);
	Vector2i pos7 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 315, 40), 40);
	Vector2i pos8 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 360, 40), 40);

	Vector2i dodgepos = new Vector2i(9999,9999);
	if (bearermob.Position.Distance(pos1) > 30)
		dodgepos = pos1;
	if (bearermob.Position.Distance(pos2) > 30 && LokiPoe.Me.Position.Distance(pos2) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos2;
	if (bearermob.Position.Distance(pos3) > 30 && LokiPoe.Me.Position.Distance(pos3) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos3;
	if (bearermob.Position.Distance(pos4) > 30 && LokiPoe.Me.Position.Distance(pos4) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos4;
	if (bearermob.Position.Distance(pos5) > 30 && LokiPoe.Me.Position.Distance(pos5) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos5;
	if (bearermob.Position.Distance(pos6) > 30 && LokiPoe.Me.Position.Distance(pos6) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos6;
	if (bearermob.Position.Distance(pos7) > 30 && LokiPoe.Me.Position.Distance(pos7) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos7;
	if (bearermob.Position.Distance(pos8) > 30 && LokiPoe.Me.Position.Distance(pos8) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos8;

	await Coroutines.MoveToLocation(dodgepos, 5, 700)
}
But i don't know how to check if the mob is casting the bearer skill.


Just get a better build. Problem solved.
I don't know which build can stand in 5-10 of those (happened to me).
 
So something like this? Wrote in notepad lol

Code:
var bot = BotManager.CurrentBot;
var currentTaskManager = (TaskManager)bot.Execute("GetTaskManager");
var avoidBearersTask = currentTaskManager.GetTaskByName("AvoidBearers");
if (!currentTaskManager.TaskList.Contains(avoidBearersTask))
{
	var lootItemTask = currentTaskManager.GetTaskByName("LootItemTask");
	if (lootItemTask != null)
		currentTaskManager.AddBefore(new AvoidBearersTask(), "LootItemTask");
}


And the task logic.
Code:
var bearermob = LokiPoe.ObjectManager.GetObjectsByType<Monster>().FirstOrDefault(t => LokiPoe.Me.Position.Distance(t) < 30 && t.IsDead && t.HasCurrentAction);
if (bearermob != null)
{                    {
	Log.InfoFormat("[Logic] Running away from {0} corpse", bearermob.Name);
	Vector2i pos1 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 45, 40), 40);
	Vector2i pos2 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 90, 40), 40);
	Vector2i pos3 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 135, 40), 40);
	Vector2i pos4 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 180, 40), 40);
	Vector2i pos5 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 225, 40), 40);
	Vector2i pos6 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 270, 40), 40);
	Vector2i pos7 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 315, 40), 40);
	Vector2i pos8 = ExilePather.WalkablePositionFor(getPointOnCircle(bearermob.Position.X, bearermob.Position.Y, 360, 40), 40);

	Vector2i dodgepos = new Vector2i(9999,9999);
	if (bearermob.Position.Distance(pos1) > 30)
		dodgepos = pos1;
	if (bearermob.Position.Distance(pos2) > 30 && LokiPoe.Me.Position.Distance(pos2) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos2;
	if (bearermob.Position.Distance(pos3) > 30 && LokiPoe.Me.Position.Distance(pos3) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos3;
	if (bearermob.Position.Distance(pos4) > 30 && LokiPoe.Me.Position.Distance(pos4) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos4;
	if (bearermob.Position.Distance(pos5) > 30 && LokiPoe.Me.Position.Distance(pos5) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos5;
	if (bearermob.Position.Distance(pos6) > 30 && LokiPoe.Me.Position.Distance(pos6) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos6;
	if (bearermob.Position.Distance(pos7) > 30 && LokiPoe.Me.Position.Distance(pos7) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos7;
	if (bearermob.Position.Distance(pos8) > 30 && LokiPoe.Me.Position.Distance(pos8) < LokiPoe.Me.Position.Distance(dodgepos))
		dodgepos = pos8;

	await Coroutines.MoveToLocation(dodgepos, 5, 700)
}
But i don't know how to check if the mob is casting the bearer skill.



I don't know which build can stand in 5-10 of those (happened to me).

Any build that can 1 hit packs and ignore those tards. Capped resistances and some dodge% can deal with them easily
 
Yeah that's why I want to ignore them. Killing is not a problem. The problem only occurs when the bot is running to their bodies for loot. Bot enter the rings, they explode, bot dies. I don't know how many HP you would need to stay in this and how many the gear would cost. That's why everyone is trying to improve the bot. Rather than getting tanky build and do no damage I would improve the bot logic. "Get better build" is not helping with anything at all.
 
Yeah that's why I want to ignore them. Killing is not a problem. The problem only occurs when the bot is running to their bodies for loot. Bot enter the rings, they explode, bot dies. I don't know how many HP you would need to stay in this and how many the gear would cost. That's why everyone is trying to improve the bot. Rather than getting tanky build and do no damage I would improve the bot logic. "Get better build" is not helping with anything at all.
Simple solution: instant flasks with 100 ms between use.3 of those can keep you alive from 20 explosions.Ofc capped resi and around 4k hp :).I've never seen my bots to die from those explosions(they are melee)
 
Last edited:
See dude, the Issue is.
Once you start ignoring those mobs, you have to account for where you will move.
Once it moves there you have to check if one of the avoidable mobs is at your location or near, but before you do that you have to check on your way there, there are none of those mobs.

For your task, once you add a task in front of the loot task, you have to make sure you remove it or return false so Loot task an execute. If you do things wrong, it won't loot, then you will blame something wrong for not looting.

For your vectors, you are making way too much overhead, imagine doing those calculations per tick();

Kinda see what i'm getting at?

You "Can" code an avoid task, but how long will you spend trying to get it to work "good" vs just getting a better "more bot friendly" build.

Everything has limitations, work with it or work around it, don't work harder against it.
 
Standard league.

Max map level 71
The bot was doing 68-70 maps no problem.
I had 5 tabs of maps, got down to 3 tabs.
I didn't remember seeing the bot run any of the 71 lvl maps, but i was like ok... maybe i didn't have many...
so i raised the limit from 71 to 75...
The bot went in stash, took a map, went to the device...
made portals, bot went inside the portal, then bot instantly leaves back to the hideout, repeats.... goes back back into my stash, takes another map....

so i just wasted around 2 tabs of lvl 71-75 maps....
any idea on why the bot is doing this?

Went inside my guild stash, and pulled out a few t1 maps..
Bot had no problem running them, then when it game to T4 + it just did the same thing. goes in, comes back out, makes a new map...
really realllyyy sad.

i even took reflect off my ignore list, thinking maybe there was a bug or something.
but nope same issue over and over and over again.

Bot Log below.

Edit: changed from texas server to DC
portals open faster, bot starts moving quicker after portals are opened, and the bot isn't just doing the same stupid crap, its actually running the maps now.
must be a server sided issue thats causing the bot to do such evil things.
 

Attachments

Last edited:
Standard league.

Max map level 71
The bot was doing 68-70 maps no problem.
I had 5 tabs of maps, got down to 3 tabs.
I didn't remember seeing the bot run any of the 71 lvl maps, but i was like ok... maybe i didn't have many...
so i raised the limit from 71 to 75...
The bot went in stash, took a map, went to the device...
made portals, bot went inside the portal, then bot instantly leaves back to the hideout, repeats.... goes back back into my stash, takes another map....

so i just wasted around 2 tabs of lvl 71-75 maps....
any idea on why the bot is doing this?

Went inside my guild stash, and pulled out a few t1 maps..
Bot had no problem running them, then when it game to T4 + it just did the same thing. goes in, comes back out, makes a new map...
really realllyyy sad.

i even took reflect off my ignore list, thinking maybe there was a bug or something.
but nope same issue over and over and over again.

Bot Log below.

Edit: changed from texas server to DC
portals open faster, bot starts moving quicker after portals are opened, and the bot isn't just doing the same stupid crap, its actually running the maps now.
must be a server sided issue thats causing the bot to do such evil things.

Ok, You don't have any portal scrolls in your inventory, but you have a portal gem.
You need to turn off FillTpScrollStacks, go to Settings => OldGrindBot => Scroll down to "FillTpScrollStacks" and uncheck it. Should stop that recursive portal scroll searching loop.


Ops Edit - Forgot to mention why this may be happening.
Mainly it's because you have 0 portal scrolls in your inventory.

Case 1 - if you did not have a portal gem, what would happen is, you would logout and log back in, indefinitely until you ran out of maps, the bot logs out so it can get to town to withdraw portal scrolls from stash.

Case 2 - You have your ExplorationCompleteBahaviour[1-5] on use Portal, and the rest Auto. It will default to use Portal to get to town so it can grab portal scrolls from stash.
 
Last edited:
ExVault can i suggest that you add 1 more map selling option?So the thing is me and my friends are farming only low lvl maps and because of the map selling option having only max lvl selling,we kinda run out of low lvl maps.But without that selling option we are getting stuffed with shit tons of maps(ofc bot runs out of space).So we kinda need an option to sell maps for example 70+ and keep all the low lvls ofc.It would be great if you make it.No more map manual managing will be needed :)

Edit:We have option to sell ignored maps,can you make an option to sell maps with ignored mods?Those are my suggestions to improve the plugin,ofc if you cant add them its np.MapRunner works great :)
 
Last edited:
later in the day European servers get slower opening the map portals, i saw this happening many times now.

At hideout, start bot, Bot goes stash to get a map, bot uses the map on device, portals are getting opened but bot already going back to stash to get a new map.

Any fix for this? any way he waits more 2 or 3 seconds, that would solve the problem.
Um, that "shouldn't" happen at all
There are various checks, Can you post a log of this happening?
 
ExVault can i suggest that you add 1 more map selling option?So the thing is me and my friends are farming only low lvl maps and because of the map selling option having only max lvl selling,we kinda run out of low lvl maps.But without that selling option we are getting stuffed with shit tons of maps(ofc bot runs out of space).So we kinda need an option to sell maps for example 70+ and keep all the low lvls ofc.It would be great if you make it.No more map manual managing will be needed :)

Edit:We have option to sell ignored maps,can you make an option to sell maps with ignored mods?Those are my suggestions to improve the plugin,ofc if you cant add them its np.MapRunner works great :)
Just set min map amount to something big like 30 or 40.


Um, that "shouldn't" happen at all
There are various checks, Can you post a log of this happening?
Its a rare bug when portals to previous map despawn so long that maprunner thinks they are ones to a newly opened map.
I will release a fix soon.
 
Ok, You don't have any portal scrolls in your inventory, but you have a portal gem.
You need to turn off FillTpScrollStacks, go to Settings => OldGrindBot => Scroll down to "FillTpScrollStacks" and uncheck it. Should stop that recursive portal scroll searching loop.


Ops Edit - Forgot to mention why this may be happening.
Mainly it's because you have 0 portal scrolls in your inventory.

Case 1 - if you did not have a portal gem, what would happen is, you would logout and log back in, indefinitely until you ran out of maps, the bot logs out so it can get to town to withdraw portal scrolls from stash.

Case 2 - You have your ExplorationCompleteBahaviour[1-5] on use Portal, and the rest Auto. It will default to use Portal to get to town so it can grab portal scrolls from stash.

i use portal gem and he not allways use it, sometimes he wants use portals scrolls, i think its because cast was canceled
 
Status
Not open for further replies.
Back
Top