|
我看最近克招写了一个erm编写教程,所以就写个简单点的实例教程,让新手学习。
前言:再wog里面出现了至高[wiki]天使[/wiki]长,至高天使长可以复活两次,但是每一次只能够复活区区的100hp,如果两次都用还要浪费两个回合,实在有点鸡肋。于是我就作了一个简单的[wiki]ERM[/wiki],让至高天使长两次复活+一次攻击可以在同一个回合进行。
注意:仅限ERA。不知道什么是ERA的看这里
设计思路:要让天使施法后再动必须先在BG0阶段读取任意兵种的行动方式,如果是天使施法则将v780设定为1,这样在FU77006阶段就可以v780是否为1,如果为1则让上一个兵种再动。
如果仅仅按照上述思路去设计会有两个问题:
1如果兵种再动时等待,因为他在再动前已经动了,所以在再动前就已经标记行动完毕,所以再动时候等待会直接完结这回合的行动,所以要加一段代码,让任何兵种动之前确保没有标记已经行动。
2如果再动兵种是在某会回合最后一个动,并且触发再动,那么因为最后一个兵种动了,所以回合跳到了下一回合,所以再动变成了下一回合的正常行动提前,所以必须加入判断,如果跳过了一个回合则用v784标记,如果那么当再动兵种在这个回合完成了上个回合的再动以后可以接着做这个回合的正常行动。这里还有一个判断就是场上生物的速度,假设场上有比再动生物快的兵种,那么再动生物完成了上个回合的再动以后接着轮到本该轮到的生物,在这个生物行动前让再动生物的结束行动标记取消,让再动生物可以按照正常的顺序行动,如果再动生物速度已经是最快的,则在完成了上个回合的再动以后直接进入这个回合的正常行动。
以下文字为1.2版的
!?BG0; //任何兵种行动前
!!VRv780:S0; //将变量v780设为0
!!BMv781&v784=2:F?i; //先看完什么时候把v784会设成2再看以下四条,因为读取v781会在后面进行,所以这个时候的v781和设定v784为2时的v781
!!VRi&v784=2:&67108864; //把设定v784为2时候的那个兵种设为没有行动。
!!BMv781&i>0/v784=2:Fd-67108864; //这里解释一下:当有部队比再动兵种快的时候,就在那个比再动兵种快的兵种行动前恢复这一回合再动兵种的行动力,那么在比再动兵种快的兵种行动过后就会轮到再动兵种行动。
!!VRv784&v784=2:S0;
!!BG:A?y1; //读取实施的行动
!!BG:N?v781 Q?v782 H?y2; //读取生物Stack number ,所属方 (左边等于0 右边等于1) ,所属英雄。
!!BMv781:T?y3; //兵种编号
!!BMv781:F?i; //读取行动标记
!!VRi:&67108864; //行动标记是否含有“行动完毕”
!!BMv781&i>0:Fd-67108864; //确保任何兵种在行动前没有标记“行动完毕”
!!BMv781:F?i; //读取行动标记
!!VRi:&134217728; //行动标记是否含有“正在防御”
!!BMv781&i>0:Fd-134217728; //确保任何兵种在行动前没有标记“正在防御”
!!VRv780&y1=10/y3=150:S1; //如果是至高天使长施法则将v780定义为1,即开启再动。请先看后面的FU77006再回来继续往后看。
!!DO7078/0/41/1&v780=0/v784=1:P; //当v784=1,而至高天使长并非施法的时候开启FU7078,请先看FU7078再往下看.
!!VRy4:Sv780; //这里定义一个y4,用于检查下面程序是否执行
!!VRv780&v780=0/v784=1:S1; //在FU7078里面已经定义了如果再动兵种速度不是唯一一个最快的时候会为2,所以运行这一条则表示,当时再动兵种最快,同时上次再动时跨过了一个回合,则让这个兵种再补一次再动
!!VRv784&v780<>y4:S0; //当上一条运行过后,则把v784设为0
!!VRv783:Sv997; //读取当前回合数
!?FU7078; //这一段是为了确定,再动的至高天使长是否最快
!!BMv781:S?y1; //这里的v781表示再动的兵种,因为当v784=1这一段才运行。
!!BMx16:S?y2; //读取全场兵种的兵种的速度,这里的x16取值是0到41,是有DO7078/0/41这句里面确定的。因为战场就一共有那么多队
!!VRy3:Sy1-1; //把再动兵种的速度减一,方便比较应该谁先动。
!!VRy3&v781<21/x16<21/v781<x16:Sy1;//当再动兵种与比较兵种都在左边,且比较兵种位于再动兵种后方,设定为y1.
!!VRy3&v781>20/x16>20/v781<x16:Sy1;//当再动兵种与比较兵种都在右边,且比较兵种位于再动兵种后方,设定为y1.
!!VRv784&y2>y3/x16<>v781:S2; //当y2>y3,也就是说当战场上有兵种比再动兵种要先动的时候,用v784作一个标记。把它设为2。
!?FU77006;
!!VRy5:Sv781-21; //将v781减21
!!SN&v780=1/v782=0:Xv782/v781; //当开启了再动的时候,让所属为左边刚施法的兵种行动
!!SN&v780=1/v782=1:Xv782/y5; //当开启了再动的时候,让所属为右边刚施法的兵种再动
!!VRv784&v783<v997/v780=1:S1; //再动时的回合数,如果与结束行动前不同,则将v784设定为1。这个v784用于记录再动是否跨过了一个回合。
我承认我有点啰嗦,因为万事开头难,我希望一个实例教程能够让还在苦苦寻找ERM入门方法的新手(如果有)有些帮助。
最后附件的ERM是至高天使复活后再动外加我以前做的凤凰复活。
1月2日早上8:38分发布1.1版
修正凤凰复活脚本凤凰前面有空格战后不复活的BUG。
在这里顺便公开向cx2005道歉,因为凤凰复活我自己用了两年,都没有发现这个BUG,所以当cx2005发现这个bug时,我对这个bug予以否,后来经过测试发现的确有这个bug,谢谢cx2005的细心。
1月2日17:43分发布1.2版
现在凤凰复活和至高天使复活的版本号分开。凤凰复活更新到1.3版,修正有时凤凰复活的一些小问题。关于凤凰复活的具体数量计算公式见这里
至高天使复活后再动更新1.2版,修正至高天使等待,在回合结尾复活,这时敌方没有比我方要再动的至高天使快的情况下,利用再动的机会防御。之后进入新的回合以后不能防御的BUG。因为此BUG的影响甚少,而且修正此BUG有可能造成新的BUG,所以大家也可以下载1.1版。其中蓝色字体是1.2版添加的语句。
1月3日发布1.3版
1.3版改进了再动在回合末尾的处理方式,使得在回合最末尾使用复活,再动不会跳到下一回合,这个版本不在上面的文字上更新,直接写在附件上了,主要是要重新写注释太累了。如果这个版本没有发现bug将会是最终版。
1月3日再次发布1.4版
再动的时候添加了士气的动画,使得再动不再死气沉沉。不过如果觉得动画烦用1.3版就可以了。
如果还有任何BUG请在论坛回复我,先谢了。
[ 本帖最后由 yjwlhy 于 2010-1-3 17:12 编辑 ] |
评分
-
2
查看全部评分
-
|