怎么在462中实现555中%ismember()的功能?
首先不得不说,糖果的帖子写的很好,可惜是对应zmud5.55,而本人一直用惯了462,难道462真的就没救了么,还得自己开动脑筋。糖果的帖子里面有这么一段:
“在这个例子中@baobei中保存了所有随机装备的种类,@baobei2中保存所有随机装备的id,并且注意到@baobei和@baobei2中种类和id是一一对应的。
%ismember(%1,@baobei)返回%1在@baobei中的位置。比如如果掉落刀返回值为2,掉落鞭返回值为4
如果%1不在@baobei中,返回为0
”
悲剧的是在462中的%ismember只会返回1和0,不会返回位置。
想来想去只能利用#fuction命令来变相实现。
#fu item {%word(%1,%2,|)}
//462中没有%item系统函数,可以自己做一个
#fu ismember {%if(%ismember(%1,%2),@item(%2,%1),0}
举例:
#va abc "20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1"
#show @ismember(8,@abc)
显示13
#show @ismember(12,@abc)
显示9
都正确。
但是另外一个就不行了
#var baobei2 "sword|blade|staff|whip|axe|spear|hammer|halberd|dagger|armor|head|waist|boots|necklace|ring|surcoat|cloth|wrists|hands|shield"
#show @ismember(staff,@baobei2)
显示sword
#va baobei "剑|刀|杖|鞭|斧|枪|锤|戟|匕|铠甲|盔|腰带|靴|项链|戒指|披风|袍|护腕|手套|盾"
#show @ismember(斧,@baobei)
显示剑
不知道什么原因,请教高手指点。
北大侠客行MUD,中国最好的MUD 只怪721对汉字支持不怎么好 本帖最后由 mookt 于 2013-11-25 11:22 PM 编辑
快想破了脑袋,又在论坛上看了不少前辈的帖子,感觉终于搞定了。
#fu ismember {%if(%ismember(%1,%2),%if(%ismember(%1,%word(%2,%3,|)),%3,@ismember(%1,%2,[%3+1])),0)
测试结果如下:
#show @ismember(杖,@baobei,1)
显示3
#show @ismember(staff,@baobei2,1)
显示3
不过感觉不爽的就是5.55中的%ismember只需要两个参数,一个参数是需要判定在不在list中的变量(比如说杖,staff)一个参数是list列表,
462中自制的@ismember要多一个参数,这个参数设为1就好了(用于计数),从列表中的第一个开始比较,直到比较结束。 太厉害了 我要做护镖路径集 就得30多个#if 嵌套 啊? 我要做护镖路径集 就得30多个#if 嵌套 啊?
snowboy 发表于 2013-11-26 09:46 PM http://pkuxkx.com/forum/images/common/back.gif
有必要么,可以一个连一个,非要嵌套? lst=99;#20 {#if %ismember(@abc,%word(@ku1,%i,|)) {lst=%i}};#if @lst<50 {#var cba {%word(@ku2,@lst,|)}} 上次发你不在?今晚发,不见不散哈
页:
[1]