xsaturn 发表于 2014-8-18 05:51:48

怎么把短方向转换成常规方向?

本帖最后由 xsaturn 于 2014-8-18 01:02 AM 编辑

zmud7.21,写了下面的函数:
#fu direction_convert %if( %pos( s, %1)!=0, "south", %if( %pos( n, %1)!=0, "north", %if( %pos( w, %1)!=0, "west", %if( %pos( e, %1)!=0, "east", %if( %pos( "nw", %1)!=0, "northwest", %if( %pos( "ne", %1)!=0, "northeast", %if( %pos( "sw", %1)!=0, "southwest", %if( %pos( "se", %1)!=0, "southeast", %if( %pos( "enter", %1)!=0, "enter", %if( %pos( "out", %1)!=0, "out"))))))))))


用pathback储存路径list,然后想试着引用:
#var directionlist ""
#forall pathback {%additem( @direction_convert(%i), @directionlist)}

结果directionlist是空的。应该怎么写才对呢?或者有没有更方便的把短方向转成常规方向的办法?

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

lxzhi 发表于 2014-8-18 10:32:43

定义两个list分别放短方向和对应的全称方向,对应取出就是

suxxx 发表于 2014-8-18 21:53:35

举四个方向的例子给你看看:
long="east|south|west|north"
short="e|s|w|n"

把%1从短方向换成长方向: %item(@long,%ismember(%1,@short))

没必要做你那个复杂的函数

xsaturn 发表于 2014-8-19 08:33:06

谢谢!

oolong 发表于 2014-9-29 01:42:37

这样不是好办法,forall计算长的路径会占用资源,最简单就是%replace
方案:
S|e|w|n
第一步replace为|s||e||w||n
第二步replace|s|为|south|
然后再复原。

这个思路和转换中文数字到阿拉伯数字一样
页: [1]
查看完整版本: 怎么把短方向转换成常规方向?