onlymakai 发表于 2009-8-8 18:32:20

如何做触发截取血气后面那个百分比值?

RT`

zgbl 发表于 2009-8-8 21:13:59

主要问题出在100%时是,90时是[ 90%]有空格,%s不适用
干脆这样吧,写两个触发

?100~%?
max=100

?%s(%d)~%?
max=%1

chengsan 发表于 2009-8-8 23:21:36

其实1个tr还是能够解决的,适用{|}多重条件作为触发就可以
思路是1%前面有0 1 2 3个空格:
#TRIGGER {【 气血 】%s(%d)%s/%s(%d)%s~[{ ||   |}(%d)~%~]} {#say hp.nowhp:%1 hp.maxhp:%2 hp.perhp:%3}


你说道:「【 气血 】 110   / 110    」
[【 气血 】%s(%d)%s/%s(%d)%s~[{ ||   |}(%d)~%~]-> #say hp.nowhp:110 hp.maxhp:110 hp.perhp:100]
hp.nowhp:110 hp.maxhp:110 hp.perhp:100

你说道:「【 气血 】 110   / 110    [ 10%]」
[【 气血 】%s(%d)%s/%s(%d)%s~[{ ||   |}(%d)~%~]-> #say hp.nowhp:110 hp.maxhp:110 hp.perhp:10]
hp.nowhp:110 hp.maxhp:110 hp.perhp:10

你说道:「【 气血 】 110   / 110    」
[【 气血 】%s(%d)%s/%s(%d)%s~[{ ||   |}(%d)~%~]-> #say hp.nowhp:110 hp.maxhp:110 hp.perhp:1]
hp.nowhp:110 hp.maxhp:110 hp.perhp:1

[ 本帖最后由 chengsan 于 2009-8-8 11:23 PM 编辑 ]

sghjjj 发表于 2009-8-9 00:43:05

本来没打算回答这个问题的,因为我那个长篇教学帖里出现过很多次抓取气血的trigger
看楼上2位给的解答都不是最优解,于是去复制过来了

#tri {【%s气血%s】%s(%d)%s/%s(%d)%s~[(*)~%~]%s【%s内力%s】%s(%d)%s/%s(%d)} {#var qixue_health %3}

气血小于100%时,比如80%前面确实有个空格,(%d)无法匹配.气血为100%时前面又没有空格,所以只能用*匹配

不需要复杂的处理,仅仅用*匹配并且直接赋值就可以了.赋值后的结果不会包含空格的,是纯数字.

chengsan 发表于 2009-8-9 11:35:53

还是糖果厉害。我尝试过~[(%n)~%~]    ~[{|%s}(%d)~%~]   ~[{%null()|%s}(%d)~%~]
就是没有想到~[(*)~%~]。
在北侠的这个hp抓取,糖果的方式是最有效的。因为有强制~%的存在,不会存在(*)过渡匹配的问题。
估计一下,在这个例子中,~[&perhp~%~]应该也可以直接把数值抓取到@perhp变量中,就偷懒不尝试了。

作为交流商榷,我是不赞成使用(*)&perhp这样的抓取方式的,因为如果没有很明确的界定符号,很容易出现过度匹配的问题。英文mud &perhp之所以好用,在于英文单词有空格断开。中文mud里做一个大的任务tr,使用明确抓取变量类型的%d %w 等,可以降低排错成本。

[ 本帖最后由 chengsan 于 2009-8-9 11:37 AM 编辑 ]
页: [1]
查看完整版本: 如何做触发截取血气后面那个百分比值?