Everyone help? Thanks
I find solution:
Hello again, finally I fount the solution for this bug!
Code:
In char_quickslot.cpp Search this: void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos) Replace with this: void CHARACTER::SyncQuickslot(BYTE bType, WORD bOldPos, WORD bNewPos) Search this: bool CHARACTER::GetQuickslot(BYTE pos, TQuickslot ** ppSlot) Replace: bool CHARACTER::GetQuickslot(WORD pos, TQuickslot ** ppSlot) Search this: bool CHARACTER::SetQuickslot(BYTE pos, TQuickslot & rSlot) Replace: bool CHARACTER::SetQuickslot(WORD pos, TQuickslot & rSlot) Search this: bool CHARACTER::DelQuickslot(BYTE pos) Replace: bool CHARACTER::DelQuickslot(WORD pos) Search this: bool CHARACTER::SwapQuickslot(BYTE a, BYTE Replace bool CHARACTER::SwapQuickslot(WORD a, WORD Search this: void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, WORD bOldPos) Replace: void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, WORD bOldPos) Search this: if (bNewPos == 255) And replace the 255 with 400 for example. Search this in all files: SyncQuickslot( And where you find 255, replace them with 400. For example, I have this in char_item.cpp: SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255); And I have to replace it like this: SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 400); In char.h search this: void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos); Replace: void SyncQuickslot(BYTE bType, WORD bOldPos, WORD bNewPos); Search this: bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot); Replace: bool GetQuickslot(WORD pos, TQuickslot ** ppSlot); Search this: bool SetQuickslot(BYTE pos, TQuickslot & rSlot); Replace: bool SetQuickslot(WORD pos, TQuickslot & rSlot); Search this: bool DelQuickslot(BYTE pos); Replace: bool DelQuickslot(WORD pos); Search this: bool SwapQuickslot(BYTE a, BYTE ; Replace: bool SwapQuickslot(WORD a, WORD ; Search this: void ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos); Replace: void ChainQuickslotItem(LPITEM pItem, BYTE bType, WORD bOldPos); In packet.h search this: typedef struct command_quickslot_add { BYTE header; BYTE pos; TQuickslot slot; } TPacketCGQuickslotAdd; typedef struct command_quickslot_del { BYTE header; BYTE pos; } TPacketCGQuickslotDel; typedef struct command_quickslot_swap { BYTE header; BYTE pos; BYTE change_pos; } TPacketCGQuickslotSwap; Replace: typedef struct command_quickslot_add { BYTE header; WORD pos; TQuickslot slot; } TPacketCGQuickslotAdd; typedef struct command_quickslot_del { BYTE header; WORD pos; } TPacketCGQuickslotDel; typedef struct command_quickslot_swap { BYTE header; WORD pos; WORD change_pos; } TPacketCGQuickslotSwap; Search this: struct packet_quickslot_add { BYTE header; BYTE pos; TQuickslot slot; }; struct packet_quickslot_del { BYTE header; BYTE pos; }; struct packet_quickslot_swap { BYTE header; BYTE pos; BYTE pos_to; }; Replace: struct packet_quickslot_add { BYTE header; WORD pos; TQuickslot slot; }; struct packet_quickslot_del { BYTE header; WORD pos; }; struct packet_quickslot_swap { BYTE header; WORD pos; WORD pos_to; }; In common/tables.h search this: typedef struct SQuickslot { BYTE type; BYTE pos; } TQuickslot; Replace: typedef struct SQuickslot { BYTE type; WORD pos; } TQuickslot; Next, in the client, UserInterface/packet.h search this: typedef struct command_quickslot_add { BYTE header; BYTE pos; TQuickSlot slot; }TPacketCGQuickSlotAdd; typedef struct command_quickslot_del { BYTE header; BYTE pos; }TPacketCGQuickSlotDel; typedef struct command_quickslot_swap { BYTE header; BYTE pos; BYTE change_pos; }TPacketCGQuickSlotSwap; Replace: typedef struct command_quickslot_add { BYTE header; WORD pos; TQuickSlot slot; }TPacketCGQuickSlotAdd; typedef struct command_quickslot_del { BYTE header; WORD pos; }TPacketCGQuickSlotDel; typedef struct command_quickslot_swap { BYTE header; WORD pos; WORD change_pos; }TPacketCGQuickSlotSwap; Search this: typedef struct packet_quickslot_add { BYTE header; BYTE pos; TQuickSlot slot; } TPacketGCQuickSlotAdd; typedef struct packet_quickslot_del { BYTE header; BYTE pos; } TPacketGCQuickSlotDel; typedef struct packet_quickslot_swap { BYTE header; BYTE pos; BYTE change_pos; } TPacketGCQuickSlotSwap; Replace: typedef struct packet_quickslot_add { BYTE header; WORD pos; TQuickSlot slot; } TPacketGCQuickSlotAdd; typedef struct packet_quickslot_del { BYTE header; WORD pos; } TPacketGCQuickSlotDel; typedef struct packet_quickslot_swap { BYTE header; WORD pos; WORD change_pos; } TPacketGCQuickSlotSwap; In GameType.h search this: typedef struct SQuickSlot { BYTE Type; BYTE Position; } TQuickSlot; Replace: typedef struct SQuickSlot { BYTE Type; WORD Position; } TQuickSlot; In AbstractPlayer.h search this: virtual void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition) = 0; Replace: virtual void AddQuickSlot(int QuickslotIndex, char IconType, WORD IconPosition) = 0; In PythonNetworkStream.h search this: bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos); bool SendQuickSlotDelPacket(BYTE wpos); bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos); Replace: bool SendQuickSlotAddPacket(WORD wpos, BYTE type, WORD pos); bool SendQuickSlotDelPacket(WORD wpos); bool SendQuickSlotMovePacket(WORD wpos, WORD change_pos); In PythonNetworkStreamPhaseGameItem.cpp search this: bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos) Replace: bool CPythonNetworkStream::SendQuickSlotAddPacket(WORD wpos, BYTE type, WORD pos) Search this: bool CPythonNetworkStream::SendQuickSlotDelPacket(BYTE pos) Replace: bool CPythonNetworkStream::SendQuickSlotDelPacket(WORD pos) Search this: bool CPythonNetworkStream::SendQuickSlotMovePacket(BYTE pos, BYTE change_pos) Replace: bool CPythonNetworkStream::SendQuickSlotMovePacket(WORD pos, WORD change_pos) In PythonPlayer.cpp search this: for (BYTE i = 0; i < QUICKSLOT_MAX_NUM; ++i) Replace: for (WORD i = 0; i < QUICKSLOT_MAX_NUM; ++i) Search this: rkNetStream.SendQuickSlotMovePacket((BYTE) dwGlobalSrcSlotIndex, (BYTE)dwGlobalDstSlotIndex); Replace: rkNetStream.SendQuickSlotMovePacket((WORD) dwGlobalSrcSlotIndex, (WORD)dwGlobalDstSlotIndex); Search this: rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos); Replace: rkNetStream.SendQuickSlotAddPacket((WORD)dwGlobalSlotIndex, (BYTE)dwWndType, (WORD)dwWndItemPos); Search this: rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalQuickSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos); Replace: rkNetStream.SendQuickSlotAddPacket((WORD)dwGlobalQuickSlotIndex, (BYTE)dwWndType, (WORD)dwWndItemPos); Search this: rkNetStream.SendQuickSlotDelPacket((BYTE)dwGlobalSlotIndex); Replace: rkNetStream.SendQuickSlotDelPacket((WORD)dwGlobalSlotIndex); Search this: void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, char IconPosition) Replace: void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, WORD IconPosition) In PythonPlayer.h search this: void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition); Replace: void AddQuickSlot(int QuickslotIndex, char IconType, WORD IconPosition);