背包扩展到 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:
shenlei
2026-09-29 22:37:44 +09:00
co-authored by Claude Opus 5.5
parent 22d534c5eb
commit e33e41c12b
13 changed files with 724 additions and 15 deletions
+4 -4
View File
@@ -728,10 +728,10 @@ struct CGItemUseToItem { uint8_t header; ItemPos pos; ItemPos target_pos; };
static_assert(sizeof(CGItemUseToItem) == 7);
struct CGGiveItem { uint8_t header; uint32_t target_vid; ItemPos pos; uint8_t count; };
static_assert(sizeof(CGGiveItem) == 9);
struct CGQuickSlotAdd { uint8_t header; uint8_t pos; uint8_t type; uint8_t position; };
struct CGQuickSlotAdd { uint8_t header; uint8_t pos; uint8_t type; uint16_t position; }; // position WORD: 5-page bag
struct CGQuickSlotDel { uint8_t header; uint8_t pos; };
struct CGQuickSlotSwap { uint8_t header; uint8_t pos; uint8_t pos_to; };
static_assert(sizeof(CGQuickSlotAdd) == 4 && sizeof(CGQuickSlotDel) == 2 &&
static_assert(sizeof(CGQuickSlotAdd) == 5 && sizeof(CGQuickSlotDel) == 2 &&
sizeof(CGQuickSlotSwap) == 3);
// --- P8 social / exchange / storage intents -------------------------------
@@ -1049,11 +1049,11 @@ static_assert(sizeof(PlayerSkill3) == 6);
struct GCSkillLevel { uint8_t header; PlayerSkill3 skills[SKILL_MAX_NUM]; }; // header 76
static_assert(sizeof(GCSkillLevel) == 1 + 255 * 6); // 1531
struct QuickSlot2 { uint8_t type; uint8_t position; }; // TQuickSlot / TQuickslot
struct QuickSlot2 { uint8_t type; uint16_t position; }; // TQuickSlot / TQuickslot (position WORD: 5-page bag)
struct GCQuickSlotAdd { uint8_t header; uint8_t pos; QuickSlot2 slot; }; // header 28
struct GCQuickSlotDel { uint8_t header; uint8_t pos; }; // header 29
struct GCQuickSlotSwap { uint8_t header; uint8_t pos; uint8_t pos_to; }; // header 30
static_assert(sizeof(GCQuickSlotAdd) == 4 && sizeof(GCQuickSlotDel) == 2 &&
static_assert(sizeof(GCQuickSlotAdd) == 5 && sizeof(GCQuickSlotDel) == 2 &&
sizeof(GCQuickSlotSwap) == 3);
// --- GC affects ---