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

[Plugin] AdvancedItemFilter RELOADED !

Status
Not open for further replies.
I am getting the following error code when changing the plugin load order like you´ve mentioned:
Well, did you have the problem which I mentioned in my post? Because if you don't have any problem - I don't think you need to try to fix it lol
 
I'm spending all day on this if I have too haha.

So... trying some stuff, I wanted to use Custom Rules in AIF to handle most tasks.

item.IsRare - validated true. Set to Pickup

All pickup rules in IFE are disabled

Doesn't pick up any rares.

This is even with manually putting AIF on top of IFE in the plugin order.

edit: and can't post log because there's no mentions of items at all when it's running.
 
[Tick] Exception during execution:Buddy.Coroutines.CoroutineUnhandledException: Exception was thrown by coroutine ---> System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
em AdvancedItemFilter.MyItemEvaluator.Match(Item item, EvaluationType type, IItemFilter& filter) na c:\Users\blabla\Desktop\Teste\Plugins\AdvancedItemFilter\MyItemEvaluator.cs:linha 1061
em AdvancedItemFilter.Tasks.IdentifyItems.<>c__DisplayClass13.<Logic>b__6(Item i) na c:\Users\blabla\Desktop\Teste\Plugins\AdvancedItemFilter\Tasks\IdentifyItems.cs:linha 140
em AdvancedItemFilter.Tasks.IdentifyItems.<>c__DisplayClass13.<Logic>b__9(Item item, Object user) na c:\Users\blabla\Desktop\Teste\Plugins\AdvancedItemFilter\Tasks\IdentifyItems.cs:linha 206
em Loki.Bot.Logic.Bots.OldGrindBot.Coroutines.*‎*‫‪**​‎​‎​​*​‬‬**‫**.**‪*‫‫*​*‎​*‬‬*‏‪​‬‫‫*‪*‫**(Item )
em System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
em Loki.Bot.Logic.Bots.OldGrindBot.Coroutines.f~#EM<'\\<R:U5Y\,$\[UwD/)A}.MoveNext()
--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---
em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
em AdvancedItemFilter.Tasks.GenericTasks.<IdentifyTask>d__2d.MoveNext() na c:\Users\blabla\Desktop\Teste\Plugins\AdvancedItemFilter\Tasks\GenericTasks.cs:linha 322
--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---
em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
em AdvancedItemFilter.Tasks.IdentifyItems.<Logic>d__18.MoveNext() na c:\Users\blabla\Desktop\Teste\Plugins\AdvancedItemFilter\Tasks\IdentifyItems.cs:linha 206
--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---
em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
em Loki.Bot.TaskManager.7hY3C0yJ;\&VK1L\"\\!TGEod4.MoveNext()
--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---
em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
em Loki.Bot.Logic.Bots.OldGrindBot.OldGrindBot.@\*4wdFjrP)350G\[4(G4Zr AB.MoveNext()
--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---
em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
em Buddy.Coroutines.Coroutine.)\,>s\[WS2;ze8Oz(/m "om\]L=!.S\*W}\,Ni/IdXqlU$2mI8rm_sZ!.MoveNext()
--- Fim do rastreamento de pilha de exceções internas ---
em Buddy.Coroutines.Coroutine.‬****‎‬**‬**‏*‫​‫‬*‬‏*‏*‏***‬*(Boolean )
em Buddy.Coroutines.Coroutine.**​*‫​‬‪​‫‬‎‬‪****​‎**‫‫‏‫‏*(Boolean )
em Buddy.Coroutines.Coroutine.Resume()
em Loki.Bot.Logic.Bots.OldGrindBot.OldGrindBot.Tick()
em Loki.Bot.BotManager.**‫‬‎‪​‫​*​‏*‫***‫​‫‫​‬*(IBot )
 
I'm spending all day on this if I have too haha.

So... trying some stuff, I wanted to use Custom Rules in AIF to handle most tasks.

item.IsRare - validated true. Set to Pickup

All pickup rules in IFE are disabled

Doesn't pick up any rares.

This is even with manually putting AIF on top of IFE in the plugin order.

edit: and can't post log because there's no mentions of items at all when it's running.
This does look like exactly my scenario =) Did you try changing the order of loading?
 
This does look like exactly my scenario =) Did you try changing the order of loading?

Oh shiznit we're cooking now. IFE > AIF and it's working. Seems counterproductive unless the bottom (last loaded) is the first priority. Would make sense I guess.
 
i disable the plugin and waiting this fix my game stuck in city forever
 
Oh shiznit we're cooking now. IFE > AIF and it's working. Seems counterproductive unless the bottom (last loaded) is the first priority. Would make sense I guess.
Last loaded = last one to load it's evaluator = evaluator being used is from last plugin which loaded.
 
Okay so I've got it working fairly well so far..

AIF handles pickup of all rares.
Chaos recipe tab set
Turned off never ID
IFE handles "id all rares"
Tested with a few rare jewelry pieces in my inventory when starting EB, it didn't ID them and threw them into the chaos recipe tab (I was below max)
Tested with random 1H weapons as it doesn't use those for the recipe... it ID'd them

Only issue is it stashed the 1H weapons. AIF does no keeping (other than Uniques just in case until I figure this out), stashing and selling is done by IFE. IFE is set to sell all ID'd rares and then i'm filtering the ones I want to keep with the Stash filters utilizing jeryms filters from his thread. Bounced the stats off of what is in the filter for an item and it met none of them.

Hmm.
 
Tempted just to use the checkbox for use jeryms filters but I'm looking over MyItemEvaulator.cs and I don't see how it helps... it's determining whether to keep an item based off prefix/suffix names (ie Cruel, of Fury, etc) but those are not present on rares (well they are, just hidden). Does the base EB client "know" what the range is for those affixes and that's how it is determining whether or not to keep those items?
 
DID IT!!

Step 0) EB should be closed
Step 1) Go here: http://pastebin.com/8qnW7aCr and copy everything. Go to your /Plugins/AdvancedItemFilter/Rules and open up DefaultCustomRules.json. Overwrite everything with what's on the Pastebin. Save (make sure you're saving it as a .json)
Step 2) Launch EB
Step 3) Go to Settings -> Global. By "Plugin Order" you'll see Name and CommonEvents under that. There's a text box under CommonEvents. Type in ItemFilterEditor and under that type in AdvancedItemFilter
Step 4) Go to your ItemFilterEditor settings page. Disable all filters (everything under Save Filters, Pickup Filters, ID Filters, Vendor Filters)
Step 5) Go to your AdvancedItemFilter settings page. Check "Use Jyam's filters for rare items" under Pickup. Check "Enable Chaos Recipe", check "Stash Recipe items to a specific tab" and input a tab (preferably far away from the start of your tabs so excess items don't fill it up). Ensure "Never ID Items" is unchecked. Ensure to Blacklist any important tabs you have (like your Shop tabs).
Step 6) Go to the AdvancedItemFilter -> Custom Rules tab and check "Enable Custom Rules", expand Rules and cycle through the various options to make sure they populated.
Step 7) Hit Start!

AIF will Pickup Currency, Maps, All Rares, 5/6 Links, Uniques, Quest Items, Divination Cards, Any Gem with Quality > 13%, RGB items that are not 2-Handed weapons to sell for Chromatics, and any quality gem of Portal, Empower, Enhance, Enlighten.
AIF will ID all Uniques and Rares that are not Amulets or Rings (order of operations applies, it will NOT ID anything it wants to keep for your chaos recipe)
AIF will Keep all Uniques, Divination Cards, Maps, Fragments, Currency, Gems with Quality > 13%, any quality of gem of Portal, Empower, Enhance, Enlighten, and Vaal Haste*
AIF will Sell all magic items, all Rare items that are identified**, is RGB and item sockets are < 6 and item is not 5/6 Link, all 6 sockets but not 5/6 Link.

* Just noticed that is a bug, should pickup Vaal Haste too >< You can make that quick edit.
** I watched the logs, parsing of jerym's rare filter is done at point of sale, you can watch it calculate the number of desirable mods and it'll sell it if it doesn't meet it.

A big thing to note is when it's setup like this AIF won't go back through your old items to scan whether they can be used for the recipe and protect them. Easy way around that is to put them in your inventory when you start EB.. AIF will do it's stash task and add them to the recipe db and put them in the appropriate tab. AFAIK you could probably not check stash recipe items to a specific tab and it would scan all your non-blacklisted tabs.. but I like to be organized. I want to know if an item is in a tab if it's being used for something or if I can get rid of it. Also this is really only a base template. You can expand on it a lot (I haven't added anything about jewels yet for example.

Enjoy :)

Special thanks to PainfulDeath who figured out the plugin load order.
Also special thanks to tonyx who didn't tell us he had a custom rules file already written out in the rules folder :P

edit: Missed a few pickup rules. Not going to reupload the config just throw that into your AIF custom rules for Pickup. (All of these lines were updated in the pastebin above, no need to add them again)
item.Sockets == 6
item.IsGem and (item.FullName == "Vaal Haste" or item.FullName == "Vaal Discipline")
item.IsJewel and item.IsRare
item.IsFragment
 
DID IT!!

Step 0) EB should be closed
Step 1) Go here: http://pastebin.com/GkRTJcnD and copy everything. Go to your /Plugins/AdvancedItemFilter/Rules and open up DefaultCustomRules.json. Overwrite everything with what's on the Pastebin. Save (make sure you're saving it as a .json)
Step 2) Launch EB
Step 3) Go to Settings -> Global. By "Plugin Order" you'll see Name and CommonEvents under that. There's a text box under CommonEvents. Type in ItemFilterEditor and under that type in AdvancedItemFilter
Step 4) Go to your ItemFilterEditor settings page. Disable all filters (everything under Save Filters, Pickup Filters, ID Filters, Vendor Filters)
Step 5) Go to your AdvancedItemFilter settings page. Check "Use Jyam's filters for rare items" under Pickup. Check "Enable Chaos Recipe", check "Stash Recipe items to a specific tab" and input a tab (preferably far away from the start of your tabs so excess items don't fill it up). Ensure "Never ID Items" is unchecked. Ensure to Blacklist any important tabs you have (like your Shop tabs).
Step 6) Go to the AdvancedItemFilter -> Custom Rules tab and check "Enable Custom Rules", expand Rules and cycle through the various options to make sure they populated.
Step 7) Hit Start!

AIF will Pickup Currency, Maps, All Rares, 5/6 Links, Uniques, Quest Items, Divination Cards, Any Gem with Quality > 13%, RGB items that are not 2-Handed weapons to sell for Chromatics, and any quality gem of Portal, Empower, Enhance, Enlighten.
AIF will ID all Uniques and Rares that are not Amulets or Rings (order of operations applies, it will NOT ID anything it wants to keep for your chaos recipe)
AIF will Keep all Uniques, Divination Cards, Maps, Fragments, Currency, Gems with Quality > 13%, any quality of gem of Portal, Empower, Enhance, Enlighten, and Vaal Haste*
AIF will Sell all magic items, all Rare items that are identified**, is RGB and item sockets are < 6 and item is not 5/6 Link, all 6 sockets but not 5/6 Link.

* Just noticed that is a bug, should pickup Vaal Haste too >< You can make that quick edit.
** I watched the logs, parsing of jerym's rare filter is done at point of sale, you can watch it calculate the number of desirable mods and it'll sell it if it doesn't meet it.

A big thing to note is when it's setup like this AIF won't go back through your old items to scan whether they can be used for the recipe and protect them. Easy way around that is to put them in your inventory when you start EB.. AIF will do it's stash task and add them to the recipe db and put them in the appropriate tab. AFAIK you could probably not check stash recipe items to a specific tab and it would scan all your non-blacklisted tabs.. but I like to be organized. I want to know if an item is in a tab if it's being used for something or if I can get rid of it. Also this is really only a base template. You can expand on it a lot (I haven't added anything about jewels yet for example.

Enjoy :)

Special thanks to PainfulDeath who figured out the plugin load order.
Also special thanks to tonyx who didn't tell us he had a custom rules file already written out in the rules folder :P

the funniest thing about the "plugin order" is that mine is default and it's working. LOLERINO
And the 2nd funniest thing is that I zipped my rules by mistake in 1.0.1.3 XD good find tho :)
 
Sometimes the bot is doing a loop while he tries to do the chaos recipe. Ive had it once where it thought it had a helmet somewhere but there was none, and once where it missed boots and had those already in the inventory.
Will post logs later I guess just a heads up
 
the funniest thing about the "plugin order" is that mine is default and it's working. LOLERINO
And the 2nd funniest thing is that I zipped my rules by mistake in 1.0.1.3 XD good find tho :)

Well the funny thing is two of us had the default order, everything disabled in the normal ItemFilterEditor with item.IsRare = Pickup in AIF and it ignored every item :P Maybe you coded something different on your personal elite copy lol.

While you're here though how does jeryms filter handle parsing items? I looked around in some of the files and couldn't really figure out how it was working. MyItemEvaluator.cs has all the stuff, and it'll search for say Bloodthirsty on a weapon.. but does AIF know what Bloodthirsty is? Or does EB as a whole know that Bloodthirsty is 110-129 Local Physical Damage %?
 
any idea why bot still stash crap unique if i put it in inventory ?

Code:
{
    "Enabled": true,
    "Type": 1,
    "Rule": "item.IsUnique",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 2,
    "Rule": "item.IsUnique and item.IsIdentified",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Redbeak\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Foxshade\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Springleaf\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Twyzel\"",
    "ShouldLog": false
  }



item.IsUnique Pickup
item.IsUnique Id
item.IsUnique and item.IsIdentified Keep
item.IsUnique and item.FullName == "Redbeak" Sell
 
[Tick] Exception during execution:System.MissingMemberException: 'EvaluableItem' object has no attribute 'Fullname'
at Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value)
at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
at IronPython.Compiler.PythonCallTargets.OriginalCallTarget0(PythonFunction function)
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
at _Scripting_(Object[] )
at AdvancedItemFilter.Python.ConditionParserPython.EvaluateCondition(Item i, String cond, RuleType type, Boolean onlyEvaluating) in c:\Users\Victor\Desktop\DLs\Hacks\PoE\Elbudo\Plugins\AdvancedItemFilter\Python\ConditionParserPython.cs:line 59
at AdvancedItemFilter.MyItemEvaluator.Match(Item item, EvaluationType type, IItemFilter& filter) in c:\Users\Victor\Desktop\DLs\Hacks\PoE\Elbudo\Plugins\AdvancedItemFilter\MyItemEvaluator.cs:line 359
at Loki.Bot.ItemEvaluator.Match(Item item, EvaluationType type, IItemFilter& filter)
at Loki.Bot.Logic.Bots.OldGrindBot.AreaStateCache.‬‬*‬‎*‏*‫‪**‎‪*‎*‎‏‎**()
at Loki.Bot.Logic.Bots.OldGrindBot.AreaStateCache.Tick()
at Loki.Bot.Logic.Bots.OldGrindBot.OldGrindBot.Tick()
at Loki.Bot.BotManager.**‫‬‎‪​‫​*​‏*‫***‫​‫‫​‬*(IBot )

Happened when a card dropped...
 
any idea why bot still stash crap unique if i put it in inventory ?

Code:
{
    "Enabled": true,
    "Type": 1,
    "Rule": "item.IsUnique",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 2,
    "Rule": "item.IsUnique and item.IsIdentified",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Redbeak\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Foxshade\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Springleaf\"",
    "ShouldLog": false
  },
  {
    "Enabled": true,
    "Type": 3,
    "Rule": "item.IsUnique and item.FullName == \"Twyzel\"",
    "ShouldLog": false
  }



item.IsUnique Pickup
item.IsUnique Id
item.IsUnique and item.IsIdentified Keep
item.IsUnique and item.FullName == "Redbeak" Sell

Assuming it works the same as IFE, Keep rules override Sell rules. So you're saying KEEP all identified uniques which weighs higher than your SELL that specific unique. Your choices are either a whitelist or blacklist for KEEP.

Example:

item.IsUnique and item.IsIdentified and not item.FullName == "Redbeak" KEEP
item.IsUnique and item.IsIdentified SELL
----- This will cause AIF to try and sell every unique, but since your keep statement overrides it and says to keep every unique except Redbeak, it will only sell Redbeak

item.IsUnique and item.IsIdentified and (item.FullName == "Voll's Devotion" or item.FullName == "Randomunique") KEEP
item.IsUnique and item.IsIdentified SELL
----- This will cause AIF to sell every unique that you don't explicitly say keep

Depends on how many uniques you want to write out. If you're only keeping like six it's probably easier to do an explicit keep statement on those. If you're only trying to sell like six uniques it's probably easier to do an explicit "not item" on those for the keep statement.
 
It's "item.FullName" not "item.Fullname"

First line of the error tells you what the issue is. Find your filter setting and update it.

Yeap 1 have no f1lters for cards by name just:
item.IsDivinationCard

ED1T: Nvm 1 found the 1sse. 1 cop1ed from your post
item.IsGem and (item.Fullname == "Vaal Haste" or item.FullName == "Vaal Discipline")
 
Then it wasn't your divination card filter that tripped it.
 
Found the error, it was on the pickup rule for the gems. Portal was set to item.Fullname instead of item.FullName.. just change that real quick.

edit: Cool thanks for catching that. The Portal line is messed up too though. Uploaded a new pastebin to the link I posted in my instructions with all of the fixes.
 
Status
Not open for further replies.
Back
Top