Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Due to spam on this forum, all posts now need moderator approval.
Entire forum
➜ MUSHclient
➜ MXP and Pueblo
➜ Handling of improper MXP tags
Handling of improper MXP tags
|
It is now over 60 days since the last post. This thread is closed.
Refresh page
Pages: 1
2
Posted by
| Mymyc
(25 posts) Bio
|
Date
| Reply #15 on Fri 18 Jun 2010 01:40 PM (UTC) Amended on Fri 18 Jun 2010 02:05 PM (UTC) by Mymyc
|
Message
| Leaving mxp off in Mush is a big no-no. Substituting multi-coloured block of text is a pain.
OnPluginPacketReceived?
I never use plugins, only standard triggers and aliases...
... I foresee sweating and painful mistakes here. :-P
So, I have to write a plugin from scratch and place an OnPluginReceived("<RNum *><RName>*</RName>.") function and do a SetVariable("rnum","%1") inside?
Edit: deleted a plugin, I am too stupid at the moment and know nearly nothing about plugins. Let me read docs. | Top |
|
Posted by
| Mymyc
(25 posts) Bio
|
Date
| Reply #16 on Fri 18 Jun 2010 02:42 PM (UTC) |
Message
| Here is the output of the MPX window when I swith on the mxp of the mud:
I 10000: ( 35) Sent version response: <VERSION MXP="0.5" CLIENT=MUSHclient VERSION="4.51" REGISTERED=YES>
I 10009: ( 35) Sent supports response: <SUPPORTS +head +body +afk +title +username +pass +samp +h +high +i +option +bold +xch_page +reset +strong +recommend_option +support +ul +em +send +send.href +send.hint +send.xch_cmd +send.xch_hint +send.prompt +p +hr +html +user +password +a +a.href +a.xch_cmd +a.xch_hint +underline +b +img +img.src +img.xch_mode +pre +li +ol +c +c.fore +c.back +color +color.fore +color.back +font +font.color +font.back +font.fgcolor +font.bgcolor +u +mxp +mxp.off +version +br +v +var +italic >
I 20002: ( 35) Got Definition: !element RNum ATT="id" FLAG="RoomNum" EMPTY
I 20002: ( 35) Got Definition: !element RName FLAG="RoomName"
I 20002: ( 35) Got Definition: !element RDesc FLAG="RoomDesc"
I 20002: ( 35) Got Definition: !element RExits FLAG="RoomExit"
I 20002: ( 35) Got Definition: !element Prompt FLAG="Prompt"
I 10000: ( 35) Sent version response: <VERSION MXP="0.5" CLIENT=MUSHclient VERSION="4.51" REGISTERED=YES>
I 10009: ( 35) Sent supports response: <SUPPORTS +head +body +afk +title +username +pass +samp +h +high +i +option +bold +xch_page +reset +strong +recommend_option +support +ul +em +send +send.href +send.hint +send.xch_cmd +send.xch_hint +send.prompt +p +hr +html +user +password +a +a.href +a.xch_cmd +a.xch_hint +underline +b +img +img.src +img.xch_mode +pre +li +ol +c +c.fore +c.back +color +color.fore +color.back +font +font.color +font.back +font.fgcolor +font.bgcolor +u +mxp +mxp.off +version +br +v +var +italic >
I 20002: ( 35) Got Definition: !element RNum ATT="id" FLAG="RoomNum" EMPTY
W 5000: ( 35) Replacing previously-defined MXP element: <rnum>
I 20002: ( 35) Got Definition: !element RName FLAG="RoomName"
W 5000: ( 35) Replacing previously-defined MXP element: <rname>
I 20002: ( 35) Got Definition: !element RDesc FLAG="RoomDesc"
W 5000: ( 35) Replacing previously-defined MXP element: <rdesc>
I 20002: ( 35) Got Definition: !element RExits FLAG="RoomExit"
W 5000: ( 35) Replacing previously-defined MXP element: <rexits>
I 20002: ( 35) Got Definition: !element Prompt FLAG="Prompt"
W 5000: ( 35) Replacing previously-defined MXP element: <prompt>
And this happens when I walk around:
W 5015: ( 163) Unused argument (1) for <rnum>: 707
W 5015: ( 179) Unused argument (1) for <rnum>: 708
W 5015: ( 186) Unused argument (1) for <rnum>: 707
W 5015: ( 190) Unused argument (1) for <rnum>: 700
W 5015: ( 201) Unused argument (1) for <rnum>: 707
W 5015: ( 226) Unused argument (1) for <rnum>: 699
W 5015: ( 235) Unused argument (1) for <rnum>: 698
W 5015: ( 245) Unused argument (1) for <rnum>: 697
W 5015: ( 255) Unused argument (1) for <rnum>: 698
W 5015: ( 278) Unused argument (1) for <rnum>: 699
W 5015: ( 283) Unused argument (1) for <rnum>: 707 | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #17 on Fri 18 Jun 2010 10:30 PM (UTC) Amended on Sat 19 Jun 2010 09:48 PM (UTC) by Nick Gammon
|
Message
| OK, I made a plugin to fix this.
I think Achaea is mis-using the roomnum tag. The spec for an element definition (here: http://www.zuggsoft.com/zmud/mxp.htm) says:
Tag Properties
MUD Clients can define properties tags to be used by the server in !ELEMENT definitions. The syntax is FLAG='value'. The following special flags are defined in zMUD:
RoomName
The text for the element is parsed by the automapper as the name of a room.
RoomDesc
The text for the element is parsed by the automapper as the description of a room.
RoomExit
The text for the element is parsed by the automapper as exits for the room
RoomNum
The text for the element is parsed by the automapper as a room number
Prompt
The text for the element is parsed by as a MUD Prompt
Set
The text for the element is stored into the named local variable within the client. For example:
<!ELEMENT Hp FLAG="Set hp">
<Hp>100</Hp>
would set the @hp variable in the user's session to 100.
Notice it says "the text for the element is parsed". That is it should be:
instead of:
(See his example for Hp).
Rather than getting into a lengthy argument about whether or I followed, or understood, the spec, the plugin below should work around it. It detects the problematic RNum tags, calls an alias to save the room number, and removes it from the input stream.
|
To save and install the Fix_Rnum_Tags plugin do this:
- Copy between the lines below (to the Clipboard)
- Open a text editor (such as Notepad) and paste the plugin into it
- Save to disk on your PC, preferably in your plugins directory, as Fix_Rnum_Tags.xml
- Go to the MUSHclient File menu -> Plugins
- Click "Add"
- Choose the file Fix_Rnum_Tags.xml (which you just saved in step 3) as a plugin
- Click "Close"
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<muclient>
<plugin
name="Fix_Rnum_Tags"
author="Nick Gammon"
id="3ab30fcb783ef16beb4fd533"
language="Lua"
purpose="Changes RNUM tags on Achaea to work properly"
date_written="2010-06-19 08:04:34"
requires="4.40"
version="1.0"
>
<description trim="y">
<![CDATA[
Install to detect:
<RNum n>
It deletes the MXP tag <RNum n> from the input packet and calls the
alias "got_room_number n". You can make such an alias in another plugin
or the main world file to find the current room number.
]]>
</description>
</plugin>
<!-- Script -->
<script>
<![CDATA[
function handle_room_number (rnum)
Execute ("got_room_number " .. rnum)
return "" -- delete this MXP tag
end -- handle_room_number
function OnPluginPacketReceived (s)
if GetInfo (104) or GetInfo (105) then -- MXP or Pueblo active
return (string.gsub (s, "<RNum (%d+)>", handle_room_number)) -- extract room number
else
return s -- unchanged if not using MXP
end -- if
end -- OnPluginPacketReceived
]]>
</script>
</muclient>
I could have just set a variable, but that would be a plugin variable, not a variable you can easily use elsewhere.
Now you just need an alias in your world file, which picks up the room number change:
<aliases>
<alias
match="got_room_number *"
enabled="y"
variable="room_number"
send_to="9"
sequence="100"
>
<send>%1</send>
</alias>
</aliases>
|
For advice on how to copy aliases, timers or triggers from within MUSHclient, and paste them into a forum message, please see Copying XML.
|
That detects "got_room_number 707" being sent from the plugin, and just saves it as the "room_number" variable. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Mymyc
(25 posts) Bio
|
Date
| Reply #18 on Sat 19 Jun 2010 01:27 PM (UTC) Amended on Sat 19 Jun 2010 04:17 PM (UTC) by Mymyc
|
Message
| Nick! Thanks for your help! You are amazing.
Let me add a last word about mxp and Achaea, here is a chapter from the HELP MXP copy/pasted from the Achaea mud.
19.20 MXP - MUD eXtension Protocol
MXP is a MUD communication protocol that allows us to send enhanced information within the normal text stream. Examples of this enhanced information are:
formatted text, clickable commands, and even images.
To enable MXP for your character in Achaea, type:
CONFIG MXP ON
You can read more about what MXP offers at:
http://www.zuggsoft.com/zmud/mxp.htm
You may also have to enable MXP in your MUD client. Instructions for various popular MUD clients that do not automatically enable MXP follow:
CMUD v3.12 (Beta version)
---------------------------
- Click on "Options" in the top toolbar, then click on "General".
- Click on the "MXP" tab in the "Preferences" window that opens.
- Click on the button "Force remote MXP" if it is not already enabled.
MUSHclient v4.40
------------------
- Click on "Game" in the top toolbar.
- Mouse over to the "Configure" menu option.
- Click on the "MXP / Pueblo" menu option.
- Click on "Use MXP/Pueblo" drop-down menu and choose "Yes - always".
- MUSHclient supports an outdated version of the MXP specification, and therefore does not allow for all of the features used by zMUD and CMUD.
....
Regards!
Edit: I keep bugging the Achaean admins (mostly Tecton) about this issue until they change this very help file and they fix that mxp room number tag. | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #19 on Sat 19 Jun 2010 09:34 PM (UTC) Amended on Sat 19 Jun 2010 09:49 PM (UTC) by Nick Gammon
|
Message
|
Mymyc said:
- Click on "Use MXP/Pueblo" drop-down menu and choose "Yes - always".
- MUSHclient supports an outdated version of the MXP specification, and therefore does not allow for all of the features used by zMUD and CMUD.
....
Hmmm. The default behaviour in MUSHclient is to accept an MXP-enabled MUD if the telnet negotiation sequences are sent to it (as documented in the official MXP spec).
Thus it shouldn't be necessary to set it to "choose "Yes - always". I wonder if Achaea is following the spec itself?
Further grumbles deleted. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Twisol
USA (2,257 posts) Bio
|
Date
| Reply #20 on Sat 19 Jun 2010 09:54 PM (UTC) |
Message
|
Nick Gammon said:
Mymyc said:
- Click on "Use MXP/Pueblo" drop-down menu and choose "Yes - always".
- MUSHclient supports an outdated version of the MXP specification, and therefore does not allow for all of the features used by zMUD and CMUD.
....
Hmmm. The default behaviour in MUSHclient is to accept an MXP-enabled MUD if the telnet negotiation sequences are sent to it (as documented in the official MXP spec).
Thus it shouldn't be necessary to set it to "choose "Yes - always". I wonder if Achaea is following the spec itself?
Further grumbles deleted.
Well, I should quote this bit from the same help file:
Quote: To enable MXP for your character in Achaea, type:
CONFIG MXP ON
I imagine they won't send the negotiation if you don't have CONFIG MXP ON set. I imagine you just need to set CONFIG MXP ON, then reconnect.
I have heard of a bug where people who have CONFIG MXP OFF set will still receive MXP, even though it says its off when you check. I think they're aware of it though. |
'Soludra' on Achaea
Blog: http://jonathan.com/
GitHub: http://github.com/Twisol | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #21 on Sun 20 Jun 2010 12:19 AM (UTC) |
Message
| They probably do that because zMUD processes MXP regardless of the negotiation. In other words, it is always on. So to avoid confusion, you have to explicitly enable it. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Twisol
USA (2,257 posts) Bio
|
Date
| Reply #22 on Sun 20 Jun 2010 12:57 AM (UTC) |
Message
| Hmm, that makes sense. |
'Soludra' on Achaea
Blog: http://jonathan.com/
GitHub: http://github.com/Twisol | Top |
|
Posted by
| Xtian
(53 posts) Bio
|
Date
| Reply #23 on Fri 25 Jun 2010 09:46 AM (UTC) |
Message
| Hi Nick,
To activate MXP in mushclient in its factory default (on command) the MUD has to send a (IAC, SE, MXP, IAC, SE) after the negotiation. Other clients don't need this step and activate after the negotiation with DO/WILL, so maybe the IRE staff didn't know this about Mushclient and it's just a matter of somebody telling them.
At the beginning of the year there was a change in CMUD concerning the RNUM-tag. I found this in the changelog:
Quote:
MXP: RoomNum flag now supported in EMPTY tag and tags ending in /> with the first argument of the tag passed as the room number. E.g. <RoomNum 123/>
There was also a corresponding thread on the cmud forums, that I didn't find now.
Maybe this helps,
xtian | Top |
|
Posted by
| Twisol
USA (2,257 posts) Bio
|
Date
| Reply #24 on Fri 25 Jun 2010 09:51 AM (UTC) |
Message
|
Xtian said: (IAC, SE, MXP, IAC, SE)
This seems suspicious. Did you mean (IAC, SB, MXP, IAC, SE) (note the SB)? |
'Soludra' on Achaea
Blog: http://jonathan.com/
GitHub: http://github.com/Twisol | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #25 on Fri 25 Jun 2010 10:55 AM (UTC) |
Message
|
Xtian said:
To activate MXP in mushclient in its factory default (on command) the MUD has to send a (IAC, SE, MXP, IAC, SE) after the negotiation. Other clients don't need this step and activate after the negotiation with DO/WILL, so maybe the IRE staff didn't know this about Mushclient and it's just a matter of somebody telling them.
Thanks for the clarification, assuming you mean IAC SB MXP IAC SE. It is strange the cMUD activates MXP on a query rather than a command (it is like asking someone if they can play the piano, and rather than just replying "yes" they sit down and actually play it, which you might not want them to do if you have a baby asleep in the next room).
The confusion probably arises because, as far as I know, cMud and zMud parse MXP whether or not it is actually activated, and thus when IRE did their testing it appeared to work. A pity they didn't try it with other clients, but there you are.
MUSHclient does have an option to activate MXP "on query", which is not the factory default because I don't think it is sensible to turn an option on just because you have been asked if you support it or not. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,133 posts) Bio
Forum Administrator |
Date
| Reply #26 on Fri 25 Jun 2010 10:59 AM (UTC) |
Message
|
Xtian said:
At the beginning of the year there was a change in CMUD concerning the RNUM-tag. I found this in the changelog:
Quote:
MXP: RoomNum flag now supported in EMPTY tag and tags ending in /> with the first argument of the tag passed as the room number. E.g. <RoomNum 123/>
There was also a corresponding thread on the cmud forums, that I didn't find now.
Well I don't browse the cMUD change logs (and no doubt Zugg doesn't browse the MUSHclient ones either). It would be nice to hear about changes that affect MXP, but ... oh well. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | 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.
93,885 views.
This is page 2, subject is 2 pages long:
1
2
It is now over 60 days since the last post. This thread is closed.
Refresh page
top