- 积分
- 34677
- 威望
- 499
- 魅力
- 507
- 经验
- 20326
- 热心度
- 9
- 注册时间
- 2006-3-13
- 最后登录
- 2024-9-30
- 主题
- 134
- 回帖
- 4949
- 精华
- 35
- 阅读权限
- 150
TA的每日心情 | 郁闷 2015-6-6 16:12 |
---|
签到天数: 52 天 连续签到: 1 天 [LV.5]女巫
超级版主
- 积分
- 34677
|
本帖最后由 贤知有您 于 2014-3-4 20:33 编辑
本来没打算研究英雄施法动作,一般情况下,可以用 BH:C 施放一个战场空魔法(比如召船术)以变相达到目的.
沧海一粟大师提到了这个变相方法的不爽之处,一是需要还原魔法值,二是施法的时间超短,而且模拟出来的动作肯定是一连串全部做完的.
而真正的系统英雄施法,实际是把英雄DEF的第四组动作组分成2部分来播放.
先播放前面部分,直到有手势发光的帧停止(H3英雄施法都一样的手势)
然后是处理战场的情况,比如播放魔法动画,处理伤害等等.
最后魔法完毕时,英雄才把手势收回,也就是播放了剩余的英雄动作.
在内存语句上,这2个部分的语句都在战场施放魔法<5A0140>的函数里面.它不是个单独调用函数就能实现的过程.
也就是说,我们要模拟这种效果.需要把内存汇编语句转换成ERM的语句.
好吧,过程忽略,现在基本把语句都模拟出来了.都是些繁琐的内存寻址和数据读写.经过沧海大师测试鉴定,基本可行.
于是放出来供大家研究参考, 顺便测试一下论坛的发帖是否畅顺.
- ZVSE
- !?CM4; [战场场景]
- !!CM:F?y1 I?y2 S?y3;
- !!FU|y1<>512/y2<>2005/y3<>14:E; [右键点信息栏按钮]
- !!CM:R0;
- !!FU9999925:P0;[左方英雄出施法动作(到亮光停止)]
- *处理其它脚本时不能干扰英雄动作内存(如不要使用BH:C施法)
- *此时英雄动画处于停顿状态(有亮点的^_^)
- !!BM0:V0;
- !!FU9999919:P0/3/100;
- !!FU9999919:P0/4/100;
- !!FU9999919:P0/5/100;
- !!FU9999919:P0/6/100;
- !!BM21:V80;
- **处理施法等动作后
- !!FU9999926:P0;[左方英雄施法完毕,完成剩余的英雄动作(播放剩余动作)]
- !!BU:R;
- *-------------英雄动作施放函数-----------------
- !?FU9999925;[英雄施法动作(中途停止)ByHawaiing-007]
- **x1=0左方1右方
- !!BHx1:N?y1; [是否存在英雄]
- !!FU&y1<0:E; [y1=英雄编号]
- !!HEy1:B2/?y2;[英雄类型y2]
- !!VRy4:Sx1 *4;[势力*4]
- !!UN:C6919200/4/?y10;[战场结构y10]
- !!UN:C6806760/4/?y41;[67DCE8指针值]
- !!UN:C6806764/4/?y42;[67DCEC指针值]
- !!VRy43:Sy1 *23 *4 +y41;
- !!UN:Cy43/4/?y44;
- !!VRy45:Sy2 *16 *4 +y42;
- !!UN:Cy45/4/?y46;
- !!VRy11:Sy4 + 21468 +8 +y10;[动作组记录点]
- !!UN:Cy11/4/4; [设置英雄动作组]
- !!VRy12:Sy46 *2 +y44 *16 +6536524;[63BD4C]
- !!UN:Cy12/4/?y13; [第?帧停止(官方DEF应该5)]
- !!VRy13&y13>0:-1;
- !!VRy14:Sy11 +8; [帧记录点]
- !!DO9999927/1/y13/1&y13>0:Py10/y14;
- !?FU9999926;[英雄施法动作(还原)ByHawaiing-007]
- **x1=0左方/1右方
- !!BHx1:N?y1; [是否存在英雄]
- !!FU&y1<0:E; [y1=英雄编号]
- !!HEy1:B2/?y2;[英雄类型y2]
- !!VRy4:Sx1 *4;[势力*4]
- !!UN:C6919200/4/?y10;[战场结构y10]
- !!UN:C6806760/4/?y41;[67DCE8指针值]
- !!UN:C6806764/4/?y42;[67DCEC指针值]
- !!VRy43:Sy1 *23 *4 +y41;
- !!UN:Cy43/4/?y44;
- !!VRy45:Sy2 *16 *4 +y42;
- !!UN:Cy45/4/?y46;
- !!VRy11:Sy4 + 21468 +8 +y10;[动作组记录点]
- !!UN:Cy11/4/4; [设置英雄动作组]
- !!VRy12:Sy46 *2 +y44 *16 +6536524;[63BD4C]
- !!UN:Cy12/4/?y13; [帧?]
- !!VRy14:Sy11 +8; [帧记录点]
- !!VRy20:Sy4 +21508 +y10;
- !!UN:Cy20/4/?y21;[v162]
- !!VRy22:Sy21 +40;
- !!UN:Cy22/4/?y23;[是否y23>4]
- !!VRy24:Sy21 +44;
- !!UN:Cy24/4/?y25;
- !!VRy25:+16;
- !!UN:Cy25/4/?y26;[是否y26>0]
- !!VRy27:Sy21 +28;
- !!UN:Cy27/4/?y29;
- !!VRy29:+16;
- !!UN:Cy29/4/?y30;[双重指针]
- !!UN:Cy30/4/?y31;[英雄施法动作的帧数(官方DEF应为8)]
- !!VRy31|y23<=4/y26<=0:S0;[无相关数据时,不播放动画]
- !!VRy31&y31>0:-1;
- !!DO9999927/y13/y31/1&y13>0/y13<y31:Py10/y14;
- !!UN:C6919200/4/?y10;[战场结构y10]
- !!UN:Cy11/4/0;
- !!UN:Cy14/4/0;
- !!SN:E4800448/2/y10/1/0/0/100/1/1;
- !?FU9999927;[播放动画帧]
- **x1=this,x2=内存记录点,x16=循环
- !!UN:Cx2/4/x16;
- !!SN:E4800448/2/x1/1/0/0/100/1/1;
- *-----------------------其它函数---------------
- !?FU9999919;[战场任意坐标播放内部魔法动画]
- **x1=动画ID(跟BM:V相同,同样并不是所有魔法动画都能正确放置)
- **x2=坐标(0-186)
- **x3=延时(通常用100)
- !!FU|x1<0/x1>80/x2<0/x2>186:E;
- !!VRx3&x3<0:S0;
- !!UN:C6919200/4/?y1;
- !!SN:E4810128/2/y1/x1/x2/x3/0;[<496590>空地播放魔法动画]
复制代码
|
评分
-
4
查看全部评分
-
|