ljyinvader
发表于 2010-5-11 09:39:13
原帖由 hba 于 2010-5-11 09:22 AM 发表 http://edu.pkuxkx.com:8082/forum/images/common/back.gif
试试step = step + 1,发送到脚本。
学mush,要慢慢的去体会,这是和zmud很不同的mud客户端,变量就是其一。
变量,分为mush本身的变量,和脚本的变量。此两种变量有不同的优势,不要一味的只运用其中一种。
这个我也试过了。。还是报错。。
hba
发表于 2010-5-11 09:42:38
原帖由 ljyinvader 于 2010-5-11 09:39 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
这个我也试过了。。还是报错。。
那就是你在lua中没定义step为全局变量了。
给你一个例子。
<triggers>
<trigger
enabled="y"
match="^[>\s]*劫匪个起纵遁入暗里不见了。"
omit_from_output="y"
regexp="y"
send_to="12"
sequence="20"
>
<send>hb_robber = hb_robber + 1</send>
</trigger>
</triggers>
ljyinvader
发表于 2010-5-11 09:43:05
原帖由 ddid 于 2010-5-11 09:36 AM 发表 http://edu.pkuxkx.com:8082/forum/images/common/back.gif
这里就要看你怎么理解Variable在MUSH里的概念了。
在ZMUD里变量就是一个数值或字符,而在MUSH里,变量只是一个存储器,它的作用是在LUA(或其它语言)不方便直接使用被调用数值或字符时,暂时存储进去。所以有Set ...
我不是在什么复杂trigger里面碰到这个问题的,是最简单的例子,比如匹配了某字符串abc以后,触发器把已有的一个变量a加一,就这么简单的一个触发。。。我现在是感觉MUSH里面的变量都是字符串,所以干脆还是在lua里面计算好了,谢谢大家的解答~
ddid
发表于 2010-5-11 09:45:26
原帖由 ljyinvader 于 2010-5-11 09:43 发表 http://pkuxkx.com/forum/images/common/back.gif
我不是在什么复杂trigger里面碰到这个问题的,是最简单的例子,比如匹配了某字符串abc以后,触发器把已有的一个变量a加一,就这么简单的一个触发。。。我现在是感觉MUSH里面的变量都是字符串,所以干脆还是在lua里 ...
那是因为用Trigger取下来的,都是字符串。
ljyinvader
发表于 2010-5-11 09:47:45
原帖由 hba 于 2010-5-11 09:42 AM 发表 http://edu.pkuxkx.com:8082/forum/images/common/back.gif
那就是你在lua中没定义step为全局变量了。
给你一个例子。
hb_robber = hb_robber + 1
我程序里面的step是mush里的变量,不是脚本里的变量啊。。这两个能放一起用吗
ddid
发表于 2010-5-11 09:50:51
LZ看东西不仔细呀。
注意hba的“全局变量”。
ljyinvader
发表于 2010-5-11 10:10:41
哦。。我终于搞明白了。。我一直以为脚本的作用就是可以弄个函数计算一下呢,以为每次调用脚本里面的函数都会把变量重置一下呢。。所以我只把数据保存在mush的变量里面。。原来可以保存到全局变量里面,嗯,知道了,谢谢
ddid
发表于 2010-5-11 10:13:39
全局变量,仅仅是方法之一,还有其它办法呢。不过建议LZ先把TRIGGER搞明白,尤其是wilcard
ddid
发表于 2010-5-11 10:14:35
用全局变量,总有杀鸡用牛刀的感觉 ……
lzkd
发表于 2010-5-11 10:19:45
如果可能,尽可能少用,或者不用(这个比较难)全局变量