TOMUD与服务器端的大部分交互都是通过命令格式的数据包来实现的。每个数据包都要求以ASCII码25的字符开头,以ASCII码26的字符来结束。非命令包含的数据将不做处理
#define TMA “\x19” //ASCII码25
#define TMB “\x1A” //ASCII码26
做如上的定义后,我们的命令将是如下形式的:
TMA+cmdname+空格+[可选的参数]+TMB
其中cmdname为TOMUD CLIENT已经预先支持的一些数据包类型名,或者说是协议命令名,如果该命令无参数,则可直接跟上TMB就结束,如果有参数,则需要隔上一个空格,然后在后面按该命令的格式来添加参数。原则上未以次形式传送的包,或者虽然以次形式传送但是不是可以识别的命令串,TOMUD客户端软件都会将该收到的数据抛弃不给予处理。
l version 取客户端版本号,无参数,客户端将返回 版本号和本机IP地址
l alert 以弹出窗口的形式弹出一段文字信息,参数为要显示的字符串,原则上不要带上过长的字符串
l lbadd0/1/2 向列表中添加一项,格式为
l lbrem0/1/2 从列表中移除一项,格式与lbadd相同
l lbclear0/1/2 将某个列表清除,无参数,0/1/2的含义与lbadd相同
l bnway 方向按钮控制
l ptext 文本显示命令,将信息显示在小窗口中
l cchat 频道或着其他信息显示命令
l mbadd
l mbegin 标志菜单命令串
l mbase 缺省菜单设置,应该在游戏启动时就设置和发送到客户端
l mitem 在菜单命令集合里,单独的添加一个菜单项
l mendd 菜单命令串结束
l dlurl 设置基本的根下载地址
l licon 在行前显示指定的图标,参数为图标编号
l cclose 将客户端关闭
l logout 跟cclose相同
l statu 在状态上显示字符串(可以用来显示一些重要参数),参数为要显示的字符串
l 如果需要实现点击后转到页面的连接,请用[]将URL字符串括住
服务器端主要需要增加对以下功能的支持:
1、 列表增加和减少清除
2、 对列表使用鼠标右键,支持弹出菜单
3、 判断用户是否在使用TOMUD客户端
4、 对进入的房间包含的可行走房间进行判断,即方向
5、 根据情况修改背景或者列出图标
6、 在主窗口显示信息
示例代码:(注意,我未考虑使用ZMUD的用户不需要接收到这类信息,如何高效的让两类用户共存同个MUD和收同样的信息是个问题的。建议玩家完全改用TOMUD客户端)
列表命令的例子:lbadd0 name(id) icon
name为列表增加的中文名,()内是英文ID,icon则是一个5位的图标编号,必须是数字,而且长度必须是5位。
要注意列表2是全局的用户列表,里面保存的是所有的ONLINE用户信息。它并没有直接可见的列表
最为根本的修改是修改F_MOVE。在move函数里进行如下判断:
假设移动前环境为env,移动目标对象为ob,则
如果env是玩家(interactive),则向该玩家显示this_object的从列表1里移走的信息
如果env是!living(非生物)则认为env是房间类物品,向该房间显示this_object从列表0里移走的信息
如果ob是玩家(interactive),则向该玩家显示this_object出现在列表1里的信息
如果ob是!is_character(房间类物品),则向该房间显示this_object出现在列表0里的信息
在F_MOVE的remove函数里应该增加将自己从所处环境移走的信息,如果所处是玩家,则显示从列表1移走的信息,否则是从列表0移走的信息。该remove函数在传统MUD里是会在destruct时调用到的。
当一个物品或者对象已经出现在列表0或者列表1后,玩家可以使用右键点击列表中的物品,来获取可以跟该对象相关的操作。实现这一功能的原理是在按下右键时,TOMUD客户端会发一个actionavailable命令,该命令的传入参数是点击的物品ID。
actionavailable命令的实现。命令传入参数为 id,no格式,id为点中的物品ID,而no则为同id物品的编号。这个编号的对应一定要处理好否则就会在同ID时出现一些错误的。
具体实现代码请参看此例子,或者写信跟TOMUD网站WEBMASTER索要。
在用户连线时,或者在你需要判断的时候想用户发送version命令,如果用户使用的是TOMUD客户端则会返回版本号。你只需要在发送后判断用户的下一个输入就行。
bnway命令后面为要enable的方向按钮,值为MUD里常用的方向单词(非缩写),中间用分号分隔。
如果本地没有任何出口也要发送bnway跟空参数。
图标库已经在整理。近期将会有WEB显示出来。为了防止被他人盗链影响服务器,我们将不对外公布地址,将直接在客户端内部使用。(请一丁点考虑防盗链的问题)
在连线初始化时必须以dlurl告诉TOMUD客户端本站的图形和音乐资源下载根目录,也可以使用缺省值
licon命令可以允许在行首显示一个图标
默认信息将扔到主窗口中。但是也可以使用一些预先定义的命令将信息显示到其他小窗口上,或者使用alert命令将信息以弹出窗口的形式来显示。