关于BM:P的重实现
BM:P是用了重设战队位置的命令。但是BM:P会造成移动战队后卡0.1秒的问题。如果多个BM:P连续使用,这个滞后时间会更明显。
而且,用BM:P移动的单位在落地后踩雷的动画也会瞬间播放完,看起来不舒服。
因此我写了这个函数来规避上面两个问题。
---------------------------------------------------------------------------------------------------------------------------------
**FU(RepositionStackX1toX2):P21/10/?y3; [类似BM:P但可以正常速度显示魔法动画]
---------------------------------------------------------------------------------------------------------------------------------
!?FU(RepositionStackX1toX2)&x1>=0/x1<=41/x2>=1/x2<=185;
{
* x1=ID, x2=Grid, x3=1到达且存活/0未到达或死亡
!!SN:W^X_Reposition_Stack_Active^/1;
!!BMx1:S?y10 F?y11;
!!VRy12:Sy11&2;
!!VRy13:Sy11|2;
!!BMx1:S999 Fy13;[加速加飞]
!!UN:C6916156/4/?y70; [游戏速度]读取
!!SN:W^X_Game_Speed^/y70; [游戏速度]保存
!!UN:C6916156/4/10; [游戏速度]设置
!!BMx1:G72/?y5/d;
!!UN:C6919200/4/?y1;
!!VRy2:Sx1 *1352 +21708 +y1;
!!SN&y5>0:E4473392/2/y2/72;
!!SN:E4478576/2/y2/x2/1;
!!VRx3:Sv1;
!!UN:C6916156/4/y70; [游戏速度]还原
!!BMx1:Sy10 Fy11;[还原]
!!SN:W^X_Reposition_Stack_Active^/0;
!?MR1;
{
!!SN:W^X_Reposition_Stack_Active^/?y1;
!!FU&y1=0:E;
!!SN:W^X_Game_Speed^/?y70; [游戏速度]
!!UN:C6916156/4/y70; [游戏速度]
}
}
支持,回去慢慢学习。 将宝物加强Mod1.1,就是封神宝物的单独mod,加到最新版本的era上,经常报英雄下标超界,也不知道怎么处理 楼主可以解释下
!!BMx1:G72/?y5/d;
!!UN:C6919200/4/?y1;
!!VRy2:Sx1 *1352 +21708 +y1;
!!SN&y5>0:E4473392/2/y2/72;
!!SN:E4478576/2/y2/x2/1;
!!VRx3:Sv1;
这段代码做了什么事吗?
特别是:
!!VRy2:Sx1 *1352 +21708 +y1; 是计算什么?
!!SN:E4478576/2/y2/x2/1; 又是什么函数?
谢谢 ducs 发表于 2020-4-5 09:44
将宝物加强Mod1.1,就是封神宝物的单独mod,加到最新版本的era上,经常报英雄下标超界,也不知道怎么处理
下标是什么?HE编号?
请安装最新的era2.9.12,2.9的有几个版本HE-1有问题。 xiaoke2017 发表于 2020-4-5 10:48
楼主可以解释下
!!BMx1:G72/?y5/d;
E4473392处理缠绕状态
E4478576强制单位移动
y2是战队的指针(内存地址) XEricSin 发表于 2020-4-5 10:48
下标是什么?HE编号?
请安装最新的era2.9.12,2.9的有几个版本HE-1有问题。
是最新的2.9.12每把到三个月左右就报这个问题
XEricSin 发表于 2020-4-5 13:36
E4473392处理缠绕状态
E4478576强制单位移动
y2是战队的指针(内存地址)
不懂就问嘛。。。。。。。
楼主请问下,
尝试理解这个函数替代BM:P的思路
是否是因为BM:P的移动重绘比动画速度要快, 或者慢
所以尝试把动画速度跟移动速度 进行一个同步化?
!!VRy12:Sy11&2; [检查是否有 "飞行" 生物标志 y12]但是后面没有用到y12, 这语句是不是可以不用?
!!UN:C6916156/4/10;[设置新的游戏速度 10] 为什么是10呢?
!!VRy2:Sx1 *1352 +21708 +y1;我明白y2是战队的指针(内存地址),这个计算方法不懂
!!SN:E4478576/2/y2/x2/1; x2 移动网格位置?, 1 刷新?
!!VRx3:Sv1;这应该是简单的返回值 读取到y3吧?
麻烦楼主解答下,感谢感谢。。。。。。。
ducs 发表于 2020-4-5 14:21
是最新的2.9.12每把到三个月左右就报这个问题
那可能就是v9555的值在什么时候被修改了,可以看看debug里面保存的变量值列表 xiaoke2017 发表于 2020-4-5 14:39
不懂就问嘛。。。。。。。
楼主请问下,
BM:P的动画会瞬间完成,但是完成后会等待一会儿才能继续执行之后的代码。你试试就知道了。比如!!BM0:P1 P2.....P10; !!IF:M^^;
y12确实是多余的
速度为10就是个很快的速度,眼睛看不出来,9也行
战队内存地址一定是战场内存y1的后面21708字节的位置开始。每个战队占1352个字节。
函数的有些参数不知道什么用,你可以自己试试。
SN:E返回的值都在v1里面
XEricSin 发表于 2020-4-5 15:01
BM:P的动画会瞬间完成,但是完成后会等待一会儿才能继续执行之后的代码。你试试就知道了。比如!!BM0:P1 P ...
太感谢楼主解答了。
之前看007翻译的 ERM帮助手册里面的 FU函数说明与使用
里面是这样说的
"""
函数FU接收器 - 传递信息给编号为#的FU触发器
# = 1~30000 (ERA中无此限制).
"""
我自己也看过其他人跟wog的erm, 还有自己写过FU都是用数字的
但是,楼主的FU语法貌似没怎么见过
!?FU(RepositionStackX1toX2)&x1>=0/x1<=41/x2>=1/x2<=185; {}
是不是如果要使用 字符串作为 函数名的话, 就需要加上 括号
且函数体需要用 花括号 包起来?
xiaoke2017 发表于 2020-4-5 15:31
太感谢楼主解答了。
之前看007翻译的 ERM帮助手册里面的 FU函数说明与使用
era版本下FU函数序号不受30000限制了。
新版era下可以采用字符串来代表函数名,内部自动转换为序号。 贤知有您 发表于 2020-4-5 15:42
era版本下FU函数序号不受30000限制了。
新版era下可以采用字符串来代表函数名,内部自动转换为序号。
谢谢007的解答。
我想知道,哪里可以看到这些新的语法呢?
谢谢。 xiaoke2017 发表于 2020-4-5 21:17
谢谢007的解答。
我想知道,哪里可以看到这些新的语法呢?
新语法没有帮助文档,需要自己看era的更新日志
页:
[1]