From 7c47dea3fed4085c2d8b9a4ed642242955d946f5 Mon Sep 17 00:00:00 2001 From: Somebody Date: Sat, 31 Aug 2024 19:40:24 +0800 Subject: [PATCH] Fix Message --- GameServer/Game/Message/MessageManager.cs | 9 ++++++++- GameServer/Game/Mission/MissionManager.cs | 6 ++++++ .../Send/Battle/PacketGetFarmStageGachaInfoScRsp.cs | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/GameServer/Game/Message/MessageManager.cs b/GameServer/Game/Message/MessageManager.cs index 57ef28a3..8c13a497 100644 --- a/GameServer/Game/Message/MessageManager.cs +++ b/GameServer/Game/Message/MessageManager.cs @@ -78,6 +78,13 @@ public class MessageManager(PlayerInstance player) : BasePlayerManager(player) { GameData.MessageSectionConfigData.TryGetValue(sectionId, out var sectionConfig); if (sectionConfig == null) return; + + if (Data.Groups.TryGetValue(sectionConfig.GroupID, out var group) && group.Sections.Find(x => x.SectionId == sectionId) != null) + { + // already exist + return; + } + foreach (var item in sectionConfig.StartMessageItemIDList) await AddMessageItem(item); } @@ -109,7 +116,7 @@ public class MessageManager(PlayerInstance player) : BasePlayerManager(player) group.CurrentSectionId = sectionId; group.RefreshTime = Extensions.GetUnixSec(); group.Status = MessageGroupStatus.MessageGroupDoing; - if (!group.Sections.Any(m => m.SectionId == sectionId)) // new section + if (group.Sections.All(m => m.SectionId != sectionId)) // new section { group.Sections.Add(new MessageSectionData { diff --git a/GameServer/Game/Mission/MissionManager.cs b/GameServer/Game/Mission/MissionManager.cs index 196e4fe0..1b74e391 100644 --- a/GameServer/Game/Mission/MissionManager.cs +++ b/GameServer/Game/Mission/MissionManager.cs @@ -81,6 +81,12 @@ public class MissionManager : BasePlayerManager await Player.LineupManager!.AddAvatarToCurTeam(1003); } + // message + foreach (var sectionConfigExcel in GameData.MessageSectionConfigData.Values.Where(x => x.MainMissionLink == missionId)) + { + await Player.MessageManager!.AddMessageSection(sectionConfigExcel.ID); + } + return list; } diff --git a/GameServer/Server/Packet/Send/Battle/PacketGetFarmStageGachaInfoScRsp.cs b/GameServer/Server/Packet/Send/Battle/PacketGetFarmStageGachaInfoScRsp.cs index 3550f1a8..aa6b2556 100644 --- a/GameServer/Server/Packet/Send/Battle/PacketGetFarmStageGachaInfoScRsp.cs +++ b/GameServer/Server/Packet/Send/Battle/PacketGetFarmStageGachaInfoScRsp.cs @@ -1,5 +1,6 @@ using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Util; namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Battle; @@ -14,7 +15,7 @@ public class PacketGetFarmStageGachaInfoScRsp : BasePacket { GachaId = item, BeginTime = 0, - EndTime = long.MaxValue + EndTime = Extensions.GetUnixSec() + 3600 }); SetData(proto);