- 积分
- 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
|
本帖最后由 贤知有您 于 2013-10-25 13:04 编辑
2013-10-25 简化代码和调用方法,修改一个BUG语法
-------------------------------------------------------
大概写过脚本的朋友都知道,BM:V 显示魔法动画是单体的。比如,一般的群体复活,用BM:V都逐一使用动画的
如果既能指定堆栈个体,又能实现在这些个体上同时播放动画就爽了。
HC论坛上的OxFEA大师给出了一个相关的例子。
- <P> **first argument - main battle struct
- !!UN:C6919200/4/?y10;
- **second argument - pointer to fourty byte array: one byte for array. Let's take y20-y28 for it.
- !!VRy20:S1 +256*1; --first two stacks at attacker's side
- !!VRy25:S1; --first one at the side of defender
- **third argument - animation ID (5 - antimagic)
- **fourth argument - is damage animation required (0 - no, 1 - yes)
- !!SN:E5925584/2/y10/?y20/5/1;</P>
复制代码 但这个例子信息量小,而且涉及到内存操作,显得苦涩难明。也好像没见过其他人讨论。
于是我根据这些提示做了一个通用的脚本,希望对大家有帮助。
只要在FU9999998函数指定一个v变量起始索引,以及你想要同时播放动画的堆栈号作为参数,就能实现群体动画的效果。
以下是主要函数和示例。直接复制到地图事件中即可进行测试,主要左方堆栈的个数。
右键点击信息栏触发,0,2,4,6,21 堆栈同时接受动画。
如果不了解内存结构,大可不必理会原理。直接调用函数就可以了。
忘了说,只适用于ERA。- ZVSE
- **指定堆栈的群体魔法动画示例**
- !#UN:C8088808/4/1;[死亡之云V72可任意放置]
- !?GM0;
- !!UN:C8088808/4/1;[死亡之云V72可任意放置]
- !?CM4&1000; [战场场景]
- !!CM:F?y1 I?y2 S?y3;
- !!FU|y1<>512/y2<>2005/y3<>14:E; [右键点信息栏按钮触发测试]
- !!CM:R0;
- !!VRv600:C0/0/0/0/0/0/0/0/0/0;[v600-v609作为存放堆栈号的临时变量,到调用FU9999998前不要被其它函数占用修改]
- !!FU9999997:P600/0; [填入600和堆栈号]
- !!FU9999997:P600/2;
- !!FU9999997:P600/4;
- !!FU9999997:P600/6;
- !!FU9999997:P600/21; [函数可多次使用]0,2,4,6,21号堆栈同时动画
- !!FU9999998:P600/50/0; [群体复活动画效果]x1=v索引,x2=动画编号,x3=堆栈是否带伤害动画
- !!FU9999998:P600/71/1; [群体衰老]
- *****************以下是脚本调用的函数,可以忽视************************
- !?FU9999997; [将堆栈号按约定压入v变量索引开始的10个位置内]
- **函数可多次使用,但确保同一索引(By007)
- **x1=起始v变量索引
- **x2=一个堆栈号(0-19,21-40)
- !!FU|x2<0/x2>40/x2=20:E; [排除错误堆栈,也排除左右方最后堆栈]
- !!VRy3:Sx2 :21 *5 +x1;[左方为0+x1,右方为5+x1]
- !!VRy4:Sx2 %21 :4 +y3;[得到(0-4)位置,+y3得到实际v变量索引]
- !!VRy5:Sx2 %21 %4; [得到(0-3)位移]
- !!VRy6&y5=0:S1;
- !!VRy6&y5=1:S256;
- !!VRy6&y5=2:S65536;
- !!VRy6&y5=3:S16777216;[不同位移对应不同的值(256的N次方)]
- !!VRvy4&y6>0:|y6; [对应v变量上增加数值(并关系)]
- !?FU9999998; [群体魔法动画函数By007(参照OxFEA语句)]
- **x1 v变量起始索引号(连续10个变量)
- **x2 魔法动画
- **x3 是否有伤害动作(0否,1是)
- !!UN:V?y1/?y2; [判断版本]
- !!FU&y1<359:E; [ERA下运行]
- !!VRy3:Sx1 *4 +8943204; [ERA下的v变量内存地址]
- !!UN:C6919200/4/?y4; [战场内存地址]
- !!SN:E5925584/2/y4/y3/x2/x3;[调用内部函数]
- !!BU:R;
- *****************群体动画函数脚本完毕************************
复制代码
|
评分
-
4
查看全部评分
-
|