-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【建议】如意宝箱 #30
Comments
联网模式改 text 段会有两个问题,一个是被反作弊扫描到;另一个是产生平行世界,除非把所有人的同时都改了。 |
如果在内存中找到存放箱子列表的地址呢?然后修改箱子数据的属性,是不是就可以实现? 参考这个文章:红色警戒2-尤里复仇之自动全图捡箱子,里面提到「所有箱子坐标」,应该能找到箱子的列表。 |
从下面的代码可以看出,esi应该是箱子对象相关,动态调试时给拦截下来看一下:
如下地址不确定是否跟箱子数据有关,动态调试的时候看下:
|
联机有数据一致性要求,本地数据修改必须直接或者间接发送给所有玩家,保持多人游戏状态同步。自动捡箱子功能会把对单位的操作也发给别的玩家,没有不一致问题。对箱子内容的修改无法发送给别的玩家,会导致多客户端数据不一致,俗称平行世界…… |
倒也不是不可行,要看修改的时机。 猜想: 可以在触碰箱子的时候,修改箱子的处理效果函数,例如修改为升级效果,之后的逻辑不动,则发送数据到服务端的逻辑仍然是通的。 |
看下这块代码,动态调试下看看时机和箱子属性。
|
从箱子生成到单位拾取箱子过程中,只有对单位的移动指令会发送给服务器,其他的都是计算出来的。发送到服务器的内容有限,事件类型定义在 |
@AdjWang 那就比较困惑了:
|
我大概理解下: 有点类似区块链的思想,每个客户端都在计算,都有全量数据。 如果按照这个思路的话,似乎如意宝箱就很难实现了,但是似乎强制修改数据有实现的可能,修改后锁死并同步出去,有机会可以将所有玩家的数据给刷回去。 |
是这样的。
|
箱子目前是随机效果,可以实现一个如意宝箱的效果,就是想来啥来啥。这个目前在单机版已经实现了,可以用,代码如下:
其他捡箱子效果可以参考这个来设计。这样当缺钱的时候,就按下按键让所有捡箱子效果是金钱,当需要升级部队时按下某个按键让捡箱子效果都是升级,以此类推……
另:这个功能在联网对战中会卡死,不知道啥原因,有知道的吗?
The text was updated successfully, but these errors were encountered: