What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

[Release] RebornBuddy64 Version 1.0.681 - DirectX11 / x64 bit compatible

Version 322
Code:
SynthesisSimple window added
SynthesisSimpleDialog window added
Synthesis.Close() added

CraftingLog.QuickSynthesize() added

RecipeData.HasCraftedRecipe added
 
On desynthesis... I think I got the offsets (0x230 and 0xEA) you need to fix the unique/untradable checkbox check. Though you can just SendAction(1,3,0) the SalvageDialog window and it'll click the button even if it's disabled due to not being checked.

Code:
ClearLog();
AtkAddonControl windowByName = RaptureAtkUnitManager.GetWindowByName("SalvageDialog");
if (windowByName != null)
{
    IntPtr intPtr = Core.Memory.Read<IntPtr>(windowByName.Pointer + 560);
    if (intPtr != IntPtr.Zero)
    {
        var uniqueUntradeableCode = Core.Memory.Read<byte>(intPtr + 234);
        if (uniqueUntradeableCode == 5)
            Log("Checked");
        else if (uniqueUntradeableCode == 1)
            Log("Not Checked");
    }
}
 
On desynthesis... I think I got the offsets (0x230 and 0xEA) you need to fix the unique/untradable checkbox check. Though you can just SendAction(1,3,0) the SalvageDialog window and it'll click the button even if it's disabled due to not being checked.

Code:
ClearLog();
AtkAddonControl windowByName = RaptureAtkUnitManager.GetWindowByName("SalvageDialog");
if (windowByName != null)
{
    IntPtr intPtr = Core.Memory.Read<IntPtr>(windowByName.Pointer + 560);
    if (intPtr != IntPtr.Zero)
    {
        var uniqueUntradeableCode = Core.Memory.Read<byte>(intPtr + 234);
        if (uniqueUntradeableCode == 5)
            Log("Checked");
        else if (uniqueUntradeableCode == 1)
            Log("Not Checked");
    }
}

There was a bit more to it then that. One of the function calls that I was using to refresh the window after the changing its status had become inlined. Had to find a replacement.

New version coming now that supports desynth
 
Can you please add this AgentInterface for the the trusts, the vtable offset is in the file. I named it Dawn since that's what the UI window is called and how it's referenced in the data files. Like how desynthesis is salvage. I got the whole RemoteWindow reversed but much of it is logic dependent so i'll include this version that has base functionality . The buttons are all SendActions and I'm using public ___Elements functions to reference the abundance of info so you'll want to replace that part with your version so the offsets update.
 

Attachments

Can you please add this AgentInterface for the the trusts, the vtable offset is in the file. I named it Dawn since that's what the UI window is called and how it's referenced in the data files. Like how desynthesis is salvage. I got the whole RemoteWindow reversed but much of it is logic dependent so i'll include this version that has base functionality . The buttons are all SendActions and I'm using public ___Elements functions to reference the abundance of info so you'll want to replace that part with your version so the offsets update.
To include something like this in the main bot I would need patterns for all the different offsets, and if possible the indexes for the element accessors for the windows. Deepdungeon has an example of what I am talking about. There are plugins for ida to generate them, and I think ghidra has them the ability to create them built in.

You can add your own agent to the active agent list by finding its id via AgentModule.FindAgentIdByVtable then calling AgentModule.TryAddAgent.


I am also considering a small change to how RaptureAtkUnitManager.GetWindowByName works. Currently it returns immediately the moment the window is added to the active list. I've noticed when doing dailies sometimes the game will crash and it seems to be a rare race condition because of how fast rb interacts with windows. So my current plan is to delay adding windows until a few frames have passed. I'd prefer if I could locate a common variable that indicates if a window is finished initialization but i haven't found anything simple like that yet.
 
FYI: The update that came out before broke sidestep.

[07:08:16.787 N] Compiler Error: \Plugins\SideStep\SidestepPlugin.cs(212,60) : error CS0103: The name 'OmenOverrideManager' does not exist in the current context
 
FYI: The update that came out before broke sidestep.

[07:08:16.787 N] Compiler Error: \Plugins\SideStep\SidestepPlugin.cs(212,60) : error CS0103: The name 'OmenOverrideManager' does not exist in the current context

Pushing a new build now. I haven't finalized the OOM yet and is still in a work in progress.
 
Version 326

Code:
AvoidanceManager:
Weight running out to prefer being closer to the caster to remain in melee range
Don't progress avoid paths if we won't get any closer then we are now

SideStep:
Cleanup code
Add support for cross shaped omens

QuestDevTools:
Remove alphabetical sorting on the quest list
Add FlyTo
Add GetTo
 
Version 327
Code:
Weight the EXP buffing items heavier.

Sidestep:
Loosen the filters on what mobs to exclude
 
I'll post this as on official bug but i've yet to come across a solution. In the 6 trust dungeons (all of which are also MSQ duties in ShB) only 2 of them have the correct InstanceContentDirector structure to return the ActiveObjectives. It returns all other InstanceContentDirector info fine but the objectives that are suppose to be at +0x12E8 points to 0 and count is 0. I can't find a 12 byte structure array that the others use. Dohn Mheg and The Grand Cosmos are the only trusts that return the normal 6 active objectives and their statuses. I've checked for days using CE and I can't find a corresponding pointer get them, the 4 dungeons Holminster Switch, The Qitana Ravel, Malikah's Well, Amaurot all don't list the objectives but in game they have the same 6 basic objectives the other 2 have...get to zone, clear zone x3. I find it odd that 4 duties wouldn't use the same struct but they don't even call the same functions that the others do when updating objectives. I try to only point out issues i can find a solution to but this one has me stumped.
 
Breakpoint on access the one that it works, note the functions that get called. Go into the dungeon it doesn't work in, see if the breakpoint gets triggered. Try using ghidra
 
I've done that, the instructions that happen every time the objectives are updated trigger for all the duties but those 4. Even going up a level to the calling function it doesn't break on them either. It's like they use another function or a vtable call but i can't narrow down a pointer position to check. I don't quite understand the check that is made to see if the objective is complete so I can't check for that but I can load the structs and I can't find a corresponding static address for the objects or the count.
Amaurot
Amaurot.webp
The grand cosmos
the grand cosmos.webp
 
Hello, everyone this still don't work?
<GatheringSkillOrder>
<GatheringSkill SpellName="The Twelve's Bounty" TimesToCast="1" />
</GatheringSkillOrder>
 
Hello, everyone this still don't work?
<GatheringSkillOrder>
<GatheringSkill SpellName="The Twelve's Bounty" TimesToCast="1" />
</GatheringSkillOrder>

Thanks for reminding me. I'll try and get a build out shortly.
 
Version 329

Code:
ActionManager:

CanCast will no longer do a range/los check when a unit other then the player is passed for self cast spell. This matches the ingame behavior more closely and will allow cleaner kupo routines to be written.

Updated the list of gathering spells for gathertag
 
Version 329

Code:
ActionManager:

CanCast will no longer do a range/los check when a unit other then the player is passed for self cast spell. This matches the ingame behavior more closely and will allow cleaner kupo routines to be written.

Updated the list of gathering spells for gathertag
possible only for me but <GatheringSkill SpellName="The Twelve's Bounty" TimesToCast="1" /> still won't work for fire shards gathering
Strnage but SpellName="The Twelve's Bounty" don't work and SpellName="Solid Reason" works fine

Also now there is an option in gathereing window (Enable quick gathering) is any possibility to use that opnion using bot?
 
Last edited:
possible only for me but <GatheringSkill SpellName="The Twelve's Bounty" TimesToCast="1" /> still won't work for fire shards gathering
Strnage but SpellName="The Twelve's Bounty" don't work and SpellName="Solid Reason" works fine

Also now there is an option in gathereing window (Enable quick gathering) is any possibility to use that opnion using bot?


There is actually a typo in the game data.

NKh3FXi.png


it uses a lower case t for "the", im going to add a hardcode override as I think many people would get caught by that.

As for the auto gather, no. It shouldn't be any faster then what the bot will do on its own.
 
Version 331

Code:
GatheringTag has updated skill list it can use


GetTo:
Add a small fix so the ostall imperative aetheryte will be used
 
Back
Top