相信很多玩家和楼主一样,喜欢把资金设成独立模式,然后把身上的钱全部转给小号来存储,这样就可以天天627不用扣医疗费,但最近楼主这么玩的时候偶然间发现钱的数量好像对不上,然后一顿排查之后就发现了这个BUG。
简单来说就是,在独立资金模式下,如果你把钱转给了另一个人,而这个人在你转账后到主机关闭游戏这段时间内都没有再上线过,那么你转出去的这笔钱就直接被吞了。
注意,是只要在这段时间内没有上线接受转账,钱就必定消失,主机和其他人睡觉存档是没用的!一旦关闭游戏,没有被接受的这笔转账就直接被吞了,存档数据里是找不到,一旦丢失不可恢复,除非你自己记得住丢了多少钱,再用修改工具加回来。并且不管是本地分屏联机还是在线联机都可以复现。
这个BUG非常隐蔽,因为只要主机不关闭游戏,客机上线后仍然能接收到资金。
至于为什么会产生这种现象,以下是个人在没有看过游戏源码的情况下做出的简略推测:
1.玩家A(不管是否是主机)给不在线的玩家B(客机)转了一笔钱。
2.由于玩家B不在线,系统没有直接将钱加到玩家B的角色数据中(可能是为了在上线时显示转账的效果,就是右上角那个钱变多的动画),而是在内存里存储了这笔转账数据,并标记为Pending。
3a.如果玩家B在此时上线了,那么系统修改玩家的角色数据里,并把内存里的待处理转账标记为完成,然后主机存档(大家晚上睡觉)时,所有人角色数据就会被保存(客机的角色数据也是在主机端保存的),相当于钱存下来了,至此没有问题。
3b.但如果玩家B在转账之后始终没有上线,此时系统无法完成这笔转账,然后客机关闭了游戏。问题就出在这里,游戏没有正确将这个“待处理的转账数据”进行持久化处理,换句话说就是,它不会在你睡觉时保存到存档数据里,而是一直存储在主机的游戏进程内存里。此时主机一旦关闭游戏,游戏内存被释放,这个数据就丢失了,这就导致了资金丢失。
TLDR:打个比方,就相当于你去寄快递,已经发件了(快递已经不在你的手里了),但是还没有签收(对方还没有拿到快递)。在这个中间态里,快递既不在你手里也不再收件人的手里,而是在快递员手上。正常情况下快递员把快递送给收件人,而这个BUG就类似于快递员丢件了。
楼主目前已在官方论坛反馈了这个BUG,正在等待后续官方回复。在BUG修复之前,规避这个问题最简单的方式就是在每次转账后让被转帐的人至少上线一次,你自己开分屏上对方的号也行。或者在要关闭游戏前上线一次也可以,之前转的钱会统一结算,但是如果中途主机的游戏崩了那钱就彻底没了。
简单来说就是,在独立资金模式下,如果你把钱转给了另一个人,而这个人在你转账后到主机关闭游戏这段时间内都没有再上线过,那么你转出去的这笔钱就直接被吞了。
注意,是只要在这段时间内没有上线接受转账,钱就必定消失,主机和其他人睡觉存档是没用的!一旦关闭游戏,没有被接受的这笔转账就直接被吞了,存档数据里是找不到,一旦丢失不可恢复,除非你自己记得住丢了多少钱,再用修改工具加回来。并且不管是本地分屏联机还是在线联机都可以复现。
这个BUG非常隐蔽,因为只要主机不关闭游戏,客机上线后仍然能接收到资金。
至于为什么会产生这种现象,以下是个人在没有看过游戏源码的情况下做出的简略推测:
1.玩家A(不管是否是主机)给不在线的玩家B(客机)转了一笔钱。
2.由于玩家B不在线,系统没有直接将钱加到玩家B的角色数据中(可能是为了在上线时显示转账的效果,就是右上角那个钱变多的动画),而是在内存里存储了这笔转账数据,并标记为Pending。
3a.如果玩家B在此时上线了,那么系统修改玩家的角色数据里,并把内存里的待处理转账标记为完成,然后主机存档(大家晚上睡觉)时,所有人角色数据就会被保存(客机的角色数据也是在主机端保存的),相当于钱存下来了,至此没有问题。
3b.但如果玩家B在转账之后始终没有上线,此时系统无法完成这笔转账,然后客机关闭了游戏。问题就出在这里,游戏没有正确将这个“待处理的转账数据”进行持久化处理,换句话说就是,它不会在你睡觉时保存到存档数据里,而是一直存储在主机的游戏进程内存里。此时主机一旦关闭游戏,游戏内存被释放,这个数据就丢失了,这就导致了资金丢失。
TLDR:打个比方,就相当于你去寄快递,已经发件了(快递已经不在你的手里了),但是还没有签收(对方还没有拿到快递)。在这个中间态里,快递既不在你手里也不再收件人的手里,而是在快递员手上。正常情况下快递员把快递送给收件人,而这个BUG就类似于快递员丢件了。
楼主目前已在官方论坛反馈了这个BUG,正在等待后续官方回复。在BUG修复之前,规避这个问题最简单的方式就是在每次转账后让被转帐的人至少上线一次,你自己开分屏上对方的号也行。或者在要关闭游戏前上线一次也可以,之前转的钱会统一结算,但是如果中途主机的游戏崩了那钱就彻底没了。









