diff --git a/Assets/MyGame/Scripts/Manager/CreateFishManager.cs b/Assets/MyGame/Scripts/Manager/CreateFishManager.cs index 935c53d9d..31715d023 100644 --- a/Assets/MyGame/Scripts/Manager/CreateFishManager.cs +++ b/Assets/MyGame/Scripts/Manager/CreateFishManager.cs @@ -1650,7 +1650,7 @@ public class CreateFishManager : MonoSingleton } bossCtrl.v3 = sitData.transform.position; - bossCtrl.JiaFen = onScoreAdd; // 先设置 JiaFen,DieFish 的 lambda 才能捕获到 + bossCtrl.JiaFen = WrapJiaFenWithBaoJiangEnd(onScoreAdd, killFish, sitData, isSelfKill_Boss); bossCtrl.isLocalCoin = sitData.user == GameManager.Instance.user.id; // ⭐ 金/银区分 bossCtrl.killerSitPos = sitData.posID; // ⭐ 爆奖杀小鱼用击杀者座位(含人机) monster.DieFish(killFish); // Boss 重写 action_effect_DieAward,捕获上面的 JiaFen @@ -1671,14 +1671,6 @@ public class CreateFishManager : MonoSingleton } bossCtrl.action_effect_DieAward?.Invoke(bossCtrl.currEffect_DieAward); - // ⭐ self 流程:设置 bjFishId,供 OnScoreEnd 发送 baoJiangEnd 帧同步给其他客户端 - if (GameManager.Instance.useNotSelfBaoJiangMode - && isSelfKill_Boss - && bossCtrl.currEffect_DieAward != null) - { - var bjEvt = bossCtrl.currEffect_DieAward.GetComponent(); - if (bjEvt != null) bjEvt.bjFishId = killFish.fishId; - } } break; @@ -1852,7 +1844,7 @@ public class CreateFishManager : MonoSingleton } bossCtrl.v3 = sitData.transform.position; - bossCtrl.JiaFen = onScoreAdd; // 先设置 JiaFen + bossCtrl.JiaFen = WrapJiaFenWithBaoJiangEnd(onScoreAdd, killFish, sitData, isSelfKill_TBoss); bossCtrl.isLocalCoin = sitData.user == GameManager.Instance.user.id; // ⭐ 金/银区分 bossCtrl.killerSitPos = sitData.posID; // ⭐ 爆奖杀小鱼用击杀者座位(含人机) monster.DieFish(killFish); // Boss 重写 action_effect_DieAward @@ -1873,14 +1865,6 @@ public class CreateFishManager : MonoSingleton } bossCtrl.action_effect_DieAward?.Invoke(bossCtrl.currEffect_DieAward); - // ⭐ self 流程:设置 bjFishId,供 OnScoreEnd 发送 baoJiangEnd 帧同步给其他客户端 - if (GameManager.Instance.useNotSelfBaoJiangMode - && isSelfKill_TBoss - && bossCtrl.currEffect_DieAward != null) - { - var bjEvt = bossCtrl.currEffect_DieAward.GetComponent(); - if (bjEvt != null) bjEvt.bjFishId = killFish.fishId; - } } break; default: @@ -1911,6 +1895,38 @@ public class CreateFishManager : MonoSingleton + // ================================================================ + // 工具:包装 JiaFen 回调,self 流程加分完成后发送 baoJiangEnd 帧同步 + // ================================================================ + + /// + /// 包装 onScoreAdd:先执行原加分,再在 self+not-self 模式开启时发送 baoJiangEnd 帧同步。 + /// 这样无论子类走 OnScoreEnd(雷龙)还是直接调 JiaFen(金龙),都能触发帧同步。 + /// BJEventBase.Init 会把这个包装再包一层 `(p) => action?.Invoke(p)`,调用链不变。 + /// + private System.Action WrapJiaFenWithBaoJiangEnd(System.Action onScoreAdd, RoomKillNotice killFish, SitPosData sitData, bool isSelfKill) + { + return (p) => + { + // 1. 执行原加分逻辑 + onScoreAdd?.Invoke(p); + + // 2. self 流程:本地玩家击杀且开启 not-self 模式时,发送 baoJiangEnd 帧同步 + // (机器人击杀由房主延迟代发,不在这里发) + if (isSelfKill + && GameManager.Instance != null + && GameManager.Instance.useNotSelfBaoJiangMode) + { + BaoJiangNotSelfHandler.SendBaoJiangEnd( + killFish.userId, + killFish.fishId, + killFish.beishu, + killFish.gold, + sitData.posID); + } + }; + } + // ================================================================ // 工具:获取当前面板座位列表 // ================================================================ diff --git a/Assets/MyGame/Scripts/Net/APIManager.cs b/Assets/MyGame/Scripts/Net/APIManager.cs index 62b453386..98cb6957d 100644 --- a/Assets/MyGame/Scripts/Net/APIManager.cs +++ b/Assets/MyGame/Scripts/Net/APIManager.cs @@ -19,14 +19,13 @@ namespace Assets.MyGame.Scripts.Net #if ENABLE_LOG_FILE public const string baseURL = "http://47.109.132.12"; -#elif UNITY_EDITOR - //public const string baseURL = "http://8.137.163.153"; - public const string baseURL = "http://47.109.132.12"; +#elif NewIP + public const string baseURL = "http://47.109.34.50"; #else - //public const string baseURL = "http://47.109.132.12"; + public const string baseURL = "http://47.109.132.12"; - public const string baseURL = "http://47.109.34.50"; + //public const string baseURL = "http://47.109.34.50"; #endif diff --git a/Assets/MyGame/Scripts/Net/WebSocketManager.cs b/Assets/MyGame/Scripts/Net/WebSocketManager.cs index c9dcdb5b1..3b87c1df5 100644 --- a/Assets/MyGame/Scripts/Net/WebSocketManager.cs +++ b/Assets/MyGame/Scripts/Net/WebSocketManager.cs @@ -38,14 +38,14 @@ namespace Assets.MyGame.Scripts.Net private const string baseUrl = "ws://47.109.132.12"; //private const string baseUrl = "ws://game5241.wzaxr.top"; -#elif UNITY_EDITOR - //private const string baseUrl = "ws://8.137.163.153"; - private const string baseUrl = "ws://47.109.132.12"; +#elif NewIP + private const string baseUrl = "ws://47.109.34.50"; + //private const string baseUrl = "ws://47.109.132.12"; #else - //private const string baseUrl = "ws://47.109.132.12"; + private const string baseUrl = "ws://47.109.132.12"; - private const string baseUrl = "ws://47.109.34.50"; + //private const string baseUrl = "ws://47.109.34.50"; #endif public bool isGame = false; diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/BJEventBase.cs b/Assets/MyGame/aa/Game/FLZY/BOSS/BJEventBase.cs index 7545d118b..c759293bd 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/BJEventBase.cs +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/BJEventBase.cs @@ -36,8 +36,6 @@ public class BJEventBase : MonoBehaviour public int paoBei; // 炮倍 public int fishScore; // 底分 public int bJbeishu; - /// 爆奖关联的鱼ID(self 流程结束时用于发送 baoJiangEnd 帧同步,供其他客户端 Finalize) - public string bjFishId; [Header("移动")] public float showDelay = 3f; // 报完奖后停留时间(让玩家看清爆奖效果) @@ -410,18 +408,6 @@ public class BJEventBase : MonoBehaviour // 回加金币到玩家 JiaFen?.Invoke(); - // ⭐ self 流程结束:本地玩家击杀且开启 not-self 模式时, - // 发送 baoJiangEnd 帧同步给服务端,其他客户端收到后 Finalize not-self BJEndUI。 - // (机器人击杀时由房主延迟代发,不在这里发) - if (isSelf - && GameManager.Instance != null - && GameManager.Instance.useNotSelfBaoJiangMode - && _targetSit != null - && !string.IsNullOrEmpty(bjFishId)) - { - BaoJiangNotSelfHandler.SendBaoJiangEnd(_targetSit.user, bjFishId, bJbeishu, maxScore, posID); - } - // BJEndUI:无论是否开启分数面板都显示 if (bjEndUI != null) { diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/QL/LeiLongEvent.cs b/Assets/MyGame/aa/Game/FLZY/BOSS/QL/LeiLongEvent.cs index 233ceca67..050ce6d5c 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/QL/LeiLongEvent.cs +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/QL/LeiLongEvent.cs @@ -54,6 +54,10 @@ public class LeiLongEvent : BJEventBase maxScore = goldCount; this.posID = posID; paoBei = paobei; + // ⭐ 补回遗漏的 fishScore/beishu 赋值, + // 否则 OnScoreEnd 发送 baoJiangEnd 帧同步时 bJbeishu=0 导致 not-self 倍数显示错误 + this.fishScore = fishScore; + bJbeishu = beishu; action1?.Invoke(); }