wuxiangjinxing 发表于 2014-10-11 11:42:19

【求助】能否实现从!!DO循环中退出去的功能

也就是一般程序语言中的break功能,不知道ERM语言有什么简单的实现方法吗?

具体说来就是:用DO循环函数时,每循环一次就检查一个变量的值,如果符合某个条件就结束整个DO循环,开始执行下一条接收器命令。

谢谢。

沧海一粟 发表于 2014-10-11 17:00:28

感觉容易啊,甚至感觉可以考虑不用DO循环,要不楼主简单举个想实现的功能看看?

wuxiangjinxing 发表于 2014-10-11 21:15:04

我的本意是想写一个让召唤之门可以选择传送哪个生物巢穴的功能……但是因为太麻烦了,所以为了自娱自乐,想先写一个很简单的“如果我方占领了圣龙巢穴,就让召唤之门一定传送圣龙”的功能。

于是初步想法是:遍历地图上所有的生物巢穴,首先判断是不是被某个玩家占领(这个还没搞明白怎么判断),其次判断是不是圣龙巢穴,如果是的话就跳出去。

沧海一粟 发表于 2014-10-11 21:30:47

wuxiangjinxing 发表于 2014-10-11 21:15
我的本意是想写一个让召唤之门可以选择传送哪个生物巢穴的功能……但是因为太麻烦了,所以为了自娱自乐,想 ...
如果单纯是限制圣龙巢,可以直接循环检查地图上的圣龙巢是否为我方啊,并不用检查所有的巢穴的
你想实现的功能如果不通过内存修改,倒是可以模拟个对话框实现的,只是内容比较多,检查招募时需要多少资源不是难是非常烦

Archer30 发表于 2014-10-11 21:33:16

外行人(文盲)也做个猜想。WOG有个脚本是转换归属的,这个脚本几乎除了地下城召唤之门玩家,没人会开——因为大家都是用它来放弃自己想要的巢穴以外的所有巢穴,从而能够在召唤之门稳定召唤。

这个脚本的具体功能是,开启的时候,右键自己占有的矿产/巢穴,就会提问是否转让。

现在换个思路,如果把是否转让的提问,转变为提问是否成为召唤门调用的生物巢穴,每周可以指定一次。这样是不是更直观而且更简便一点

wuxiangjinxing 发表于 2014-10-11 21:35:38

Archer30 发表于 2014-10-11 21:33
外行人(文盲)也做个猜想。WOG有个脚本是转换归属的,这个脚本几乎除了地下城召唤之门玩家,没人会开—— ...

看起来是个好主意,这样甚至不用做循环检测了,我看代码去……

wuxiangjinxing 发表于 2014-10-11 21:38:25

沧海一粟 发表于 2014-10-11 21:30
如果单纯是限制圣龙巢,可以直接循环检查地图上的圣龙巢是否为我方啊,并不用检查所有的巢穴的
你想实现 ...

说得有理,我思路僵化了。

我的本意就是借鉴007的“城镇第8招募”写一个贴近SOD的功能罢了。不过他的代码我也是看得云里雾里。举个例子吧:007用来检测野外生物巢穴归属的函数是这样的:

!?FU101025;
**x1=玩家颜色
**x2=巢穴子类型
**x3=返回v变量索引
!!UN:U17/x2/-1/50;             [获得巢穴坐标 v50-v52]
!!DW50:O?y3;                   [生物编号y1/数量y2/所属颜色y3]
!!FU|y3=-1/y3<>x1:E;         [非同主]
!!VRvx3:+1;                  [叠加]

这!!DW是啥玩意,我在ERM帮助文件里就没找到……

沧海一粟 发表于 2014-10-11 23:01:28

wuxiangjinxing 发表于 2014-10-11 21:38
说得有理,我思路僵化了。

我的本意就是借鉴007的“城镇第8招募”写一个贴近SOD的功能罢了。不过他的 ...

楼主如果对ERM感兴趣,建议还是从最基本的ERM帮助慢慢看起,DW接收器在“其它物品接收器”章节,是专门针对生物巢穴的接收命令
你想实现的功能其实非常简单,不过要完善倒是得一定的时间,还是那句话,不是难是烦非常烦,一是检查并命名本方所有的巢穴(太多种可能了,一百个啊,超过12个又得设置翻页,啰嗦),二是检查资源是否足够招募(这个也讨厌啊,得7种资源一个个检查,非常烦人的)

我简单帮你列个小思路,下面简单写的没怎么测试也懒得注释了,你自己对着ERM帮助应该容易理解,大概方向应该就是这样子ZVSE
**实现功能:地下城右键点击召唤之门,可以显示本方野外可以招募的4神龙数量

!?CM1&1000;
!!CA-1:T?y1 O?y2;
!!CM:S?y3 I?y4;
!!FU|y1<>5/y2=-1/y3<>14/y4<>22:E;
!!CM:R0;
!!VRv7:C0/0/0/0;
!!VRz22:S^请选择你要招募的巢穴生物:^;
!!VRz23:S^魔法森林^;
!!VRz24:S^硫磺洞穴^;
!!VRz25:S^水晶洞穴^;
!!VRz26:S^冰雪之崖^;
!!VRz27:S^退出^;
!!IF:G1/10/16/22/23/24/25/26/27;
!!FU&v10=16:E;
!!VRy5&v10=1:S64;
!!VRy5&v10=2:S65;
!!VRy5&v10=4:S63;
!!VRy5&v10=8:S62;
!!VRy6&v10=1:S23;
!!VRy6&v10=2:S24;
!!VRy6&v10=4:S25;
!!VRy6&v10=8:S26;
!!VRz28:Szy6;
!!UN:U17/y5/?y7;
!!VRv1:S-1;
!!DO666666/1/y7/1&y7>0:Py2/y5;
!!UN:N3/29/v9/1;
!!IF&y7=0:M^对不起,你没有占领%Z28巢穴!^;
!!IF&y7>0:Q1/21/v9/1^你有%V7个%Z28巢穴,一共可以招募%V8个%Z29!^;
!!VRv7:C0/0/0/0;

!?FU666666;
!!UN:U17/x2/-1/1;
!!DWv1/v2/v3:O?y1;
!!FU&y1<>x1:E;
!!DWv1/v2/v3:M0/?y3/?y4;
!!VRv7:+1;
!!VRv8:+y4;
!!VRv9:Sy3;

**end**

wuxiangjinxing 发表于 2014-10-12 01:37:30

沧海一粟 发表于 2014-10-11 23:01
楼主如果对ERM感兴趣,建议还是从最基本的ERM帮助慢慢看起,DW接收器在“其它物品接收器”章节,是专门针 ...

没想到你还真帮忙写啊,多谢你了……其实LS的Archer提的建议挺好,可以用很简单的方法完成判断的任务,我已经有点头绪了。现在问题变成007那个改内存的方法我没太吃透,再研究研究应该可以写出很干净的代码。

贤知有您 发表于 2014-10-12 13:15:27

要跳出DO循环是很简单的, 直接修改 x16 大于最大的DO循环值就行了。
比如再条件满足后加一句 !!VRx16:S99999;

我觉得沧海的方法比较简单实用,如果动用内存方法,得考虑在TM触发器下吧。
地下城的占领巢穴出召唤之门,好像是每周执行的。

沧海一粟 发表于 2014-10-12 14:41:32

呵呵,我还是建议楼主得从基本的东西搞起,万丈高楼平地起,ERM基本命令才是根基,一下子就想着动用内存修改,欲速则不达啊
页: [1]
查看完整版本: 【求助】能否实现从!!DO循环中退出去的功能

捐赠