• Visit Rebornbuddy
  • ExilebuddyBeta #889 Feedback and Discussion

    Discussion in 'Archives' started by pushedx, Sep 1, 2014.

    1. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      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
      You need to register and have one post to see spoilers!
      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.
       
    2. IeU

      IeU Member

      Joined:
      Jul 20, 2010
      Messages:
      830
      Likes Received:
      11
      Trophy Points:
      18
      Cool! TY for the hard work Pushed!
       
    3. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
      time to make some money.
       
    4. tozededao

      tozededao Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,225
      Likes Received:
      5
      Trophy Points:
      38
      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 %].
       
    5. Nixon233

      Nixon233 New Member

      Joined:
      Sep 30, 2013
      Messages:
      320
      Likes Received:
      2
      Trophy Points:
      0
      Excellent! Time to start tomorrow to develop CR and test this badboy out!
       
    6. expedia

      expedia Member

      Joined:
      Feb 21, 2010
      Messages:
      37
      Likes Received:
      0
      Trophy Points:
      6
      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.
       
    7. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      I'll need your whole log. I know what happened, but that's not enough info to explain why it did.

      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: Sep 1, 2014
    8. seankim

      seankim Member

      Joined:
      Dec 20, 2013
      Messages:
      115
      Likes Received:
      1
      Trophy Points:
      18
      pushedx is real Developer

      nice! good! awesome!
       
    9. thunder

      thunder Member Legendary

      Joined:
      Jul 8, 2012
      Messages:
      143
      Likes Received:
      2
      Trophy Points:
      18
      finally got the town run, great job!
      A simple question: how to send /oos to resync?
       
    10. Nexic

      Nexic Member

      Joined:
      Aug 30, 2013
      Messages:
      67
      Likes Received:
      1
      Trophy Points:
      8
      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?
       
    11. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      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?
       
    12. Nexic

      Nexic Member

      Joined:
      Aug 30, 2013
      Messages:
      67
      Likes Received:
      1
      Trophy Points:
      8
      {
      "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
       
    13. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      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.
       
    14. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      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.
       
    15. Jihadjoe187

      Jihadjoe187 New Member

      Joined:
      Aug 26, 2014
      Messages:
      24
      Likes Received:
      0
      Trophy Points:
      1
      Thanks will use now and test!
       
    16. UmitB

      UmitB Member

      Joined:
      Mar 13, 2014
      Messages:
      100
      Likes Received:
      8
      Trophy Points:
      18
      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
       
    17. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      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.
       
    18. UmitB

      UmitB Member

      Joined:
      Mar 13, 2014
      Messages:
      100
      Likes Received:
      8
      Trophy Points:
      18
      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..
       
    19. Matejko

      Matejko Member

      Joined:
      Sep 26, 2013
      Messages:
      62
      Likes Received:
      1
      Trophy Points:
      8
      Thanks pushedx! I have one question, herald of ash/ice are added?
       
    20. vjxy123

      vjxy123 New Member

      Joined:
      Oct 6, 2012
      Messages:
      156
      Likes Received:
      0
      Trophy Points:
      0
      Good job
       

    Share This Page