diff --git a/MMOTestServer/MMOserver/Game/GameServer.cs b/MMOTestServer/MMOserver/Game/GameServer.cs index d51d6e2..0ef3b04 100644 --- a/MMOTestServer/MMOserver/Game/GameServer.cs +++ b/MMOTestServer/MMOserver/Game/GameServer.cs @@ -265,6 +265,34 @@ public class GameServer : ServerBase } } + // 채널 입장 시 패킷 전송 + // - 자신 유저에게 : 내 정보 (LOAD_GAME) + private void SendLoadGame(NetPeer peer, long hashKey) + { + ChannelManager cm = ChannelManager.Instance; + int channelId = cm.HasUser(hashKey); + + Player? player = channelId >= 0 ? cm.GetChannel(channelId).GetPlayer(hashKey) : null; + if (player == null) + { + Log.Warning("[GameServer] LOAD_GAME 플레이어 없음 HashKey={Key}", hashKey); + byte[] denied = PacketSerializer.Serialize((ushort)PacketCode.LOAD_GAME, new LoadGamePacket { IsAccepted = false }); + SendTo(peer, denied); + return; + } + + LoadGamePacket packet = new LoadGamePacket + { + IsAccepted = true, + Player = ToPlayerInfo(player), + MaplId = channelId, + }; + + byte[] data = PacketSerializer.Serialize((ushort)PacketCode.LOAD_GAME, packet); + SendTo(peer, data); + Log.Debug("[GameServer] LOAD_GAME HashKey={Key} PlayerId={PlayerId} ChannelId={ChannelId}", hashKey, player.PlayerId, channelId); + } + // ============================================================ // 채널 브로드캐스트 헬퍼 // ============================================================ @@ -338,6 +366,9 @@ public class GameServer : ServerBase // 접속된 모든 유저 정보 전달 SendIntoChannelPacket(peer, hashKey); + + // 내 정보 전달 + SendLoadGame(peer, hashKey); } private void OnExitChannel(NetPeer peer, long hashKey, byte[] payload)