I am using the inventory miniwindow that you so kindly provided in the youtube video. My scripting knowledge is limited, but not afraid to dive in and try things out.
What I would like to do is make it so that when it grabs all of the information that "I'm holding" it excludes a certain type of item. (vials)
I'm not really sure where to start, so let me explain;
Here is an example of my inventory:
You are holding:
vial171396 a small pinewood vial
vial401698 an oaken vial
vial401807 an oaken vial
stocking125226 a silver stocking
vial375233 an oaken vial
vial375310 an oaken vial
vial375349 an oaken vial
vial375418 an oaken vial
trousers44816 fitted black trousers
I would like it to show this instead:
You are holding:
stocking125226 a silver stocking
trousers44816 fitted black trousers
<aliases>
<alias
match="inv"
enabled="y"
group="General"
send_to="12"
sequence="100"
>
<send>require "wait"
wait.make (function () -- coroutine starts here
local win = GetPluginID () .. ":inventory"
local font = "f"
if not WindowInfo (win, 1) then
WindowCreate (win, 0, 0, 0, 0, 6, 0, 0)
WindowFont (win, font, "Lucida Console", 9)
end -- if
-- request inventory
Send "info inv"
-- wait for inventory to start
local x = wait.match ("You are holding:", 10)
if not x then
ColourNote ("white", "blue", "No inventory received within 10 seconds")
return
end -- if
local inv = {}
local max_width = WindowTextWidth (win, font, "Inventory")
-- loop until end of inventory
while true do
local line, wildcards, styles = wait.match ("*")
-- see if end of inventory
if not string.match (line, "^..... ") then
break
end -- if
-- save inventory line
table.insert (inv, styles)
-- work out max width
max_width = math.max (max_width, WindowTextWidth (win, font, line))
end -- while loop
local font_height = WindowFontInfo (win, font, 1)
local window_width = max_width + 10
local window_height = font_height * (#inv + 2) + 10
-- make window correct size
WindowCreate (win, 0, 0, window_width, window_height, 6, 0, ColourNameToRGB "#373737")
WindowRectOp (win, 5, 0, 0, 0, 0, 5, 15 + 0x1000)
-- heading line
WindowText (win, font, "Inventory", 5, 5, 0, 0, ColourNameToRGB "yellow")
-- draw each inventory line
local y = font_height * 2 + 5
for i, styles in ipairs (inv) do
local x = 5
for _, style in ipairs (styles) do
x = x + WindowText (win, font, style.text, x, y, 0, 0, style.textcolour)
end -- for
y = y + font_height
end -- for each inventory item
WindowShow (win, true)
end) -- end of coroutine</send>
</alias>
</aliases>
|