北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 9766|回复: 15

一个由zmud转入mush的初学者的小体会

[复制链接]
发表于 2010-11-8 23:03:16 | 显示全部楼层 |阅读模式
本人以前用的是zmud,为了解决乱码的问题在网上找到了mush,又发现了这里。看到众位高手的文章后有了学习mush的念头
在使用过程中发现mush除了没有乱码的困扰外,还发现mush在运行过程当中要比zmud稳定。但是对我个人而言觉得mush比
zmud上手要困难,尤其是我已经习惯了zmud的运行模式。现将我的一点小体会供给大家,尤其是从zmud转mush的新手小白。
1、做触发时一定要勾选正则选项表达式,即便你不抓取任何变量,没有任何通配符,否则无法触发。(这条由于我没有及时注意到浪费了我不少摸索时间)
2、我觉得zmud是模糊化处理,比如你的某一触发发送的是别名也好命令也好,zmud自动识别,比如w;w;tt(别名)。但是在mush中你需要提前设定好是发送给命令解析器,还是游戏,还是脚本解析器,这里是和脚本的几个命令相关联的:Send()=直接发送给游戏,如果这里你send的内容是你定义的alias哪你是得不到你想要的结果的;Execute()=发送给命令解析器,如果你想执行别名,需要用他;DoAfter()=#wa xxxx;Send();DoAfterSpecial(3,"ttt",10)=#wa 3000;Execute("ttt")这个命令可以实现等待3秒后执行ttt(可以是别名,也可以是普通命令也可以是一串命令W;e;e;w;s)。我个人感觉有了Execute和DoAfterSpecial可以忘记另外连个命令了。当然是不是影响执行的速度我没有了解。
3、让我抓狂的另一点是在zmud中我只要关注我的triger和alias就好了,但是mush还有一个脚本文件,尤其是涉及到参数传递,调试起来也不习惯。我笨人有笨招,想了个变通的办法,比如某个触发我想发出如下命令,w;s;open door;#wa 2000;ttt(别名,或者是一串命令),我提前定义了一个别名wa(wa * *发送内容为DoAfterSpecial (%1, "%2", 10),发送给脚本解析器),我在触发的发送行为 w;s;open door;wa 2 ttt(发送给命令解析器),就可以实现我想要的功能。同样的道理我还设定了几个类似的alias 开关某一类触发的(相当于 #t+ -)EnableGroup()开关某一个计时器的EnableTime()。这样我基本上可以按照zmud的习惯在mush里做机器了。
4、对于mush中的别名通过摸索发现很强大,同样可以套用,比如上面提到的wa * *,我还有一个k *(kill %1)套到一起用wa 2 k xiaobai相当于#wa 2000;kill xiaobai;而且可以带变量比如k1(kill @needkill 要点选展开变量)
5、mush中可以多个timer同时共存,太方便了
6、有几个疑问还没有弄明白请高手解答一下谢谢
a、匹配行:小米\(xmi\)告诉你:(?P\d+)$输出行:%1;@t发送给命令解析器,经测试tell xmi 5,只有%1为5,@t为空,不知道为什么
b、匹配行同上,
输出行为:if %1>=3 then
Send("小心")
end发送给脚本解析器,经测试tell xmi 5,得到 小心的输出
但是另外一个触发(\W+)\(xmi\)告诉你:hi$
if %1=="小米" then
Send("小心")
end经测试报错[string "触发器: "]:1: unexpected symbol near '?
不知道是什么原因。
c、有没有简单的miniwindows的中文教程,我只需要显示简单的任务提示之类的,论坛上没有找到啊
最后说明一下,我只是根据我自己做机器的需要和自身的条件用现在的做机器思路,我感觉一般的机器用的最多的就是 #if #t+/- #wa +alias +time,对我而言这些就足够了,可能做出的机器不太好看,能用就行。我只是想怎样对于我来说能较容易的实现我想要达到的功能,对于高级复杂的编程实在是没有能力 精力 和 耐心再去学习,写这些东西也只不过是万一有和我有类似烦恼者希望有点小小帮助,在诸位大人眼中可能不值一提,希望宽容的对待,谢谢。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-8 23:18:42 | 显示全部楼层
支持支持
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-8 23:59:29 | 显示全部楼层
a、匹配行:小米\(xmi\)告诉你:(?P\d+)$输出行:%1;@t发送给命令解析器,经测试tell xmi 5,只有%1为5,@t为空,不知道为什么


使用?P标识了一个名为t的变量,引用方式为 % ,其它与 %1 的引用方式类似。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 00:02:52 | 显示全部楼层
if %1=="小米" then
Send("小心")
end经测试报错[string "触发器: "]:1: unexpected symbol near '?
不知道是什么原因。


%1 的引用应该加上"",即:

  1. if "%1"=="小米" then
  2. Send("小心")
  3. end --if
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 00:04:06 | 显示全部楼层
c、有没有简单的miniwindows的中文教程,我只需要显示简单的任务提示之类的,论坛上没有找到啊


miniWindow 到目前为止还没有中文教程。

如果只是简单的提示信息,可以考虑在InfoBar上做。(InfoBar只能写一行,在命令输入窗口底部)

[ 本帖最后由 ddid 于 2010-11-9 12:05 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 00:06:06 | 显示全部楼层
第一个问题:
原匹配:小米\(xmi\)告诉你:(?P\d+)$
修改后:小米\(xmi\)告诉你:(?P\d+)$  命名触发名称:ttt
输出行:Send("小心");Execute(GetTriggerWildcard ("ttt", "t"))  ----脚本解析器。

第二个问题:
原匹配:(\W+)\(xmi\)告诉你:hi$
修改后:(\W+)\(xmi\)告诉你:hi$
输出行:
if "%1"=="小米" then-----%1 须加引号
Send("小心")
end

[ 本帖最后由 littleknife 于 2010-11-9 12:12 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 00:08:00 | 显示全部楼层
老前辈还不睡觉,可敬可敬啊。哈哈哈。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 00:14:17 | 显示全部楼层
关于InfoBar,可以参看:
http://www.gammon.com.au/scripts/doc.php?general=infobar

老前辈~?!@@
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-9 06:33:36 | 显示全部楼层
楼主很不错,学习的很认真.
都象楼主这么个学习法,我辛苦整的那么些个学习mush的资料才有意义哈

另外miniWindows目前还没有中文教程,在论坛搜索一下,我以前发过一个胡一刀机器人,里面有用到miniWindows部分功能,记得里面写了不少注释,可以参考一下

[ 本帖最后由 lzkd 于 2010-11-9 06:35 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-11-9 07:59:30 | 显示全部楼层
谢谢大家的支持和帮助
我第一个疑问其实是为了弄明白变量赋值的问题,通过前辈的解释我的理解为这个变量t只是一个临时的变量,和变量表中的变量不同,如果要存入变量表中还需要赋值(把%1发送给变量t),这样如果一个触发除了要给变量赋值,还要发出其他的命令就只能用脚本来完成了,不知是否正确
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 07:51 PM , Processed in 0.011940 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表