Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
dbwhokie
Newbie


Joined: 16 Aug 2012
Posts: 3

PostPosted: Thu Aug 16, 2012 1:36 pm   

GMCP Mapping Issues
 
Hi I am a Cmud pro user, I have been a zmud user for a long long time. I love the program, but my main mud just changed to GMCP. I am having some issues getting the mapper to work correctly. Here is the information being sent from the server side:

Supported modules
-----------------
Core - core functionality
Char - information about a character
Char.Items - information about items in inventory and room, with live updates
Comm.Channel - identification of communication
Room - various information about the current room
Edit.Composer - used to edit bigger texts client-side


Supported messages by modules
-----------------------------
Core:
Sent by client:
- Core.Hello
* needs to be the first message that the client sends, used to identify the client
* message body is an object with keys "client" and "version", containing the client's name and version
* example: Core.Hello { "client": "Nexus", "version": "3.1.90" }
- Core.Supports.Set
* notifies the server about packages supported by the client
* if another Core.Supports.* package has been received earlier, the list is deleted and replaced with the new one
* message body is an array of strings, each consisting of the module name and version, separated by space
* module version is a positive non-zero integer
* most client implementations will only need to send Set once and won't need Add/Remove; exceptions are module implementations provided by plug-ins
* example: Core.Supports.Set [ "Char 1", "Char.Skills 1", "Char.Items 1" ]
Sent by server:
- Client.GUI version\ndownloadurl
* Current Version and downloadURL of a specific client package. Only Current Version is supported!

Char
Sent by server:
- Char.Vitals
* Basic character attributes such as health, mana, etc.
* Message body is an object containing several variables
* It is generally safe to assume that the values are numbers (even though encoded as strings)
* all values are given as percentage.
* Example: Char.Vitals { "health": "100", "mana": "100", "fatigue": "0", "bloodloss": "0" }
- Char.Team
* structure and vitals of the team
* example: Char.Team { "leader":"straton" , "front": [ { "beurre": { "health": "100","bloodloss": "0" }, "aeis":{ "health": "100","bloodloss": "0" } }] , "back":[ { "conrad":{ "health": "100","bloodloss": "0" } ] {

Char.Items
Sent by client:
- Char.Items.Inv
* request for the server to send the list of items in player's inventory
* message body is empty
* causes the server to send back an appropriate Char.Items.List message
- Char.Items.Contents
* request for the server to send the list of items located inside another item
* message body is a number identifying the item
* causes the server to send back an appropriate Char.Items.List message
Sent by server:
- Char.Items.List
* list of items at a specified location (room, inv, held container)
* message body is an object with keys "location" and "items"
* location value is a string, "inv", "room", or "container" - the last one is container identification
* items value is an array, whose each item is an object with keys "id", "name" and optionally "attrib"
* id is a number identifying the item, name is a string containing a short player-visible item descrption
* attrib is a string consisting of characters describing item properties:
"w" = worn, "W" = wearable but not worn, "l" = wielded, "L" = wieldable but not wielded, "h" = heap, "c" = container
* example: Char.Items.List { "location": "room", "items": [ {"id": 54685, "name": "apple"}, {"id": 85462, "name": "sword", attrib:"L" }] }
- Char.Items.Add
* informs the client about an item being added to the specified location
* message body is an object with keys "location" and "item"
* location is same as with List, item is an object with the same structure as one item from the items array of List
* example: Char.Items.Add { "location": "room", "item": {"id": 123988, "name": "a cat"} }
- Char.Items.Update
* informs the client about an item's attributes being changed - only sent for inventory items
* message body syntax the same as with Add
- Char.Items.Remove
* informs the client about an item being removed from the location
* message body is an object with keys "location" and "item"
* location is same as with List, item is an integer value identifying the item
* example: Char.Items.Remove { "location": "room", "item": 123988 }

Comm.Channel
Sent by server:
- Comm.Channel.Msg
* Informs the client about an incoming message
* message body is an object with keys "channel","source" and "message"
* channel can be "tell" , "<linename>", "commune"
* source is the remembered name of the source , or "Someone"
* example: Comm.Channel.Msg { "channel":"tell", "source":"Trakul", "message":"Hi There" }

Room
Sent by server:
- Room.Info
* Contains information about the room that the player is in.
* Message body is an object with the following keys
* "num" - number identifying the room
* "name" - string containing the brief description
* "zone" - string containing area name
* "terrain" - string containing environment type ("Hills", "Ocean", ...)
* "coord" - room coordinates
* "details" - array holding further information about a room - shop,bank,...
* "exits" - object containing exits, each key is a direction and each value is the number identifying the target room
* "special" - object containing additional exits (armoury, herbalist, inn)
* Example: Room.Info {"num": 12345, "name": "On a hill", "zone": "Primordia", "terrain": "meadow", "coord": { "x":"-45", "y":"23", "z":"0" }, "exits": { "n": 12344, "se": 12336 }, "details": [ "shop", "bank" ], "inside":"0" }
* Rommnumbers > 0x70000000 indicate that the room is not mappable. (eg. a changing maze )
- Room.WrongDir
* Sent if the player attempts to move in a non-existant direction using the standard movement commands
* Upon receiving this message, the client can safely assume that the specified direction does not lead anywhere at this time
* Message body is a string with the name if the non-existant exit
* Example: Room.WrongDir "ne"

Edit.Composer
Sent by server:
- Edit.Composer.Edit
* sent by the server when the player enters an in-game editor. Body is an object, with keys "title" and "text". Text contains the current buffer, title is a title that can be shown to the user.
Sent by client:
- Edit.Composer.SetBuffer
* Sent by the client upon successfully editing a text which was sent to the client in an IRE.Composer.Edit message earlier
* Sending this message only changes the edit buffer, but does not end the editing session
- Edit.Composer.Save
* saves the buffer and ends edit session
- Edit.Composer.Quit
* aborts the editing session



-----Currently the mapper is picking up the directions better than ever from this mud (Xyllomer.mud.de 3000), however, it is not grabbing descriptions, VNums, Zone information (to switch zones and look at VNUM to see where you are).
Reply with quote
MattLofton
GURU


Joined: 23 Dec 2000
Posts: 4834
Location: USA

PostPosted: Thu Aug 16, 2012 6:15 pm   
 
Your mud doesn't send the desc, so you need to trigger on that separately. The rest should capture automatically, though you may need to turn on a couple options in map config for vnum.
_________________
EDIT: I didn't like my old signature
Reply with quote
dbwhokie
Newbie


Joined: 16 Aug 2012
Posts: 3

PostPosted: Fri Aug 17, 2012 12:08 pm   
 
Hmm I will post a log of what the mud is sending. It is sending a lot more than that (for mapping). I can't get the cmud mapper to properly recognize the vnum (I believe they are too high), the descriptions aren't pulling in, nor is zone information. Are you saying I may have to make a trigger to request?
Reply with quote
dbwhokie
Newbie


Joined: 16 Aug 2012
Posts: 3

PostPosted: Fri Aug 17, 2012 12:14 pm   
 
Additionally it is not picking up odd exits
eg:

southwestup, northupup, forward, backward, left, right
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4692
Location: Pensacola, FL, USA

PostPosted: Fri Aug 17, 2012 3:12 pm   
 
Those particular directions are not defined by default, you will have to make them yourself, or tie them to a standard cardinal exit via the room properties window (name field of a given exit)
_________________
Discord: Shalimarwildcat
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Fri Aug 17, 2012 3:37 pm   
 
If you want the room descriptions, you will have to create one or more triggers which captures the description and tells the mapper about it with the #TAG command. As Matt said, the description is not included in the GMCP information, so if you want to include it, you will have to do it yourself. Do you need the room description? Once you get the vnum working, the mapper cannot get lost. Do you need the description for some other reason?

I can't help with the purely GMCP stuff. But I can tell you the vnums are not too high; the mapper can easily handle those vnums.
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Fri Aug 17, 2012 3:46 pm   
 
Doing a quick read of the Cmud documentation on GMCP (you should read it if you havent:
http://forums.zuggsoft.com/modules/mx_kb/kb.php?mode=doc&k=3047)
it looks like the mapper does not automatically use the zone information. If you want it to
automatically create new zones or move rooms to the correct zones, you will have to code that yourself.

That page also mentions a few things about setting up the vnums.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
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 vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net