Page 1 of 1

Loot - Smart Assign

PostPosted: 08 Mar 2018, 10:07
by Kannkor
Edit: You can use "ogre smartloot" for a UI to assist with doing the below.

New feature I've been working on, that unlikely anyone but me will use. Figured I'd document it here anyways.
The idea behind this system, is to keep track of items you want people to loot, but only a specific amount of them. For example, say you wanted every person to loot 4 of each PoP heroic rare harvest.

This ONLY works with Leader Only Loot.
Every time the bot automatically assigns a piece of loot from this list, it keeps track of it, and will keep assigning that loot until the amount of items looted is reached.
For example, this is the loot list:
Code: Select all
<Setting Name="Drop of Pure Rain">4</Setting>
<Setting Name="Clockwork Grease">4</Setting>


This tells the system 4 of those is the max people should loot.

If you want the bot to assign these items to people, you need to add the character names, and how many of each item they already have. So you end up with this (another xml file...)
Code: Select all
<Set Name="Kannkor">
<Setting Name="Drop of Pure Rain">4</Setting>
<Setting Name="Clockwork Grease">2</Setting>
<Setting Name="Sillocorrosive Grease">1</Setting>
<Setting Name="Fire Mephit Blood">2</Setting>
<Setting Name="Foul Smelling Liquid">2</Setting>
<Setting Name="Fiery Granite">3</Setting>
<Setting Name="Putrid Ooze">1</Setting>
<Setting Name="Storm Rider's Blood">4</Setting>
<Setting Name="Solidified Magma">2</Setting>
<Setting Name="Clockwork Carapace">3</Setting>
<Setting Name="Bubonian Blood">1</Setting>
<Setting Name="Stormwatcher's Horn">2</Setting>
</Set>


Thankfully, there's a nice easy way to generate this list:
Code: Select all
OgreBotAPI:Loot_SmartAssign_Add

This will automatically update the list with the values they have in their inventory. If you already crafted an item, you could edit the xml file to reflect whatever modifications you wanted.
Using the above example, the bot will NOT assign Drop of Pure Rain or Storm Rider's Blood, because both of those are at 4. If any of the others drop, they could be assigned to this character.

Worth noting...
Code: Select all
OgreBotAPI:Loot_SmartAssign_Update

Not that this should really be used, but this will only update the values of items they have in their inventory. If they don't have any, the item will not be updated OR added.

Loot order.
The loot order that is used, is the person doing the looting first, then the order of the group (aka, who joined the group first).
Keep in mind, it ONLY assigns loot to those who are in this new special list (that we generate via OgreBotAPI:Loot_SmartAssign_Add). In this case, I don't actually want my tank to loot items yet, so I did not add him to the list. So it's assigning items to the swashbuckler (who joined the group first), and if he already has 4, then it assigns them to the coercer (who joined the group second), because both of them ARE in the list.

The numbers aren't correct.
Why? Well you probably did something silly like assign loot "manually". If you did this, it won't track it. It ONLY tracks when it automatically assigns the loot. You can simply run (OgreBotAPI:Loot_SmartAssign_Add) again so it updates the list with what you have in your inventory.
Now if you went ahead and crafted some items AND assigned some loot manually, well the only option you have is to edit the xml file directly, since there's no way the bot would know.

Single computer and Multiple computers
If you use a single computer, it's pretty easy. Just run the Add command on everyone, and you're done. It creates 1 file. (You can relay all this command, there is a delay to make sure they don't all run at the same time).

Multiple computers - It gets slightly more complicated. Lets say you run 3 computers. MainPC, RightPC, and LeftPC. Lets assume you do the looting on your tank (not that it really matters), and your tank is played on MainPC. You would want to log each toon in on MainPC (doesn't have to be at the same time, you could do 1 at a time), and do the Add command. Once that is done, everyone can return to whichever PC they normally play on.
This has to be done because it's manually keeping track using 1 file on your PC.

How/Where to make manual changes
Edit the file (right click -> Edit)
Code: Select all
\Innerspace\Scripts\EQ2OgreBot\Loot\CharacterLootData.xml

Just be careful when modifying this directly, as if you ruin the xml syntax, the file won't be able to be read anymore until you correct the mistake.

How to add items of your choosing.
For example, if you wanted to add orange adorns, you could. You have to edit some xml files.
First, edit the custom item loot data file.
Edit the file (right click -> Edit)
Code: Select all
\Innerspace\Scripts\EQ2OgreBot\Loot\ItemLootCustomData.xml

This file (with the word 'Custom') in it, will NOT ever be patched out. This file is for you to modify at your own will.
Add in whatever you want to it. For example: Rune of Embers. Include how many of these should be looted. In this case, we just want 1 each.
Code: Select all
<Setting Name="Rune of Embers">1</Setting>

Now, we want to add this to our character file so people will loot these.
Edit the file (right click -> Edit)
Code: Select all
\Innerspace\Scripts\EQ2OgreBot\Loot\CharacterLootData.xml

For anyone you want to loot them, add an entry for their name (if their name doesn't exist, you can add it). Include how many they have already looted. In this case, it will be 0.
Code: Select all
<Set Name="CharacterNameHere">
      <Setting Name="Rune of Embers">0</Setting>
   </Set>

Reload the bot, and it will be added.

Special circumstances.
I've added "Weapons" as a generic 'any weapon, secondary, ranged item', for the purposes of extracting weapon essences.
You follow the same details as above, except use "Weapons" as the item name. Here is an example I used. This will give my toon named "Kannkor" 200 weapons.
Code: Select all
\Innerspace\Scripts\EQ2OgreBot\Loot\ItemLootCustomData.xml

Code: Select all
<Setting Name="Weapons">200</Setting>

Then..
Code: Select all
\Innerspace\Scripts\EQ2OgreBot\Loot\CharacterLootData.xml

Code: Select all
<Set Name="Kannkor">
      <Setting Name="Weapons">0</Setting>
   </Set>

Re: Loot - Smart Assign

PostPosted: 19 Mar 2018, 13:58
by sodaPoP
This. Is. Awesome!

Re: Loot - Smart Assign

PostPosted: 20 May 2018, 21:01
by darkjuju
I love this idea .. just wish I could get it to work ..

do all the toons need to be in the same harater loot data file or each in its own ?

if in same would it look like you example each right after each other ?


JUJU

Re: Loot - Smart Assign

PostPosted: 25 May 2018, 12:15
by sodaPoP
darkjuju wrote: do all the toons need to be in the same harater loot data file or each in its own ?


Yes, just run the command on each toon and the data does into the file

darkjuju wrote:if in same would it look like you example each right after each other ?


Correct

Re: Loot - Smart Assign

PostPosted: 05 Jun 2018, 12:06
by zandokan
Hey Kannkor, is it possible for you to make it so we can modify they main file with other things we want to assign automatically? Like no-trade shinies for example.

Re: Loot - Smart Assign

PostPosted: 05 Jun 2018, 17:45
by Kannkor
zandokan wrote:Hey Kannkor, is it possible for you to make it so we can modify they main file with other things we want to assign automatically? Like no-trade shinies for example.


Yes, that is the plan.