• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Ninjadvloot.inc

Release Ninjadvloot.inc 2022-06-23

No permission to download
I use the amazing loot plugin, alongside the in game autoloot feature. Of course I have historically told my guys what to loot and what not to loot. But since using Ninja the main looter gets caught up on one item every now and again that is in his don't loot list, now other toons can pick the item up, and often it works perfectly. But when it does get stuck, the main looter (who I have to manually change to one of the three wizards I have in the group - if it happens on the bard/tank or clr then the group's fucked) just hangs up and won't cast till I manually fix the issue (assign the item (often some fine steel shit) to a toon that isn't doing something... like casting or fighting.

I have your latest file. Any suggestions?

Thanks on the heads up on the afktools too btw.

Try this - find this
Rich (BB code):
/if (${AdvLoot.SList[${i}].ID} && ${Select[${IniEntry},Ignore]}) {
replace it with
Rich (BB code):
/if (${AdvLoot.SList[${i}].ID} && (${Select[${IniEntry},Ignore]}||${AdvLoot.SList[${i}].Never}==true)) {

also find this line
Rich (BB code):
/if (${Select[${IniEntry},Ignore]}) {
replace it with
Rich (BB code):
/if  (${Select[${IniEntry},Ignore]}||${AdvLoot.PList[1].Never}==true) {

I haven't managed to reproduce your hang-up yet but maybe these code change will eliminate it by leave items filtered never on the corpse

- - - Updated - - -

Just because the ML has it filtered doesn't mean that another toon can pick it up. Wont the code prevent any toon from taking it?

Possibly, actually probable. You are using the advloot filters to select which toon gets the item? example - tradeskill items are filter never by most of the group except the toon that actually needs the item? I played around with the advloot filters a little but did not get them to do quite what I wanted. I wonder if setting the item to autoroll would allow selected group members to get the item? I'll think about this and see if I can figure out how to make it happen.
 
You've hit the nail on the head. The ML is picking up all the TS items and the general vendor crap is going to the other toons... Hey, they all have big bags so it doesn't hurt to pick up 5pp for a fine steel dagger if there's space for them to bag it up right?

All the other 5 toons have set item to 'need', and the ML to 'no' so they are rolling on the vendor stuff, however ninja occasionally decides that the ML should have the item but spams that he doesn't want it. Whilst its spamming it the ML just hangs and doesn't cast or fight or pull. Thats why I manually change the ML to the wizard as he is the most 'expendable' guy (there are 2 others in the group).
 
You've hit the nail on the head. The ML is picking up all the TS items and the general vendor crap is going to the other toons... Hey, they all have big bags so it doesn't hurt to pick up 5pp for a fine steel dagger if there's space for them to bag it up right?

All the other 5 toons have set item to 'need', and the ML to 'no' so they are rolling on the vendor stuff, however ninja occasionally decides that the ML should have the item but spams that he doesn't want it. Whilst its spamming it the ML just hangs and doesn't cast or fight or pull. Thats why I manually change the ML to the wizard as he is the most 'expendable' guy (there are 2 others in the group).

Working on better solution...
If ML has the item filtered to never, it will be set to autoroll. Everyone in the group will select yes/no based on their advloot filters. If no one wants the item after the autoroll then it will be left on corpse similar to quest items no one wants anymore. I should have a working file to upload hopefully in couple hours for testing.
 
You've hit the nail on the head. The ML is picking up all the TS items and the general vendor crap is going to the other toons... Hey, they all have big bags so it doesn't hurt to pick up 5pp for a fine steel dagger if there's space for them to bag it up right?

All the other 5 toons have set item to 'need', and the ML to 'no' so they are rolling on the vendor stuff, however ninja occasionally decides that the ML should have the item but spams that he doesn't want it. Whilst its spamming it the ML just hangs and doesn't cast or fight or pull. Thats why I manually change the ML to the wizard as he is the most 'expendable' guy (there are 2 others in the group).

Wow managed to reproduce the issue... what a pain in the arse

- - - Updated - - -

Finally, two good test runs in row.

Problem was related to ${AdvLoot.SList[1].AlwaysGreed} reports a NULL value instead of true/false
and ${AdvLoot.SList[1].AutoRoll} only reports true for the master looter, everyone else always gets a false


Anyway new file being uploaded
 
Wow managed to reproduce the issue... what a pain in the arse

- - - Updated - - -

Finally, two good test runs in row.

Problem was related to ${AdvLoot.SList[1].AlwaysGreed} reports a NULL value instead of true/false
and ${AdvLoot.SList[1].AutoRoll} only reports true for the master looter, everyone else always gets a false


Anyway new file being uploaded

Thanks for the work Hoosierbilly.

You're the man.
 
I found an issue that could cause a hangup when a new master looter is selected. Working on a solution.


Edit: issue resolved, posting neew file.
 
Last edited:
Problems with KA:

Original Loot Sub:
Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Loot Stuff
| -------------------------------------------------------------------------------------
    Sub LootStuff
        /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return
        /if (${Debug}) /echo DEBUG LootStuff: Enter
        /if (${Me.FreeInventory}==0) {
            /echo Inventory is full. Looting OFF
            /varset LootOn 0
            /return
        }
        /doevents
        /if (${Me.UseAdvancedLooting}) {
            /call UseAdvLoot
        } else {
            /call LootMobs
        }
        /call DoWeMove
        /if (${Debug}) /echo DEBUG LootStuff: Leave
    /return

Thinking of using this:

Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Loot Stuff
| -------------------------------------------------------------------------------------
    Sub LootStuff
        /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return
        /if (${Debug}) /echo DEBUG LootStuff: Enter
        /if (${Me.FreeInventory}==0) {
            /echo Inventory is full. Looting OFF
            /varset LootOn 0
            /return
        }
        /doevents
	/if (${Me.UseAdvancedLooting} && (${AdvLoot.SCount}||${AdvLoot.PCount}) && !${LootTimer} && ${Me.CombatState.NotEqual[combat]}) {
            /call UseAdvLoot
        } else {
            /call LootMobs
        }
        /call DoWeMove
        /if (${Debug}) /echo DEBUG LootStuff: Leave
    /return

Added your snippet from OP to the test right before /call UseAdvLoot but I'm concerned of conflicts by the first test in the sub:
Rich (BB code):
 /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return

When using the latest INC I am getting an error in KA:
/varset failed, variable 'StartTime' not found
ninjaadvloot.cin@648 (UseAdvLoot): /varset StartTime #{Macro.RunTime}
kissassist9.mac@3551 (LootStuff): .call UseAdvLoot
kissassist9.mac@848 (Main): /call LootStuff

In the meantime I am going to use a previous INC (5/23 last known good for me - wasn't keeping up with updates) so I can run my toons.
 
Dang, StartTime is a custom variable from my personal macro. It allows me to check how long a subroutine takes. I'll take it out of the ninjadvloot.inc and post a new file.

- - - Updated - - -

Problems with KA:

Original Loot Sub:
Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Loot Stuff
| -------------------------------------------------------------------------------------
    Sub LootStuff
        /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return
        /if (${Debug}) /echo DEBUG LootStuff: Enter
        /if (${Me.FreeInventory}==0) {
            /echo Inventory is full. Looting OFF
            /varset LootOn 0
            /return
        }
        /doevents
        /if (${Me.UseAdvancedLooting}) {
            /call UseAdvLoot
        } else {
            /call LootMobs
        }
        /call DoWeMove
        /if (${Debug}) /echo DEBUG LootStuff: Leave
    /return

Thinking of using this:

Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Loot Stuff
| -------------------------------------------------------------------------------------
    Sub LootStuff
        /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return
        /if (${Debug}) /echo DEBUG LootStuff: Enter
        /if (${Me.FreeInventory}==0) {
            /echo Inventory is full. Looting OFF
            /varset LootOn 0
            /return
        }
        /doevents
	/if (${Me.UseAdvancedLooting} && (${AdvLoot.SCount}||${AdvLoot.PCount}) && !${LootTimer} && ${Me.CombatState.NotEqual[combat]}) {
            /call UseAdvLoot
        } else {
            /call LootMobs
        }
        /call DoWeMove
        /if (${Debug}) /echo DEBUG LootStuff: Leave
    /return

Added your snippet from OP to the test right before /call UseAdvLoot but I'm concerned of conflicts by the first test in the sub:
Rich (BB code):
 /if (!${LootOn} || (!${Me.UseAdvancedLooting} && ${AggroTargetID}) || (${MainAssist.Equal[${Me}]} && ${AggroTargetID}) || (${DMZ} && ${Me.InInstance}==FALSE) || ${Me.Invis}) /return

When using the latest INC I am getting an error in KA:
/varset failed, variable 'StartTime' not found
ninjaadvloot.cin@648 (UseAdvLoot): /varset StartTime #{Macro.RunTime}
kissassist9.mac@3551 (LootStuff): .call UseAdvLoot
kissassist9.mac@848 (Main): /call LootStuff

In the meantime I am going to use a previous INC (5/23 last known good for me - wasn't keeping up with updates) so I can run my toons.

Might by better to add the command as a downflag in the mq2melee ini file. not sure how it will react with kissassist. I guess you'll find out.
 
I'll prolly have conflicts with KA with a downflag, KA is pretty busy with stuff and it would certainly be better to what needs to be done from within KA. Whatever changes need to be done will have to involve Maskoi so we have to get it pretty ironed out beforehand.
 
Is there anyway to bypass the No drop loot box that pops up and requires a click? And thanks for the work on this, trying it out now.
 
Thanks Hoosier

- - - Updated - - -

I am having some issues with the quest items. It does not seem to distribute to the group? Do i need to set each group member to need in advanced loot screen? Also the number of items I am having issues with. I have changed it to 2 from 10 in the ini and saved, then restarted KA on my looter but it doesn't seem to change anything. It just stays at 10. Just checked my group of 6, only the master looter and one other have 10 of an item. Ah was just looking at my characterf ini's the thing i see is the two toons that looted the 10 have loot set to 1. I will change all of my toons to the same.

- - - Updated - - -

Ok now i just saw the advloot window set the item to gd on my tank, think maybe its working other than maybe setting the amount.
 
One of the things that makes an afk grp stand out and get reported is tons of corpses lying around. I would rather see it default to destroy than ignore (quest items). We are begging for a ban otherwise.
 
Really enjoying this version! I just need to figure out how to ensure certain items get destroyed. Using KA 8.5.5. and this ninjaloot.inc the command /lootdestroy doesn't seem to be recognized.
 
It gets a bit funky; can't be on pause cause KA needs to process an event. However it will complain about an item on cursor haha. So you need to be quick, and not do too many at a time or KA will drop it back into your inventory. I have always done a /lootdestroy to 'mark' the item in INI and then had another hotkey with /destroy to destroy the current item. It's been a 2 step process for me.

- - - Updated - - -

And the new Ninja will go through all your bags to destroy the current item. I like it now, but I wont when it destroys something I wanted to keep, or a number I wanted to keep, but that might be one of the new settings I haven't worked out.
 
Why would it destroy something you wanted to keep? Do you mean like something you'd previously marked as destroy, but now want to keep because you're on that quest?
 
Im thinking it would have been something he was keeping for quest (a certain # of them) and now that he has enough, he set it to destroy.
 
I mean it destroys them retroactively now. If I had 10, then decided I didn't want any more, set it to destroy, all will get destroyed. You see the bags gets opened in rapid fire (aka Scribe) and removes them. I'm not complaining since I usually decide to mark something destroy after it's filled a bag or somesuch. The new way I don't have to go back through and destroy them all stack by stack. But, was just thinking, what if I wanted to keep a stack, then mark it destroy for any additional is all. 'IF' it's a quest item, I believe there is a new setting for # to keep.
 
It should never work that way. It should only destroy after looting 1 item and only that item. It should NEVER destroy an item any other time.
 
Thanks Hoosier

- - - Updated - - -

I am having some issues with the quest items. It does not seem to distribute to the group? Do i need to set each group member to need in advanced loot screen? Also the number of items I am having issues with. I have changed it to 2 from 10 in the ini and saved, then restarted KA on my looter but it doesn't seem to change anything. It just stays at 10. Just checked my group of 6, only the master looter and one other have 10 of an item. Ah was just looking at my characterf ini's the thing i see is the two toons that looted the 10 have loot set to 1. I will change all of my toons to the same.

- - - Updated - - -

Ok now i just saw the advloot window set the item to gd on my tank, think maybe its working other than maybe setting the amount.

I'm not entirely sure I follow exactly what your seeing. Changing the amount to keep in the loot.ini file is dynamic. The macro checks that amount each time a quest item is looted, no need to start the macro over. Each character checks the amount to keep vs the amount in inventory independently of each other. The default to keep is hard coded to 10 if and only if the macro fails to get a valid amount from the ini file. There should still be an /echo line in your MQ2 chat window telling you if the individual toon selected greed or no based on how many they are trying to accumulate. Something like "I have 1 of 2 itemName selecting greed" or "I have 2 of 2 ItemName selecting No" . Unless that character has the item marked never in the advloot filter, then that character can't loot the item even manually.

- - - Updated - - -

Really enjoying this version! I just need to figure out how to ensure certain items get destroyed. Using KA 8.5.5. and this ninjaloot.inc the command /lootdestroy doesn't seem to be recognized.

Try removing the version number in your Loot.ini file and starting the macro over again. Ninjadvloot writes aliases to your macroquest.ini file and they have to be correct for any of the commands to work. I actually had to log all the way out and reboot to get them to work the first time.

also - Check your loot.ini file to verify the item is set to =Destroy.

- - - Updated - - -

And the new Ninja will go through all your bags to destroy the current item. I like it now, but I wont when it destroys something I wanted to keep, or a number I wanted to keep, but that might be one of the new settings I haven't worked out.

There is no provision for ninjaloot to go through your bags and destroy stuff except the very last item looted. It might pick up and destroy an entire stack though. That part of the macro was not part of the changes I made, so not really sure.

- - - Updated - - -

One of the things that makes an afk grp stand out and get reported is tons of corpses lying around. I would rather see it default to destroy than ignore (quest items). We are begging for a ban otherwise.

Because of the way advloot system works in EQ that option is unlikely. The game mechanics are for you to either loot or ignore the item. Ignoring the item means it stays on the corpse.

Destroying items is kinda tricky (and permanent), especially if you only want to destroy them sometimes. The first time it decides to destroy something you have been camping for several days... I think ignore is much safer.

I do use =Destroy in the ini file for huge number of items that I have decided I don't want and never will. But I make that change manually so I know what was changed.
 
One of the things that makes an afk grp stand out and get reported is tons of corpses lying around. I would rather see it default to destroy than ignore (quest items). We are begging for a ban otherwise.

This is not so true anymore, with advloot, the option to leave it on the corpse has made even activly run chars sit around with a crapton of corpses. Many don't want to open their bags to find said item to destroy it, so its the same for all now....
 
Ok fair enough Meistro.

Now it all happens so fast, and with running a full grp now I am pretty busy so can't always tell what happened. I have seen all the bags open in rapid fire after looting and an item is set to destroy. I have not tested empirically whether it will remove previously looted items, to be fair. I thought I had seen some crap removed, but cannot be 100% certain. I will try to verify, but again, its real fast, and I am much busier now with a full grp.

Also, I have seen a high value (at least in baz terms) lore item rot and NOT everyone has it. However I don't know the cause and will not automatically blame Ninja. It could be that they have loot=0, or they could happen to have AdvLoot settings, and one time I discovered a toon was wearing the item lol, and prior to discovering that I was like WTF man!!! It all happens so fast, and my puller is a fricken beast. Hell I can't even respond to GU any more because my main's keyboard is tied up with KA all the time haha. The leisure days are over *sigh*.

- - - Updated - - -

Oh, and I have also seen the spamming of the msg that I have the lore item over and over again. Now this only happens once EVERYONE has it, but it hangs in spam mode instead of 'ignore'ing it.

- - - Updated - - -

Crap, don't know why some items and not others, but it doesn't ALWAYS check the other grp members. I was able to give a high value axe to another grp member that I had in my bags and turn around and loot the item that had been 'left'.
 
Ok fair enough Meistro.

Now it all happens so fast, and with running a full grp now I am pretty busy so can't always tell what happened. I have seen all the bags open in rapid fire after looting and an item is set to destroy. I have not tested empirically whether it will remove previously looted items, to be fair. I thought I had seen some crap removed, but cannot be 100% certain. I will try to verify, but again, its real fast, and I am much busier now with a full grp.

Also, I have seen a high value (at least in baz terms) lore item rot and NOT everyone has it. However I don't know the cause and will not automatically blame Ninja. It could be that they have loot=0, or they could happen to have AdvLoot settings, and one time I discovered a toon was wearing the item lol, and prior to discovering that I was like WTF man!!! It all happens so fast, and my puller is a fricken beast. Hell I can't even respond to GU any more because my main's keyboard is tied up with KA all the time haha. The leisure days are over *sigh*.

- - - Updated - - -

Oh, and I have also seen the spamming of the msg that I have the lore item over and over again. Now this only happens once EVERYONE has it, but it hangs in spam mode instead of 'ignore'ing it.

- - - Updated - - -

Crap, don't know why some items and not others, but it doesn't ALWAYS check the other grp members. I was able to give a high value axe to another grp member that I had in my bags and turn around and loot the item that had been 'left'.

Lot in this post...

First: I removed a lot of delays to make it fast. They are rather easy to put back in. If you are comfortable editing macros it's even easier. Look for the following lines starting at about line 900 in the file:
Rich (BB code):
|    /delay 5
simple remove the first character | so the line looks like
Rich (BB code):
       /delay 5
The 5 is how many 10ths of a second to delay, so a /delay 10 would wait 1 second.

Edit: This business with your bags being opened and items being destroy really bothers me. I have always used =destroy with a lot of items and have never seen my bags open like your describing. I'll have to try to duplicate this...
You have the items in your bags, meaning like several of them and then set the ini to destroy and leave the items in your bags. The next time you loot one, it goes through and destroys all of them. Not just one or one stack but all of them in all your bags?

Second: bazaar values are not considered. It only looks at the base value of an item that can be sold to merchant. Be especially careful with tradeskill items, they usually have low value. Lore items are somewhat tricky, if you have in your bank it will know and you can't loot another one.

I suspect a lot of your trouble is related to your individual toons advloot filter settings. If you can identify an item, that's acting weird try checking your advloot filter settings. I did not like the filters and gave up using them fairly quickly. So I can't really say how they will react. I do know having an item set to Never causes issues, you can't loot the item even to destroy it and you can't give it someone that has their filter set to Never. The item gets stuck in the shared list and the macro can't make it go away.

There is still a fair amount of /echo spam, if you load MQ2log and turn it on you'll get a file in your macroquest/log folder that tracks everything displayed in your MQ2 chat window.

I am looking at adding a feature to turn on/off the spam before this is all finished.

Last - I thought I had the hang-up on lore items fixed. If you are still having that issue...
1. Where is the item, shared list or personal list?
2. does that item have an advloot filter setting, if so what is the setting?
I'll try to duplicate the issue and work on a solution.


One more thing, Please don't make me try to set up kissassist again. Both times I tried I gave up, it just doesn't work how I want it to and I get frustrated. I know the issue is me and not the KA macro, but still...
 
Ok I will continue to try and get more pertinent info. I had forgot about bank, that actually is likely. The spam I am referring to isn't MQ2Win but rather the yellow in EQChat. I have had to click manage, then spam the Leave On Corpse button to make it stop.

Speaking of MQ2Win spam, only some of my toons see the I NEED such and such, and I don't WANT such and such. However I have not had the opportunity to ascertain why, very well could be on my end. I will report more specifics as I discover them.

And yes, I am using KA on all 6 toons, and that could have a part in things. This HAS to work with KA, too many ppl here use it (and Mask wants it to take over all of Norath!!!). I will debug more...

And yeah, I know the value isn't based on baz, was just sayin it was important to me.
 
Last edited:
Ok I will continue to try and get more pertinent info. I had forgot about bank, that actually is likely. The spam I am referring to isn't MQ2Win but rather the yellow in EQChat. I have had to click manage, then spam the Leave On Corpse button to make it stop.

Speaking of MQ2Win spam, only some of my toons see the I NEED such and such, and I don't WANT such and such. However I have not had the opportunity to ascertain why, very well could be on my end. I will report more specifics as I discover them.

And yes, I am using KA on all 6 toons, and that could have a part in things. This HAS to work with KA, too many ppl here use it (and Mask wants it to take over all of Norath!!!). I will debug more...

And yeah, I know the value isn't based on baz, was just sayin it was important to me.

I agree... Guess I'll have to set a group, sigh

I may have found why your bags are all opening and closing.... There is an Event in the macro to correct an " invalid item slot ". It appears to open all your bags and then close them again. It doesn't do anything else just quickly opens and closes all the bags. That might be a significant challenge to reproduce.

I just had an idea that might work...

Find this near line 945
Rich (BB code):
				/if (${Select[${IniEntry},Destroy]}) {
					/call HandleItem "${ITPName}" Destroy
				}
and replace it with
Rich (BB code):
				/if (${Select[${IniEntry},Destroy]}) {
					/delay 5
					/call HandleItem "${ITPName}" Destroy
				}
It probable has to do with lag. You might need a longer delay then just half second, depending on lag.


Spam... The EQchat spam is a function of the advloot system, not the macro... can't do anything about that. It should spam as each group member refuses to accept the item. Once every group member has been quarried, if the item still exists it should be set "Leave on Corpse"
If it is spamming the MasterLooter's name doesn't want the item over and over, something is wrong... He is trying to Loot over and over and shouldn't be. Again I would check the advloot filter for that item and make sure it matches the loot.ini file

The I want/I already have itemname is from the macro. It should only happen once when a determination is made. One condition of the spam is that nothing is selected in the advloot window, I'll bet items that have advloot filters don't trigger the spam because the selection for "Need, Greed, or No" happens to fast for the macro.

Most of my EQ playing now is simply watching what the idiots do with loot. And that was before I started messin with macro...
Just can't trust toons to do the right thing when comes to loot!

- - - Updated - - -

Playing around with multiple stacks of items and =Destroy.
1. It will pick up an entire stack and destroy the entire stack when a newly looted item is added.
2. It picks up the first stack it finds.
3. Once the stack is gone it will get the next one when another item is looted.
4. They go fast if it's a common drop.

So over time it will get all of them, one stack at a time.

Don't set stuff to =Destroy in the loot.ini file unless your absolutely sure you don't want any, Use ignore instead, then you keep want you have and simple don't collect anymore of them.
If using =Quest|xx just leave it that way. Once everyone in the group has the required number it automatically start ignore the rest.
 
Last edited:
If it is spamming the MasterLooter's name doesn't want the item over and over, something is wrong... He is trying to Loot over and over and shouldn't be. Again I would check the advloot filter for that item and make sure it matches the loot.ini file

Its odd in that it isn't all the time, but yeah, it appears ML is trying over and over. I cannot determine the factors the exist when it happens yet. It's the yellow text in one of the EQ wins. I have started to turn off AdvLoot filtering on some of my toons to see if that removes any conflicts. It seems to help but without bona-fide data it could be placebo effect.

Hey, was wondering if you knew a way to ignore everything but one item you camping/farming without having to set each possible drop in the INI? I mean its crap loot, want none of it, but am there for one particular drop. Could it be setup to give that particular item to a particular toon? And only that item? I'm thinkin we are real close to it but haven't gotten my head around the final pieces to make it happen.
 
Hey, was wondering if you knew a way to ignore everything but one item you camping/farming without having to set each possible drop in the INI? I mean its crap loot, want none of it, but am there for one particular drop. Could it be setup to give that particular item to a particular toon? And only that item? I'm thinkin we are real close to it but haven't gotten my head around the final pieces to make it happen.

I'll echo this. I'd love to be able to ignore all the stupid rogue poison bullshit. I try to get rid of all of that, but inevitably when I move to new expansions/areas different levels of drops start dropping and I need to spend time adding all the new shit to the ignore/destroy lists.
 
Probably the easiest way is to start with fresh new loot.ini file, set the stackvalue really high and make sure the item you want is in the ini file. Everything new added to the file will be set to ignore if below the stackvalue. I have a lootstart file with most of the poison, defiant and ornamentation stuff set to destroy. I'll post it when I get home tonight. Also almost ready to release 6.1
 
Hmmm, could we implement a regex filter? Instead of having to use every specific/full item name, an option like 'poison' that would ignore/delete anything looted with the word poison in it. Or 'defiant', 'rusty', 'shield', etc. I know it could be dangerous, but the onus would be on us to use filters smartly and to 'smoke the turd in purgatory' (~ Robin Williams) when it goes badly.

I would just use it situationally, and then turn it off when done with a particular zone/camp.
 
Its already there. Its called Global but it wouldn't work in his version for advloot because I just fixed the code in my normal versiona few days ago.
 
Its already there. Its called Global but it wouldn't work in his version for advloot because I just fixed the code in my normal versiona few days ago.

I was wondering exactly what the global was suppose to do.


Came home to a plumbing disaster, now I can start testing. One more quick run for 6.1 then I'll get it posted.
 
New file uploaded 7/8/16

Ninjadvloot.inc 6.1
Ninjadvloot 6.1 is completely compatible with kissassist 8.5 from the current compile.
NOTE: These 'improvements' only apply to the advloot system. If you are not using advloot - why the Hell not, It's great.

Advloot filters and Ninjadvloot 6.1 play together like most siblings. That is to say they get along perfectly fine most of the time. But when they fight, look out, you will suffer. Some observations to avoid fights:

The Advloot filter 'Never' overrides everything. You simple CAN NOT loot an item if advloot filter is Never. Ninjadvloot is suppose to identify the 'never' filter and deal with it, however, the MQ2 Gremlin is still reporting occasional problems. I recommend not using the advloot filter Never.

The Master Looter / ninjadvloot.inc macro overrides the advloot filters AlwaysGreed and AlwaysNeed. They don't seem to cause any problems, but if the loot.ini is set to ignore or destroy - that is what will happen regardless of other group members advloot filters. Make sure your advloot filters and loot.ini settings match or at least make sense. Don't set one to destroy and the other to AlwaysNeed.

New ini settings:

From 6.0 - QuestKeep=10.....the default number of items to keep if an item is set to Quest using the command /lootquest.
From 6.0 - StackPlatValue=50.....The stack value of new items being automatically added to the ini file that determines =Keep or =Ignore
From 6.0 - GMLSelect=1.....Group Master Looter Select has two functions, 1. it will select a Master Looter if the group does NOT already have one.
............... 2. It will select a new Master Looter if the sharedlist count increase more then 5x without a decrease.
From 6.0 - ExcludeBag1=NULL/ExcludeBag2=NULL.....allows you to exclude two special or limited item containers from your free inventory count.

NEW - LootLagDelay=0.....A hard coded delay in 1/10ths of second to compensate for lag. 5=half second, 10= one second
NEW - SpamLootInfo=1.....0/off, 1/on turns on/off informational loot spam in the MQ2 chat window.


Process changes from 6.0:

Increased the priority for quest items autoroll to avoid possible conflict with advloot filter "AlwaysNeed"

Notes worth repeating:

Ninjadvloot is compatable with kissassist 8.5 - you doNOT have to change anything, with the possible exception of your default loot.ini file
If you have a custom macro using ninjadvloot and want the new features you need to have everyone in the group check for:
Rich (BB code):
(${AdvLoot.SCount}||${AdvLoot.PCount})
I also included a delay timer so they don't spam the loot check
Rich (BB code):
!${LootTimer}
Here is the command I am using in my custom macro:
Rich (BB code):
/if (${Me.UseAdvancedLooting} && (${AdvLoot.SCount}||${AdvLoot.PCount}) && !${LootTimer} && ${Me.CombatState.NotEqual[combat]}) /call UseAdvLoot

The GMLSelect setting will check your KissAssist_CharactorName.ini for the LootOn=0 setting. Group Members with LootOn=0 will be excluded from being selected Master Looter, they will still receive LORE and Quest items.

Finally, for those who want valueless items set to =Destroy instead of =Ignore. Send me a Private Message, prove you intelligent enough to understand what you are asking and beg. I will tell you which command to change to make that happen. I DO NOT recommend letting the macro set anything to =Destroy automatically, I tried it and was very upset when it destroyed stuff I wanted Keep.


From the 6.0 post:

| Updates by Hoosierbilly, advloot system only, May 2016
| 1. Group Leader will automatically assign a Master Looter if there is no Master Looter.
| Group Leader will replace Master Looter if shared list count increases more then three times in a row without a decrease.
| Added new setting GMLSelect=1 to ini file, 0=off, 1=on, default is on
| 2. Lore items marked Keep/Sell will automatically be distributed to everyone in the group, then left on the corpse.
| 3. Added Quest|xx to the ini file, allows all group members to autoroll for items until they have xx number of said item.
| Added new command /lootquest will set item to =Quest|default value
| Added new setting to ini file: QuestKeep=default value is 10
| Requires the following command in your macro's main loop or MQ2melee downflag



Code:
/if (${Me.UseAdvancedLooting} && (${AdvLoot.SCount}||${AdvLoot.PCount}) && !${LootTimer} && ${Me.CombatState.NotEqual[combat]}) /call UseAdvLoot
| Note: Items set to "Never" in the Master Looters advloot filters will be treated simular to Quest items without a quantity limit.
| Advloot filters AlwaysNeed/AlwaysGreed/Never will autoselect else the loot.ini settings will determine if individual group member will roll or not.
| 4. Added check for item stack platinum value when adding new items to ini file.
| Item will Keep if above selected ini value, else item will be Ignored.
| Added new setting to ini file: StackPlatValue=default value is 50
| StackSize is limited to 20.
| 5. Added free container slot check. Will automatically stop looting if container space is < 3.
| Added new setting to ini file to exclude up to two special/limited containers from free container slot check.
| example: ExcludeBag1=Extraplanar Trade Satchel
|


Here is a list of the new loot.ini file heading with the new settings colored red:



Code:
[Settings]
|======================================================================|
Version=6.0
AddNewSales=1
LootForage=1
LootMobs=TRUE
CorpseRadius=100
MobsTooClose=40
ReportLoot=FALSE
LootChannel=g
LootForageSpam=1
GlobalLootOn=1
CombatLooting=0
QuestKeep=10
StackPlatValue=50
GMLSelect=1
ExcludeBag1=Extraplanar Trade Satchel
ExcludeBag2=NULL


QuestKeep=10 this is the default amount the command /lootquest will update in the loot.ini file.
if you want to keep more or less you have to manually adjust the amount in the loot.ini file

StackPlatValue=50 the amount of platinum a stack must equal in value to be set to Keep instead of Ignore
StackSize is limited to a maximum of 20 items for this check
StackPlatValue=0 will turn this feature off, adding all new items as Keep, except NoDrop they are always Ignore
This only applies when new items are added to the loot.ini file

GMLSelect=1 0/off, 1/on, default is on, group leader will automatically select a Master Looter if you don't already have one and change Master Looter if shared loot list count increases more then 3x in a row without a decrease.
EDIT: Added individual group members can be exclude from being selected for Master Looter Role by using LootOn=0 in the KissAssist_charactorname.ini settings. They will however, still receive LORE items.

ExcludeBag1=Extraplanar Trade Satchel Always you to pick two containers to exclude from your Free.Inventory count.


Processing loot:
Master Looter looks at each item in the shared loot list and checks it against the loot.ini file
items set to Ignore he leaves on the corpse
items set to Keep/Sell/Destroy he moves it to his personal loot list except
LORE items set to Keep/Sell will be giveto each member of the group in turn, first to the Master Looter, then backwards down the Group.Member list
if everyone has the item it will be left on the corpse
LORE items set to Destroy will be looted and destroy or left on the corpse if Master Looter is unable to loot
items set to Quest will be flagged for autoroll and stay in the shared loot list until rolled for

Everyone checks the shared list for items set to Quest
if they need the item (have fewer than listed in the loot.ini file) they will select Greed
if they have enough of the item they will select No
An autoroll will determine who actually gets the item
if no one wants the item (everyone selects No) the Master Looter will leave the item on the corpse

Note: Items set to "Never" in the Master Looters advloot filters will be treated simular to Quest items without a quantity limit, ei set to AutoRoll
advloot filters AlwaysNeed/AlwaysGreed/Never will autoselect else the loot.ini file settings will determine if individual group member will roll or not.

Everyone processes their own personal loot list
if an item not already in the loot.ini is found:
NoDrop items are left on the corpse and added =Ignore to the loot.ini file
New items will be looted to determine the Stack Value and added to the Loot.ini file either =Keep or =Ignore
NOTE: make sure any low value tradeskill item are included in your loot.ini file as =Keep or they may well become =Ignore
then
LORE items will be left on the corpse if you can't loot it, ie. already have one
items set to Ignore will be left on corpse
items set to Quest will be checked to see how many you already have and either looted or left on the corpse
items set to Keep/Sell/Destroy will be looted, and items set to Destroy will be destroyed

Damn, that's a long post.

File updated to included Maskio's fixes for global looting sub.
Maskoi said:
NinjAdvLoot
I may have added a wildcard global section to the loot.ini. DON"T USE IT!]

[Global]
|======================================================================|
Global1=hero's forge|Destroy
Global2=diamond|Sell
Global3=Defiant|Destroy
Global4=Item Name|Ignore/Destroy/Keep/Sell
Global5=Item Name|Ignore/Destroy/Keep/Sell[/CODE]

Just spent a while trying to understand the Global Looting sub... Maskoi is right don't use this, especially for =Destroy, it is simple too unpredictable. If you insist on wanting to this, you will have to figure out how on your own. I will NOT help or support anyone lacking the basic skill to puzzle out how to make global work.

6/11/16 - Corrected an issue with lore item distribution to group members.
Corrected an issue with lore items in your bank causing hang-ups.
6/14/16 - Corrected an error in last update.
Updated file: 6/23/16
corrected/improved several minor issues.
added selectable action for new nodrop items
added new loot.ini setting NoDropDefault=Quest|Keep|Ignore
pick how you want ninjadvloot to add nodrop items =quest, =keep, =ignore
quest is the default, if no setting is found item will be ignored and left on corpse
updated file: 6/29/16
Locked loot items should now be properly processed, no longer causing the macro to hang-up.
Locked items will be left on corpse, this will likely cause you to miss a desired item occasional.
update: 7/5/16
corrected an issue with switching master looter. I totally flubbed this one by releasing the wrong file on 6/29

update: 7/8/16
corrected an issue with adding nodrop items to the ini file.
corrected another issue with switching master looter

New file uploaded 7/8/16
 

Attachments

Last edited:
FYI during high lag I ran into the following after killing a mob.

Saw this output (manually wrote it out... so pardon any mistakes):
Rich (BB code):
Woah! hold your horses there little filly... You better add a ${AdvLoot.LootInProgress} check in your macro to make sure loot is not in progress.
ninjadvloot.inc@646 (UseAdvLoot): /advloot shared ${i} giveto ${Me.Name}
kissassist.mac@3306 (LootStuff): /call UseAdvLoot
kissassist.mac@1407 (CombatReset): /call LootStuff
kissassist.mac@1105 (Combat): /call CombatReset
kissassist.mac@781 (CheckForCombat(int SkipCombat, string FromWhere)): /call Combat
kissassist.mac@765 (Main): /call CheckForCombat 0 MainLoop

Then kissassist kept trying to pull mobs but not actually casting spells (due to lag I believe) & kept getting this error:
Rich (BB code):
Woah! hold your horses there little filly... You better add a ${AdvLoot.LootInProgress} check in your macro to make sure loot is not in progress.
ninjadvloot.inc@646 (UseAdvLoot): /advloot shared ${i} giveto ${Me.Name}
kissassist.mac@3306 (LootStuff): /call UseAdvLoot
kissassist.mac@766 (Main): /call LootStuff

In game it kept showing this error from EQ: "You cannot perform that action right now. Please try again in a moment."

I believe a fix might be to add something like the following around line 600 in Ninjadvloot.inc (basically at the beginning of UseAdvLoot method):
Rich (BB code):
/if (${AdvLoot.LootInProgress}) /return

Or maybe as an or condition in the full inv check. I am typically not a fan of un-enclosed if blocks this seems to match the coding style I saw for checking if inv was full etc... although to be fair I really only skimmed the code so it's possible I missed some context that makes this change wrong for some reason.

No idea how to repro since I'm pretty sure it only came up due to EQ being lagged to heck.
 
Yar. We are working on Kiss 9 still plus Hoosierbilly has been working on Ninjadvloot 6. Once he is done and its stable I will go over his code and add a few things I have been working on to round it out. Probably will happen next week.
 
1) I have changed StackPlatValue=0. Now, just to be sure I understand, if Huntsman's Ethereal Quiver drops (lore but not quest) or Visage of the Somnium Minion (lore but not quest), and no one has a filter 'no' or 'never', then it will round robin 1 to everyone in the group? If so, then kudos, that is all I ever wanted it to do (well, and change ML once bags are full). I have no individual filters of any kind for the new zone I am in, and the few toons that did have filters (for other zones) I have filters turned off. Problem solved?


1A) should be problem solved. I set StackPlatValue=50 for testing mostly. The next file I post it will be StackPlatValue=0 for a default. I have never used the advloot filters before starting this and am unsure exactly how they will react. Testing and playing continues when I get time. At one time I had a problem with items that 0 as a base value, I think that was corrected, but my mind is so unsettled, I simply don't remember.

2) There is a way to 1) delete all individual filters, as well as 2) to simply turn individual filtering off. We might want to remind folks of that if that gets around the NO or NEVER issue. Besides, I see no practical way to setup AdvLoot filters for multiple toons for multiple zones. Seems to me that filters are really used by ppl who play one toon, nothing automated, and have taken the time in their journey to set filters as loot drops. That aint me.


2A) There was a writeup somewhere about editing your advloot filter files to manually add stuff, deleting stuff should be easy. I think I tried turning off the filters in the advloot window once and it did something I didn't like. That will have to be tested again, I simple don't remember anymore.

3) I assume /lootquest still needs to be implemented in KA9?


3A) The code changes in ninjadvloot (/lootquest) should work regardless of the main macro. I didn't use kissassist before I started this. I wrote my own macro to control my group, based on how I play the game. I have been testing KA8.5 and it's fairly remarkable macro, just not well suited for my play style. I hate MQ2Melee plugin. Maybe KA9 will be better for me.

4) I have made LootLagDelay=20 to give myself just a little more time, if I am present and watching loot, to be able to react to something. I am truly amazed how fast you have made the looting. That improvement alone is worthy of mention! Its so fast I could consider turning on loot while in combat (I wont, but just saying).


4A) The combat loot setting in the loot.ini file is not used with advloot. That is one of the reasons I wanted it to happen so very fast. Don't want my dps or worse my tank dickin around with looting when he should be killing. It is also the reason for being able to exclude group members from being selected master looter. The LootLagDelay setting is for slower systems that encounter problems but it does simple slow down looting so you can watch it happen.

5) I have no problem with having to select which items get marked destroy. I see the danger of bypassing that. As in the previous version, I will simply go through the bags periodically and have them marked myself by issuing a /lootdestroy.


5A) Agree.

6) I have noticed, even if I have a ML already marked, when I launch KA ninja will make the grp leader ML and I have to reset it. Not a big deal, just wanted someone to know. *** UPDATE: It's just a msg, it doesn't actually change it ***


6A) KA9 or KA8.5 I did not encounter this with my testing of KA8.5 Ninjadvloot should only be selecting a master looter if the group does NOT have one. That check happens only after there is a call for someone to actually loot something, it is not part of the initial set up. I think I remember Maskoi posting he was making KA9? check for and select a master looter as well. Ninjadvloot selects a master looter in reverse order, so the group leader is the last one to be selected. Might want to mention that in the KA9 beta post.

7) From your post: | 3. Added Quest|xx to the ini file, allows all group members to autoroll for items until they have xx number of said item. - Does the item have to be EQ flagged as a quest item for this to work?


7A) No, I could not find a way to detect the EQ quest tag. This is completely manual. The master looter checks each item for a tag (keep/sell/destroy/ignore/quest) and handles the item based on the tag in the loot.ini file. I did find that destroying an item will pickup and destroy entire stacks of items. =destroy is a powerful and somewhat dangerous feature.

8) From your post: Added free container slot check. Will automatically stop looting if container space is < 3. - Shouldn't it select a new ML (and not just go back to grp leader)?


8A) Ninjadvloot selects a master looter in reverse group order. Look at your group leaders group member window. That is the order used for selecting a master looter starting with the bottom and working up. Keep in mind it does check the KA character ini file for LootOn=0 and will skip that character. Default is to select unless it finds LootOn=0. Again check the notes for KA9 I think Maskoi is playing with this as well. Of course, you can turn this off in ninjadvloot GMLSelect=0 in your loot.ini file

9) From your post: StackPlatValue=0 will turn this feature off, adding all new items as Keep, except NoDrop they are always Ignore - Is that practical? Shouldn't it still round robin 1 to everyone in grp? I can't think of an item off the top of my head, but there could be a no-drop item that we don't want marked automatically 'Ignore' until everyone has one. Might want to poll other users on that...


9A) Done.
 
Found a problem with kissassist and how items marked quest are processed. The LootOn=0 setting is interfering with quest items. When I figure out why and how to fix it...
 
Release Ninjadvloot.inc

Users who are viewing this thread

Back
Top
Cart