From 7c86b64dc39296812dd532be964783bd78b31f72 Mon Sep 17 00:00:00 2001 From: rtw1x1 Date: Sun, 28 Sep 2025 20:23:22 +0100 Subject: [PATCH 1/2] Let CItemData handle equipment slot instead of keeping track of indexes every time. --- src/UserInterface/GameType.h | 44 +++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/UserInterface/GameType.h b/src/UserInterface/GameType.h index 624a3a1..fc6b437 100644 --- a/src/UserInterface/GameType.h +++ b/src/UserInterface/GameType.h @@ -44,17 +44,17 @@ const DWORD c_Equipment_Count = 12; const DWORD c_Equipment_Start = c_ItemSlot_Count; -const DWORD c_Equipment_Body = c_Equipment_Start + 0; -const DWORD c_Equipment_Head = c_Equipment_Start + 1; -const DWORD c_Equipment_Shoes = c_Equipment_Start + 2; -const DWORD c_Equipment_Wrist = c_Equipment_Start + 3; -const DWORD c_Equipment_Weapon = c_Equipment_Start + 4; -const DWORD c_Equipment_Neck = c_Equipment_Start + 5; -const DWORD c_Equipment_Ear = c_Equipment_Start + 6; -const DWORD c_Equipment_Unique1 = c_Equipment_Start + 7; -const DWORD c_Equipment_Unique2 = c_Equipment_Start + 8; -const DWORD c_Equipment_Arrow = c_Equipment_Start + 9; -const DWORD c_Equipment_Shield = c_Equipment_Start + 10; +const DWORD c_Equipment_Body = c_Equipment_Start + CItemData::WEAR_BODY; +const DWORD c_Equipment_Head = c_Equipment_Start + CItemData::WEAR_HEAD; +const DWORD c_Equipment_Shoes = c_Equipment_Start + CItemData::WEAR_FOOTS; +const DWORD c_Equipment_Wrist = c_Equipment_Start + CItemData::WEAR_WRIST; +const DWORD c_Equipment_Weapon = c_Equipment_Start + CItemData::WEAR_WEAPON; +const DWORD c_Equipment_Neck = c_Equipment_Start + CItemData::WEAR_NECK; +const DWORD c_Equipment_Ear = c_Equipment_Start + CItemData::WEAR_EAR; +const DWORD c_Equipment_Unique1 = c_Equipment_Start + CItemData::WEAR_UNIQUE1; +const DWORD c_Equipment_Unique2 = c_Equipment_Start + CItemData::WEAR_UNIQUE2; +const DWORD c_Equipment_Arrow = c_Equipment_Start + CItemData::WEAR_ARROW; +const DWORD c_Equipment_Shield = c_Equipment_Start + CItemData::WEAR_SHIELD; // 새로 추가된 신규 반지 & 벨트 // 장착형 아이템에 할당할 수 있는 위치가 기존 장비, 채기랍 퀘스트 보상, 코스튬 시스템 등으로 인해서 공간이 잘려있다. @@ -63,11 +63,12 @@ const DWORD c_Equipment_Shield = c_Equipment_Start + 10; // 정리하면, 기존 장비창들은 서버DB상 아이템 포지션이 90 ~ 102 이고, // 2013년 초에 새로 추가되는 슬롯들은 111 ~ 부터 시작한다. 착용 장비에서 최대로 사용할 수 있는 값은 121 까지이고, 122부터는 용혼석에서 사용한다. #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM - const DWORD c_New_Equipment_Start = c_Equipment_Start + 21; - const DWORD c_New_Equipment_Count = 3; - const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0; - const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1; - const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2;; + const DWORD c_New_Equipment_Start = c_Equipment_Start + CItemData::WEAR_RING1; + const DWORD c_New_Equipment_Count = CItemData::WEAR_MAX_NUM - CItemData::WEAR_RING1; + + const DWORD c_Equipment_Ring1 = c_Equipment_Start + CItemData::WEAR_RING1; + const DWORD c_Equipment_Ring2 = c_Equipment_Start + CItemData::WEAR_RING2; + const DWORD c_Equipment_Belt = c_Equipment_Start + CItemData::WEAR_BELT; #endif enum EDragonSoulDeckType @@ -99,11 +100,12 @@ enum EDragonSoulStepTypes }; #ifdef ENABLE_COSTUME_SYSTEM - const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [주의] 숫자(19) 하드코딩 주의. 현재 서버에서 코스츔 슬롯은 19부터임. 서버 common/length.h 파일의 EWearPositions 열거형 참고. - const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0; - const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1; - const DWORD c_Costume_Slot_Count = 2; - const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count; + const DWORD c_Costume_Slot_Start = c_Equipment_Start + CItemData::WEAR_COSTUME_BODY; + const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + CItemData::COSTUME_BODY; + const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + CItemData::COSTUME_HAIR; + + const DWORD c_Costume_Slot_Count = CItemData::COSTUME_NUM_TYPES; + const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count; #endif From a808d1d1026a2917959d188cfab6385a264c8418 Mon Sep 17 00:00:00 2001 From: rtw1x1 Date: Mon, 29 Sep 2025 07:36:29 +0100 Subject: [PATCH 2/2] Syncronise Wear/Wearable client - server. --- src/GameLib/ItemData.h | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/GameLib/ItemData.h b/src/GameLib/ItemData.h index 68c5f91..b8fbd13 100644 --- a/src/GameLib/ItemData.h +++ b/src/GameLib/ItemData.h @@ -236,21 +236,42 @@ class CItemData WEAR_UNIQUE2, // 8 WEAR_ARROW, // 9 WEAR_SHIELD, // 10 + + WEAR_ABILITY1, //11 + WEAR_ABILITY2, //12 + WEAR_ABILITY3, //13 + WEAR_ABILITY4, //14 + WEAR_ABILITY5, //15 + WEAR_ABILITY6, //16 + WEAR_ABILITY7, //17 + WEAR_ABILITY8, //18 + WEAR_COSTUME_BODY, //19 + WEAR_COSTUME_HAIR, //20 + + WEAR_RING1, //21 + WEAR_RING2, //22 + WEAR_BELT, //23 + WEAR_MAX_NUM, }; enum EItemWearableFlag { - WEARABLE_BODY = (1 << 0), - WEARABLE_HEAD = (1 << 1), - WEARABLE_FOOTS = (1 << 2), - WEARABLE_WRIST = (1 << 3), - WEARABLE_WEAPON = (1 << 4), - WEARABLE_NECK = (1 << 5), - WEARABLE_EAR = (1 << 6), - WEARABLE_UNIQUE = (1 << 7), - WEARABLE_SHIELD = (1 << 8), - WEARABLE_ARROW = (1 << 9), + WEARABLE_BODY = (1 << 0), + WEARABLE_HEAD = (1 << 1), + WEARABLE_FOOTS = (1 << 2), + WEARABLE_WRIST = (1 << 3), + WEARABLE_WEAPON = (1 << 4), + WEARABLE_NECK = (1 << 5), + WEARABLE_EAR = (1 << 6), + WEARABLE_UNIQUE = (1 << 7), + WEARABLE_SHIELD = (1 << 8), + WEARABLE_ARROW = (1 << 9), + WEARABLE_HAIR = (1 << 10), + WEARABLE_ABILITY = (1 << 11), + WEARABLE_COSTUME_BODY = (1 << 12), + WEARABLE_COSTUME_HAIR = (1 << 13), + WEARABLE_BELT = (1 << 14), }; enum EApplyTypes