• Visit Rebornbuddy
  • [Lisbeth] Your own personal crafter!

    Discussion in 'Archives' started by Neverdyne, Feb 12, 2015.

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

      Imsyu Member

      Joined:
      Dec 31, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      So i just woke up and tried your new version, added leatherworker under enabled classes as Leatherworker: 3 and tried making something and i got this errror


      09:46:41.765 D] System.ArgumentNullException: Value cannot be null.
      Parameter name: key
      at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
      at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
      at TreeSharp.Switch`1.RunSwitch(Object context)
      at TreeSharp.Switch`1.<Execute>d__2.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at TreeSharp.Decorator.<Execute>d__0.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at ff14bot.TreeRoot.()
       
    2. Miku_

      Miku_ New Member

      Joined:
      Jun 13, 2012
      Messages:
      39
      Likes Received:
      0
      Trophy Points:
      0
      First of all: Thank you Neverdyne for your dedication and this nice piece of plugin :) This plugin has big potential and I'm so excited to test it!

      Best regards,
      Mike
       
    3. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      Alright, just woke up. A bunch to reply to, so here it goes. First, the exception.

      Did your Orders have a "Strategy: Hasty And Kinky" field? Seems like that field was left blank so it deserialized into null. I'm going to fix this today so if you leave it blank it'll use "Hasty And Kinky" as default. This was a new addition yesterday, it let's you specify the strategy on a per order basis. For now, if you make the field on the order it shouldn't throw the exception.

      @ChuChu don't worry about linking code, everything one does here is basically open source :p The way the bot knows when an order is done, as you noticed, is it checks how many items with the order's ID you already have on your inventory when the order starts. So when she says "I'm going to craft XXX now." on the log, it makes the check, and then adds the Amount to it to know how many items you should end up at the end of the order. So Current + Amount = Total, then after each craft it checks if Current == Total. You can think of orders as "I want to make sure I have X of this when you're done." rather than "I want to craft this X times". The two are the same for recipes with a Yield of 1. But as you saw, if the Yield is > 1 then a fewer amount of crafts would result in the amount.

      I'm not sure I want to change this, here's my reasoning: usually it's the case that when you craft, what you want is to end up with X of an item. Your quest asks for one of X, so you make the order for one of X. If I changed this it would happen that, say, your quest asks you for 5 Knight's Bread, so you make the order for 5 Knight's Bread, but end up with 30 or whatever due to its yield. The bot made 5 crafts, not 5 Knight's Bread. That would be confusing, I think. On the other hand, I can see where you'd want that: leveling purposes. In that case you do want to make 5 crafts and not really 5 of the item. The only option I'd consider is implementing both ways, but that means changing quite a bit of the "is this order done?" logic, which will take me time since I got other priorities for now, like class switching and making plugins work with the bot. I like that you noticed this, though lol.

      @ZCW I see. Well, right now when Lisbeth crafts it asks "How can I get the most HQ out of this item?", what you're asking is to also add the question "In the fastest way possible?". That makes the problem a much harder one to solve. It's basically adding another constraint to an optimization problem with randomness in it already. In order to cheat, I could add a simple check like: If 3 Advanced Touches give you 100HQ, then just do that and careful synth at the end; else, use Hasty And Kinky's default behavior. The problem is that this requires the use of a quality formula to predict how much an Advanced Touch produces with your stats / recipe level / etc. Lisbeth does this for progress, and the formula took me a bit to get right. But I'll try find a good formula out there for quality.

      @Miku_ Thanks! Next update, you won't have to teach her recipes anymore she'll know all recipes in the game out of the box. I'll also test class switching, it's almost done.
       
    4. Imsyu

      Imsyu Member

      Joined:
      Dec 31, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      @neverdyne it was filled out as hasty and kinky tried re installing the plugin as well still same error
       
      Last edited: Feb 13, 2015
    5. ChuChu

      ChuChu New Member

      Joined:
      Feb 11, 2015
      Messages:
      9
      Likes Received:
      0
      Trophy Points:
      0
      Okay that is fine I was thinking perhaps the behavior is you want to end with X items. Then my other suggestions is dividing the Amount that users specified by the amount that each synth will produce.

      Reason being is: If i want to make 30 Fishmeal your bot expects me to have 90 Lominsan Anchovy instead of realizing that I only need 9 Lominsan Anchovy because each synth produces 12.

      I'll have to look around some more seeing if the user specified amount is the proper place.
       
    6. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      Ahh, I see what you're saying. So it's a problem with the component planning it without considering yields. Hmm, I don't know an easy fix for this. Yields are random, right? So I think the best thing would be to change the component planning entirely...friggin culinarians!

      Edit: On the other hand, if yields are not random it's an easy fix.
       
      Last edited: Feb 13, 2015
    7. tw1sted

      tw1sted New Member

      Joined:
      Jul 4, 2014
      Messages:
      32
      Likes Received:
      0
      Trophy Points:
      0
      whoa thanks! It is working perfectly
       
    8. Dgame

      Dgame Member

      Joined:
      Aug 19, 2014
      Messages:
      320
      Likes Received:
      0
      Trophy Points:
      16
      Yields are fixed.
       
    9. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      So yeah I thought of a way to do it, but it would mean rewriting a lot of stuff. It would basically mean transversing orders on a depth first search through their ingredients and craft them one by one, checking to see if the requirements are met. I'll fix this once Mashtag exposes data to all your known recipes. Right now the only way to transverse recipes to search for the lowest craftable one in the graph means switching the window to each recipe and getting its data that way. That's too ugly and slow, but once known recipes is readily available the search is faster and simpler. This will have to wait, sadly :(
       
    10. ChuChu

      ChuChu New Member

      Joined:
      Feb 11, 2015
      Messages:
      9
      Likes Received:
      0
      Trophy Points:
      0
      That is fine. I found a work around anyways. Is the only way to really test if a fix works is by using it on the client? Or is there another way. I wouldn't mind seeing if putting a quick divide in a spot fixes the issue as a dirty fix. :p

      Then again I'm not sure we have a way to know how much yield a recipe will output with out having the user specify it when they are telling your bot what to make and how much to make.
       
    11. Eklipse

      Eklipse New Member

      Joined:
      Dec 13, 2014
      Messages:
      208
      Likes Received:
      0
      Trophy Points:
      0
      any chance its possible to have the plugin quick synth the required items ? I.e i want to craft 99 walnut bread, it would know to quick synth the maple syrup and smooth butter ?
       
    12. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      New Version 1.1

      - Class switching. You got to specify your gear set indexes on the Settings file.
      - Made Starry Night Miter a little bit smarter.
      - Taught Lisbeth all the recipes in the game so you don't have to. If I'm still missing one, tell me here.

      @ChuChu, you could try. Just alter the .cs file wherever you want and run Rebornbuddy. Only way to test it out.
      @Eklipse, the next strategy I'll add is just a quick synth without quality. But straight up Quick Synth, I'm not sure the API supports that yet, I'll check.
       
    13. Imsyu

      Imsyu Member

      Joined:
      Dec 31, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      still getting the same error this is my settings

      Craftmanship: 342
      Control: 345
      UseHqMatsFirst: True
      Debug: False
      GearSets:
      Armorer: 12
      Leatherworker: 7

      - Name: Boarskin Culottes
      Amount: 11
      Class: Leatherworker
      Strategy: Hasty And Kinky

      and this is the error

      [21:40:24.476 D] System.ArgumentNullException: Value cannot be null.
      Parameter name: key
      at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
      at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
      at TreeSharp.Switch`1.RunSwitch(Object context)
      at TreeSharp.Switch`1.<Execute>d__2.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at TreeSharp.Decorator.<Execute>d__0.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
      at TreeSharp.Composite.Tick(Object context)
      at ff14bot.TreeRoot.()

      not sure what im doing wrong was working fine before the 2nd update D:
       
    14. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      Hmm, that's really strange. Could you set Debug: True and give me a log please? I'll have to dig in.
       
    15. Imsyu

      Imsyu Member

      Joined:
      Dec 31, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      i turned on debug and this is the logs


      22:11:07.127 D] Reloading AssemblyLoader<ff14bot.Interfaces.ICombatRoutine> - Initializing
      [22:11:08.587 D] [RoutineManager] Routines have been reloaded. Current class-specific list:
      [22:11:08.587 N] No supported routines found for this job class.
      [22:11:12.350 N] [Lisbeth] Seems like I know 3191 recipes!
      [22:11:12.351 N] [Lisbeth] Craftmanship: 342 | Control: 345
      [22:11:12.356 N] [Lisbeth] Generation 0 - [Order] Recipe: Boar Leather (406) | Amount: 11
      [22:11:12.379 N] [Lisbeth] As you wish, master! This is what I plan to craft:
      [22:11:12.379 N] [Lisbeth] 0. [Order] Recipe: Boar Leather (406) | Amount: 11
      [22:11:12.673 N] Connection to 192.99.148.87:31214 established.
      [22:11:12.686 D] Added new hook [TreeStart] d16d23a1-f661-4632-b28b-8460182cea8e
      [22:11:12.730 N] [Lisbeth] I'll craft 11 Boar Leather now.
      [22:11:12.730 N] [Lisbeth] Expected Progress Values:
      [22:11:12.731 N] [Lisbeth] Basic Synthesis: 110 | Careful Synthesis: 99
      [22:11:12.731 N] [Lisbeth] Rapid Synthesis: 275 | Careful Synthesis II: 132
      [22:11:14.855 N] [Synthesize] Crafting Boar Leather (5282) via 406

      it stops after that and doesnt continue to craft or anything
       
    16. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      Alright, I think I fixed it. Try the new version.
       
    17. MatthiasF

      MatthiasF New Member

      Joined:
      Jan 30, 2015
      Messages:
      26
      Likes Received:
      0
      Trophy Points:
      0
      Settings and order:

      Code:
      Craftmanship: 0
      Control: 0
      UseHqMatsFirst: True
      Debug: True
      GearSets:
        Goldsmith: 4
        Leatherworker: 5
        Culinarian: 8
        Weaver: 10
      Code:
      - Name: Cotton Yarn
        Amount: 99
        Class: Weaver
        Strategy: Hasty And Kinky
      
      - Name: Undyed Cotton Cloth
        Amount: 99
        Class: Weaver
        Strategy: Hasty And Kinky

      i Get this error:

      Code:
      [22:50:13.013 N] [Lisbeth] Seems like I know 3191 recipes!
      [22:50:13.028 N] [Lisbeth] Craftmanship: 91 | Control: 91
      [22:50:13.037 N] [Lisbeth] Generation 0 - [Order] Recipe: Cotton Yarn (506) | Amount: 99
      [22:50:13.037 N] [Lisbeth] Generation 0 - [Order] Recipe: Undyed Cotton Cloth (511) | Amount: 99
      [22:50:13.055 N] [Lisbeth] Generation 1 - [Order] Recipe: Cotton Yarn (506) | Amount: 164
      [22:50:13.060 N] [Lisbeth] Pfft, don't be ridiculous. How do you expect me to craft without the ingredients?!
      [22:50:13.060 N] [Lisbeth] Either teach me how to make these, or go get them!
      [22:50:13.069 N] [Lisbeth] Missing: 328 Cotton Boll
      [22:50:13.484 N] Connection to 192.99.148.87:31214 established.
      [22:50:13.499 D] Added new hook [TreeStart] 5eaa92da-2c52-4126-b133-ff6b1f8a382a
      [22:50:13.501 D] Inserted new hook [TreeStart @0] 867f9987-9117-4db9-a716-713bdee6ce36
      [22:50:13.501 N] [Agil] Hooked.
      [22:50:13.543 N] [Lisbeth] Finished all your orders. Now, where's my money!?
      [22:50:13.543 N] Stopping the bot.
      [22:50:13.543 D] CurrentBot.Stop()
      [22:50:13.547 N] Connection closed! 192.99.148.87:31214
      [22:50:13.549 D] TreeHooks.Instance.ClearAll()
      [22:50:13.549 N] Clearing all hooks.
      [22:50:13.549 N] Hooks cleared, re-creating behaviors
      [22:50:13.549 D] Replaced hook [RebornCo.Combat] eefb522c-68eb-4752-ae7c-e1574c9f389c
      [22:50:13.549 D] Replaced hook [RebornCo.Pull] 02a9d5b7-c91e-423e-a566-4d51a07dab13
      [22:50:13.549 D] Replaced hook [RebornCo.Rest] d5dfc507-c2a0-46bd-a1a5-72fd134d64fe
      [22:50:13.549 D] Replaced hook [RebornCo.CombatBuffs] e3fd45d2-80b8-4791-8b61-5bdf04bede38
      [22:50:13.549 D] Replaced hook [RebornCo.Heal] f6b7f3f9-336d-4ebd-8700-68c5b45a3595
      [22:50:13.549 D] Replaced hook [RebornCo.PreCombatBuffs] 7ed524f1-588c-41ea-b1ae-12ab3a1bf1c0
      [22:50:13.549 D] Navigator.Clear()
      [22:50:13.551 V] [Poi.Clear] Reason: Bot stopped
      [22:50:13.551 D] OnStop event
      [22:50:13.551 D] OnStop Event Invoking
      [22:50:13.551 N] [Agil] Unhooked.
      [22:50:13.559 N] Bot Thread Ended. Was this requested?
      if i only put in undyed cotton cloth, i get the same error message.
       
    18. Imsyu

      Imsyu Member

      Joined:
      Dec 31, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      ill give it a try in 12 hrs after work lol xD ill let you know<3 appreciate all the great plug ins
       
    19. Neverdyne

      Neverdyne Community Developer

      Joined:
      Sep 12, 2014
      Messages:
      644
      Likes Received:
      18
      Trophy Points:
      18
      Do you have Cotton Bolls in your inventory? Lisbeth is saying that you need 328 of those.
       
    20. MatthiasF

      MatthiasF New Member

      Joined:
      Jan 30, 2015
      Messages:
      26
      Likes Received:
      0
      Trophy Points:
      0

      Yes 198 pieces.
       
    Thread Status:
    Not open for further replies.

    Share This Page