Selaa lähdekoodia

【优化】解决下一局 map.GetXmdsManager() 报错的问题

johnclot69 1 vuosi sitten
vanhempi
commit
ed4a81b597

+ 1 - 1
DotNet/Hotfix/Scenes/Game/GameDouyinComponentSystem.cs

@@ -168,7 +168,7 @@ namespace ET.Server
 
             if (errNo != 0)
             {
-                Log.Error($"TopGifts - TopGiftUrl请求成功...返回错误:{errNo}");
+                Log.Error($"TopGifts - TopGiftUrl请求成功...返回错误:{errNo}, str={str}");
             }
         }
 

+ 17 - 2
DotNet/Hotfix/Scenes/Game/Map/MapEventComponentSystem.cs

@@ -120,11 +120,26 @@ namespace ET.Server
             }
             // 场景结束排行榜逻辑
             map.GetComponent<MapRankComponent>().OnGameOver();
-
+            // 玩家离开
+            map.Player.GetComponent<PlayerTempDataComponent>().MapData.ready = false;
+            // 记录玩家历史
+            map.SyncPlayerHistoryData(map.Player);
+            // 移除战斗服所有单位
+            map.ClearAllPlayersRequest();
             // 战斗服场景玩家离开
             map.PlayerLeaveRequest(map.Player, false);
-            // 本地场景玩家离开
+            // 本地场景移除玩家
             map.RemovePlayer(map.Player, false);
+            // 移除本地玩家数据
+            // self.DomainScene().GetComponent<GamePlayerComponent>().Remove(map.Player.GetId());
+            // 战斗服结束场景
+            map.DestroyZoneRequest();
+            // 移除本地场景数据
+            map.DomainScene().GetComponent<GameMapComponent>().Remove(map.Id, map.RoomId);
+
+            map.Player.Map = null;
+
+            map.Dispose();
         }
 
         /// <summary>

+ 25 - 7
DotNet/Hotfix/Scenes/Game/Map/MapSystem.cs

@@ -62,11 +62,11 @@ namespace ET.Server
         /// <param name="self"></param>
         public static void Init(this Map self)
         {
-            self.UnitPlayers = new Dictionary<string, Struct.UnitPlayerData>();
+            self.UnitPlayers.Clear();
             self.TotalLikeNum = 0;
             self.ConfigNum = 0;
-            self.DeadUnits = new List<int>();
-            self.DeadUnitPlayer = new List<int>();
+            self.DeadUnits.Clear();
+            self.DeadUnitPlayer.Clear();
             self.IsGameOver = false;
             self.CurBattleIndex = 0;
         }
@@ -295,6 +295,24 @@ namespace ET.Server
             await ETTask.CompletedTask;
         }
 
+        /// <summary>
+        /// 清空战斗服所有玩家
+        /// </summary>
+        /// <param name="self"></param>
+        public static void ClearAllPlayersRequest(this Map self)
+        {
+            self.GetZoneManager().clearAllPlayersRequest();
+        }
+
+        /// <summary>
+        /// 战斗服结束场景
+        /// </summary>
+        /// <param name="self"></param>
+        public static void DestroyZoneRequest(this Map self)
+        {
+            self.GetZoneManager().destroyZoneRequest(self.Id.ToString());
+        }
+
         /// <summary>
         /// 是否结束
         /// </summary>
@@ -368,8 +386,8 @@ namespace ET.Server
 
                 unitPlayerData.TemplateId = templateId;
                 unitPlayerData.ObjId = objId;
-                unitPlayerData.Name = name;
-                unitPlayerData.Url = url;
+                unitPlayerData.Name = unit.name;
+                unitPlayerData.Url = unit.alias;
                 unitPlayerData.Map = self;
 
                 self.UnitPlayers[openId] = unitPlayerData;
@@ -380,8 +398,8 @@ namespace ET.Server
                 unitPlayerData.OpenId = openId;
                 unitPlayerData.TemplateId = templateId;
                 unitPlayerData.ObjId = objId;
-                unitPlayerData.Name = name;
-                unitPlayerData.Url = url;
+                unitPlayerData.Name = unit.name;
+                unitPlayerData.Url = unit.alias;
                 unitPlayerData.Level = 1;
                 unitPlayerData.Likes = 0;
                 unitPlayerData.ReliveTime = 0;

+ 3 - 1
DotNet/Hotfix/Scenes/Game/Session/SessionPlayerComponentSystem.cs

@@ -35,6 +35,8 @@ namespace ET.Server
                     player.GetComponent<PlayerTempDataComponent>().MapData.ready = false;
                     // 记录玩家历史
                     map.SyncPlayerHistoryData(player);
+                    // 移除战斗服所有单位
+                    map.ClearAllPlayersRequest();
                     // 战斗服场景玩家离开
                     map.PlayerLeaveRequest(player, false);
                     // 本地场景移除玩家
@@ -42,7 +44,7 @@ namespace ET.Server
                     // 移除本地玩家数据
                     self.DomainScene().GetComponent<GamePlayerComponent>().Remove(player.GetId());
                     // 战斗服结束场景
-                    map.GetZoneManager().destroyZoneRequest(self.Id.ToString());
+                    map.DestroyZoneRequest();
                     // 移除本地场景数据
                     map.DomainScene().GetComponent<GameMapComponent>().Remove(map.Id, map.RoomId);
                 }

+ 1 - 1
DotNet/Hotfix/Scenes/Router/HttpDouyinApiCallbackHandler.cs

@@ -106,7 +106,7 @@ namespace ET.Server
 
                 foreach (StartSceneConfig config in list.Where(config => config is { Id: 10001 }))
                 {
-                    MessageHelper.SendActor(config.InstanceId, new R2G_LiveComment() { OpenId = secOpenId, RoomId = roomId, Content = content, NickName = nickname, Url = avatarUrl});
+                    MessageHelper.SendActor(config.InstanceId, new R2G_LiveComment() { OpenId = secOpenId, RoomId = roomId, Content = content.Trim(), NickName = nickname, Url = avatarUrl});
                     break;
                 }