From 85920e442dfd4f0aeaad28eb61cd966afc643e97 Mon Sep 17 00:00:00 2001 From: d1str4ught <> Date: Thu, 28 Aug 2025 22:41:41 +0200 Subject: [PATCH] item_set and item_del packets normalized to server --- src/EterLib/NetStream.cpp | 3 +- src/UserInterface/AbstractPlayer.h | 3 - src/UserInterface/Packet.h | 111 +++--------------- src/UserInterface/PythonNetworkStream.cpp | 2 +- src/UserInterface/PythonNetworkStream.h | 2 +- .../PythonNetworkStreamPhaseGame.cpp | 8 +- .../PythonNetworkStreamPhaseGameItem.cpp | 41 +++---- .../PythonNetworkStreamPhaseLoading.cpp | 2 +- src/UserInterface/PythonPlayerModule.cpp | 14 --- 9 files changed, 40 insertions(+), 146 deletions(-) diff --git a/src/EterLib/NetStream.cpp b/src/EterLib/NetStream.cpp index f5c8e36..a18b372 100644 --- a/src/EterLib/NetStream.cpp +++ b/src/EterLib/NetStream.cpp @@ -606,7 +606,8 @@ const char * GetRecvHeaderName(BYTE header) stringList[17] = "HEADER_GC_PLAYER_POINT_CHANGE"; stringList[18] = "HEADER_GC_CHANGE_SPEED"; stringList[19] = "HEADER_GC_CHARACTER_UPDATE"; - stringList[20] = "HEADER_GC_ITEM_SET"; + stringList[20] = "HEADER_GC_ITEM_DEL"; + stringList[21] = "HEADER_GC_ITEM_SET"; stringList[22] = "HEADER_GC_ITEM_USE"; stringList[23] = "HEADER_GC_ITEM_DROP"; stringList[25] = "HEADER_GC_ITEM_UPDATE"; diff --git a/src/UserInterface/AbstractPlayer.h b/src/UserInterface/AbstractPlayer.h index bbfa6e9..9264db3 100644 --- a/src/UserInterface/AbstractPlayer.h +++ b/src/UserInterface/AbstractPlayer.h @@ -31,9 +31,6 @@ class IAbstractPlayer : public TAbstractSingleton virtual void SetItemCount(TItemPos itemPos, BYTE byCount) = 0; virtual void SetItemMetinSocket(TItemPos itemPos, DWORD dwMetinSocketIndex, DWORD dwMetinNumber) = 0; virtual void SetItemAttribute(TItemPos itemPos, DWORD dwAttrIndex, BYTE byType, short sValue) = 0; -#if defined(GAIDEN) - virtual void SetItemUnbindTime(DWORD dwItemSlotIndex, DWORD dwUnbindSecondsLeft) = 0; -#endif virtual DWORD GetItemIndex(TItemPos itemPos) = 0; virtual DWORD GetItemFlags(TItemPos itemPos) = 0; diff --git a/src/UserInterface/Packet.h b/src/UserInterface/Packet.h index 0b95a96..30d8a64 100644 --- a/src/UserInterface/Packet.h +++ b/src/UserInterface/Packet.h @@ -1,18 +1,4 @@ #pragma once - -#pragma pack(push) //기존 alignment 저장 -#pragma pack(8) - -#define ANTICPX_TRANS_BUFFER_MAX 400 - -typedef struct _AHNHS_TRANS_BUFFER -{ - unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* 송수신 패킷의 최대 크기 */]; - uint16_t nLength; -} AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER; - -#pragma pack(pop) // 기존 alignment 복구. - #include "Gamelib/RaceData.h" typedef uint8_t TPacketHeader; @@ -179,16 +165,13 @@ enum HEADER_GC_PLAYER_POINT_CHANGE = 17, HEADER_GC_CHANGE_SPEED = 18, HEADER_GC_CHARACTER_UPDATE = 19, -#if defined(GAIDEN) + HEADER_GC_ITEM_DEL = 20, // 아이템 창에 추가 HEADER_GC_ITEM_SET = 21, // 아이템 창에 추가 -#else - HEADER_GC_ITEM_SET = 20, // 아이템 창에 추가 - HEADER_GC_ITEM_SET2 = 21, // 아이템 창에 추가 -#endif HEADER_GC_ITEM_USE = 22, // 아이템 사용 (주위 사람들에게 보여주기 위해) HEADER_GC_ITEM_DROP = 23, // 아이템 버리기 HEADER_GC_ITEM_UPDATE = 25, // 아이템 수치 업데이트 + HEADER_GC_ITEM_GROUND_ADD = 26, // 바닥에 아이템 추가 HEADER_GC_ITEM_GROUND_DEL = 27, // 바닥에서 아이템 삭제 HEADER_GC_QUICKSLOT_ADD = 28, @@ -271,15 +254,9 @@ enum HEADER_GC_WALK_MODE = 111, HEADER_GC_CHANGE_SKILL_GROUP = 112, -#if defined(GAIDEN) - HEADER_GC_MAIN_CHARACTER = 113, - HEADER_GC_MAIN_CHARACTER3_BGM = 137, - HEADER_GC_MAIN_CHARACTER4_BGM_VOL = 138, -#else // SUPPORT_BGM HEADER_GC_MAIN_CHARACTER2_EMPIRE = 113, // END_OF_SUPPORT_BGM -#endif HEADER_GC_SEPCIAL_EFFECT = 114, HEADER_GC_NPC_POSITION = 115, @@ -326,15 +303,6 @@ enum HEADER_GC_RUNUP_MATRIX_QUIZ = 201, HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202, HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203, -#if defined(GAIDEN) - HEADER_GC_ONTIME = 204, - HEADER_GC_RESET_ONTIME = 205, - - // AUTOBAN - HEADER_GC_AUTOBAN_QUIZ = 206, - // END_OF_AUTOBAN - -#endif #ifdef __AUCTION__ HEADER_GC_AUCTOIN_ITEM_LIST = 206, @@ -1676,74 +1644,25 @@ typedef struct packet_motion uint16_t motion; } TPacketGCMotion; -#if defined(GAIDEN) -struct TPacketGCItemDelDeprecate +typedef struct packet_del_item { - TPacketGCItemDelDeprecate() : - header(HEADER_GC_ITEM_DEL), - pos(0), - vnum(0), - count(0) - { - memset(&alSockets, 0, sizeof(alSockets)); - memset(&aAttr, 0, sizeof(aAttr)); - } - - uint8_t header; - uint8_t pos; - uint32_t vnum; - uint8_t count; - int32_t alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; - TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; -}; + uint8_t header; + TItemPos pos; +} TPacketGCItemDel; typedef struct packet_set_item { - uint8_t header; - uint8_t pos; - uint32_t vnum; - uint8_t count; - uint32_t flags; // 플래그 추가 - int32_t alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; - TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; + uint8_t header; + TItemPos pos; + uint32_t vnum; + uint8_t count; + uint32_t flags; // 플래그 추가 + uint32_t anti_flags; // 플래그 추가 + uint8_t highlight; + int32_t alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; + TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; } TPacketGCItemSet; -typedef struct packet_item_del -{ - uint8_t header; - uint8_t pos; -} TPacketGCItemDel; -#else -typedef struct packet_set_item -{ - uint8_t header; - TItemPos Cell; - uint32_t vnum; - uint8_t count; - int32_t alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; - TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; -} TPacketGCItemSet; - -typedef struct packet_set_item2 -{ - uint8_t header; - TItemPos Cell; - uint32_t vnum; - uint8_t count; - uint32_t flags; // 플래그 추가 - uint32_t anti_flags; // 플래그 추가 - bool highlight; - int32_t alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; - TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; -} TPacketGCItemSet2; -#endif - -typedef struct packet_item_del -{ - uint8_t header; - uint8_t pos; -} TPacketGCItemDel; - typedef struct packet_use_item { uint8_t header; diff --git a/src/UserInterface/PythonNetworkStream.cpp b/src/UserInterface/PythonNetworkStream.cpp index ce83d2f..ea8ed72 100644 --- a/src/UserInterface/PythonNetworkStream.cpp +++ b/src/UserInterface/PythonNetworkStream.cpp @@ -69,8 +69,8 @@ class CMainPacketHeaderMap : public CNetworkPacketHeaderMap Set(HEADER_GC_PLAYER_POINTS, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCPoints), STATIC_SIZE_PACKET)); Set(HEADER_GC_PLAYER_POINT_CHANGE, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCPointChange), STATIC_SIZE_PACKET)); + Set(HEADER_GC_ITEM_DEL, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCItemDel), STATIC_SIZE_PACKET)); Set(HEADER_GC_ITEM_SET, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCItemSet), STATIC_SIZE_PACKET)); - Set(HEADER_GC_ITEM_SET2, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCItemSet2), STATIC_SIZE_PACKET)); Set(HEADER_GC_ITEM_USE, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCItemUse), STATIC_SIZE_PACKET)); Set(HEADER_GC_ITEM_UPDATE, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCItemUpdate), STATIC_SIZE_PACKET)); diff --git a/src/UserInterface/PythonNetworkStream.h b/src/UserInterface/PythonNetworkStream.h index bca7af9..f7ef706 100644 --- a/src/UserInterface/PythonNetworkStream.h +++ b/src/UserInterface/PythonNetworkStream.h @@ -451,8 +451,8 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton> CPythonNetworkStream::RecvMallItemDelPacket\n"); @@ -211,35 +211,26 @@ bool CPythonNetworkStream::RecvMallItemDelPacket() // Item // Recieve -bool CPythonNetworkStream::RecvItemSetPacket() +bool CPythonNetworkStream::RecvItemDelPacket() { - TPacketGCItemSet packet_item_set; - - if (!Recv(sizeof(TPacketGCItemSet), &packet_item_set)) + TPacketGCItemDel packet_item_set; + if (!Recv(sizeof(TPacketGCItemDel), &packet_item_set)) return false; TItemData kItemData; - kItemData.vnum = packet_item_set.vnum; - kItemData.count = packet_item_set.count; - kItemData.flags = 0; - for (int i=0; iGetName())); } -#if defined(GAIDEN) -PyObject * playerGetItemUnbindTime(PyObject* poSelf, PyObject* poArgs) -{ - int iSlotIndex; - if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex)) - return Py_BuildException(); - - return Py_BuildValue("i", (int) CPythonPlayer::instance().GetItemUnbindTime(iSlotIndex)); -} -#endif - enum { REFINE_SCROLL_TYPE_MAKE_SOCKET = 1, @@ -2230,9 +2219,6 @@ void initPlayer() { "GetItemCountByVnum", playerGetItemCountByVnum, METH_VARARGS }, { "GetItemMetinSocket", playerGetItemMetinSocket, METH_VARARGS }, { "GetItemAttribute", playerGetItemAttribute, METH_VARARGS }, -#if defined(GAIDEN) - { "GetItemUnbindTime", playerGetItemUnbindTime, METH_VARARGS }, -#endif { "GetISellItemPrice", playerGetISellItemPrice, METH_VARARGS }, { "MoveItem", playerMoveItem, METH_VARARGS }, { "SendClickItemPacket", playerSendClickItemPacket, METH_VARARGS },