• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Plugin] MapRunner

    Discussion in 'Archives' started by ExVault, Oct 27, 2014.

    Thread Status:
    Not open for further replies.
    1. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      Maybe later. I see no reason in it. You will spend more alterations for rerolling than profit you get from extra pack size and rarity.
       
    2. Fonillius

      Fonillius New Member

      Joined:
      Sep 14, 2012
      Messages:
      68
      Likes Received:
      1
      Trophy Points:
      0
      Adding parameter "if no maps found - nowhere - run basicgrindbot instead" -or similiar would be a cheerful thing to see in such an excellent plugin, and "when map found - activate maprunner" ofcourse.

      Also it would be pleasent to see bot trying some daily quests as there isn't any application implemented to the bot yet. "Maprunner-basicgrindbot- and a new daily-quest-plugin" combination would certainly raise points on this project! :cool:
       
      Last edited: Dec 27, 2014
    3. tozededao

      tozededao Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,225
      Likes Received:
      5
      Trophy Points:
      38
      I'm dropping by just to say thanks again for this amazing plugin. Seeing how you've implemented the logic in how to roll maps makes me thinking that it would be awesome to have something similar for strongboxes.

      Each strongbox type with a set of "acceptable" affixes and "banned" affixes, when we had a roll that had at least one acceptable affix and no banned affixes it was good to go.

      I had a list made for whenever there was such thing or when I had the knowledge to do it myself.

      http://i.imgur.com/h4qZOXY.png

      Until the bot/cr/plugin was able to run away from Ice Nova strongboxes, easiest way should be Smoke Mine, most likely everyone has to ban them.

      Jeweller Strongboxes should be Corrupted in order to get some sweet items aswell.
       
      Last edited: Jan 3, 2015
    4. Simia

      Simia New Member

      Joined:
      Sep 13, 2014
      Messages:
      48
      Likes Received:
      0
      Trophy Points:
      0
      Would it be possible to make the bot complete the map before it returns and sells items? :)
       
    5. cayman123

      cayman123 New Member

      Joined:
      May 7, 2014
      Messages:
      29
      Likes Received:
      0
      Trophy Points:
      1
      lost a character due to a voidspawn in a map - i cant figure out why my code isnt working inside maprunner plugin, he just tries to ignore the scary monster but doesnt tp outside+remake.

      not sure if Voidspawn is correct since i havent found one to be able to check the object explorer, but MonsterBloodlinesBeaconOnDeath is correct AND working outside of the Maprunner Plugin(also Animated Guardian skip works), the attached log below shows a beaconondeath mob - he just ignored it and kept going which isnt really ideal and what he is supposed to do.

      Code:
      				if (m.ExplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")) ||
                      m.ImplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")))
      				{
      					 // 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.ExplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesBeaconOnDeath")) ||
                      m.ImplicitAffixes.Any(a => a.InternalName.Contains("MonsterBloodlinesBeaconOnDeath")))
      				{
      					 // 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.Name == "Animated Guardian" || 
      					 m.Name == "Kuduku" || 
      					 m.Name == "Congealing Mud" || 
      					 m.Name == "Congealed 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;
                      }
      

      this is the appropriate logfile, maybe someone can see why its not working here
      Code:
      2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin Chicken is enabled.
      2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin GemLeveler is enabled.
      2014-12-27 06:48:26,120 [29] DEBUG Logger (null) - [Start] The plugin MapRunner is enabled.
      2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] The plugin Scheduler is enabled.
      2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] The plugin StuckDetection is enabled.
      2014-12-27 06:48:26,121 [29] DEBUG Logger (null) - [Start] PlayerMover.Instance: Loki.Bot.v3.DefaultPlayerMover.
      2014-12-27 06:48:26,218 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
      2014-12-27 06:48:26,221 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 15365 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
      2014-12-27 06:48:26,255 [29] INFO  Logger (null) - [IdTask] We cannot id items out of town/hideout. Skipping this task until an area change or restart.
      2014-12-27 06:48:26,256 [29] INFO  Logger (null) - [WithdrawTask] We cannot withdraw items out of town/hideout. Skipping this task until an area change or restart.
      2014-12-27 06:48:26,269 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
      2014-12-27 06:48:26,269 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 14221 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
      2014-12-27 06:48:26,271 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 694 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Brittle Poacher
      2014-12-27 06:48:26,270 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
      2014-12-27 06:48:26,770 [29] DEBUG Logger (null) - [ResetAnchorPoint] Setting AnchorPoint to {1914, 1183} for 1904110366.
      2014-12-27 06:48:26,770 [29] DEBUG Logger (null) - [ResetAnchorPoint] Setting CurrentAnchorPoint to {1914, 1183} for 1904110366.
      2014-12-27 06:48:26,775 [29] INFO  Logger (null) - [SetNewInstanceOverride] MapTier2_4 = True
      2014-12-27 06:48:26,775 [29] DEBUG Logger (null) - [Blacklist] Blacklisting object with id 26644 for 01:00:00 (Expires at: 12/27/2014 08:48:26). Reason: Scary monster: Sparking Mage
      2014-12-27 06:48:27,848 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
      2014-12-27 06:48:27,849 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2022, 1205} distance: 87
      2014-12-27 06:48:28,910 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
      2014-12-27 06:48:28,910 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2022, 1205} distance: 43
      2014-12-27 06:48:30,016 [29] DEBUG Logger (null) - [TrackMobsTask] Cached monster locations: 4
      2014-12-27 06:48:30,016 [29] DEBUG Logger (null) - [TrackMobsTask] Moving to monster {2038, 1220} distance: 16
      2014-12-27 06:48:30,263 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 1/50 attempt to kill it.
      2014-12-27 06:48:30,498 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 2/50 attempt to kill it.
      2014-12-27 06:48:30,728 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 3/50 attempt to kill it.
      2014-12-27 06:48:30,955 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 4/50 attempt to kill it.
      2014-12-27 06:48:31,177 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 5/50 attempt to kill it.
      2014-12-27 06:48:31,972 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 6/50 attempt to kill it.
      2014-12-27 06:48:32,207 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 7/50 attempt to kill it.
      2014-12-27 06:48:32,458 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 8/50 attempt to kill it.
      2014-12-27 06:48:32,698 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 9/50 attempt to kill it.
      2014-12-27 06:48:32,934 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 10/50 attempt to kill it.
      2014-12-27 06:48:33,158 [29] DEBUG Logger (null) - [TrackMobsTask] Alive monster is nearby, this is our 11/50 attempt to kill it.
      2014-12-27 06:48:33,164 [1] INFO  Logger (null) - [Stop] Now requesting the BotThread to stop.
      
       
    6. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      tozededao
      Thanks for kind words.
      Yea, making strongbox plugin is not so hard. Maybe Ill do that in future.
      I usually make tanky melee builds that can handle pretty much anything except Megaera and Palace Dominus. So, I do not really feel the need in such plugin.

      Simia
      Townrun triggers based on free space percent in your inventory. It will be changed in next version.

      cayman123
      MapRunner does not utilize "BasicGrindBotSettings.Instance.NeedsTownRun" and "AreaStateCache.SetNewInstanceOverride".
      It will come to the map again and again until no portals left.

      To change that you have to set MapRunner.IsOnMapRun to false.
      The proper place for that is TrackMobsTask.cs
      line 119:
      Code:
      foreach (var mob in mobs)
                  {
                      //detect your mob
                      if (mob.ExplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")) ||
                      mob.ImplicitAffixes.Any(a => a.InternalName.Contains("Voidspawn")))
                      {
                              //tell the plugin that map run is finished
                              MapRunner.IsOnMapRun = false;
                              //chicken to char selection screen
                              Coroutines.LogoutToCharacterSelection()
                              return;
                       }
      
                      if (AllMobs.ContainsKey(mob.Id) || ProcessedMobs.Contains(mob.Id)) continue;
                      AllMobs.Add(mob.Id, mob.Position);
                      ProcessedMobs.Add(mob.Id);
                  }
      If you are blacklisting that mob in CR, this code will not work sometimes, because as you can see TrackMobsTask scans only non-blacklisted mobs.
       
      Last edited: Dec 27, 2014
    7. Doxon

      Doxon New Member

      Joined:
      Dec 20, 2014
      Messages:
      15
      Likes Received:
      0
      Trophy Points:
      1
      So would it not be possible for me to make the bot check remaining while it is still in the instance? Sorry if I am asking too many questions just trying to learn this fast.
      I'm sure I am not the only one who has a surplus of 68-69 maps for the bot to run, the time the bot would save if it didn't have hunt 1-2 mobs for 1-2mins. I am aware of remaining check on town run but it doesn't seem to be enough.
       
    8. darkbluefirefly

      darkbluefirefly Community Developer

      Joined:
      Nov 8, 2013
      Messages:
      1,927
      Likes Received:
      18
      Trophy Points:
      38
      Hi Doxon,
      From my Experience, try to learn things so you will know them, learning them fast usually isn't always the best solution.
      That being said, glad to see you are trying to learn, and keep up the curiosity and motivation.
       
    9. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      You can add timer to the RemainingCheckTask so it will execute in certain time intervals, rather than only after town run. It actually requires 3 additional lines of code.
      You need to register and have one post to see spoilers! You should also set "MinMonsterRemaining" in MapRunner.cs to your desired value.

      Use "Upgrade Level" to get rid of excess maps.


      You can modify line 37 in TrackMobsTask:
      Code:
      if (AllMobs.Count < YourMinMobValueHere) return false;
      However that cannot be guaranteed to work only on "map exploration ending".
       
      Last edited: Dec 27, 2014
    10. mrfuture

      mrfuture Member

      Joined:
      Nov 12, 2014
      Messages:
      86
      Likes Received:
      0
      Trophy Points:
      6
      Can you tell me why there is still space to pickup items and character is just going back to vendor / stash ?

      Also, is it possible to make a pickup order ? so we pickup uniques / currency first so bot wont go back with 0 tps left without picking up something more important than just rare?
       
      Last edited: Dec 27, 2014
    11. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      Townrun triggers based on free space percent (35%) in your inventory. It will be changed in next version.

      MapRunner utilizes default LootItemTask. It can by modified only by bot developer, not me.
      Is it possible via separate plugin? - Yes.
       
      Last edited: Dec 27, 2014
    12. Doxon

      Doxon New Member

      Joined:
      Dec 20, 2014
      Messages:
      15
      Likes Received:
      0
      Trophy Points:
      1
      When I add in your code I get this when the program starts.

      Code:
      Compiler Error: c:\Users\PC\Desktop\ExileBuddy\Plugins\MapRunner\RemainingCheckTask.cs(18,11) : error CS0246: The type or namespace name 'Stopwatch' could not be found (are you missing a using directive or an assembly reference?)
       
    13. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      Add "using System.Diagnostics;" to the first line.
       
    14. rosefx

      rosefx New Member

      Joined:
      Dec 23, 2014
      Messages:
      28
      Likes Received:
      0
      Trophy Points:
      1
      can you post mapruner with those remaning mobs updates? cuz i dont know how to edit those files :( greets
       
    15. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      You can edit those files with standard text editor.
      Here is the edited file for you.

      Please consider: that code is for specific needs of the specific user. It was given as an example. It was not tested. It might not even work.
       

      Attached Files:

    16. rosefx

      rosefx New Member

      Joined:
      Dec 23, 2014
      Messages:
      28
      Likes Received:
      0
      Trophy Points:
      1
      thanks i will try to test it tomorrow ! greetings ! btw you cant implement auto /remaining into plugin ?
      at least option to set monsters remaining then redo map
       
    17. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      I've just posted a file with "auto" remaining check for you. The only thing you have to do is set your preferred time interval.
      And how to set MinMonsterRemaining was already explained on previous page.

      Currently I am satisfied how plugin does it's job (not quite, to be honest). For example:
      - in the next version you will be able to set specific stash tab only for maps. Bot will put newly found maps only to that specific tab and take maps only from that tab.
      - you will be able to set exploration complete percent, as in basic grind bot. Bot will explore the map until your percent, instead of always 100%.
      - plugin will use default town run task, so bot will go to the town only if newly dropped item cannot be placed into inventory, instead of going to the town based on percentage of your inventory free space.

      Those are the things that I feel plugin needs.
      If you have specific needs, you can freely ask me for example of how that can be done. But the rest you have to do by yourself.
       
      Last edited: Dec 28, 2014
    18. rosefx

      rosefx New Member

      Joined:
      Dec 23, 2014
      Messages:
      28
      Likes Received:
      0
      Trophy Points:
      1
      still amazing work :) ye i was shocked how good this plugin is ... really it do thing's with map like real people would do i mean fully automated but omg ... you have skills :D one i would like to have is "dodge function" kind of kite..
       
    19. ExVault

      ExVault Moderator Moderator Buddy Core Dev

      Joined:
      Oct 23, 2013
      Messages:
      748
      Likes Received:
      57
      Trophy Points:
      28
      You are overrating my skills :rolleyes:
      But thanks for the kind words.
       
    20. IeU

      IeU Member

      Joined:
      Jul 20, 2010
      Messages:
      830
      Likes Received:
      11
      Trophy Points:
      18
      For some reason it goes thru every stash tab every new run, it seems it does not "remember" the last tab it found the most maps . . .
       
    Thread Status:
    Not open for further replies.

    Share This Page