Posted by
| Nick Gammon
Australia (23,120 posts) Bio
Forum Administrator |
Message
| It's better to include the code in the post:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Wednesday, May 08, 2024, 9:05 AM -->
<!-- MuClient version 5.06 -->
<!-- Plugin "FA_INVENTORY_WINDOW" generated by Plugin Wizard -->
<muclient>
<plugin
name="FA_INVENTORY_WINDOW"
author="Fubar"
id="ac4a0f3cff844292345979a6"
language="Lua"
purpose="Create an inventory window."
date_written="2024-05-08 09:02:52"
requires="5.06"
version="1.0"
>
<description trim="y">
<![CDATA[
This will create a small window that scales to the size of your screen. This window will show current inventory. This includes the window and triggeres to make this work.
]]>
</description>
</plugin>
<!-- Get our standard constants -->
<include name="constants.lua"/>
<!-- Aliases -->
<aliases>
<alias
match="map"
enabled="y"
group="INVENTORY"
send_to="12"
omit_from_output="y"
sequence="100"
>
<send>
require "wait"
wait.make (function () -- coroutine starts here
local win = GetPluginID () .. ":inventory"
local font = "f"
WindowDelete (win)
if not WindowInfo (win, 1) then
WindowCreate (win, 0, 0, 0, 0, 6, 0, 0)
WindowFont (win, font, "Courier New", 9)
end -- if
-- request inventory
Execute ("map", 0, trigger_flag.OmitFromOutput)
-- wait for inventory to start
local x = wait.match ("^--\> *", 10, trigger_flag.OmitFromOutput)
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 ("\S\s\n\t\r\n\f.+.*", 0, trigger_flag.OmitFromOutput)
-- see if end of inventory
if 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 "#000000")
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 + WindowRectOp (win, 2, x, y, 0, 0, style.backcolour)
x = x + WindowText (win, font, style.text, x, y, 0, 0, style.textcolour)
x = x + WindowRectOp (win, 5, 0, 0, 0, 0, 5, 15 + 0x1000)
end -- for
y = y + font_height
end -- for each inventory item
WindowShow (win, true)
end) -- end of coroutine
</send>
</alias>
<alias
match="nomap"
enabled="y"
group="INVENTORY"
send_to="12"
sequence="100"
>
<send>
local win = GetPluginID () .. ":inventory"
WindowShow (win, false)
</send>
</alias>
</aliases>
<!-- Plugin help -->
<aliases>
<alias
script="OnHelp"
match="FA_INVENTORY_WINDOW:help"
enabled="y"
>
</alias>
</aliases>
<script>
<![CDATA[
function OnHelp ()
world.Note (world.GetPluginInfo (world.GetPluginID (), 3))
end
]]>
</script>
</muclient>
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|