|
Kaputchnik Beginner
Joined: 06 Jan 2002 Posts: 28 Location: Sweden
|
Posted: Sat Apr 30, 2011 11:12 pm
Added support for Room.Info GMCP packages server-side. Problems with CMUD mapper |
So I've added support for GMCP to our mud that has been notoriously difficult to map in the past. However I've ran into some small problems client-side testing it out:
1) Non-cardinal exits.
We have a lot of exits of the non-standard type, where the most prevalent would be in/out. Most of these have a logical direction (eg. the house is to the north, typing 'in' would move you one north), but we want the player to use the non-standard exit command.
This is pretty easy to fix manually (both with and without GMCP):
Before exiting through a non-cardinal exit, edit the link in the Room Properties window to the logical direction (if existant) and the Name field to the exit command. This also makes CMUD translate 'north' -> 'in' if using the example stated above.
Is there a way to solve this automatically? It would seem like %roomlink should be able to handle it, but alas - only cardinal exits.
(If it was possible to solve automatically I'd have no problem adding extra custom information in the GMCP message to facilitate the linking. IE, exit 'cave' is to the 'south'
2) Time-delayed exits
Example: (I have an event trigger on GMCP Room.Info, that prints the vnums)
Code: |
> Wilderness Road : Far North of Haisk [n,s,e].
> e
-----------------------------------------------
GMCP.room.exits: w=40014
-----------------------------------------------
> Wilderness Road : Dead End [w].
> climb steps
You begin climbing up the tree.
} abort
You stop climbing steps.
> climb steps
You begin climbing up the tree.
}
You finish climbing steps.
-----------------------------------------------
GMCP.room.exits: doors=1622
-----------------------------------------------
Plateau in the tree [doors].
> |
Where 'climb steps' is a hidden syntax taking you up one level. } prompt represents an interruptable action, so by typing 'abort' the climbing would be aborted. At the moment the GMCP package is sent upon arrival of the player object into the room. (If needed it wouldn't be problematic to add custom GMCP messages to facilitate scripting here also)
This can happen with normal cardinal exits as well. If the area is a swamp (eg. "You start to trudge through the mud to the east. }"), or the sea (eg. "You begin swimming east. }"), but here it is less of a problem.
Same question; is this possible to automate? |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Mon May 02, 2011 3:56 pm |
1) There isn't any way for the MUD to install custom direction commands into the client right now. Those were the kinds of features we wanted to add to GMCP before the whole discussion got de-railed.
In CMUD, the player needs to define a custom direction using the View/Directions command. Or you can define some custom directions in a separate *.PKG package file and then have CMUD players download and use the custom package (similar to how the default "English Directions" package is defined in CMUD).
Once the custom directions are defined in the client, then CMUD will recognize those exit names in the GMCP room.info data.
2) For your time-delayed movement, I'm pretty sure that if the MUD just sends the GMCP room.info data to the CMUD client with the new room ID number, then CMUD will move you to the correct room on the map. The hard part is getting the map created initially. CMUD will only create a new room on the map after the client detects that the player has entered a command to the MUD. So if the MUD just sends two GMCP room.info packets to the client, only the first room will be created when initially mapping. Again, we just never got to that kind of functionality in the GMCP design since people spent more time arguing about low-level data format issues instead of trying to solve real MUD problems like this. |
|
|
|
Kaputchnik Beginner
Joined: 06 Jan 2002 Posts: 28 Location: Sweden
|
Posted: Mon May 02, 2011 10:00 pm |
I think I might be able to solve question 1 by attacking the problem the other way around. Tested to manipulate the map data through the sqllite console, and it seemed to work (spreadsheet updated itself, not the map).
Sooo, a longshot but worth a shot.
GMCP event trigger in CMUD -> call selfmade application that acts as a comserver->manipulate map database = win?
I'll see how that works when I have some more time over this weekend anyway. |
|
|
|
|
|
|
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
|
|