贤知有您 发表于 2012-11-21 14:33:43

圣天使三次连动攻击 (ERA版本)

第一次应用ERA的模式来编写脚本,感觉有点不好控制.if的语句似乎有点多,希望不要看眼花了.
此脚本已经详细做了注释.
请大家帮忙测试一下,看看是否有错误或者漏洞?
也希望ERMer也尽快适应ERA的新增功能.ZVSE
**实现神圣天使多次连动的脚本.主要参考研究了Ber的大精灵脚本.
**神圣天使可以连续行动3次,连动过程中士气高涨仍计入连动次数.但若最后一次的行动士气高涨时,将重新触发连动.
**圣天使在连动过程中,好像不会触发士气低落.(待鉴定)
**圣天使第一次行动后,下一个行动生物的士气低落会提前触发,暂时未想到解决的办法,但不影响天使的连动.
**鉴于本人对ERA也是一知半解,请帮忙测试测试.以便改进.
*--------------------------------------------------------
!?BA0&1000;
!!BA:O?y1/?y2 Q?y5;                      [y1攻击方玩家所属/y2防御方玩家所属/y5快速战斗(1启用,0关闭)
!!OW:Iy1/?y3 Iy2/?y4;                  [检测玩家是 AI(1) 或 人类(0)]
!!SN:W^BA0.IsAI.0^/y3 W^BA0.IsAI.1^/y4 W^BA0.QuickBattle^/y5; [使用变量名及赋值](如BA0.IsAI.0赋值意义是:进攻方是否AI)
!!SN:W^Combo.Stack^/-1 W^Combo.Count^/0; [设置变量的初始值(连动的堆栈号及连动的次数)]

**这里"W^Combo.Stack^/-1"定义了一个数字型变量,变量名"Combo.Stack",该变量值为-1
**变量名"Combo.Stack"相当于一个内存地址.可以通过此变量名来访问该内存地址对应的值.
**操作变量名,第二参数设置或检测即可(如"W^Combo.Stack^/v1"为设置,"W^Combo.Stack^/?v1"则为检测)
*--------------------------------------------------------
!?BG0&1000;                  [动作前]
!!BU:T?y1 ;                  [检查是否有战术学因素]
!!FU&y1=1:E;                   [战术学因素存在时不触发]
!!SN:W^BA0.QuickBattle^/?y50;[获取是否自动战斗]*
!!FU|y50=1:E;                  [自动战斗则退出]
!!SN:W^Combo.Stack^/-1;      [默认没有连动的堆栈]

!!BG:N?y1 Q?y2 A?y3;         [进攻堆栈/动作方势力/动作类型]
!!FU|y1<0/y1>41:E;
!!BMy1:T?y6;                   [检测生物类型]
!!FU&y6<>150:E;                [非神圣天使退出]
!!SN&y3=3:W^Combo.Count^/0;    [若生物防御,则连动次数归零]
!!IF:V10/0;                  [初始化标志变量]
!!IF|y3=2/y3=6/y3=7/y3=8/y3=10:V10/1; [若动作是:移动/移动攻击/射击/等待/生物施法,则标志为真]
!!FU&-10:E;                  [标志10为假时退出]
!!SN:W^Combo.Count^/?y4;       [检测连击次数y4]
!!SN:W^BA0.IsAI.%Y2^/?y5;      [当前攻击方是否AI(1是,0否).注意SN:W中可应用%Y2引用字符串(类似于对话框中的显示)]*

**连动过程中出现士气高涨时,也算入连击的次数,且连动时不允许等待**
!!if&y4>=1:;                   [连动阶段时]
!!if&y3=8:;                  [当前动作为 等待时]
    !!if&y5=0:;                [人类玩家操作时](攻击方所属是人类玩家)
      !!VRz1:S^连动攻击模式下不能使用{等待}!^;
      !!MM:Sz1;                [显示信息]
      !!VRy10:Sy4 +1;          [还原动作前的连击次数]
      !!SN:W^Combo.Count^/y10; [设置连动数(因为动作后依然要减一)]
      !!BG:A0;               [强制取消动作]
      !!SN:Q;                  [退出触发器,且同类型其它触发器BG:0均不执行]*
    !!el:;                     [电脑操作时]
      !!VRz1:S^电脑操控生物连动中使用{等待}动作,将强制为{防御}!^;
      !!MM:Sz1;
      !!BG:A3;               [强制为防御动作]
      !!SN:W^Combo.Count^/0;   [连动次数归零]
    !!en:;
!!en:;
!!if&y4>1:;                  [多次连击的情况]
    !!SN:W^Combo.Stack^/y1;      [设置连击堆栈号Combo.Stack]
    !!BMy1:F?i;                  [获取标志]
    !!VRi:&-67108865;            [改为未行动](相当于先 |67108864 再 -67108864)*
    !!BMy1:Fi;                   [将堆栈改为未行动]
    !!VRz1:S^神圣天使处于{连动攻击状态}!^;
    !!MM:Sz1;
!!en:;
!!el:;
   **大天使在该回合初次行动时(若最后一次连击后,士气高涨,下面代码依然有效)**
!!FU&y3=8:E;               [非连动模式下的等待,不触发连动]
!!SN:W^Combo.Stack^/y1;      [设置连击堆栈号Combo.Stack]
!!BMy1:F?i;                  [获取标志]
!!VRi:&-67108865;            [改为未行动](相当于先 |67108864 再 -67108864)*
!!BMy1:Fi;                   [将堆栈改为未行动]
!!SN:W^Combo.Count^/3;       [设置神圣天使的连动次数为3(动作后将自动减一)](可直接改多次)
!!VRz1:S^神圣天使处于{连动攻击状态}!^;
!!MM:Sz1;
!!en:;
*--------------------------------------------------------
!?BG1&1000;            [动作后]
!!SN:W^Combo.Count^/?y1; [获取连动次数]
!!FU&y1=0:E;             [没有连动次数]
!!VRy1:-1;               [连动次数减一]
!!SN:W^Combo.Count^/y1;[重设连动次数]
*--------------------------------------------------------
!?BA1&1000; [战斗结束后]
!!SN:W^Combo.Stack^/-1 W^Combo.Count^/0; [重设变量值]
*--------------------------------------------------------
!?FU77006;
**这里的作用是:当有连动的堆栈时,还原战场所有堆栈的行动状态,给予该连动堆栈行动优先权(需考虑死亡或石化等情况)**
**注:77006函数会在战斗前运行一次(也在布阵之前),同样也在布阵后触发一次**
!!SN:W^Combo.Stack^/?y1;
!!FU|y1<0/y1>41:E;       [由于函数在战斗前也会触发,战斗前必须将Combo.Stack设为-1]
!!BMy1:T?y11 N?y12 G62/?y-3/d G70/?y-4/d G74/?y-5/d;[堆栈生物和个数,是否有禁止行动的魔法状态]
!!VRy2:Sy1:21;      [堆栈所属:0左,1右]
!!VRy3:Sy1%21;      [属于势力的第几支堆栈(0-20)](求余数的计算)
!!SN|y11<0/y12<1/y-3>0/y-4>0/y-5>0:W^Combo.Count^/0; [连动模式被打断]
!!SN&y11>-1/y12>0/y-3=0/y-4=0/y-5=0:Xy2/y3;         [堆栈未完全死亡,且没有限制行动的魔法状态时:给予优先移动权]
!!SN:W^Combo.Stack^/-1; [取消连动的堆栈号]

**关于SN:Xy2/y3语句的说明
**在新增的ERA触发器中,使用"SN:X"命令来传递变量(类似于FU:P传递参数).
**查看帮助知道FU77006触发器中有2个参数, ①位置 (0 - 左方, 1 - 右方) / ②堆栈号 (0..41)
**这里帮助貌似有个笔误,按理如果已经有堆栈号(0-41),就不需要左右方的判定了.
**看了Ber的脚本才明白,第二参数应该是指该堆栈号处于该位置(左/右)的第几支队伍(0-20).
**再来说SN:Xy2/y3意义,是给予了某支部队优先行动的权利.必须注意到FU77006函数是在生物动作后触发的,它能安排下一个该由谁来行动.(同一回合中)

**贤知有您 2012-11-21**

[ 本帖最后由 贤知有您 于 2012-11-30 22:45 编辑 ]

兽哥哥 发表于 2012-11-21 16:02:23

是用ERA还是WOG测试?
我感觉我问的很白;lan;

兽哥哥 发表于 2012-11-21 16:06:20

一开始就出错;juwe;

兽哥哥 发表于 2012-11-21 16:08:55

是要双剑才有效果吗?我只能攻击一次,而且一开始就弹框,只是第二次没死机而已。

兽哥哥 发表于 2012-11-21 16:29:39

怪不得;juwe;

贤知有您 发表于 2012-11-21 16:38:24

截图看看.就让敌方圣天使来攻击.注意最后的天使,攻击了3个不同的生物.

十三木人 发表于 2012-11-21 17:07:26

era完全没接触过
寒假之前大概都没时间动erm和era了
辛苦007了,坛子里致力于era的现在似乎只有你啊
既然可以三连动,完美模拟多次连击应该也行
很多erm难以完成的在era中都可以实现,真好啊

贤知有您 发表于 2012-11-21 17:12:27

回复 7# 的帖子

上面脚本是可以改成多次连动的.
这句
!!SN:W^Combo.Count^/3;       [设置神圣天使的连动次数为3(动作后将自动减一)](可直接改多次)
把后面的3改成10, 就可以连续10次行动了.

ERA这种用变量名代替原来的V变量实在方便多了,也容易记忆啊.
另外还可以使用数组概念了.估计要替代W变量也不是没有可能的.
以后不必担心变量不够用了.

无心云 发表于 2012-11-21 18:22:10

哇,这么厉害,也就是说敌人全灭之前,这个三连击毕竟不落空?

那么除了制定打击的第一个敌人(这个敌人第一次攻击或者第二次攻击中被干掉),那么是随机或者就近找对象攻击吗?

好有根啊

dadds 发表于 2012-11-21 18:39:20

ERA果然强大啊,不过现在手上没ERA,没法测试:nianjing:
还有这个脚本是攻击一次之后再选择攻击目标的还是自动攻击随机目标的?

贤知有您 发表于 2012-11-21 18:59:21

回复 10# 的帖子

跟多一次行动机会是一样的.(类似于高士气).
所以说是连动,不是连击.

对玩家来说,肯定是可以手动选择目标啦.
不过连动过程中是不能选择等待的,而移动或者攻击或者施法都可,.防御的话就直接取消了所有连动.

寻梦人 发表于 2012-11-21 21:56:53

这个连动比WOG里面模拟的再次攻击更加强悍!

不知道可以实现3连击不?

兽哥哥 发表于 2012-11-21 21:59:08

内行看门道,我和水鹫是看热闹;bf;

贤知有您 发表于 2012-11-21 22:51:52

回复 12# 的帖子

记得曾经有个外挂类的软件,能够实现N连击.
所以这个连击肯定是和内存有关的.

ERA确实可以操作内存啊, 正如可以禁止暗黑龙的"攻击后返回"一样.
因为暗黑龙的攻击返回不是特技,应该是某个标志.只要找到这个标志的内存地址,适当改变就可以了.
最大的问题是,对研究这样的内存地址一点头绪都没有.不知道外国人是怎么弄出来的.
如果弄明白了,然后找到相关的内存信息,我相信肯定能实现三连击的.

帖一段外国玩家的代码, 屏蔽 暗黑龙攻返的代码.
**Darkness Dragons remove strike and return
!?BG0;
!!BG:N?v99;[堆栈]
!!BMv99:T?y2; [生物类型]
!!if&y2=155:;[如果是暗黑龙,则取消其 攻击后返回的特性]
!!VRy1:Sv99*4+42149304;[这个十进制的内存地址不知道是怎么找出来的???]
!!UN:Cy1/4/1;   [将内存地址的值重设为1, 攻返特技就消失了??]
!!en:;

9ird 发表于 2012-11-21 23:16:32

是ERA2.3的吗?2.3是WOG3.59才能用的平台吗?请教大师

fly123 发表于 2012-11-21 23:20:16

ERA2.3和3.59是不同的平台。

fly123 发表于 2012-11-21 23:21:18

感谢贤知老弟出第一个ERA正式讲解贴。;aim;

灰狼王子 发表于 2012-11-22 08:40:53

ERA果然非同凡响——圣天使三连击太给力了,尤其还能包括施法复活;orz;

沧海一粟 发表于 2012-11-22 09:05:30

BA0.QuickBattle......这些文件是哪里找的?
ERA的写法和ERM还是完全不同啊,感觉是直接调用或修改内存的方式来实现自己想要的功能,确实强大。

贤知有您 发表于 2012-11-22 09:25:22

回复 19# 的帖子

!!SN:W^BA0.IsAI.0^/y3 W^BA0.IsAI.1^/y4 W^BA0.QuickBattle^/y5;
BA0.IsAI.0 BA0.QuickBattle 等等这些都不是什么文件名啊.
是自定义的一个变量名.姑且可以当成是 V变量来用.
这样操作是方便记忆而已,直接换成一个V变量也可以.
只不过检测和调用时,需要用一个真正的ERM变量来获取而已.

ERA已经可以自定义变量名了,不再受V 字眼变量的限制.
页: [1] 2
查看完整版本: 圣天使三次连动攻击 (ERA版本)

捐赠