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

ExilebuddyBeta #889 Feedback and Discussion

pushedx

Well-Known Member
Joined
Sep 24, 2013
Messages
4,252
Reaction score
290
Download - Please download a clean copy of Beta for each version. Do not "update", because the changes will break other versions. Before reporting issues, please make sure you are using a clean copy.

Please attach a full log if you have any problems. I've made sure as much debugging information is logged as possible to track down various issues that might happen. I need the full log though, and not partial snippets. If you do not feel comfortable posting a full log, you can PM me it instead with a link to your thread.

Beta #889 - Overview

1. Please place the "Move only" skill on your skillbar, but not in Left Mouse Button.
2. Make sure "Always Highlight" is enabled (PoE Options-> Ui or press Z)
3. Make sure "Key Pickup" is enabled (PoE Options-> Ui)

This version of the bot adds a lot of the core building blocks used to create higher level coroutine logic. The model it uses closely resembles the Beta 1.0 setup, but not all functionality is back yet.

However, the bot should now grind an area until it needs to go to town (uses area transitions to make new intances), will stash everything but a stack of portal scrolls, and then will return back. Stashing is simply going though your stash tabs one by one, trying to fit items. You should have your empty stash tabs at the front of stash to avoid delays when stashing. Unlike the old API, the bot will not request stash tabs anymore, but rather lets the client handle the logic, and simply changes tabs and checks their contents.

A few things in the default CR have changed to address reported issues with general combat. Please remember the CR we provide is basically one giant example of how you can go about things. Smaller, more customized CRs will perform a lot better, and will be a lot easier to work with and understand. However, such examples are not possible at this time by myself, as the actual API and bot logic aspect of things is not solid yet. If you need help on how to go about using the API or understanding how the CRs work, feel free to ask, and I'll get you pointed in the right direction.

Changelog
  • Various delays have been added to the API and bot to make it seem more realistic and fix cases of things executing too fast.
  • CodeCompiler changed to use | for tokens so abs. file paths for assemblies can be used.
  • NextTab and PreviousTab functions added to panels that support them.
  • WaitForStashContents -> WaitForStashTabContents.
  • A lot of common coroutines implemented and existing ones updated.
  • Tasks logic updated to handle error cases and retries better.
  • Added an AlertBot example for showing some non-bot things doable with the API.
  • Town runs and traveling from town support added.
  • Basic stashing support added. You'll want your empty stash tabs at the front of stash, as usual.
  • Doors and blocking breakable chest logic updated and added back in.
  • The concept of the move location in the CR removed as it was causing issues with combat. The CR will now skip mobs outside of it's combat range until a better system can be put into place.
  • Aura logic reworked to always cast, rather than cast once.
  • Various delays have been added to the CR so there is time for the buff/aura to be detected.
  • ShrineLogic now only executes within a fixed range, to avoid issues with non-combat situations.
  • LootItemsTask and OpenChestTask updated to use InteractWith.
  • AreaPather now favors Mud Flats to get to Tidal Island over Act 1 town.

Quick Guide

The current bot is still under work to try and achieve a bare minimal grinding/town run implementation. Certain quality of life features are not in it yet. Additional features, such as iding items, selling, have not made it back in yet, but will be added later if the current build is working noticeably better for users. There exists one more big thing to work around for the post 1.2 changes. That is the error where memory goes bad when the CR

Go to the "Settings" tab in the main GUI. From here, you can change "BasicGrindBot" or "ExampleRoutine" settings.

Currently, you can only select the grind zone for "BasicGrindBot". The bot can now navigate though towns, so as long as you have the appropriate quest state to reach an area, the bot should make it. After the bot finishes the grind zone, it will take area transitions back and forth for new instances until it needs to go to town. The bot does not have any quest logic, and does not know that you are or aren't able to use an area transition, so if you grind an area that you don't have all the quests done for, it can and most likely will get stuck.

Hover over the GUI labels in "ExampleRoutine" to understand what each setting is for. Your "Left Mouse Button" slot, the top left most one, is slot 1. Your "T" slot, second row, far right, is slot 8. Simply assign the slot #s to the skill category that you want to associate each skill with. The CR has a specific set of logic for determining when a slot is used. Users must make their own specialized CRs if they need different logic or behaviors. Our CR is just one big example of doing a bunch of different things, so it will never be able to do everything, nor could we maintain such a CR in a game like this.

A quick run down about how the default CR is currently designed, as there was some confusion with the previous version. This CR offers a generic way of trying to support as many "generic builds" as possible that make use of multiple skills under different combat scenarios. It allows for the use of multiple auras, curses, and one totem. If you assign a skill that is auto-used by the CR to a skill slot, it will be spam cast, and not work correctly, because casting such skills require additional logic not coded into the skill slots themselves.

Single Target Melee Skill Slot is used when there is a single target or boss-like mob in melee range. Single Target Ranged Skill Slot is used when such a target is outside of melee range.

Aoe Melee Skill Slot is used when there are numerous mobs around the player. Aoe Ranged Skill Slot is used when such mobs are outside of melee range. If you do not need a specific behavior, selecting -1 will make the bot not use a skill under that scenario, but a skill will always be used. For example, if you only set Single Target Melee Skill Slot, that slot will be used for all other conditions automatically if the are unassigned.

The CR for this version contains some changes to address some of the main issues people have noticed. The CR will now skip more mobs that lie outside combat range to avoid various issues with looping back and forth. This is purely a CR behavior, and if you use a custom CR or modify ExampleRoutine, it can be changed.

The CR does not have target priority yet, so there are several combat cases involving necros where it can get stuck. Since the bot is not in an afk-able state yet, this isn't a huge deal, and it's strongly advisable to babysit your bot for the time being as things are still getting worked out. In addition, the CR does not handle desync or other cases where the skill it's casting fails to hit the target (due to game mechanics).

Known Issues

The bot doesn't have a stuck detection plugin yet, so there are some areas where stuck issues might be more common than others. The City of Sarn has some known issues with the bot hugging the wall and getting stuck. Adjustments to the pathfinding for this area and some others are still on the todo list.

There is still a potential exception issue for when objects go invalid and the CR tries to process them. This typically results in the bot being stopped and the character logging out to the character selection screen. This issue is currently being worked on, but it's not an easy fix, so it'll take some time before it's solved for good.

Other than that, any issues with the CR are just CR issues from it being a large generic example. The BasicGrindBot implementation does not handle any combat issues itself. Right now, not much time can be spent on trying to get the CR expanded for more things, because that's not its goal. Certain skills have not been added to the CR yet. Trying to get them all will be considered, but for now, as long as most are used correctly, adding in others is just a task that takes time.
 
Cool! TY for the hard work Pushed!
 
Was testing on Docks, first run went well, then it left to Barracks and when was entering Docks again it never created a new instance and rejoined the old one.

Code:
[TravelToGrindZoneTask] Now moving towards the area transition The Docks because it is 20.09975 away.[TravelToGrindZoneTask] The area transition to move to is 21382 at {655, 1308}.
[FinishCurrentAction] Waiting for the action to finish Interaction.
[InteractWith] Now attempting to highlight 21382.
[InteractWith] Now attempting to interact with 21382.
[WaitForInstanceManager] We have been waiting 00:00:00.0000827 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.1125275 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.2316611 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.3650982 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.4657111 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.5716163 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.6912557 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:00.9075789 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:01.0253540 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:01.1567117 for the instance manager to open.
[WaitForInstanceManager] We have been waiting 00:00:01.2581243 for the instance manager to open.
[ExilePather] Now reloading the pathfinder.
[GetPathfindingData] Now creating the pathfinding data.
[GetPathfindingData] The pathfinding data has been created (00:00:00.0102293).
[ExilePather] Now creating the navmesh.
[ExilePather] The navmesh has been created.
[ExilePather] The pathfinder has been reloaded.
[HandleBlockingChestsTask] Now resetting task state.
[HandleDoorsTask] Now resetting task state.
[ReturnToGrindZoneTask] Now resetting task state.
[TravelToGrindZoneTask] Now resetting task state.
[LeaveCurrentAreaTask] Now resetting task state.
[GridExplorer] Now segmenting the current area.
[GridExplorer] Area segmentation complete 00:00:01.3650016.
[WaitForInstanceManager] Timeout.
[TravelToGrindZoneTask] TakeAreaTransition returned InstanceManagerDidNotOpen. This is the #0 try.
[ExploreTask] Now exploring to the location {460, 759} (126) [6.86747 %].
 
Excellent! Time to start tomorrow to develop CR and test this badboy out!
 
Seems like bot is skipping a lot of mobs to open chest/objects.

I'm not sure if this is intentional but feels like bot's priority is to move to chest before doing anything else.
 
[WaitForInstanceManager] Timeout.
[TravelToGrindZoneTask] TakeAreaTransition returned InstanceManagerDidNotOpen. This is the #0 try.

I'll need your whole log. I know what happened, but that's not enough info to explain why it did.

Seems like bot is skipping a lot of mobs to open chest/objects.

I'm not sure if this is intentional but feels like bot's priority is to move to chest before doing anything else.

The bot is not skipping mobs to open chests, it's skipping mobs because they aren't within the combat range (based on path distance).

When there's no mobs to attack, then the bot goes though and opens chests and loots item, using a position based cached system so nothing is missed.

The reason why this CR is now like that, is because the mechanic I was using to avoid it in the last version, was causing issues with the bot running into mobs that were moving at the character, so ranged characters were trying to be melee and so on. The ideal solution will be to have a grid setup of all the locations mobs have been detected, and when the leash radius is -1, go visit those locations to full clear an area. However, doing that takes time, and I needed to get out a town looping version today.

You can actually change the CR to make it work like it used to, to a degree, but you'll see combat looping issues and memory exception issues for far off targets that spawn and despawn into range.

To make the change you'd replace this code:
Code:
var monsters =
                    LokiPoe.ObjectManager.GetObjectsByType<Monster>()
                        .Where(
                            m =>
                                !AreaStateCache.Current.IsBlacklisted(m.Id) &&
                                !m.CannotDie &&
                                m.Distance < (_currentLeashRange != -1 ? _currentLeashRange : 50) &&
                                m.IsActive)
                        .OrderBy(m => m.Distance).ToList();

with this code:
Code:
var monsters =
                    LokiPoe.ObjectManager.GetObjectsByType<Monster>()
                        .Where(
                            m =>
                                !AreaStateCache.Current.IsBlacklisted(m.Id) &&
                                !m.CannotDie &&
                                m.Distance < (_currentLeashRange != -1 ? _currentLeashRange : 300) &&
                                m.IsActive)
                        .OrderBy(m => m.Distance).ToList();

And then remove this code:
Code:
// Prevent combat loops from happening.
                if (pathDistance > ExampleRoutineSettings.Instance.CombatRange)
                    return false;

That way, it'll consider all mobs, but, it won't cache the position to move to it, so once again, you'll see problems. I do plan on changing this in the future, but for now, top priority is smoothing out all the main stuff.
 
Last edited:
finally got the town run, great job!
A simple question: how to send /oos to resync?
 
I am using double strike. After killing a few mobs in a ranged pack, it gets stuck without moving towards the other ranged mobs and then continues to just attack in place. Anyone else have this problem?
 
I am using double strike. After killing a few mobs in a ranged pack, it gets stuck without moving towards the other ranged mobs and then continues to just attack in place. Anyone else have this problem?

The way your settings are setup, determine how the combat works. Can you post your "Settings\<Config>\ExampleRoutine.json" file and tell me what skills are in which slots?
 
{
"SummonRagingSpiritCountPerDelay": 3,
"SummonRagingSpiritDelayMs": 5000,
"SummonSkeletonCountPerDelay": 2,
"SummonSkeletonDelayMs": 5000,
"MineDelayMs": 5000,
"AlwaysAttackInPlace": false,
"SingleTargetMeleeSlot": 3,
"SingleTargetRangedSlot": -1,
"AoeMeleeSlot": -1,
"AoeRangedSlot": -1,
"FallbackSlot": -1,
"CombatRange": 35,
"MaxMeleeRange": 1,
"MaxFlameBlastCharges": 5,
"MoltenShellDelayMs": 5000,
"ArcticArmourCastMode": 1,
"TotemDelayMs": 5000,
"TrapDelayMs": 2500
}

Pushedx, ironically it's actually only with burning archers (also while i have you, can you check out my other post on the developer's forum about a chicken plugin?) much love pushedx
 
finally got the town run, great job!
A simple question: how to send /oos to resync?

This is roughly how to do it, it doesn't take into account anything but having a clean chat input box (I don't eve know the current client behaviors for the mode changes and stuff for things like whispers). The ProcessHookManager has to be enabled, so keep that in mind if you test in the Dev tab. You can press ALT + SHIFT + D to disable the ProcessHookManager, and ALT + SHIFT + E to enable it for testing stuff. That's a new feature not talked about yet to help test new API stuff via Dev tab.

Code:
if(!LokiPoe.InGameState.IsChatWindowVisible)
{
   LokiPoe.InGameState.ToggleChat();
}

Code:
if(LokiPoe.InGameState.IsChatWindowVisible)
{
   LokiPoe.Input.PressKey(Keys.Oem2, '/', false);
   LokiPoe.Input.PressKey(Keys.O, 'o', false);
   LokiPoe.Input.PressKey(Keys.O, 'o', false);
   LokiPoe.Input.PressKey(Keys.S, 's', false);
   LokiPoe.Input.PressKey(Keys.Enter);
}

If done in a coroutine, you'll want to wait just a little after toggling so the client opens it fully. You dont have to wait between key presses, because there's an underlying wait when the bot sends the message to the client.

I've not looked at the macros people use to /oos using other scrips, but if all they do is press enter, type in /oos and press enter again, this method should be the exact same.
 
Pushedx, ironically it's actually only with burning archers (also while i have you, can you check out my other post on the developer's forum about a chicken plugin?) much love pushedx

Your MaxMeleeRange is 1. That means it'll be using your ranged slots for all targets up to combat range, so 2-35, or pretty much everything. The CR attacks in place for ranged skills to avoid the case of moving to a location near the mob, since indirect attacking using attack in place is far more useful for ranged skills than melee. E.g., there's no need to cast firestorm on a mob, just around its position, Same goes for all projectiles, and it makes things work better since the target doesn't have to be highlighted.

What you should do is change your MaxMeleeRange to 35, so it should always use your melee skill without using attack in place, which will make it highlight the target, and the client will move and attack for you.
 
I have no idea what i've doing wrong. But when the bot faced with magic,rare or bosses it gives a error and boot me login screen with following error. 7/8 times i tried same.

View attachment Exilebuddy 6348 2014-09-02 08.02.txt

The bot coroutine has finished in a state of Faulted
[Stop] Now requesting the BotThread to stop.
[Tick] Only 00:00:00.3190189 has elapsed since the last bot restart. Not restarting again, because something is wrong.
[ActivateEscapeState] !IsEscapeStateActive. Attempting to open it.
[BasicGrindBot] OnStop
[LeaveCurrentAreaTask] Now resetting task state.
[AutoFlask] Stop
[ExampleRoutine] Stop
 
I have no idea what i've doing wrong. But when the bot faced with magic,rare or bosses it gives a error and boot me login screen with following error. 7/8 times i tried same.

This is the last core issue to fix with Beta. It's not an easy fix, and the way we handle objects will have to change. It is now being worked on though, and is nothing you can do differently.

What happens is, monster memory changes under certain conditions, so when a coroutine waits a frame at least, or a new API function leaves multiple frames (to not lag the client's FPS), the memory is invalid when it resumes. All our previous logic worked under the assumption the memory would still be valid, so our design has to change to accommodate this now.

In the past, it did not happen nearly as much, because the old API did not leave the current frame in the client. The new API, and various performance improvements to the bot, requires leaving the current frame, often, so memory moves around during this time.
 
This is the last core issue to fix with Beta. It's not an easy fix, and the way we handle objects will have to change. It is now being worked on though, and is nothing you can do differently.

What happens is, monster memory changes under certain conditions, so when a coroutine waits a frame at least, or a new API function leaves multiple frames (to not lag the client's FPS), the memory is invalid when it resumes. All our previous logic worked under the assumption the memory would still be valid, so our design has to change to accommodate this now.

In the past, it did not happen nearly as much, because the old API did not leave the current frame in the client. The new API, and various performance improvements to the bot, requires leaving the current frame, often, so memory moves around during this time.

I see, but for now unplayable for me. Because each 2-3 min boot me login screen. So better i wait for update to fix this problem..
 
Thanks pushedx! I have one question, herald of ash/ice are added?
 
Back
Top