和煦樱
如题所示,在一个界面中点击一个物品 通过"InventoryClick事件"可以触发一次关闭玩家领取奖励的权限 + 领取一次奖励


但网络问题 + 连点器可能导致玩家能多次领取到奖励后代码中才运行到关闭玩家领取奖励的权限(即使if(玩家有领取奖励的权限)后的第一步就是关闭玩家的权限,但还是不影响玩家能重复领取奖励),导致玩家可以重复领取奖励


以上这个问题有什么好的处理方法吗?!求



麻花awa
按理说不应该出现这种情况。
尝试加一个防抖处理(同一个玩家短时间内只允许一次有效操作)

和煦樱
麻花awa 发表于 2022-2-11 01:55
按理说不应该出现这种情况。
尝试加一个防抖处理(同一个玩家短时间内只允许一次有效操作) ...

防抖处理的代码实现应该怎么做呢

麻花awa
和煦樱 发表于 2022-2-11 01:59
防抖处理的代码实现应该怎么做呢

一个简单的思路:
创建一个Map<Player,Time>
处理事件时,先从map中取玩家最后一次的时间,如果时间差小于某个值,就不再向下执行。

Rothes
你可以添加一个 lock, 第一次发放奖励的时候就把lock设为true, 第二次检测到true 就不执行了.
我怎么感觉这个是权限数据库连接延迟导致的?

和煦樱
Rothes 发表于 2022-2-11 03:46
你可以添加一个 lock, 第一次发放奖励的时候就把lock设为true, 第二次检测到true 就不执行了.
我怎么感觉这 ...

我用了这个方法,估计代码写急了 写成临时变量了

🍓🔥灵域
和煦樱 发表于 2022-2-11 11:40
我用了这个方法,估计代码写急了 写成临时变量了

逻辑上来说
如果(有条件)
->给予奖励
->删除条件

你检查一下有条件和删除条件的环节呢

第一页 上一页 下一页 最后一页