• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • i want to buy exilebot

    Discussion in 'Archives' started by thenotorious, Aug 27, 2014.

    1. thenotorious

      thenotorious Member

      Joined:
      Aug 23, 2014
      Messages:
      85
      Likes Received:
      0
      Trophy Points:
      6
      I saw I the thread that the beta has been released but I don't see it anywhere. If I buy it today, i'm I going to have access to the new version for the forsaken master update ?

      thanks
       
    2. Nuked

      Nuked New Member

      Joined:
      Aug 27, 2014
      Messages:
      2
      Likes Received:
      0
      Trophy Points:
      0
      dont buy the bot now, wait like 2-3 more weeks atleast.
       
    3. iargue

      iargue Member

      Joined:
      Mar 20, 2012
      Messages:
      125
      Likes Received:
      2
      Trophy Points:
      18
    4. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
    5. jordi1104

      jordi1104 New Member

      Joined:
      Jun 4, 2012
      Messages:
      778
      Likes Received:
      4
      Trophy Points:
      0
      You woulden't mind mentioning the lines and what to change them to?
       
    6. iargue

      iargue Member

      Joined:
      Mar 20, 2012
      Messages:
      125
      Likes Received:
      2
      Trophy Points:
      18
      No, because he is making it up.

      It might be possible if we had access to the Grindbot, but since the Grindbots code is hidden, adding in town runs and everything will mean writing a bot by hand.
       
    7. jordi1104

      jordi1104 New Member

      Joined:
      Jun 4, 2012
      Messages:
      778
      Likes Received:
      4
      Trophy Points:
      0
      I guess so then we'll just wait :p
       
    8. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      Just to clarify about this, the actual grinding logic in what you guys currently have is just that: grinding logic. If you wanted to make it backtrack less or change the order of grinding actions, then you would indeed need the source (which isn't available as it's part of the compiled exe). The decision to not make this available to users is not mine.

      However, for everything else, this project is setup in a way where users can add in new functionality and or create bigger and better things than us (which was the big goal of the past few months with rewriting what was now the last Beta). This is the driving force behind Buddy products, make a solid API for a game, and let the community build up from it.

      Here's a quick example to show this. Just replace the ExamplePlugin.cs file with this code and start the bot in town after enabling the plugin. You need to have Stash in client range, but it does not have to be on screen.

      ExamplePlugin.cs: Private Paste - Pastie

      You should notice the bot now gets into interaction range of the stash and then interacts with it to open. Under the hood, the code shown there is pretty much how all the new code works. You use the Loki API to find the objects you want, and then move towards them and use the new interaction API functions to do stuff. If you wanted to start doing stuff with stash, you'd want to checkout the LokiPoe.InGameState.StashPanel class. For main inventory stuff, LokiPoe.InGameState.InventoryPanel. For a much better list, check out: An Overview of Loki: Exilebuddy's API for Path of Exile.

      Town logic will be added into the Beta soon, there just wasn't enough time to put together something that wasn't rushed, and it's a good idea to not use rushed code in critical areas, like town. If the b to messes up outside of town or looks derpy, it doesn't matter since no one is really watching like in town.
       
    9. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
      RNG Jesus Wilson watches my bots, when it dances in town, I usually get the sacred ban hammer.
       
    10. iargue

      iargue Member

      Joined:
      Mar 20, 2012
      Messages:
      125
      Likes Received:
      2
      Trophy Points:
      18

      I don't see anything in the API for using the explore api?

      Can you provide any examples of using the api to explore an area?
       
    11. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
      I don't think it's in yet, WP and stuff the like are still getting worked on.
       
    12. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      The concept of exploring an area is not an API feature; it's simply a bot mechanic that can/has to be implemented by the user.

      If you want to use our system:

      There is a GridExplorer class that does all the work for you. In the next beta, how you use it will change because of the static Explorer class being removed (because I don't think most people want to have to do everything themselves, so I'm making what we have more reusable).

      In the next version, all you will have to do is:
      Code:
      if(AreaStateCache.Current.Explorer.HasLocation)
      {
         var location = AreaStateCache.Current.Explorer.Location;
      
         // move to location
      }
      
      That's it. Our GridExplorer is for full map coverage, in terms of visiting locations so you are able to receive spawn packets of all objects in the map. There's a few caveats though, but I'll go over it more in detail when I make a guide post to the new stuff (since this explorer is brand new).

      For your own system:

      The basic principle is to break the current area down into grid nodes, and then visit each node one by one. Terrain stuff is in LokiPoe.TerrainData:
      You need to register and have one post to see spoilers!
      Each node is 23x23 units (as per the game), that way, you can use some simple math to get the grid location based on position (NodeSize=23):
      Code:
      public Node PlayerNode
              {
                  get { return _nodes[LokiPoe.Me.Position.X/NodeSize, LokiPoe.Me.Position.Y/NodeSize]; }
              }
      
      Now, that's going to give you a whole bunch of nodes that you don't need to care about, because there is no map data present. You have two choices, either pathfind to every node to eliminate the unwalkable ones (takes a while on larger areas) or you use, ExilePather.NavigationGrid.IsWalkable (make sure to check out ExilePather in ObjectExplorer as we do provide pathfinding), to eliminate nodes that don't have any walkable points on them.

      Once you have a grid of nodes and at least a walkable point for each, exploration is just pathfinding to that position, then moving there. You'll want some flags associated with each node to keep track of if you've been there or not, but that's about all there is really.

      For the new Beta, there's an IExplorer interface users can design around for a consistent way to have exploration handled. Your explorer would implement that interface, and then you can easily write code that uses IExplorer, and swap between implementations in your own bot.
       
    13. iargue

      iargue Member

      Joined:
      Mar 20, 2012
      Messages:
      125
      Likes Received:
      2
      Trophy Points:
      18
      A few more questions, is there a way to determine tile objects? Do we need to explore within a fixed distance to determine what tile is what?

      For example:

      There is a giant building with two paths along each side of it. Your explore node puts you right in the middle of that building. Would "isWalkable" tell you that you should ignore this node, or can you detect within a certain range that the tile for where you are walking is a building tile and not a normal path tile?

      Being able to check for tile objects and only following tiles that you have identified as path tiles seems to be the easiest way to prevent being stuck, though it will take a lot of work to determine every walk able path.
       
    14. pushedx

      pushedx Moderator Moderator Buddy Core Dev

      Joined:
      Sep 24, 2013
      Messages:
      4,252
      Likes Received:
      290
      Trophy Points:
      83
      For static geometry, that'll be in the pathfinding data no matter where your character position is. You don't check only the center for IsWalkable and stop there, for the very reason you mentioned. Instead, you create the set of 23x23 points that lie in the tile, eliminate the non-walkable ones, and then you are left with points that you can roughly use to travel to. All that really matters, is that you can pathfind to the point, but it's not the end of the world if you pick the wrong point that ends up not being pathfindable.

      The real goal is just to have a set of points you can walk to, to reach as close to full map coverage as possible. The client builds the map at instance load, so you know all tiles. To process them:
      Code:
      var tgts = LokiPoe.TerrainData.GetTgtEntries();
      for (var c = 0; c < tgts.GetLength(0); ++c)
      {
      	for (var r = 0; r < tgts.GetLength(1); ++r)
      	{
      		var e = tgts[c, r];
      		if (e == null)
      			continue;
      
      		var n = e.TgtName;
      	}
      }
      
      Then, you can generate the center of the tile with simple math: var pos = new Vector2i(c*23 + 12, r*23 + 12);

      From there, you can do your walkable checks around the center to find some point to reference. This is how the AreaStateCache.StaticLocations logic works. I just filter some known tiles to try and be able to "guess" where something is. That way, the explorer can attempt to move straight towards a dynamic location though static inference. Some areas don't have tiles that give away certain locations while others do. It's a little tricky trying to maintain and build around static tiles though, because they can change as map generation gets updated (which seems to happen a lot in this game).

      However, all this stuff doesn't help with avoiding getting stuck. Getting stuck is an entirelty different issue that stems from three main issues:
      1. The pathfinding data in dynamically modified as you move around the map. Trying to always use the latest version would result in a lot of bot stops and a ton of processing very frequently.
      2. Client collisions aren't in the pathfinding data, so there are cases where you can get blocked by something not on pathfinding, because the client's physics system is in play (this is a huge cause of desync as well).
      3. There are numerous client bugs where you can get stuck doing exactly what you're supposed to, and the only way to avoid it, is to not have the precision that a bot does.

      In short, most things in this game are incredibly messy, and there's no real way around it. You just have to code as best as possible to handle the issue as they come.
       

    Share This Page