462的问题
实例一:做一个trigger来拾取游戏中掉落的随机装备#var baobei "剑|刀|杖|鞭|斧|枪|锤|戟|匕|铠甲|盔|腰带|靴|项链|戒指|披风|袍|护腕|手套|盾"
#var baobei2 "sword|blade|staff|whip|axe|spear|hammer|halberd|dagger|armor|head|waist|boots|necklace|ring|surcoat|cloth|wrists|hands|shield"
#tri {从@dbrname身上掉了出来一*之(*)$} {get %item(@baobei2,%ismember(%1,@baobei))}
在这个例子中@baobei中保存了所有随机装备的种类,@baobei2中保存所有随机装备的id,并且注意到@baobei和@baobei2中种类和id是一一对应的。
%ismember(%1,@baobei)返回%1在@baobei中的位置。比如如果掉落刀返回值为2,掉落鞭返回值为4
如果%1不在@baobei中,返回为0
%item(@baobei2,%ismember(%1,@baobei)),通过%ismember(%1,@baobei)的返回值得到掉落的随机装备的id
这个是不是721才能用啊,我尝试了下用不了,有没高手指点下462的机器,这种tigger咋做呢?
北大侠客行MUD,中国最好的MUD 回复 1# hhw
群里找白公公,462一霸 刚好最近帮别人做机器,回顾了下462,用到相关的东西
462没有item函数,取代的是word
462的ismember只返回true和false,不返回list中的位置,可以论坛搜索下,有前辈做了函数实现这个功能 tri {从@dbrname身上掉了出来一*之(*)$} {get %word(@baobei2,%ismember(%1,@baobei))}
#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
显示的结果正确了
实际触发:
从劫匪身上掉了出来一件刑天之剑
[从劫匪身上掉了出来一*之(*)$-> get %word(@baobei2,%ismember(剑」,@baobei))]
get sword|blade|staff|whip|axe|spear|hammer|halberd|dagger|armor|head|waist|boots|necklace|ring|surcoat|cloth|wrists|hands|shield
还是没有抓取@baobei2中的sword,请大神指点下啊! 触发中的ismember前的%改为@ 回复 5# ambi
你丢下一柄钢刀。
> say 从劫匪身上掉了出来一件刑天之刀
你说道:「从劫匪身上掉了出来一件刑天之刀」
[从劫匪身上掉了出来一*之(*)$-> get %word(@baobei2,@ismember(刀」,@baobei))]
get sword|blade|staff|whip|axe|spear|hammer|halberd|dagger|armor|head|waist|boots|necklace|ring|surcoat|cloth|wrists|hands|shield
改成@了,执行的结果没有变 刀 后面为什么还有个尾巴 {:7_287:}回复 7# ambi
{:7_287:}{:7_287:}{:7_287:}
是啊,为什么多了个」 本帖最后由 dddr 于 2018-1-2 09:31 AM 编辑
从劫匪身上掉了出来一*之(*) 通配符用错了,用*抓出来是刀」,用%x,或者(*)~」 用*是个不太好的习惯,尽量%x之类的
页:
[1]