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.
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.
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*
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.
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.
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>
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)
' 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.
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
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);
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?
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.
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.()
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