请教mushclient个问题
遇到个难题,以前用zmud写的比较容易。现在用mushclient不知道如何写。举个简单的例子:
#alias aaa {e;e;bbb {s;e;s}}
#alias bbb {#t+ 1;look;#alias temp %-1}
trigger class 1是
#TR {xxxxx} {#t- 1;temp}
在mushclient里上面的功能如何实现?用alias 和 函数分别给个例子。
北大侠客行MUD,中国最好的MUD
[ 本帖最后由 randomcho 于 2011-6-30 01:52 PM 编辑 ] 问的好,我也想知道,这里的mush手册都是关于函数的,对mush本体的一些操作命令好像很少提到 1、alias嵌套的问题,其实在mush中并不像zmud中方便。但是由于函数的灵活性,使得嵌套也显得十分灵活。可以考虑下面的做法,其核心思想就是把命令变成了执行函数的方式而已。
2、MUSH中的lua自己内部函数一般是小写的方式表示,而mc本身的函数多数是以大写字母开头,如:DoAfterSpecial等。
你可以在下拉菜单中帮助-->函数列表查到。或ctrl+alt+shift+L查询
下面代码没测试。也许有错误。。。。表达个意思吧。。
1.#alias aaa {e;e;bbb {s;e;s}}AddAlias("alias_aaa","aaa","",alias_flag.Enabled + alias_flag.Replace,"cmd_aaa")
cmd_aaa=function()
Execute("e;e")
cmd_bbb()
end
cmd_bbb=function()
Execute("s;e;s")
end2. #alias bbb {#t+ 1;look;#alias temp %-1}
#alias temp %-1====>没看懂楼主的意思。AddAlias("alias_bbb2","bbb","",alias_flag.Enabled + alias_flag.Replace,"cmd_bbb")
cmd_bbb=function()
EnableTrigger("1",1)
Execute("look")
---temp=。。。。。
end
[ 本帖最后由 littleknife 于 2011-6-30 09:38 PM 编辑 ] zmud中%-1 代表alias后所有参数。
比如alias bbb,如果你用bbb e,那么e=%1
如果你用bbb e s,如果你想获得bbb后面的两个参数,可以e=%1,s=%2,
或则干脆e s=%-1
其实我上面得例子那就是代表temp={s;e;s},当然这里可以用%1 倒!littleknife没看懂我的列子啊!
如果分开来做我会做的。就是通过alias发给脚本,脚本里调用函数。
其实我的列子就是alias aaa要完成一些列的动作.e;e;bbb {s;e;s}
其中bbb 这个动作是个带参数的alias,这个alias比较特别,他不是马上向游戏释放他的参数s;e;s
而是要执行一些其他的动作后才释放s;e;s,其他的动作=执行一些trigger触发,也就是#TR {xxxxx} {#t- 1;temp}
[ 本帖最后由 randomcho 于 2011-6-30 10:17 PM 编辑 ] 原帖由 randomcho 于 2011-6-30 10:08 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
zmud中%-1 代表alias后所有参数。
比如alias bbb,如果你用bbb e,那么e=%1
如果你用bbb e s,如果你想获得bbb后面的两个参数,可以e=%1,s=%2,
或则干脆e s=%-1
其实我上面得例子那就是代表temp={s;e;s},当然这里 ... AddAlias("alias_bbb","bbb (.+)","",alias_flag.Enabled + alias_flag.Replace + alias_flag.RegularExpression,"alias_bbb")
alias_bbb=function(n,l,w)
temp=w
end
[ 本帖最后由 littleknife 于 2011-6-30 10:20 PM 编辑 ] 看得我头晕 没看懂function(n,l,w)
temp=w
end
function里的参数n,l代表什么?
w是代表参数是个table吧?
问题是mush 的alias 里好像不支持带分号的,不然会解释层换行
不像zmud可以用{}框起来
回复 7楼 的帖子
alias是可以直接用代码进行加载的,其mush命令就是AddAlias而已。若你的alias里有参数,就在函数引用上用参数法引用就是了。bbb=function(n,l,w).......w,第一个参数,w第二个参数。
help----trigger选项:
sub MyTrigger (name, line, wildcards)
world.Note "Trigger " & name & " matched."
world.Note "Wildcard 1 was" & wildcards (1)
end sub
问题是mush 的alias 里好像不支持带分号的,不然会解释层换行
单行多命令,这个是可以设置的。
[ 本帖最后由 littleknife 于 2011-7-1 07:19 AM 编辑 ] 算了 我就举个例子吧。
比如我想走到某个room去。从出发地-->目的地的
路径是这样e;e;然后渡河;渡河好后再走s;e;s
就这么简单;如果用zmud我可以用一个alias解决,方法就是1楼得列子。
#TR {你渡过河了} {#sa 执行渡河后动作;temp} 1(这句最后的1代表class)
#alias aaa {e;e;bbb {s;e;s}}
#alias bbb {#t+1;duhe;#alias temp %-1} (因为我敲aaa的时候会执行bbb {s;e;s},那么这里%-1就是e;s;e,也就是会生成一个alias temp {e;s;e})
那么我敲下aaa,就会自动渡河,然后渡河完成后再走e;s;e