XEricSin 发表于 2020-4-4 23:35:35

关于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; [游戏速度]
}
}

scare 发表于 2020-4-5 08:05:37

支持,回去慢慢学习。

ducs 发表于 2020-4-5 09:44:30

将宝物加强Mod1.1,就是封神宝物的单独mod,加到最新版本的era上,经常报英雄下标超界,也不知道怎么处理

xiaoke2017 发表于 2020-4-5 10:48:07

楼主可以解释下

!!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; 又是什么函数?

谢谢

XEricSin 发表于 2020-4-5 10:48:32

ducs 发表于 2020-4-5 09:44
将宝物加强Mod1.1,就是封神宝物的单独mod,加到最新版本的era上,经常报英雄下标超界,也不知道怎么处理

下标是什么?HE编号?
请安装最新的era2.9.12,2.9的有几个版本HE-1有问题。

XEricSin 发表于 2020-4-5 13:36:17

xiaoke2017 发表于 2020-4-5 10:48
楼主可以解释下

!!BMx1:G72/?y5/d;


E4473392处理缠绕状态
E4478576强制单位移动
y2是战队的指针(内存地址)

ducs 发表于 2020-4-5 14:21:31

XEricSin 发表于 2020-4-5 10:48
下标是什么?HE编号?
请安装最新的era2.9.12,2.9的有几个版本HE-1有问题。

是最新的2.9.12每把到三个月左右就报这个问题

xiaoke2017 发表于 2020-4-5 14:39:30

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吧?

麻烦楼主解答下,感谢感谢。。。。。。。

XEricSin 发表于 2020-4-5 14:52:08

ducs 发表于 2020-4-5 14:21
是最新的2.9.12每把到三个月左右就报这个问题

那可能就是v9555的值在什么时候被修改了,可以看看debug里面保存的变量值列表

XEricSin 发表于 2020-4-5 15:01:00

xiaoke2017 发表于 2020-4-5 14:39
不懂就问嘛。。。。。。。

楼主请问下,


BM:P的动画会瞬间完成,但是完成后会等待一会儿才能继续执行之后的代码。你试试就知道了。比如!!BM0:P1 P2.....P10; !!IF:M^^;
y12确实是多余的
速度为10就是个很快的速度,眼睛看不出来,9也行
战队内存地址一定是战场内存y1的后面21708字节的位置开始。每个战队占1352个字节。
函数的有些参数不知道什么用,你可以自己试试。
SN:E返回的值都在v1里面

xiaoke2017 发表于 2020-4-5 15:31:17

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; {}
是不是如果要使用 字符串作为 函数名的话, 就需要加上 括号
且函数体需要用 花括号 包起来?

贤知有您 发表于 2020-4-5 15:42:52

xiaoke2017 发表于 2020-4-5 15:31
太感谢楼主解答了。

之前看007翻译的 ERM帮助手册里面的 FU函数说明与使用


era版本下FU函数序号不受30000限制了。
新版era下可以采用字符串来代表函数名,内部自动转换为序号。

xiaoke2017 发表于 2020-4-5 21:17:47

贤知有您 发表于 2020-4-5 15:42
era版本下FU函数序号不受30000限制了。
新版era下可以采用字符串来代表函数名,内部自动转换为序号。

谢谢007的解答。

我想知道,哪里可以看到这些新的语法呢?

谢谢。

XEricSin 发表于 2020-4-6 03:03:33

xiaoke2017 发表于 2020-4-5 21:17
谢谢007的解答。

我想知道,哪里可以看到这些新的语法呢?


新语法没有帮助文档,需要自己看era的更新日志
页: [1]
查看完整版本: 关于BM:P的重实现

捐赠