feishu 发表于 2013-7-26 00:41:28

求教,帮看下所使用的触发使用的系统变量怎么改,每次不触发 (已经解决,谢谢各位)

本帖最后由 feishu 于 2013-7-30 05:58 PM 编辑

触发句有两种七心甲虫 = beetle, jia chong, chong      
星宿毒蛛 = du zhu, zhi zhu, zhu


我做的触发格式是   


星宿毒蛛 = du zhu, zhi zhu, zhu
#TRIGGER {(%x)%s=%s(%x)%s(%x)%p}
{#var bugid_temp %lower( %2 %3);#if %1=%item( @bugname, %ismember( %1, @bugname)) {#additem @bugid "@bugid_temp"}}


七心甲虫 = beetle, jia chong, chong   
#TRIGGER {(%x)%s=%s(%x)%p}
{#if %1=%item( @bugname, %ismember( %1, @bugname)) {#additem @bugid "%2"}}



请问大侠,我这两句为什么不能给变量bugid赋值,命令中的变量bugname是通过前一句的“看起来(%x)想杀死你”而抓去的,我的想法是因为这两个变量都是list类型的变量,不能直接和%1所抓去的值直接比较,所以就先用“%item( @bugname, %ismember( %1, @bugname”的转换来和抓取的值比较,再抓去npc的拼音赋予到bugid变量,但在实际使用中,根本不能实现。
请问各位大侠,
1、我的思路的有实现的可能吗,如果能怎么修改,如果不能还有别的办法吗?
2、如果我想用一个触发实现同时匹配这两种句式,怎么些匹配句?
非常感谢!

北大侠客行MUD,中国最好的MUD

puppet 发表于 2013-7-26 10:13:29

只有%additem, 没有#additem...

feishu 发表于 2013-7-26 12:43:41

有的,在zmud7.21 help查使用的,我在《Zmud机器人制作》这里看到的,#additem和%additem的区别是#additem不可以添加重复的item,另一个反之。
另外发现了问题
我把通配符写错了,(%x)%s=%s(%x)%s(%x)%p应该改成(%x)%s=%s(%w)%s(%w)%p就可以抓取了,但是还是不能赋值,不知道为什么

pssjim 发表于 2013-7-27 00:32:37

{#additem @bugid "@bugid_temp"}}
應該不用" " 雙引號吧?

bluse 发表于 2013-7-27 07:59:55

本帖最后由 bluse 于 2013-7-27 08:01 AM 编辑

{#additem @bugid "@bugid_temp"}


bugid好像不用加@前导吧,这个句子里bugid这个变量的身份是左值,被改写赋值,因此不用加@。
加@的变量,是用于作右值,就是取出值参与运算的。


我没用721,你改成这个试试
{#additem bugid "@bugid_temp"}

feishu 发表于 2013-7-29 02:27:46

谢谢楼上两位,试一下bluse高人的意见,终于可以正确的抓取和赋值了,太谢谢了,这个问题困扰了我好几天

ycryu 发表于 2013-7-29 16:52:37

本帖最后由 ycryu 于 2013-7-30 08:40 AM 编辑

#tr 看起来(%x)想杀死你 {#var bugName %1;look};
#tr @bugName~((*)~) {#var bugID {%lower(%1)};kill @bugID}

feishu 发表于 2013-7-30 18:04:51

#TRIGGER {(%x)%s=%s(%w)%s(%w)%p} {#if %1=%item( @bugname, %ismember( %1, @bugname)) {#additem bugid %lower( %2 %3)}

我楼上写的真简洁,根据各位给的意见,这是我最后改的,可以正常运行了
页: [1]
查看完整版本: 求教,帮看下所使用的触发使用的系统变量怎么改,每次不触发 (已经解决,谢谢各位)