From a8b4691d1ee8bcdf911352eddfb12f88fd4f9034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A3=AE2003?= <2384017988@qq.com> Date: Tue, 21 Jul 2026 01:06:09 +0800 Subject: [PATCH] 1 --- .../aa/UI/Game/GameMainPanel_FishBase.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs b/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs index b4c87cfb1..d75fe742e 100644 --- a/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs +++ b/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs @@ -2425,7 +2425,12 @@ public class GameMainPanel_FishBase : GameMainPanel_Base return 1; } - /// 按档位索引设置炮台消耗(直接对齐 consumeGoldNum,避免触发音效/SyncCannonMultiple) + /// + /// 按档位索引设置 bot 炮台消耗。 + /// 同时更新底层数据 consumeGoldNum、文本显示,并广播给其他客户端, + /// 保证所有客户端的 bot 炮倍一致(发射子弹扣金币、打中鱼计算奖励都用最新值)。 + /// 不走 SyncCannonMultiple(那个用的是本地玩家 currSitData.posID,不能给 bot 用)。 + /// private void ApplyBotLevelIndex(SitPosData sit, int targetIndex) { int count = GetPaoBeiCount(); @@ -2434,6 +2439,19 @@ public class GameMainPanel_FishBase : GameMainPanel_Base sit.consumeGoldNum = paoBeiList[targetIndex]; if (sit.tMP_TurretConsumeNum != null) sit.tMP_TurretConsumeNum.text = sit.consumeGoldNum.ToString(); + // ⭐ 同步 indexConsume,保持档位索引与 consumeGoldNum 一致 + sit.SyncIndexByConsume(sit.consumeGoldNum); + + // ⭐ 广播 bot 炮倍变化给其他客户端(用 bot 自己的 sitPos), + // 接收端 SyncGameData_ChangeCannonMultiple 会根据 sitPos 更新对应座位 + var sgd = new SyncGameData + { + sitPos = sit.posID, + frameType = FrameDataType.changeCannonMultiple, + time = BeijingTimeManager.Instance.CurrentTimestampMs, + frameData = new FrameData_ChangeCannonMultiple { cannonMultiple = (int)sit.consumeGoldNum } + }; + WebSocketSendList.SyncGameData(sgd); } /// 退出条件检查:金币>设定 或 金币<设定