From 3188dbeb3d5ec2eee58404095d8a41204b5755d3 Mon Sep 17 00:00:00 2001 From: qornwh1 Date: Sun, 8 Mar 2026 22:03:06 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EC=84=9C=EB=B2=84=20=EC=8B=A4?= =?UTF-8?q?=ED=8C=A8=20=EC=BD=94=EB=93=9C=20=EB=A9=94=EC=8B=9C=EC=A7=80=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EchoClientTester/Packet/PacketBody.cs | 25 +++++++++++++++++++ .../EchoClientTester/Packet/PacketHeader.cs | 5 +++- MMOTestServer/MMOserver/Game/GameServer.cs | 11 ++++++++ MMOTestServer/MMOserver/Packet/PacketBody.cs | 25 +++++++++++++++++++ .../MMOserver/Packet/PacketHeader.cs | 5 +++- 5 files changed, 69 insertions(+), 2 deletions(-) diff --git a/ClientTester/EchoClientTester/Packet/PacketBody.cs b/ClientTester/EchoClientTester/Packet/PacketBody.cs index ecae837..638810a 100644 --- a/ClientTester/EchoClientTester/Packet/PacketBody.cs +++ b/ClientTester/EchoClientTester/Packet/PacketBody.cs @@ -516,6 +516,31 @@ public class DamagePacket } } +// ============================================================ +// 에러 +// ============================================================ + +public enum ErrorCode : int +{ + // 파티 (10021~) + PARTY_ALREADY_IN_PARTY = 10021, + PARTY_JOIN_FAILED = 10022, + PARTY_NOT_IN_PARTY = 10023, + PARTY_DELETE_FAILED = 10024, +} + +// ERROR (서버 -> 클라) +[ProtoContract] +public class ErrorPacket +{ + [ProtoMember(1)] + public ErrorCode Code + { + get; + set; + } +} + // ============================================================ // 파티 // ============================================================ diff --git a/ClientTester/EchoClientTester/Packet/PacketHeader.cs b/ClientTester/EchoClientTester/Packet/PacketHeader.cs index 886af11..5210021 100644 --- a/ClientTester/EchoClientTester/Packet/PacketHeader.cs +++ b/ClientTester/EchoClientTester/Packet/PacketHeader.cs @@ -52,7 +52,10 @@ public enum PacketCode : ushort UPDATE_PARTY, // 파티 참가/탈퇴/생성/해산 요청 (클라 -> 서버) - REQUEST_PARTY + REQUEST_PARTY, + + // 요청 실패 응답 (서버 -> 클라) + ERROR = 9999 } public class PacketHeader diff --git a/MMOTestServer/MMOserver/Game/GameServer.cs b/MMOTestServer/MMOserver/Game/GameServer.cs index 80e95be..0c00419 100644 --- a/MMOTestServer/MMOserver/Game/GameServer.cs +++ b/MMOTestServer/MMOserver/Game/GameServer.cs @@ -484,6 +484,7 @@ public class GameServer : ServerBase { if (!pm.CreateParty(hashKey, req.PartyName, out PartyInfo? party)) { + SendError(peer, ErrorCode.PARTY_ALREADY_IN_PARTY); return; } @@ -503,6 +504,7 @@ public class GameServer : ServerBase { if (!pm.JoinParty(hashKey, req.PartyId, out PartyInfo? party)) { + SendError(peer, ErrorCode.PARTY_JOIN_FAILED); return; } @@ -521,6 +523,7 @@ public class GameServer : ServerBase { if (!pm.LeaveParty(hashKey, out PartyInfo? party)) { + SendError(peer, ErrorCode.PARTY_NOT_IN_PARTY); return; } @@ -544,6 +547,7 @@ public class GameServer : ServerBase { if (!pm.DeleteParty(hashKey, req.PartyId, out PartyInfo? party)) { + SendError(peer, ErrorCode.PARTY_DELETE_FAILED); return; } @@ -560,6 +564,13 @@ public class GameServer : ServerBase } } + private void SendError(NetPeer peer, ErrorCode code) + { + ErrorPacket err = new ErrorPacket { Code = code }; + byte[] data = PacketSerializer.Serialize((ushort)PacketCode.ERROR, err); + SendTo(peer, data); + } + private void BroadcastToUsers(IEnumerable userIds, byte[] data, DeliveryMethod method = DeliveryMethod.ReliableOrdered) { foreach (int userId in userIds) diff --git a/MMOTestServer/MMOserver/Packet/PacketBody.cs b/MMOTestServer/MMOserver/Packet/PacketBody.cs index ee3a61d..fe1a96c 100644 --- a/MMOTestServer/MMOserver/Packet/PacketBody.cs +++ b/MMOTestServer/MMOserver/Packet/PacketBody.cs @@ -516,6 +516,31 @@ public class DamagePacket } } +// ============================================================ +// 에러 +// ============================================================ + +public enum ErrorCode : int +{ + // 파티 (10021~) + PARTY_ALREADY_IN_PARTY = 10021, + PARTY_JOIN_FAILED = 10022, + PARTY_NOT_IN_PARTY = 10023, + PARTY_DELETE_FAILED = 10024, +} + +// ERROR (서버 -> 클라) +[ProtoContract] +public class ErrorPacket +{ + [ProtoMember(1)] + public ErrorCode Code + { + get; + set; + } +} + // ============================================================ // 파티 // ============================================================ diff --git a/MMOTestServer/MMOserver/Packet/PacketHeader.cs b/MMOTestServer/MMOserver/Packet/PacketHeader.cs index 8f24111..aca58a9 100644 --- a/MMOTestServer/MMOserver/Packet/PacketHeader.cs +++ b/MMOTestServer/MMOserver/Packet/PacketHeader.cs @@ -52,7 +52,10 @@ public enum PacketCode : ushort UPDATE_PARTY, // 파티 참가/탈퇴/생성/해산 요청 (클라 -> 서버) - REQUEST_PARTY + REQUEST_PARTY, + + // 요청 실패 응답 (서버 -> 클라) + ERROR = 9999 } public class PacketHeader