What's new
  • Visit Rebornbuddy
  • Visit Resources
  • Visit API Documentation
  • Visit Downloads
  • Visit Portal
  • Visit Panda Profiles
  • Visit LLamamMagic

Looting Issue

Stove

New Member
Joined
Apr 10, 2012
Messages
182
Reaction score
9
Code:
[07:35:40.633 D] System.AccessViolationException: Could not read bytes from 00000000 [299]!
   at Zeta.MemoryManagement.ExternalProcessReader.ReadBytes(IntPtr address, Int32 count, Boolean isRelative)
   at Zeta.MemoryManagement.ExternalProcessReader.Read[T](IntPtr address, Boolean isRelative)
   at Zeta.Internals.Actors.DiaObject.()
   at Zeta.Internals.Actors.DiaObject.get_ACDGuid()
   at Zeta.Internals.Actors.DiaObject.get_IsACDBased()
   at Zeta.Internals.Actors.DiaObject.GetCommonData[T]()
   at Zeta.Internals.Actors.DiaObject.get_CommonData()
   at Zeta.Internals.Actors.DiaActivePlayer.get_NumBackpackSlots()
   at Zeta.Internals.Actors.DiaActivePlayer.InventoryManager.get_NumBackpackSlots()
   at Zeta.CommonBot.Logic.BrainBehavior.()
   at Zeta.CommonBot.Logic.BrainBehavior.()
   at Zeta.CommonBot.Logic.BrainBehavior.()
I have implemented my own looting in my plugin which enables me to loot much more efficient and faster. Though i believe that this is also the cause of the occurring bug where he keeps on looting even though the inventory is full. What I have to prevent this is this:
Code:
 if (Zeta.CommonBot.Logic.BrainBehavior.IsVendoring)
            {
                Logging.WriteDiagnostic("RETURN VENDORING");
                return;
            }
At first time inventory full, this gets caught and my plugin returns and he goes to town to vendor and stuff. Though second time I get this exception and he will just keep on trying to loot even though inventory is full, and inevitably he will have blacklisted all the loot (through my method). Has anyone met this problem / found a solution?

Edit:
Maybe if there is some way to trigger DB build-in vendor methods?
 
Last edited:
Maybe if there is some way to trigger DB build-in vendor methods?

Every time you loot an item (Interacts on the ACDItem) count the tries, after like 2-3 tries set demonbuddy repair treshold to 101% forcing it to do a vendor run.
The Vendor run hook will not return success from the point where it started Vendoring so it can easily determined if the vendor run is over and put the repair treshold back to normal.
 
Every time you loot an item (Interacts on the ACDItem) count the tries, after like 2-3 tries set demonbuddy repair treshold to 101% forcing it to do a vendor run.
The Vendor run hook will not return success from the point where it started Vendoring so it can easily determined if the vendor run is over and put the repair treshold back to normal.
This line:
Code:
Zeta.CommonBot.Logic.BrainBehavior.IsVendoring
should return true if and while the bot is doing a vendor run. But it seems that the bool is never flipped? Because, it is never caught - sometimes it is, but mostly it isn't. Is there some way i can flip it myself and ensure a vendor run? Like
Code:
If(ZetaDia.Me.NumBackpackSlots <= 4) - force vendor run
?
 
This line:
Code:
Zeta.CommonBot.Logic.BrainBehavior.IsVendoring
should return true if and while the bot is doing a vendor run. But it seems that the bool is never flipped? Because, it is never caught - sometimes it is, but mostly it isn't. Is there some way i can flip it myself and ensure a vendor run? Like
Code:
If(ZetaDia.Me.NumBackpackSlots <= 4) - force vendor run
?

The bool isnt flipped because of ZetaDia.Me.NumBackpackSlots returning bogus Numbers since the IsTwoSlotItem function is returning random values most of the time.
Which is why i suggested using a heuristics to determine if the bag is full instead of the deterministic way.
 
But how do i get DB vendor methods to be called? I could make my own but that would require time and is stupid since DB got its inbuild methods.


This is what my plugin should do, but this "bot is vendoring somehow" isn't getting caught.
If(bot is vendoring somehow)
return;
 
Last edited:
Fixed by using:
Zeta.CommonBot.Settings.CharacterSettings.Instance.RepairWhenDurabilityBelow = 500;
 
Back
Top