• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • No Shiphand Event Tracking

    Discussion in 'Wildbuddy Developers' started by Lukov, Apr 3, 2015.

    1. dotbydot

      dotbydot Member

      Joined:
      Sep 29, 2011
      Messages:
      54
      Likes Received:
      0
      Trophy Points:
      6
      By optional you mean the guys being sucked out the breaches right? Does it even matter if you are able to get this done in time? Since there is no way I see the bot being able to get that 1 cargo crate for the other optional. Or were you able to get it to work reliably somehow?! If you did I would really love to see that.
       
    2. walter

      walter Active Member

      Joined:
      Jun 25, 2012
      Messages:
      1,112
      Likes Received:
      10
      Trophy Points:
      38
      Things are a lot different here than buddywing. Wildbuddy is the most advanced bot to date it just needs few things for Apoc to finish up when he has free time.


      Apoc is around and STILL SUPPORTS this bot. Getting him to remesh a few things for shiphands but as you can see few other issues but working them as we go along. Sooner or later it will all work perfectly.

      I have a routine update going to be pushing soon of some changes etc. Big thing I need to do is get a guide out for people who are just clueless of how things work. Deadstar will pick up sooner or later here.
       
      Last edited: Apr 11, 2015
    3. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0

      Yeah I've been trying to stimulate the community quite a bit since joining the WB licensees.

      You should poke Apoc to seeing if he can open source the ProfileBot, would allow the community to do some pretty great things while he's distracted. *nudge nudge* ;)
       
    4. Lukov

      Lukov New Member

      Joined:
      Apr 3, 2015
      Messages:
      63
      Likes Received:
      2
      Trophy Points:
      0
      Once the remesh goes through, i'll be able to finish the Outpost shiphand.

      We have the issue of Part B: The Loop.

      We need to
      1. Leave group/instance.
      2. Requeue for Shiphand
      2.a Optional: Queue for Random (Higher Rewards)
      2.b Keep declining until we get the correct shiphand (there any LUA code to check where the queue pop takes us?)
      3. Accept queue pop
      4. Loop the profile.

      Also need to do the GameManager.ForceUpdate() after every loading screen.

      I don't think you can implement any of that in just a profile.
       
    5. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      All of that is easily doable with just the ghetto implementations I've been making.

      As for looping, also fairly easy if you stuff everything into a while loop of sorts.
       
    6. dotbydot

      dotbydot Member

      Joined:
      Sep 29, 2011
      Messages:
      54
      Likes Received:
      0
      Trophy Points:
      6
      Here is an example of what I did for profile looping.

      Code:
      <While Condition="1==1">
          <If Condition="GameManager.CurrentWorldId == 2149" >
                shiphand code
          </If>
          <Wait Time="1" Display="Waiting till we are inside a shiphand"/>
      </While>
       
    7. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Yus, in psuedo code the block would look something like this:

      HTML:
      
      <while>
      
          <If Condition='GameManager.CurrentWorldId == 12391283912' >
              <If Condition="Queue('Veteran: Random Shiphand')" />
              <If pending && instance == target>
                  <If Condition='Join()' />
              </If>
          </if>
      
          <If Condition='GameManager.CurrentWorldId == potato' >
              <!-- instance code here -->
          </If>
      
          <If blah blah blah>
              <!-- another instance here -->
          </if>
      
      </While>
      
      I don't know if the include tag continues the script afterwards, if so (and it should?), that would greatly clean it up. If not, that's what outlining is for! ;) )

      As for fixing the ForceUpdate() issue, I'll also post an overwrite for the ProfileBot as a temporary fix tomorrow (until it gets pushed in an update)
       
    8. walter

      walter Active Member

      Joined:
      Jun 25, 2012
      Messages:
      1,112
      Likes Received:
      10
      Trophy Points:
      38
      '

      Shiphand has had its mesh updated and it may need a few changes for LOS checking but I think the rest is doable though checking GUI in LUA.

      I found you can run any Iron Python code and it will reset the bot to the instance after load screen.
       
      Last edited: Apr 11, 2015
    9. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Sorry for the delay in code candy for my Shiphand feller's. Life got in the way and distracted by my questing profile endeavors! I'll be updating it after fixing a few slight issues.

      What's completed in the above list:
      1, 2, 2a, 3 ;)
       
    10. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Updated. Enjoy!
       
    11. Lukov

      Lukov New Member

      Joined:
      Apr 3, 2015
      Messages:
      63
      Likes Received:
      2
      Trophy Points:
      0
      CanInteract needs a slight modification to work correctly.
      Needs to check for Type interact and if it's not Busy.

      Code:
      return GameManager.Actors.Values.Any(o => o.IsValid && o.CreatureId == actorId &&
       (o.ActivationTypes.Contains(ActivationType.Interact) && !o.ActivationTypes.Contains(ActivationType.Busy)) && 
      o.Position.Distance(new Vector3(x, y, z)) <= radius);
       
    12. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Done. :)
       
    13. Lukov

      Lukov New Member

      Joined:
      Apr 3, 2015
      Messages:
      63
      Likes Received:
      2
      Trophy Points:
      0
      A function to group queue would be useful for multiple bots.
       
    14. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Lets work on getting a single bot working first. ;)
       
    15. Lukov

      Lukov New Member

      Joined:
      Apr 3, 2015
      Messages:
      63
      Likes Received:
      2
      Trophy Points:
      0
      Testing it, we're missing a way to reinitialize the bot.

      I know that executing any python code fixes it, oddly enough. Don't even need to use the GameManager.ForceUpdate()
      Maybe a pulsar that runs some random python code would work?
       
    16. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      It's possible, the issue is that I don't know how the PEC is implemented, so if by chance it's calling a ForceUpdate() somewhere in the mix, then it'll just be easier to call a ForceUpdate anyways. It'll fire so infrequently that performance isn't really an issue. I'll get a BotBase override out in a moment as a temporary solution until it's fixed.
       
    17. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      Profile Bot (Override) added, please extract this to your Bots folder!
       
    18. Lukov

      Lukov New Member

      Joined:
      Apr 3, 2015
      Messages:
      63
      Likes Received:
      2
      Trophy Points:
      0
      This bot override doesn't appear to be doing anything.
      Just chucks a bunch of exceptions when I tried it out.

      Code:
      Exception while pulsing Buddy.ProfileBotOverride.ProfileBotOverrideSystem.Exception: Only part of a ReadProcessMemory or WriteProcessMemory request was completed, at addr: 92BFC08010, Size: 1A77
         at GreyMagic.ExternalProcessMemory.ReadByteBuffer(IntPtr addr, Void* buffer, Int32 count)
         at GreyMagic.MemoryBase.Read[T](IntPtr addr)
         at Buddy.Wildstar.Engine.PerCachedValue`1.get_Value()
         at Buddy.ProfileBot.ProfileBot.get_CanBePulsed()
         at Buddy.Wildstar.Engine.Pulsator.Pulse()
      
      Unhandled exception!Buddy.Coroutines.CoroutineUnhandledException: Exception was thrown by coroutine ---> System.Exception: Only part of a ReadProcessMemory or WriteProcessMemory request was completed, at addr: 92BFC08010, Size: 1A77
         at GreyMagic.ExternalProcessMemory.ReadByteBuffer(IntPtr addr, Void* buffer, Int32 count)
         at GreyMagic.MemoryBase.Read[T](IntPtr addr)
         at Buddy.Wildstar.Engine.PerCachedValue`1.get_Value()
         at Buddy.Wildstar.Game.Actors.Actor.get_IsDead()
         at Buddy.Wildstar.BotCommon.CombatRoutineBase.MF^>Y\&\]\&!9cj)|G:b^TlLZER.()
      --- End of stack trace from previous location where exception was thrown ---
         at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
         at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
         at Buddy.Coroutines.Coroutine.‏​‬*​*‎‎‎

‪‬‏‏****​***‬**‎‬‪*.~z`)n\*6j9?b/4d\[>\*L2vs%uU.()
         --- End of inner exception stack trace ---
         at Buddy.Coroutines.Coroutine.*
‬
*‎‬
‏‏*‫‎
‏
*‪***‏‏
*(Boolean )
         at Buddy.Coroutines.Coroutine.**‏*​‫*
​‪​‎‪​‬*‫
*‎‎‎‬
**‪‪**(Boolean )
         at Buddy.Coroutines.Coroutine.Resume()
         at Buddy.Wildstar.Engine.CoroutinePulsable.5yP;JJ4e'gcJ\,G(\&Gw^mRXhy.()
       
    19. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      I apparently need to do more testing. xD

      EDIT: Nevermind, I compressed it, realized a change I had to make, tested it, and gave the initial one. =P
       
      Last edited: Apr 14, 2015
    20. Deathdisguise

      Deathdisguise Community Developer

      Joined:
      Mar 7, 2015
      Messages:
      678
      Likes Received:
      6
      Trophy Points:
      0
      There, try that! ;)
       

    Share This Page