suxxx 发表于 2012-3-20 17:22:40

请问一个zmud7.21列表型变量计算的问题

假设变量A={1|2|3|4|5|4},对应变量B{a|b|c|d|e|f},A里存的是状态,B是命令
还有个变量C={4|3|2|5|1},表示优先级。
意思检索A里存的状态,按C的优先级顺序进行对应,第一优先级是4,那么只要A序列里存在4,我们就执行第一个4对应的那个命令d,如果A序列里没有4,那么从C里取第二优先,查询A里是否有3。

请问zmud7.21里,这命令该怎么编写?

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

lcx 发表于 2012-3-20 18:10:27

我觉得首先numc=1;numa=1;
alias Z #if (@numc<=%numbers(@C)) {#if (@numa<=%numbers(@A)) {#if (%item(@A,@numa)=%item(@C,@numc)) {%item(@b,@numa)} {#math numa @numc+a;Z}} {#math numc @numc+1;numa=1;Z}} {#say 没有}
不知道对否。呵呵。

suxxx 发表于 2012-3-20 18:48:05

谢谢兄台,大概看懂你的意思了,思路很巧妙啊,不过用alias内部嵌套引用自己来实现,这个zmud不会出问题么?
另外#math numa @numc+a,是不是应该是#math numa @numa+1 ?
这个用#add numa 1,可能会更简洁。

lcx 发表于 2012-3-20 18:52:35

是的,那里写错了。用alias内部嵌套自己只要不溢出和死循环没事。呵呵我也是门外汉研究的。

suxxx 发表于 2012-3-20 19:17:18

嘿嘿,这个我要用来提高护镖效率。

lcx 发表于 2012-3-20 19:37:09

呵呵没事可以,一起探讨,我是晨曦。

suxxx 发表于 2012-3-21 00:14:00

知道原理了,进游戏,就这么一点东西还是弄了几个小时才成功啊,上面还有个错误,%numbers应该是 %numitems

alucar 发表于 2012-3-21 08:03:03

是用来挑选护镖目的地么?如果目的是为了每次接镖能多推几步,可以考虑在路径设置中解决

suxxx 发表于 2012-3-21 09:31:41

alucar一语点醒梦中人啊,确实只要把路径直接改成多绕点路,就可以了。不过这个只要弄好还是有用处的,比如可以优先选择岔路少的目的地。算法实现了,修改目的地优先级是很容易的事。

昨天这么个小功能我弄到半夜才弄好,总是有小错误,基本就没做任务。唉,到底是新手不熟悉啊。

lcx 发表于 2012-3-21 12:21:02

本帖最后由 lcx 于 2012-3-21 04:22 AM 编辑

我从不挑剔。你不用非得选岔路少的啊。我过河过江一样推。也不用非得磨那么多步完成吧。如果找岔路少是为了解决的乱入,有信不乱入啊。就开始乱入手动搞下不就好了。以前我不知道有信不乱入。还搞个大米跟着怕乱入。
页: [1] 2
查看完整版本: 请问一个zmud7.21列表型变量计算的问题