Page 1 of 5

Magic Map for Mudlet 3

Posted: 03 Jun 2017 20:29
by Findis
There have been a few people asking about clients that support the magic map and I decided to develop a script for mudlet that solves this issue. The magic map for mudlet is nothing spectacular (I am not a UI designer), but it seems to work. I will continue to post any updates/changes I make to the script while I still roam the realms, so if you find any problems, or have any change suggestions, let me know!

To install the Magic Map on Mudlet, load your Mudlet profile, click "Package Manager" on the top menu, click the "Install" button, and select the zip file attached to this post. Restart Mudlet if it does not show up right away.

Hope this proves useful to a person or two!
Findis!

Re: Magic Map for Mudlet 3

Posted: 03 Jun 2017 20:34
by Zugzug
Findis wrote:There have been a few people asking about clients that support the magic map and I decided to develop a script for mudlet that solves this issue. The magic map for mudlet is nothing spectacular (I am not a UI designer), but it seems to work. I will continue to post any updates/changes I make to the script while I still roam the realms, so if you find any problems, or have any change suggestions, let me know!

To install the Magic Map on Mudlet, load your Mudlet profile, click "Package Manager" on the top menu, click the "Install" button, and select the zip file attached to this post. Restart Mudlet if it does not show up right away.

Hope this proves useful to a person or two!
Findis!
You are THE. BEST.

Thank you very much!

Re: Magic Map for Mudlet 3

Posted: 03 Jun 2017 22:40
by palaver
Most excellent.
Hopefully this opens the door for some people to experiment.
With the map, Mudlet is giving me lots of joy.

Thanks, Findis!

Re: Magic Map for Mudlet 3

Posted: 04 Jun 2017 01:47
by Ody
Excellent job, Findis.

Re: Magic Map for Mudlet 3

Posted: 04 Jun 2017 02:08
by Findis
To give people an idea of what it looks like, here's a picture of my complete setup! It is definitely ugly, but now that it's functional, I'll take some time to make it look appealing.

Re: Magic Map for Mudlet 3

Posted: 04 Jun 2017 03:25
by Tarax the Terrible
Loving your work.

Curious about something for a Cmud implementation.

Saw in the script you are using

Code: Select all

return end local x, y = tonumber(gmcp.room.info.x), tonumber(gmcp.room.info.y)
Does this have a map width and length?

Cus thats what you use to split it up.

Code: Select all

split(map, "\n") local myline = replace_char(x+1,maplines[y+1], "X") maplines[y+1] etc
Not on cMud or id just check instead of asking.
ty

Re: Magic Map for Mudlet 3

Posted: 04 Jun 2017 07:15
by Findis
Tarax the Terrible wrote:Loving your work.

Curious about something for a Cmud implementation.

Saw in the script you are using

Code: Select all

return end local x, y = tonumber(gmcp.room.info.x), tonumber(gmcp.room.info.y)
Does this have a map width and length?

Cus thats what you use to split it up.

Code: Select all

split(map, "\n") local myline = replace_char(x+1,maplines[y+1], "X") maplines[y+1] etc
Not on cMud or id just check instead of asking.
ty
Hi Tarax,

Hmm. the x and y values are the position that the charater is in on the map. Since the map sent through GMCP is a multiline string, I split the string into an array of strings everytime there is a newline ("\n"). Using maplines[y] returns the string of the row of the map that my character is located. After that, I use the replace the x-th character (which is usually an "o" on genesis maps) with a red "X" to make it easy to see where you are on the map... Look at the example I took from Greenhollow, below.

Code: Select all

  info = {
    zoomx = 19,
    x = 60,
    id = "PTwHB0",
    short = "in southern Greenhollow near the Adventurer's Guild",
    zoomy = 22,
    exits = {
      "west",
      "north",
      "east",
      "south"
    },
    doors = {
    },
    y = 14
  },
  map = {
    map = [[
                            __________
                          .' ________/  ` .              _____
                         /  /.       `.     ` .         /    / `.
                        .-./  `.       `.      /      .-----.     `.___
                       /   `.   `.       `.   //     /       `.   / \  /\
                      /  \\\ `.   /========`.//     /----------`./  / /  \
                     /=========`./\_________\/       \   \\\    \  / /   /
                      \    .    \  /                 /\__________\/ /   /
    Library            \___\|\___\/ The Inn         /______________/   /
         __                 |                       \  ==      ==  \  /
       //   `.              |                        \____\\\\\_____\/
      //     /\             |                Adventurer's   |
   __//     /_/             |                   Guild       |
  / //     /  /\            |                               |
 /_//     /__/\/-- -- -- -- o -- -- -- -- -- -- -- -- -- -- o -- -- -- -- -- 
 \/ `.   /\__\/             |                               |
 /    `./ /                 |         =============         |
 \______\/                  |          Village of           |
                     _______|__        Greenhollow          |
                    /_________/|\     (south side)          o
                    \_________\| |    =============         |
             Tavern  |__|\_\____\|                          |
                      \__| 
]],
In this case, x = 60 and y = 19. Now, if we split the map string by easy new line, then we get an array that looks like:

Code: Select all

{
  "                            __________",
  "                          .' ________/  ` .              _____",
  "                         /  /.       `.     ` .         /    / `.",
  "                        .-./  `.       `.      /      .-----.     `.___",
  "                       /   `.   `.       `.   //     /       `.   / \\  /\\",
  "                      /  \\\\\\ `.   /========`.//     /----------`./  / /  \\",
  "                     /=========`./\\_________\\/       \\   \\\\\\    \\  / /   /",
  "                      \\    .    \\  /                 /\\__________\\/ /   /",
  "    Library            \\___\\|\\___\\/ The Inn         /______________/   /",
  "         __                 |                       \\  ==      ==  \\  /",
  "       //   `.              |                        \\____\\\\\\\\\\_____\\/",
  "      //     /\\             |                Adventurer's   |",
  "   __//     /_/             |                   Guild       |",
  "  / //     /  /\\            |                               |",
  " /_//     /__/\\/-- -- -- -- o -- -- -- -- -- -- -- -- -- -- o -- -- -- -- -- ",
  " \\/ `.   /\\__\\/             |                               |",
  " /    `./ /                 |         =============         |",
  " \\______\\/                  |          Village of           |",
  "                     _______|__        Greenhollow          |",
  "                    /_________/|\\     (south side)          o",
  "                    \\_________\\| |    =============         |",
  "             Tavern  |__|\\_\\____\\|                          |",
  "                      \\__| "
}
Since we know that our y position is 19 (where the smallest y is 0) I take the line at y+1=20 because LUA arrays are NOT 0 based (so if cMud arrays are 0 based. you do not need to add 1 to y), which returns the following line:

Code: Select all

  " /_//     /__/\\/-- -- -- -- o -- -- -- -- -- -- -- -- -- -- o -- -- -- -- --
Again, since mudlet has 1 based arrays, I add one to the value of x again so that character 61 (which is a "o") in this case, is replace with an "X". Then, I simply append all the lines back together, and print it to a miniconsole. I do not own a copy of cMud, and there is not a version of it that runs on linux natively (which is my main operating system), so I can't assist you with cMud specific code, but I can help you with any algorithm specific questions you have.

Re: Magic Map for Mudlet 3

Posted: 04 Jun 2017 08:25
by Hexen
Sick as fuck Findis.

Re: Magic Map for Mudlet 3

Posted: 05 Jun 2017 00:10
by gorboth
This makes me smile. Impressive gains, Findis! You're developing a fan base, and no surprise. :-)

G.

Re: Magic Map for Mudlet 3

Posted: 08 Jun 2017 11:57
by Dakhor
Hiya!

For those that wish the map to be a floating and seperate window this is now made more easy with Mudlet 3.2 release and the function openuserwindow.

http://wiki.mudlet.org/w/Manual:UI_Func ... UserWindow

From the devs...

"
Would you like to make your miniconsoles separate from the Mudlet window? Move them over to another monitor perhaps? Or make dock them inside Mudlet? You can with openUserWindow(), check it out. This release has improved a lot of things for userwindows – they’ll now remember their position when you open Mudlet, won’t inherit borders from the main window, and will close with the profile. Once you open a userwindow, you can use all the same cecho(), copy(), paste() on it just as with a miniconsole.
"



Cheers

DaC