Extending item filters with external application
The item filter scripting language is pretty basic and I think a lot of people would probably appreciate a little more expressive power. So, I've been playing around with writing a program to give people that power. Below is a small example of what it can do so far. The program accepts an extended version of an item filter and outputs a regular item filter that is essentially the same.
#start variables var 2 mapping 1 mapping_text_color_red 200 mapping_text_color_green 0 mapping_text_color_blue 0 leveling_text_color_red 0 leveling_text_color_green 0 leveling_text_color_blue 200 #end variables #start show blocks Show #you can specify conditions on variables mapping > 0 #you can specify conditions just like in normal item filters ItemLevel >= 10 ItemLevel <= 20 #but more generally you can specify linear equations or inequations involving numeric values #from regular item filters as well as variables 2*ItemLevel <= DropLevel + LinkedSockets + var 2*ItemLevel >= DropLevel + LinkedSockets - var #you can use variables when setting attributes SetTextColor mapping_text_color_red mapping_text_color_green mapping_text_color_blue Show #this block will not show up because mapping is not 0 mapping = 0 ItemLevel >= 10 ItemLevel <= 20 2*ItemLevel <= DropLevel + LinkedSockets + var 2*ItemLevel >= DropLevel + LinkedSockets - var SetTextColor leveling_text_color_red leveling_text_color_green leveling_text_color_blue #end show blocks This is the output (It is quite long be warned lol):
Spoiler
Show ItemLevel 10 LinkedSockets 6 DropLevel 12 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 5 DropLevel 13 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 6 DropLevel 13 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 4 DropLevel 14 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 5 DropLevel 14 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 6 DropLevel 14 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 3 DropLevel 15 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 4 DropLevel 15 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 5 DropLevel 15 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 6 DropLevel 15 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 2 DropLevel 16 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 3 DropLevel 16 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 4 DropLevel 16 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 5 DropLevel 16 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 6 DropLevel 16 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 1 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 2 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 3 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 4 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 5 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 6 DropLevel 17 SetTextColor 200 0 0 Show ItemLevel 10 LinkedSockets 1 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 2 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 3 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 4 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 5 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 6 DropLevel 18 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 1 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 2 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 3 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 4 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 5 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 6 DropLevel 19 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 11 LinkedSockets 1 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 2 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 3 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 4 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 5 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 6 DropLevel 20 SetTextColor 200 0 0 Show ItemLevel >= 10 ItemLevel <= 12 LinkedSockets 1 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 2 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 3 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 4 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 5 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 6 DropLevel 21 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 12 LinkedSockets 1 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 2 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 3 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 4 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 5 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 6 DropLevel 22 SetTextColor 200 0 0 Show ItemLevel >= 11 ItemLevel <= 13 LinkedSockets 1 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 2 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 3 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 4 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 5 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 6 DropLevel 23 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 13 LinkedSockets 1 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 2 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 3 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 4 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 5 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 6 DropLevel 24 SetTextColor 200 0 0 Show ItemLevel >= 12 ItemLevel <= 14 LinkedSockets 1 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 2 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 3 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 4 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 5 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 6 DropLevel 25 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 14 LinkedSockets 1 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 2 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 3 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 4 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 5 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 6 DropLevel 26 SetTextColor 200 0 0 Show ItemLevel >= 13 ItemLevel <= 15 LinkedSockets 1 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 2 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 3 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 4 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 5 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 6 DropLevel 27 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 15 LinkedSockets 1 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 2 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 3 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 4 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 5 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 6 DropLevel 28 SetTextColor 200 0 0 Show ItemLevel >= 14 ItemLevel <= 16 LinkedSockets 1 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 2 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 3 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 4 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 5 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 6 DropLevel 29 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 16 LinkedSockets 1 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 2 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 3 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 4 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 5 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 6 DropLevel 30 SetTextColor 200 0 0 Show ItemLevel >= 15 ItemLevel <= 17 LinkedSockets 1 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 2 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 3 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 4 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 5 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 6 DropLevel 31 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 17 LinkedSockets 1 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 2 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 3 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 4 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 5 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 6 DropLevel 32 SetTextColor 200 0 0 Show ItemLevel >= 16 ItemLevel <= 18 LinkedSockets 1 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 2 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 3 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 4 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 5 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 6 DropLevel 33 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 18 LinkedSockets 1 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 2 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 3 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 4 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 5 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 6 DropLevel 34 SetTextColor 200 0 0 Show ItemLevel >= 17 ItemLevel <= 19 LinkedSockets 1 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 2 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 3 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 4 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 5 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 6 DropLevel 35 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 19 LinkedSockets 1 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 2 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 3 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 4 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 5 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 6 DropLevel 36 SetTextColor 200 0 0 Show ItemLevel >= 18 ItemLevel <= 20 LinkedSockets 1 DropLevel 37 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 2 DropLevel 37 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 3 DropLevel 37 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 4 DropLevel 37 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 5 DropLevel 37 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 1 DropLevel 38 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 2 DropLevel 38 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 3 DropLevel 38 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 4 DropLevel 38 SetTextColor 200 0 0 Show ItemLevel >= 19 ItemLevel <= 20 LinkedSockets 1 DropLevel 39 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 2 DropLevel 39 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 3 DropLevel 39 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 1 DropLevel 40 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 2 DropLevel 40 SetTextColor 200 0 0 Show ItemLevel 20 LinkedSockets 1 DropLevel 41 SetTextColor 200 0 0 The program still needs a lot of work. -It doesn't report location of parsing errors. -It fails when variables are used that have not been declared. -integers and strings need to have their values checked to make sure they are valid. I also still want to add a few things. -Ability to include other files like the #include directive in c/c++. -More complicated non integer variables to store colors and maybe even a whole group of attributes. -Possibly some more complicated simplification by combing some of the output blocks. You can see that this could be done with the output of the above example. Is this useful for you guys? What else would you like to see? Thanks. Last edited by Granger_Guildmage on May 17, 2015, 5:45:58 AM
|
|