tf5_beta.tar.gz

Uploaded: 19 Dec, 2012
Previous uploads by this submitter: 0

Author: harik(SlothMUD)

Downloads: 57

MSDP, the Mud Server Data Protocol, is used to supplement the normal
text-mode interaction between server and client. MSDP consists of a small
set of commands operating on a wide range of variables.

The syntax is /MSDP <COMMAND> =VALUE [=VALUE …]

Example:

/msdp LIST =REPORTABLE_VARIABLES
/echo %MSDP__REPORTABLE_VARIABLES
% MSDP__REPORTABLE_VARIABLES=A B C…

MSDP responses from the server activate the MSDP trigger: For
example:

/def -F -mglob -t'MSDP *' msdp_report = /echo Server set: %*
/msdp LIST =REPORTABLE_VARIABLES
Server set: MSDP REPORTABLE_VARIABLES A B C

The trigger is called before the variable is updated,
allowing you to track changes.

For instance, the following trigger:
/def -mglob -t'MSDP HEALTH *' msdp_health_update = \
/let _hchange=$[ %3 - %MSDP__HEALTH ]%;\
/echo Health changed: %_hchange to %3

The standard commands are:
LIST, SEND, REPORT, UNREPORT, RESET

/msdp LIST =NAME - sends a list from the server. Suggested list names:
LISTS - Request the list of listable things
COMMANDS - Request a list of commands supported by the server.
CONFIGURABLE_VARIABLES - Variables the client can set on the server.
REPORTABLE_VARIABLES - Variables that the server can update you on change
REPORTED_VARIABLES - The current list of variables the client has
requested to be reported.
SENDABLE_VARIABLES - All possible variables.

/MSDP SEND =NAME [ =NAME … ]
Send the current value of a variable

/MSDP REPORT =NAME [ =NAME … ]
Send the current value, and additionally send the value when it is updated.

/MSDP UNREPORT =NAME [ =NAME …]
stop reporting a variable.

/MSDP RESET =NAME [ =NAME …]
Set the variable to it's default state.

Most commonly used to clear the set of REPORTABLE_VARIABLES, but there may
be other server-specific things to reset.



Example is below of usage:

tf5 now auto-negotiates MSDP if the server offers it, and has a new
/msdp command to access it.

It's all completely low level, so some examples:
(Paste the support code first)
/def -i vv = /result $(/_echo %%{%{1}})
/def -mregexp -p0 -t'^MSDP ([^ ]*) ' msdp_trig = \
/echo MSDP::%P1=%PR (was $(/vv MSDP__%P1))
/def -i -t'MSDP HEALTH' msdp_health = \
/let tmp=$[%MSDP__HEALTH - %hp]%;\
/set hp=%MSDP__HEALTH%;\
/if (%tmp != 0) \
/echo Health: %tmp%;\
/endif


And some examples:
/msdp LIST =REPORTABLE_VARIABLES
/msdp SEND =HEALTH
/msdp REPORT =HEALTH
/msdp REPORT =ROOM_NAME =ROOM_VNUM