View unanswered posts | View active topics It is currently 17 Jan 2018 17:02

Forum rules


- Use common sense and be respectful towards each other at all times, even when disagreeing.
- Do not reveal sensitive game information. Guild secrets, player seconds are examples of things not allowed.



Reply to topic  [ 43 posts ]  Go to page 1, 2, 3, 4, 5  Next
Magic Map for Mudlet 3 
Author Message
Greenhorne

Joined: 03 Jun 2017 00:38
Posts: 6
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!


Attachments:
File comment: Initial release of the Magic Map for Mudlet
MagicMap20170602.zip [1.24 KiB]
Downloaded 57 times


Last edited by Findis on 03 Jun 2017 20:36, edited 1 time in total.

03 Jun 2017 20:29
Profile
Online
Wanderer

Joined: 20 May 2017 15:25
Posts: 59
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!


03 Jun 2017 20:34
Profile
Beginner

Joined: 05 May 2017 23:59
Posts: 21
Most excellent.
Hopefully this opens the door for some people to experiment.
With the map, Mudlet is giving me lots of joy.

Thanks, Findis!

_________________
"When I die, throw me to the wolves. I'm used to it."
- Diogenes the Cynic (trans. Davenport)


03 Jun 2017 22:40
Profile
Online
Rising Hero
User avatar

Joined: 18 Apr 2015 03:28
Posts: 367
Location: Vingaard Keep
Excellent job, Findis.

_________________
They denied that wealth could be printed, they denied that lunches were free;
They denied that Wishes were Horses; they denied that a Pig had Wings;
So we worshipped the Gods of of the Market Who promised these beautiful things.


04 Jun 2017 01:47
Profile
Greenhorne

Joined: 03 Jun 2017 00:38
Posts: 6
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.


Attachments:
setup.png
setup.png [ 192.74 KiB | Viewed 1507 times ]


Last edited by Findis on 04 Jun 2017 18:43, edited 1 time in total.

04 Jun 2017 02:08
Profile
Myth
User avatar

Joined: 09 Mar 2010 20:33
Posts: 1331
Location: UK
Loving your work.

Curious about something for a Cmud implementation.

Saw in the script you are using

Code:
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:
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

_________________
http://genesisquests.pbworks.com/
Join up and help each other with Quests :)


04 Jun 2017 03:25
Profile
Greenhorne

Joined: 03 Jun 2017 00:38
Posts: 6
Tarax the Terrible wrote:
Loving your work.

Curious about something for a Cmud implementation.

Saw in the script you are using

Code:
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:
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:
  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:
{
  "                            __________",
  "                          .' ________/  ` .              _____",
  "                         /  /.       `.     ` .         /    / `.",
  "                        .-./  `.       `.      /      .-----.     `.___",
  "                       /   `.   `.       `.   //     /       `.   / \\  /\\",
  "                      /  \\\\\\ `.   /========`.//     /----------`./  / /  \\",
  "                     /=========`./\\_________\\/       \\   \\\\\\    \\  / /   /",
  "                      \\    .    \\  /                 /\\__________\\/ /   /",
  "    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:
  " /_//     /__/\\/-- -- -- -- 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.


04 Jun 2017 07:15
Profile
Novice
User avatar

Joined: 06 Dec 2016 23:20
Posts: 2
Location: The Tower
Sick as fuck Findis.

_________________
,___,
[O,o]
/)''''/)
-"--"--
~Night Owl~


04 Jun 2017 08:25
Profile
Site Admin
User avatar

Joined: 03 Mar 2010 20:51
Posts: 2061
Location: Some old coffin
This makes me smile. Impressive gains, Findis! You're developing a fan base, and no surprise. :-)

G.

_________________
Mmmmmm ... pie ...


05 Jun 2017 00:10
Profile
Apprentice
User avatar

Joined: 23 Sep 2016 16:21
Posts: 26
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


08 Jun 2017 11:57
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 43 posts ]  Go to page 1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.