搜索
查看: 827|回复: 19

[已关闭] 镜像地图时长有问题,不准确。

 关闭 [复制链接]
发表于 2023-2-14 18:04:26 | 显示全部楼层 |阅读模式
BUG反馈
引擎版本号: 230202
登陆器版本号: 230131
BUG描述: 如下
BUG重现方式: 如下
修复后应达到的效果: 准确
联系QQ: 隐藏内容

镜像地图有效时长不准确,正确的每秒减1秒时长,现在实际上是有时候每秒减2秒时长。

NPC脚本如下:
[@MAIN]
#ACT
MirrorMap new1050 <$USERNAME> 镜像地图测试 300 3 330 330 0
MAPMOVE <$USERNAME>
镜像地图设置了一个300秒时长,

机器人脚本如下:
PlayRunRobot.txt
#AutoRun NPC SEC 1 @单区多人副本1剩余时间刷新

RobotManage.txt
[@单区多人副本1剩余时间刷新]

#IF
CheckContainsText <$MAP> fb
#ACT
sendmsg 7 副本剩余时间2:<$MIRRORMAPTIME(-)>
INC U101 1
sendmsg 7 U101:<$STR(U101)>

结果如下图:


300秒的时长,到287秒就给传出来了,实际时长少了13秒左右。

这个时长递减不精确,导致写的脚本出问题。
比如,我在在镜像地图剩余多少秒的时候,执行什么。
#IF
EQUAL <$MIRRORMAPTIME(S0)> 100
#ACT

这个时长乱跳,如下图:


88过了是86,不是87,导致出问题。
ps:不是固定少7这个,是每隔10多秒就随机多少1秒。
可以复制我上面的脚本看结果就知道了。

所以望修复。






补充内容 (2023-2-14 18:06):
NPC脚本那里的镜像地图名搞错了,临时改的。
MirrorMap new1050 fb-new1050 镜像地图测试 300 3 330 330 0
MAPMOVE fb-new1050

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2023-2-14 19:32:30 | 显示全部楼层
这个时间是准的,你这数字不对.是定时器不准.定时器你要定了每秒执行一次.那么实际间隔是1秒加上执行的时间.
 楼主| 发表于 2023-2-14 19:35:07 | 显示全部楼层
黑月无华 发表于 2023-2-14 19:32
这个时间是准的,你这数字不对.是定时器不准.定时器你要定了每秒执行一次.那么实际间隔是1秒加上执行的时间. ...

什么玩意儿?跟定时器有什么关系。你看清楚我说的问题再说吧。
发表于 2023-2-14 19:58:14 | 显示全部楼层
引擎这种小问题多了去
经常一搞几天才找到原因
功能多了,估计作者都不记得哪些是有冲突的
 楼主| 发表于 2023-2-14 21:09:59 | 显示全部楼层
@法海不懂爱
镜像地图扣时长有问题,每隔10多秒左右就会出现一次每1秒减2秒时长的情况,正确的是每秒减1秒时长。
发表于 2023-2-14 21:58:00 | 显示全部楼层
反正我也不会
发表于 2023-2-15 10:17:35 | 显示全部楼层
本帖最后由 1580 于 2023-2-15 10:21 编辑

RobotManage.txt

引擎本身的执行顺序 ,
1.所有精灵的逻辑业务 ,
2.场景业务
3.全局机器脚本执行
4.地图业务
5.物品业务
。。。。

一个业务周期下来,某个业务处理相对时间长点,就不可能保存你机器人按1秒间隔执行
所以你累加值少,就这原因



 楼主| 发表于 2023-2-15 12:03:34 | 显示全部楼层
1580 发表于 2023-2-15 10:17
RobotManage.txt

引擎本身的执行顺序 ,

如果是机器人执行误差,那我单独用来统计的一个变量的值又是正常的。我就是为了排除这个可能性,所以用了一个U变量进行对比。
 楼主| 发表于 2023-2-15 12:12:01 | 显示全部楼层
1580 发表于 2023-2-15 10:17
RobotManage.txt

引擎本身的执行顺序 ,

我考虑过机器人执行的误差,所以我在执行的时候加了一个U变量一起对比。
#ACT
sendmsg 7 副本剩余时间2:<$MIRRORMAPTIME(-)>
INC U101 1
sendmsg 7 U101:<$STR(U101)>

U变量结果是从0、1、2、3、4……结果全部是对的。
但同时获取的镜像地图时间的结果每隔10多秒左右就会出现一次比如90过了就是88,65过了就是63
42过了就是40这种。这都是很容易测试到结果的。

要验证是不是有这个问题还有两个方法,个人定时器,或者直接打秒表测试都可以。
新建一个300秒的镜像地图,人物传进去,什么都不做。然后看他传出来的时候是多少秒,是不是300或者299秒,因为传送的那一瞬间要占一秒,可以忽略不计。

补充内容 (2023-2-15 12:15):
而且你看我上传的的图,就是结果,红色箭头那里,副本剩余时间88那里,U101对应的值是201,下一秒副本剩余时间变成了86秒,而U101对应的值是202

补充内容 (2023-2-15 12:16):
所以,从这里可以排除你说的因为程序执行逻辑导致一轮下来的误差。
 楼主| 发表于 2023-2-15 13:31:10 | 显示全部楼层
1580 发表于 2023-2-15 10:17
RobotManage.txt

引擎本身的执行顺序 ,

再看了下你的话,好像明白了,意思是指执行的间隔并不是精确的按每秒在执行,导致的误差,这有什么办法规避吗?

补充内容 (2023-2-15 13:35):
个人定时器和机器人脚本都试了,都有误差。打秒表测试,时间是对的,如果没法规避,有些功能也只能放弃了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-24 13:27 , Processed in 0.560421 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表