|
speedwalk是mushclient中的一个强大的功能,不过用得人似乎不多。
首先,speedwalk字面上的意思是快速行走。至于能走多快,取决于你和服务器双方的设置。
1:快速行走不同于我们常用的单行多命令:
单行多命令:在你按下回车的瞬间把所有输入的命令发送给服务器,这样做的好处在于只要服务器支持就能够瞬间处理所有问题。
单行多命令形如:e;e;e;e;e;e;e;e;s;s;s;s;s;s;s;s;n;n;n;n;n;n;n;n;w;w;w;w;w;w;w;w;eat gold;eat gold;eat gold;eat gold;eat gold;eat gold;eat gold;eat gold
或者:e\ne\ne\ne\ne\ne\ne\ne\ns\ns\ns\ns\ns\ns\ns\ns\nn\nn\nn\nn\nn\nn\nn\nn\nw\nw\nw\nw\nw\nw\nw\nw\neat gold\neat gold\neat gold\neat gold\neat gold\neat gold\neat gold\neat gold
快速行走:在你按下回车后,要输入的命令进入客户端队列,并按照预设的间隔把命令逐条发送给服务器。处理速度上快速行走不会比单行多命令更快,好处是只要延迟设置合理,不会出现服务器吞命令的情况。
快速行走命令形如:8e8s8n8w8(eat gold)
在上面的例子中我们看到了一个括号,这是快速行走的中经常会出现的格式。
快速行走只支持6个内建方向:N:north, S:south, E:east, W:west, U:up, D:down、4个内建动作:C:close; O:open; L:lock; K:unlock、还有一个自定义动作:F:filler。
其中基本上我们能用得上的只有6个内建方向和各种自定义动作(eat gold)
2:快速行走的优势:
支持0-30000毫秒的发送间隔
同一命令重复多达99次(很少用到这么多次吧)
支持命令中断,对未发送命令可抛弃或者回收以备再次使用
写法格式统一兼容性好,不需要额外的设置(单行多命令也可以用\n来统一,不过看起来好费劲啊)
如果说单行多命令是单程车票,那么快速行走就是往返票,它支持反向行走。
比如:
单行多命令:path="s\ne\ns\ne\ns\nw\nnu\nd\open door\nenter" --定义路径
Send (path)--去
path="open door\nout\nu\nsd\ne\nn\nw\nn\nw\nn" --定义路径
Send (path)--回
快速行走:path="sesesw(nu/sd)d(open door/out)(enter/open door)" --定义路径
Send (EvaluateSpeedwalk (path))--去
Send (EvaluateSpeedwalk (ReverseSpeedwalk(path)))--回
3:以下是快速行走相关的函数
延迟命令:
Note (GetSpeedWalkDelay ()) -- 显示延迟时间
SetSpeedWalkDelay (5000) -- 设置为5秒延迟
等待后发送:
DoAfterSpeedWalk (10, "5e 4s w") --10秒后开始执行快速行走
格式转换:
Note(EvaluateSpeedwalk ("4n3esuwdLW")) --转换为单行单命令格式
方向转换:
Note(ReverseSpeedwalk ("4n3esuwdLW(ne/sw)"))--反转路径
立即发送命令到服务器:
SendImmediate ("go north") ---这个虽然不是快速行走命令,不过在需要插队的时候会用到
清除命令队列:
DiscardQueue()
---清除命令队列,所有在队列中的指令失效
加入命令队列:
Queue (EvaluateSpeedwalk("4n"), true)
---加入快速行走命令到队列中,并回显
Queue (EvaluateSpeedwalk("4n"), false)
---加入快速行走命令到队列中,不回显
显示当前命令队列:
---显示当前命令队列中的命令。可以回收再利用
for k, v in pairs (GetQueue()) do
Note (v)
end
以上是我对快速行走的一些看法,欢迎拍砖,欢迎讨论
北大侠客行MUD,中国最好的MUD |
|