[Home] [Downloads] [Search] [Help/forum]


Register forum user name Search FAQ

Gammon Forum

[Folder]  Entire forum
-> [Folder]  MUSHclient
. -> [Folder]  Miniwindows
. . -> [Subject]  MAP / INVENTORY CAPTURE

MAP / INVENTORY CAPTURE

You need to log onto the forum to reply or create new threads.

  [Refresh] Refresh page


Posted by Fubar   (2 posts)  [Biography] bio
Date Thu 09 May 2024 03:08 PM (UTC)
Message
I am trying to capture the map but in a different way.

The map looks like this:

https://imgur.com/a/Gi1RMdF

And I figure I could use the inventory alias to make a window to show it.

Using this:

https://pastebin.com/enrKY0t6

It is not capturing anything.
[Go to top] top

Posted by Nick Gammon   Australia  (23,001 posts)  [Biography] bio   Forum Administrator
Date Reply #1 on Fri 10 May 2024 08:58 PM (UTC)
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
[Go to top] top

Posted by Nick Gammon   Australia  (23,001 posts)  [Biography] bio   Forum Administrator
Date Reply #2 on Fri 10 May 2024 08:59 PM (UTC)
Message
To explore why it's not capturing anything please copy and paste here the text you are trying to match on.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Fubar   (2 posts)  [Biography] bio
Date Reply #3 on Sat 11 May 2024 07:23 PM (UTC)

Amended on Sat 11 May 2024 07:25 PM (UTC) by Fubar

Message

MAP
|||__   ___   __|||                R        ^ ^               ~       ~         
|  ||   |||   ||  |         "                  ^                       ~        
|       |||       |              n^H^n "      "^    ~ _                         
|       | |      "|           S"^nn n^     "  ^    ~  | ^^^ ^                   
|    "        "   |       " R   n     n        ^      |^___^n        ~   ~ ~    
|      _   _      |       "   n^~    ^n              n| |||^@n ~               ^
_______|   |______|       "    @n   ^n            ^ ~n n| |n|n           ~    ^@
||||||||"  ||||||||         R  |@nnnn  R           ^  n     n    ~~    ~~   ^ @@
~ nn^      "    "              "|@@~^@       "     ^   n| |n               ^"@^@
   n^        R  @   ___ @    n   @| @|              ^   | |        ~ ~    ^ n^ ^
n   n^         @| @@||| @@@    " |@ |@             ^  ^^| |^n^^    ~  ^^^^@@@   
^^   n^      @ ||@|@||| |@|     @  @~ @@   @      ^  ^_ | |"_  ^    ^^@ @@@H@n n
  ^ R n^     @@ n|@@||| @|@    @   |  @|  "|     ^  ^ | @ @ | @ ^^^^   @  @ n@@@
   ^   n^"   |@n n||||| @@|    @       @ @ |   ^^  ^  | @  @| |  R   R       "" 
  0 ^  n^     |@@ nn| | ||    @  :   ~ @ |    ^~~  ^  @ n@  @      "           n
R "^    n^     |@   @ @@ o R n@  ~   ~@   o  ^  ~  n^^|   @  @@@@@@@@@@@@@@@@@@@
  R~ nn  n^     | R    | @    o@  ~ H@    ""^       nn^^ n @                    
@@n~@^^  n^@@   | nn   |@^^@    @@@@@     ^            n^   @ @@@@@@@@@@@@@@@@@@
||n^| n^ n^@@     n    @^@@^@    "      ^      ~         ^  @ @          "      
   ^ H n^n^|@@         ^@ n^@@ "       ^   ~ ~    n^^^n   ^ @ @      n      n   
 n  ^0 ^   ^@@@  R  "  ^|  ^@@"n      ^          n^___^n   ^@ @                 
 ~   ^^ ~   ^@@      n @^^^@@|    @   ^      ~ ~ n^| |^n   ^| @ n        @|||||@
           n ^@      n |@@@@| R n |   ^           ^@ @^    ^  @"         |     |
ENDMAP


MAP <--before the map

ENDMAP <--after the map
[Go to top] top

Posted by Nick Gammon   Australia  (23,001 posts)  [Biography] bio   Forum Administrator
Date Reply #4 on Sun 12 May 2024 04:44 AM (UTC)
Message
You didn't look for the words "MAP" or "ENDMAP". I've tweaked a few things, see if that works better:


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Wednesday, May 08, 2024, 9:05 AM -->
<!-- MuClient version 5.06 -->

<muclient>
<plugin
   name="MY_MAPPER"
   author="Fubar"
   id="ac4a0f3cff844292345979a6"
   language="Lua"
   purpose="Create a map 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 map. This includes the window and triggeres to make this work.
]]>
</description>

</plugin>

<!--  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 () .. ":map"
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 map

SendNoEcho("map")


-- wait for inventory to start

local x = wait.match ("MAP", 10, trigger_flag.OmitFromOutput)

if not x then
  ColourNote ("white", "blue", "No map received within 10 seconds")
  return
end -- if

local inv = {}
local max_width = WindowTextWidth (win, font, "Map:")

-- loop until end of map

while true do
  local line, wildcards, styles = wait.match ("*", 0, trigger_flag.OmitFromOutput)

  -- see if end of inventory

  if string.match (line, "ENDMAP") then
    break
  end -- if

  -- save map 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, "Map:", 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 () .. ":map"

WindowShow (win, false)

</send>
  </alias>
</aliases>

<!--  Plugin help  -->

<aliases>
  <alias
   script="OnHelp"
   match="MY_MAPPER: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
[Go to top] top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


229 views.

You need to log onto the forum to reply or create new threads.

  [Refresh] Refresh page

Go to topic:           Search the forum


[Go to top] top

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at HostDash]