如何做触发截取血气后面那个百分比值?
RT` 主要问题出在100%时是,90时是[ 90%]有空格,%s不适用干脆这样吧,写两个触发
?100~%?
max=100
?%s(%d)~%?
max=%1 其实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 编辑 ] 本来没打算回答这个问题的,因为我那个长篇教学帖里出现过很多次抓取气血的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%时前面又没有空格,所以只能用*匹配
不需要复杂的处理,仅仅用*匹配并且直接赋值就可以了.赋值后的结果不会包含空格的,是纯数字. 还是糖果厉害。我尝试过~[(%n)~%~] ~[{|%s}(%d)~%~] ~[{%null()|%s}(%d)~%~]
就是没有想到~[(*)~%~]。
在北侠的这个hp抓取,糖果的方式是最有效的。因为有强制~%的存在,不会存在(*)过渡匹配的问题。
估计一下,在这个例子中,~[&perhp~%~]应该也可以直接把数值抓取到@perhp变量中,就偷懒不尝试了。
作为交流商榷,我是不赞成使用(*)&perhp这样的抓取方式的,因为如果没有很明确的界定符号,很容易出现过度匹配的问题。英文mud &perhp之所以好用,在于英文单词有空格断开。中文mud里做一个大的任务tr,使用明确抓取变量类型的%d %w 等,可以降低排错成本。
[ 本帖最后由 chengsan 于 2009-8-9 11:37 AM 编辑 ]
页:
[1]