From 06529f672b2a9c2395892639f8900c65e6f16164 Mon Sep 17 00:00:00 2001 From: "Bob.Song" Date: Fri, 6 Mar 2026 10:17:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Handler/Inner/S2G_ChatMessageHandler.cs | 67 ++++++++++--------- Hotfix/Social/SocialUnitSystem.cs | 2 +- Server.sln.DotSettings.user | 3 + 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/Hotfix/Gate/Handler/Inner/S2G_ChatMessageHandler.cs b/Hotfix/Gate/Handler/Inner/S2G_ChatMessageHandler.cs index d619d63..b0f6aaa 100644 --- a/Hotfix/Gate/Handler/Inner/S2G_ChatMessageHandler.cs +++ b/Hotfix/Gate/Handler/Inner/S2G_ChatMessageHandler.cs @@ -7,42 +7,49 @@ using Fantasy.PacketParser; namespace NB.Gate; -public class S2G_ChatMessageHandler : Address +public class S2G_ChatMessageHandler : Address { - protected override async FTask Run(Scene scene, S2G_ChatMessage message) + protected override async FTask Run(Scene scene, Chat2G_ChatMessage message) { - var chatMessage = new S2C_Message() + // var chatMessage = new S2C_Message() + // { + // Msg = message.Message, + // }; + // var idList = message.IdList; + // bool isAll = !(idList != null && idList.Count > 0); + // + // var gateUnitManage = scene.GetComponent(); + // + // if (isAll) + // { + // foreach (var session in gateUnitManage.ForEachUnitSession()) + // { + // session.Send(chatMessage); + // } + // } + // else + // { + // if (idList == null) return; + // foreach (var (_, gateUnit) in gateUnitManage.Units) + // { + // if (gateUnit.AccountID > 0 && idList.Contains(gateUnit.AccountID)) + // { + // Session session = gateUnit.Session; + // if (session != null) + // { + // session.Send(chatMessage); + // } + // } + // } + // } + var chatMessage = new Chat2C_Message() { - Msg = message.Message, + ChatInfoTree = message.ChatInfoTree }; - var idList = message.IdList; - bool isAll = !(idList != null && idList.Count > 0); - - var gateUnitManage = scene.GetComponent(); - - if (isAll) + foreach (var session in scene.GetComponent().ForEachUnitSession()) { - foreach (var session in gateUnitManage.ForEachUnitSession()) - { - session.Send(chatMessage); - } + session.Send(chatMessage); } - else - { - if (idList == null) return; - foreach (var (_, gateUnit) in gateUnitManage.Units) - { - if (gateUnit.AccountID > 0 && idList.Contains(gateUnit.AccountID)) - { - Session session = gateUnit.Session; - if (session != null) - { - session.Send(chatMessage); - } - } - } - } - await FTask.CompletedTask; } diff --git a/Hotfix/Social/SocialUnitSystem.cs b/Hotfix/Social/SocialUnitSystem.cs index 2e564dd..dcec9e1 100644 --- a/Hotfix/Social/SocialUnitSystem.cs +++ b/Hotfix/Social/SocialUnitSystem.cs @@ -7,7 +7,7 @@ public sealed class SocialUnitDestroySystem : DestroySystem { protected override void Destroy(SocialUnit self) { - self.Role.Return(); + self.Role?.Return(); self.Role = null; self.GateRouteId = 0; // 退出当前ChatUnit拥有的所有频道 diff --git a/Server.sln.DotSettings.user b/Server.sln.DotSettings.user index 6ff39cd..9fdeb46 100644 --- a/Server.sln.DotSettings.user +++ b/Server.sln.DotSettings.user @@ -6,8 +6,11 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded \ No newline at end of file