背包扩展到 5 页:服务端补丁 + DB 迁移 + 客户端 mt_inventory
- GameType.h: c_Inventory_Page_Count 2 -> 5; SQuickSlot.Position BYTE -> WORD - quickslot 包/接口 pos 改为 WORD(CG/GC 5 字节),wire_classic 同步 - mt_inventory PORT 模块:inventorywindow.py 装备格 90 -> EQUIPMENT_SLOT_START 重映射、5 个小页签、 自动药水高亮与 SelectItemWindow 扫描全部 5 页;40250 脚本保持不变 - tools/server/inventory-5-pages: server.patch(格子布局 +135、quickslot WORD)、migrate_db.py、README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
22d534c5eb
commit
e33e41c12b
@@ -41,7 +41,7 @@ class IAbstractPlayer : public TAbstractSingleton<IAbstractPlayer>
|
||||
|
||||
virtual bool IsEquipItemInSlot(TItemPos itemPos) = 0;
|
||||
|
||||
virtual void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition) = 0;
|
||||
virtual void AddQuickSlot(int QuickslotIndex, char IconType, WORD IconPosition) = 0;
|
||||
virtual void DeleteQuickSlot(int QuickslotIndex) = 0;
|
||||
virtual void MoveQuickSlot(int Source, int Target) = 0;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ const DWORD c_FileName_Max_Length = 128;
|
||||
const DWORD c_Short_Name_Max_Length = 32;
|
||||
|
||||
const DWORD c_Inventory_Page_Size = 5*9; // x*y
|
||||
const DWORD c_Inventory_Page_Count = 2;
|
||||
const DWORD c_Inventory_Page_Count = 5; // PORT: 2 in 40250; the 203 server patch widens the bag to 5 pages (tools/server/inventory-5-pages)
|
||||
const DWORD c_ItemSlot_Count = c_Inventory_Page_Size * c_Inventory_Page_Count;
|
||||
const DWORD c_Equipment_Count = 12;
|
||||
|
||||
@@ -306,7 +306,7 @@ enum
|
||||
typedef struct SQuickSlot
|
||||
{
|
||||
BYTE Type;
|
||||
BYTE Position;
|
||||
WORD Position; // PORT: BYTE in 40250; cells past 255 once the bag has 5 pages
|
||||
} TQuickSlot;
|
||||
|
||||
typedef struct TPlayerItemAttribute
|
||||
|
||||
@@ -155,7 +155,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
|
||||
bool SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num);
|
||||
bool SendItemPickUpPacket(DWORD vid);
|
||||
|
||||
bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos);
|
||||
bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, WORD pos);
|
||||
bool SendQuickSlotDelPacket(BYTE wpos);
|
||||
bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
|
||||
|
||||
|
||||
@@ -705,7 +705,7 @@ bool CPythonNetworkStream::SendItemPickUpPacket(DWORD vid)
|
||||
}
|
||||
|
||||
|
||||
bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos)
|
||||
bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, WORD pos)
|
||||
{
|
||||
if (!__CanActMainInstance())
|
||||
return true;
|
||||
|
||||
@@ -781,7 +781,7 @@ void CPythonPlayer::RequestAddLocalQuickSlot(DWORD dwLocalSlotIndex, DWORD dwWnd
|
||||
DWORD dwGlobalSlotIndex=LocalQuickSlotIndexToGlobalQuickSlotIndex(dwLocalSlotIndex);
|
||||
|
||||
CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
|
||||
rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos);
|
||||
rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (WORD)dwWndItemPos);
|
||||
}
|
||||
|
||||
void CPythonPlayer::RequestAddToEmptyLocalQuickSlot(DWORD dwWndType, DWORD dwWndItemPos)
|
||||
@@ -794,7 +794,7 @@ void CPythonPlayer::RequestAddToEmptyLocalQuickSlot(DWORD dwWndType, DWORD dwWnd
|
||||
{
|
||||
DWORD dwGlobalQuickSlotIndex=LocalQuickSlotIndexToGlobalQuickSlotIndex(i);
|
||||
CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
|
||||
rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalQuickSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos);
|
||||
rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalQuickSlotIndex, (BYTE)dwWndType, (WORD)dwWndItemPos);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -845,7 +845,7 @@ void CPythonPlayer::RequestUseLocalQuickSlot(DWORD dwLocalSlotIndex)
|
||||
}
|
||||
}
|
||||
|
||||
void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, char IconPosition)
|
||||
void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, WORD IconPosition)
|
||||
{
|
||||
if (QuickSlotIndex < 0 || QuickSlotIndex >= QUICKSLOT_MAX_NUM)
|
||||
return;
|
||||
|
||||
@@ -317,7 +317,7 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
|
||||
// Quickslot
|
||||
int GetQuickPage();
|
||||
void SetQuickPage(int nPageIndex);
|
||||
void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition);
|
||||
void AddQuickSlot(int QuickslotIndex, char IconType, WORD IconPosition);
|
||||
void DeleteQuickSlot(int QuickslotIndex);
|
||||
void MoveQuickSlot(int Source, int Target);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user