一个由zmud转入mush的初学者的小体会
本人以前用的是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<t>\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经测试报错:1: unexpected symbol near '?
不知道是什么原因。
c、有没有简单的miniwindows的中文教程,我只需要显示简单的任务提示之类的,论坛上没有找到啊
最后说明一下,我只是根据我自己做机器的需要和自身的条件用现在的做机器思路,我感觉一般的机器用的最多的就是 #if #t+/- #wa +alias +time,对我而言这些就足够了,可能做出的机器不太好看,能用就行。我只是想怎样对于我来说能较容易的实现我想要达到的功能,对于高级复杂的编程实在是没有能力 精力 和 耐心再去学习,写这些东西也只不过是万一有和我有类似烦恼者希望有点小小帮助,在诸位大人眼中可能不值一提,希望宽容的对待,谢谢。 支持支持 a、匹配行:小米\(xmi\)告诉你:(?P\d+)$输出行:%1;@t发送给命令解析器,经测试tell xmi 5,只有%1为5,@t为空,不知道为什么
使用?P<t>标识了一个名为t的变量,引用方式为 %<t> ,其它与 %1 的引用方式类似。 if %1=="小米" then
Send("小心")
end经测试报错:1: unexpected symbol near '?
不知道是什么原因。
%1 的引用应该加上"",即:
if "%1"=="小米" then
Send("小心")
end --if
c、有没有简单的miniwindows的中文教程,我只需要显示简单的任务提示之类的,论坛上没有找到啊
miniWindow 到目前为止还没有中文教程。
如果只是简单的提示信息,可以考虑在InfoBar上做。(InfoBar只能写一行,在命令输入窗口底部)
[ 本帖最后由 ddid 于 2010-11-9 12:05 AM 编辑 ] 第一个问题:
原匹配:小米\(xmi\)告诉你:(?P<t>\d+)$
修改后:小米\(xmi\)告诉你:(?P<t>\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 编辑 ] 老前辈还不睡觉,可敬可敬啊。哈哈哈。ttk_00 ttk_00 关于InfoBar,可以参看:
http://www.gammon.com.au/scripts/doc.php?general=infobar
老前辈~?!@@ hzq 楼主很不错,学习的很认真.
都象楼主这么个学习法,我辛苦整的那么些个学习mush的资料才有意义哈
另外miniWindows目前还没有中文教程,在论坛搜索一下,我以前发过一个胡一刀机器人,里面有用到miniWindows部分功能,记得里面写了不少注释,可以参考一下
[ 本帖最后由 lzkd 于 2010-11-9 06:35 AM 编辑 ] 谢谢大家的支持和帮助
我第一个疑问其实是为了弄明白变量赋值的问题,通过前辈的解释我的理解为这个变量t只是一个临时的变量,和变量表中的变量不同,如果要存入变量表中还需要赋值(把%1发送给变量t),这样如果一个触发除了要给变量赋值,还要发出其他的命令就只能用脚本来完成了,不知是否正确
页:
[1]
2