北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4404|回复: 4

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

[复制链接]
发表于 2009-8-8 18:32:20 | 显示全部楼层 |阅读模式
RT`
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-8 21:13:59 | 显示全部楼层
主要问题出在100%时是[100%],90时是[ 90%]有空格,%s不适用
干脆这样吧,写两个触发

?100~%?
max=100

?%s(%d)~%?
max=%1
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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    [100%]」
[【 气血 】%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    [  1%]」
[【 气血 】%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 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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%时前面又没有空格,所以只能用*匹配

不需要复杂的处理,仅仅用*匹配并且直接赋值就可以了.赋值后的结果不会包含空格的,是纯数字.
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 08:01 PM , Processed in 0.010943 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表