xiangbs 发表于 2010-3-14 16:53:00

Mush抓取变量的问题

skills后需要抓取技能等级比如
伏摩剑 (fumo-jian)                     - 勉勉强强50/   0│

我用了^│[\s□]+\S+\s+\((\S+)\)\s+-\s*\S+\s*(\d+)/\s+(\d+)\s*│$ 来抓取fumo-jian 等级50 和当前等级经验(这里是0)
用Note(%1,%2,%3)发送到游戏来测试 发现都是应该正常抓取了,但是如果发送的LUA脚本解析去
就会发现第一个变量抓取为nil,当技能中间带连字符(-),时,会有Run-time error log如下:
:1: attempt to perform arithmetic on global 'fumo' (a nil value)
这里有2点不明白:
1.为什么第一个关于技能的抓取不了,不支持(string)?
2.这个Run-time error为什么会产生呢?第一个问题的连锁反应?
不知道有高手碰到类似的问题没有?是怎么解决的啊 ,请多指教指教

hba 发表于 2010-3-14 17:17:26

这个都有现成的模板啊,给你贴一个。
<triggers>
<trigger
   enabled="y"
   group="status"
   match="^│(.*)\((\S+)\)\s+-\s*\S+\s*(\d+)\/.*│$"
   name="skills"
   regexp="y"
   send_to="12"
   sequence="200"
>
<send>SetVariable(Replace("skills_%2", "-", "_", true),"%3"*1)</send>
</trigger>
</triggers>

然后在Lua或JS中调用getVariable取值。

xiangbs 发表于 2010-3-14 17:23:27

原帖由 hba 于 2010-3-14 05:17 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
这个都有现成的模板啊,给你贴一个。


SetVariable(Replace("skills_%2", "-", "_", true),"%3"*1)



然后在Lua或JS中调用getVariable取值。

其实我的需求有点不太一样。
我并不知道我需要哪个技能,需要抓到这个信息后,进行比较 得到信息。
还有为什么会产生这个问题 比较迷惑 没搞懂原因 =。=

[ 本帖最后由 xiangbs 于 2010-3-14 05:25 PM 编辑 ]

xiangbs 发表于 2010-3-14 17:33:20

比如
伏摩剑 (fumo-jian)                     - 勉勉强强50/   0│

我需要得到fumo-jian 50 0 这3个信息
通过检查fumo-jian知道是不是我需要的技能信息,在决定后边是不是要舍弃
现在卡在这里了 不知道什么原因

danfeng 发表于 2010-3-14 18:13:33

参数调用的时候用("%1",%2,%3)

lzkd 发表于 2010-3-14 18:41:43

在忙着干活,没注意这个帖....

我来解释一下,为什么会出现这种情况
在mush中的lua的抓取挺有意思的.虽然楼主的正则都是写对了,也抓到了.
但在取值给lua的时候,漏了一个东西.
在mush中,你抓取后要送往lua进行运算的内容,如果是数字的,如楼主上面说的fumo-jian 50 0 其中 50 0这两部分没有问题,lua就接收了.但lua认为fumo-jian是一个变量,你看上面的出错信息是的意思大致是----fumo-jian 是一个不存在的变量(意思差不多吧,我E文不好)
如果你想让lua认可这个,就得加上"",告诉lua,这是一个字符串.

-----

呃.再补充一点内容....
虽然50 0这两个内容lua接受了,但,如果你要在后面的代码中进行一下判断,比如说,当<80的时候,你想做什么工作.----也就是说,要把这50当成数字来处理的时候,lua就又会报错不认帐了.
解决的方法是
比如说,你把那个50存到一个变量 lvtmp 里
lvtmp = 50
然后,你想做运算的时候

if lvtmp < 80 then
xxxx
end

这是不行的,lua不认,
你改成

if (lvtmp)*1 < 80 then
xxxx
end

就可以了,或者用个函数也可以,一时间想不起来了,有兴趣你可以查一下

[ 本帖最后由 lzkd 于 2010-3-14 06:50 PM 编辑 ]

xiangbs 发表于 2010-3-14 19:09:22

吃了饭回来都给解决了啊谢谢谢谢
。。。话说这些问题真是奇怪啊
难道是因为LUA是弱类型的原因?
最早开发的人是怎么总结出来的 。。

[ 本帖最后由 xiangbs 于 2010-3-14 07:12 PM 编辑 ]

hba 发表于 2010-3-14 19:32:12

原帖由 lzkd 于 2010-3-14 06:41 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
就可以了,或者用个函数也可以,一时间想不起来了,有兴趣你可以查一下


刚好我前几天看过Lua相关的这一章,我来说吧,就是tonumber()函数,如果string是字符类型的数字将转成数字类型的数字,而string不是正确的数字则该函数返回nil。

ddid 发表于 2010-3-14 20:11:12

呵呵,加油啊~ 各位~

lzkd 发表于 2010-3-14 20:55:41

原帖由 ddid 于 2010-3-14 08:11 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
呵呵,加油啊~ 各位~

嘿嘿....ddid同学....
身为目前北侠mush推广最有力的我,向身为北侠目前最热爱mush的你,提出要求------你看我这么卖力推广mush,申请个奖励不过分吧????

哇卡卡!!!!嘿嘿!!!
页: [1] 2
查看完整版本: Mush抓取变量的问题