From 3174cd28d19602e2442e1513c4d4bfcaf82ddf0b Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Tue, 18 Nov 2025 16:36:15 +0700 Subject: [PATCH] send npc accept task cmd --- .../CSNetwork/C2SCommand/C2SCommandFactory.cs | 36 +++++++++++++++++++ .../Scripts/Network/CSNetwork/GPDataType.cs | 13 +++++++ .../Scripts/Network/CSNetwork/GameSession.cs | 7 ++++ .../Scripts/Network/UnityGameSession.cs | 4 +++ 4 files changed, 60 insertions(+) diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs index 87315311d4..3519401b75 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs @@ -36,6 +36,23 @@ namespace CSNetwork.C2SCommand return octets; } + + /// + /// Some commands have a dynamic body. Usually they have 2 parts.
+ /// The first part is a static part, and the second part will be changed according to the first part.
+ /// This function is used to serialize such commands. + ///
+ /// + public static Octets SerializeCommand(CommandID cmdId, T command, T2 command2) where T : struct where T2 : struct + { + var octets = new Octets(); + + // Write command header - write enum value directly + WriteBasicValue(octets, (ushort)cmdId); + WriteStruct(octets, command); + WriteStruct(octets, command2); + return octets; + } public static Octets SerializeCommand(eCommandID cmdId, T command) where T : struct { @@ -499,6 +516,25 @@ namespace CSNetwork.C2SCommand return SerializeCommand(CommandID.NORMAL_ATTACK, cmd); } + public static Octets CreateCmdNPCSevAcceptTask(int idTask,int idStorage,int idRefreshItem) + { + cmd_sevnpc_serve cmd = new cmd_sevnpc_serve() + { + service_type = 1, + len = Marshal.SizeOf() + }; + + accept_task_CONTENT acceptTaskContent = new accept_task_CONTENT() + { + idTask = idTask, + idStorage = idStorage, + idRefreshItem = idRefreshItem + }; + + var octets = SerializeCommand(CommandID.SEVNPC_SERVE, command: cmd, command2: acceptTaskContent); + return octets; + } + public static Octets CreateNakeCmd(CommandID iCmd) { return SerializeCommand(iCmd); diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index fe1432b95f..a327d4cd18 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -1458,5 +1458,18 @@ namespace CSNetwork.GPDataType public int timebias; public int lua_version; }; + + public struct cmd_sevnpc_serve + { + public int service_type; + public int len; + }; + + public struct accept_task_CONTENT + { + public int idTask; + public int idStorage; + public int idRefreshItem; + }; } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 2cd20760fc..ab1b61b2c4 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -994,6 +994,13 @@ namespace CSNetwork EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERBASEINFO, MANAGER_INDEX.MAN_PLAYER, -1, p); } + public void c2s_CmdNPCSevAcceptTask(int idTask,int idStorage,int idRefreshItem) + { + gamedatasend gamedatasend = new gamedatasend(); + gamedatasend.Data = C2SCommandFactory.CreateCmdNPCSevAcceptTask(idTask, idStorage, idRefreshItem); + SendProtocol(gamedatasend); + } + public void c2s_SendCmdGetAllData(bool byPack, bool byEquip, bool byTask) { gamedatasend gamedatasend = new gamedatasend(); diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index afa6725627..47a0752b8d 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -261,6 +261,10 @@ namespace BrewMonster.Network { Instance._gameSession.c2s_CmdSendEnterPKPrecinctint(); } + public static void c2s_CmdNPCSevAcceptTask(int idTask,int idStorage,int idRefreshItem) + { + Instance._gameSession.c2s_CmdNPCSevAcceptTask(idTask, idStorage, idRefreshItem); + } #region Task public static void c2s_CmdGetAllData(bool byPack, bool byEquip, bool byTask) {