Browse Source

【游戏服】修复重复评论会导致单位重新生成的bug;修复点赞会导致添加单位的bug

大爷 1 year ago
parent
commit
ee8d6c4a3c

+ 1 - 1
DotNet/Hotfix/Helper/BattleServerEventHelper.cs

@@ -15,7 +15,7 @@ namespace ET.Server
         /// <param name="msg"></param>
         public static void AreaBattleServerEvent(JObject msg)
         {
-            Log.Debug($"AreaBattleServerEvent msg: {JsonConvert.SerializeObject(msg, Formatting.Indented)}");
+            //Log.Debug($"AreaBattleServerEvent msg: {JsonConvert.SerializeObject(msg, Formatting.Indented)}");
             long instanceId = Convert.ToInt64(msg.SelectToken("instanceId"));
             Map map = GameMapComponent.Instance.Get(instanceId);
             if (map == null)

+ 1 - 1
DotNet/Hotfix/Scenes/Game/Handler/C2G_BattleNotifyHandler.cs

@@ -74,7 +74,7 @@ namespace ET.Server
                 {
                     MessageHelper.SendActor(instanceid, new R2G_LiveLike() { OpenId = randunit.OpenId, RoomId = roomId, NickName = randunit.Name, Url = randunit.Url, Likes = 10 });
                 }
-                else
+                else if(funcIndex <= 6 && funcIndex >= 1)
                 {
                     string[] GIFT = { DouyinItem.GiftId_1, DouyinItem.GiftId_10, DouyinItem.GiftId_52, DouyinItem.GiftId_99, DouyinItem.GiftId_199, DouyinItem.GiftId_520 };
                     int cnt = 1;

+ 12 - 27
DotNet/Hotfix/Scenes/Game/Handler/R2G_LiveCommentHandler.cs

@@ -19,44 +19,29 @@ namespace ET.Server
 
             // 房间是否存在
             Map map = scene.GetComponent<GameMapComponent>().GetMapByRoomId(request.RoomId);
-
             if (map == null)
             {
                 Log.Debug($"未找到房间...");
                 return;
             }
 
-            // 初始模板id
-            int[] units = new int[] { 101, 121, 111, 131 };
-
-            int templateId = 0;
+            if(string.IsNullOrEmpty(request.Content))
+            {
+                Log.Debug("null live comment");
+                return;
+            }
 
-            switch (request.Content)
+            // 初始模板id
+            int[] units = { 101, 121, 111, 131 };
+            var index = request.Content[0] - '1';
+            if(index < 0 || index >= units.Length) 
             {
-                // case "0":
-                //     // 随机
-                //     templateId = RandomGenerator.RandomArray(units);
-                //     break;
-                case "1":
-                    // 蜜蜂
-                    templateId = units[0];
-                    break;
-                case "2":
-                    // 花
-                    templateId = units[1];
-                    break;
-                case "3":
-                    // 鸟
-                    templateId = units[2];
-                    break;
-                case "4":
-                    // 蘑菇
-                    templateId = units[3];
-                    break;
+                Log.Debug("illegal live comment");
+                return;
             }
 
             Vector2 pos = map.GetRandomPlayerPos();
-            await map.AddUnitPlayer(request.OpenId, templateId, 1, "", pos.X, pos.Y, request.NickName, request.Url);
+            await map.AddUnitPlayer(request.OpenId, units[index], 1, "", pos.X, pos.Y, request.NickName, request.Url);
 
             await ETTask.CompletedTask;
         }

+ 0 - 2
DotNet/Hotfix/Scenes/Game/Handler/R2G_LiveGiftHandler.cs

@@ -116,8 +116,6 @@ namespace ET.Server
                     }
                 }
                 map.GetXmdsManager().notifyBattleServer(map.Id.ToString(), NotifyBSName.TriggerEvent, JsonSerializer.Serialize(notify));
-
-                Log.Debug($"============================================仙女棒/能量药丸 notifyBattleServer - data={JsonSerializer.Serialize(notify)}");
             }
             else
             {

+ 5 - 11
DotNet/Hotfix/Scenes/Game/Handler/R2G_LiveLikeHandler.cs

@@ -22,22 +22,17 @@ namespace ET.Server
 
             // 数据是否存在
             Struct.UnitPlayerData unitPlayerData = map.GetUnitPlayerByOpenId(request.OpenId);
-
-            if (unitPlayerData == null)
+            if (unitPlayerData != null)
             {
-                Vector2 pos = map.GetRandomPlayerPos();
-                unitPlayerData = await map.AddUnitPlayer(request.OpenId, 0, 1, "", pos.X, pos.Y, request.NickName, request.Url);
+                // 累计增加点赞数
+                unitPlayerData.Likes += request.Likes;
+                // 点赞增加贡献值
+                unitPlayerData.ContributeValue += request.Likes;
             }
 
-            // 累计增加点赞数
-            unitPlayerData.Likes += request.Likes;
             map.TotalLikeNum += request.Likes;
 
-            // 点赞增加贡献值
-            unitPlayerData.ContributeValue += request.Likes;
-
             const int configNum = 1000; //到达多少值后,总数量减去这个值,然后继续累加
-
             bool notifyBattleServer = false;
 
             // 点赞总数>=ConfigNum时, 通知战斗服
@@ -61,7 +56,6 @@ namespace ET.Server
             {
                 Struct.TriggerEventNotify notify = new Struct.TriggerEventNotify();
                 notify.message = BattleNotify.TiktokLike_energy.ToString();
-                notify.TriggerUnits = unitPlayerData.ObjId.ToString();
                 map.GetXmdsManager().notifyBattleServer(map.Id.ToString(), NotifyBSName.TriggerEvent, JsonSerializer.Serialize(notify));
             }
 

+ 22 - 44
DotNet/Hotfix/Scenes/Game/Map/MapSystem.cs

@@ -336,9 +336,13 @@ namespace ET.Server
 
             if (templateId <= 0)
             {
-                int[] units = new int[] { 101, 121, 111, 131 };
-
-                templateId = RandomGenerator.RandomArray(units);
+                Log.Debug("illegal templateId @AddUnitPlayer");
+                return null;
+            }
+            if (self.UnitPlayers.ContainsKey(openId))
+            {
+                Log.Debug("already contain unit @AddUnitPlayer");
+                return null;
             }
 
             // 战斗服数据
@@ -359,48 +363,22 @@ namespace ET.Server
             unit.alias = url;
 
             int objId = await self.AddUnits(unit, true);
-
-            Struct.UnitPlayerData unitPlayerData = null;
-
-            if (string.IsNullOrEmpty(openId))
-            {
-                openId = (10000 + new Random().Next(999)).ToString();
-            }
-
-            // 本地数据
-            if (self.UnitPlayers.ContainsKey(openId))
-            {
-                unitPlayerData = self.UnitPlayers[openId];
-
-                // 移除一下之前的场景单位
-                self.RemovePointUnit(unitPlayerData.ObjId).Coroutine();
-
-                unitPlayerData.TemplateId = templateId;
-                unitPlayerData.ObjId = objId;
-                unitPlayerData.Name = unit.name;
-                unitPlayerData.Url = unit.alias;
-                unitPlayerData.Map = self;
-
-                self.UnitPlayers[openId] = unitPlayerData;
-            }
-            else
+            var unitPlayerData = new Struct.UnitPlayerData
             {
-                unitPlayerData = new Struct.UnitPlayerData();
-                unitPlayerData.OpenId = openId;
-                unitPlayerData.TemplateId = templateId;
-                unitPlayerData.ObjId = objId;
-                unitPlayerData.Name = unit.name;
-                unitPlayerData.Url = unit.alias;
-                unitPlayerData.Level = 1;
-                unitPlayerData.Likes = 0;
-                unitPlayerData.ReliveTime = 0;
-                unitPlayerData.x = 0;
-                unitPlayerData.y = 0;
-                unitPlayerData.Map = self;
-
-                self.UnitPlayers.TryAdd(openId, unitPlayerData);
-            }
-
+                OpenId = openId,
+                TemplateId = templateId,
+                ObjId = objId,
+                Name = unit.name,
+                Url = unit.alias,
+                Level = 1,
+                Likes = 0,
+                ReliveTime = 0,
+                x = 0,
+                y = 0,
+                Map = self
+            };
+
+            self.UnitPlayers.TryAdd(openId, unitPlayerData);
             return unitPlayerData;
         }