forked from metin2/server
1
0
Fork 0

fix common header encoding

This commit is contained in:
sdgmt2 2024-04-01 12:45:35 +02:00
parent 248205ae01
commit 4fc612552a
No known key found for this signature in database
6 changed files with 225 additions and 225 deletions

View File

@ -2,15 +2,15 @@
#define __HEADER_VNUM_HELPER__ #define __HEADER_VNUM_HELPER__
/** /**
, ,
(=VNum) (=VNum)
( ) . ( ) .
* PCH에 * PCH에
cpp파일에서 include . cpp파일에서 include .
* cpp에서 ~ common에 . (game, db프로젝트 ) * cpp에서 ~ common에 . (game, db프로젝트 )
@date 2011. 8. 29. @date 2011. 8. 29.
*/ */
@ -19,35 +19,35 @@
class CItemVnumHelper class CItemVnumHelper
{ {
public: public:
/// 독일 DVD용 불사조 소환권 /// 독일 DVD용 불사조 소환권
static const bool IsPhoenix(DWORD vnum) { return 53001 == vnum; } // NOTE: 불사조 소환 아이템은 53001 이지만 mob-vnum은 34001 입니다. static const bool IsPhoenix(DWORD vnum) { return 53001 == vnum; } // NOTE: 불사조 소환 아이템은 53001 이지만 mob-vnum은 34001 입니다.
/// 라마단 이벤트 초승달의 반지 (원래는 라마단 이벤트용 특수 아이템이었으나 앞으로 여러 방향으로 재활용해서 계속 쓴다고 함) /// 라마단 이벤트 초승달의 반지 (원래는 라마단 이벤트용 특수 아이템이었으나 앞으로 여러 방향으로 재활용해서 계속 쓴다고 함)
static const bool IsRamadanMoonRing(DWORD vnum) { return 71135 == vnum; } static const bool IsRamadanMoonRing(DWORD vnum) { return 71135 == vnum; }
/// 할로윈 사탕 (스펙은 초승달의 반지와 동일) /// 할로윈 사탕 (스펙은 초승달의 반지와 동일)
static const bool IsHalloweenCandy(DWORD vnum) { return 71136 == vnum; } static const bool IsHalloweenCandy(DWORD vnum) { return 71136 == vnum; }
/// 크리스마스 행복의 반지 /// 크리스마스 행복의 반지
static const bool IsHappinessRing(DWORD vnum) { return 71143 == vnum; } static const bool IsHappinessRing(DWORD vnum) { return 71143 == vnum; }
/// 발렌타인 사랑의 팬던트 /// 발렌타인 사랑의 팬던트
static const bool IsLovePendant(DWORD vnum) { return 71145 == vnum; } static const bool IsLovePendant(DWORD vnum) { return 71145 == vnum; }
}; };
class CMobVnumHelper class CMobVnumHelper
{ {
public: public:
/// 독일 DVD용 불사조 몹 번호 /// 독일 DVD용 불사조 몹 번호
static bool IsPhoenix(DWORD vnum) { return 34001 == vnum; } static bool IsPhoenix(DWORD vnum) { return 34001 == vnum; }
static bool IsIcePhoenix(DWORD vnum) { return 34003 == vnum; } static bool IsIcePhoenix(DWORD vnum) { return 34003 == vnum; }
/// PetSystem이 관리하는 펫인가? /// PetSystem이 관리하는 펫인가?
static bool IsPetUsingPetSystem(DWORD vnum) { return (IsPhoenix(vnum) || IsReindeerYoung(vnum)) || IsIcePhoenix(vnum); } static bool IsPetUsingPetSystem(DWORD vnum) { return (IsPhoenix(vnum) || IsReindeerYoung(vnum)) || IsIcePhoenix(vnum); }
/// 2011년 크리스마스 이벤트용 펫 (아기 순록) /// 2011년 크리스마스 이벤트용 펫 (아기 순록)
static bool IsReindeerYoung(DWORD vnum) { return 34002 == vnum; } static bool IsReindeerYoung(DWORD vnum) { return 34002 == vnum; }
/// 라마단 이벤트 보상용 흑마(20119) .. 할로윈 이벤트용 라마단 흑마 클론(스펙은 같음, 20219) /// 라마단 이벤트 보상용 흑마(20119) .. 할로윈 이벤트용 라마단 흑마 클론(스펙은 같음, 20219)
static bool IsRamadanBlackHorse(DWORD vnum) { return 20119 == vnum || 20219 == vnum || 22022 == vnum; } static bool IsRamadanBlackHorse(DWORD vnum) { return 20119 == vnum || 20219 == vnum || 22022 == vnum; }
}; };

View File

@ -26,7 +26,7 @@ public:
int get_price () { return offer_price; } int get_price () { return offer_price; }
} TAuctionSimpleItemInfo; } TAuctionSimpleItemInfo;
// 각 auction 정보들. // 각 auction 정보들.
// primary key (item_id) // primary key (item_id)
typedef struct _auction : public _base_auction typedef struct _auction : public _base_auction
{ {
@ -49,8 +49,8 @@ public:
empire = _empire; empire = _empire;
} }
// 이 메소드들은 어떤 변수가 auction에서 어떤 역할을 하는지 까먹을 까봐 // 이 메소드들은 어떤 변수가 auction에서 어떤 역할을 하는지 까먹을 까봐
// 만들어놓았다. // 만들어놓았다.
// by rtsummit // by rtsummit
DWORD get_item_id () { return item_id; } DWORD get_item_id () { return item_id; }
DWORD get_bidder_id () { return bidder_id; } DWORD get_bidder_id () { return bidder_id; }
@ -89,7 +89,7 @@ typedef struct _sale : public _base_auction
} TSaleItemInfo; } TSaleItemInfo;
// wish는 실제하는 아이템은 없다. // wish는 실제하는 아이템은 없다.
// primary key (item_num, wisher_id) // primary key (item_num, wisher_id)
typedef struct _wish : public _base_auction typedef struct _wish : public _base_auction
{ {
@ -118,9 +118,9 @@ enum AuctionCmd {OPEN_AUCTION, OPEN_WISH_AUCTION, OPEN_MY_AUCTION, OPEN_MY_WISH_
AUCTION_REBID, AUCTION_BID_CANCEL, AUCTION_REBID, AUCTION_BID_CANCEL,
}; };
// 반드시 FAIL 앞에, 실패 류 들이 와야한다. // 반드시 FAIL 앞에, 실패 류 들이 와야한다.
// 왜냐, <= AUCTION_FAIL 이런 CHECK을 할 거거든 // 왜냐, <= AUCTION_FAIL 이런 CHECK을 할 거거든
// 반대로 SUCCESS 뒤에, 성공 류 들이 와야한다. 근데 성공류가 있긴 하려나... // 반대로 SUCCESS 뒤에, 성공 류 들이 와야한다. 근데 성공류가 있긴 하려나...
enum AuctionResult { AUCTION_EXPIRED, AUCTION_NOT_EXPIRED, AUCTION_NOT_ENOUGH_MONEY, enum AuctionResult { AUCTION_EXPIRED, AUCTION_NOT_EXPIRED, AUCTION_NOT_ENOUGH_MONEY,
AUCTION_SOLD, AUCTION_CANCEL, AUCTION_ALREADY_IN, AUCTION_NOT_IN, AUCTION_FAIL, AUCTION_SUCCESS }; AUCTION_SOLD, AUCTION_CANCEL, AUCTION_ALREADY_IN, AUCTION_NOT_IN, AUCTION_FAIL, AUCTION_SUCCESS };
@ -218,7 +218,7 @@ typedef struct command_auction
cmd = AUCTION_CHANGING_MONEY; cmd = AUCTION_CHANGING_MONEY;
price1 = _money; price1 = _money;
} }
// bid랑 cmd만 다르다. // bid랑 cmd만 다르다.
void rebid (DWORD _item_id, int _bidPrice) void rebid (DWORD _item_id, int _bidPrice)
{ {
cmd = AUCTION_REBID; cmd = AUCTION_REBID;
@ -322,7 +322,7 @@ typedef struct auction_impur : public command_auction
// auction_type; // auction_type;
// start_idx; // start_idx;
// size; // size;
// conditions; 정렬은 승철님께 조언을 구해보자.ㅇㅇ // conditions; 정렬은 승철님께 조언을 구해보자.ㅇㅇ
//} //}
// //
//get_auction_detail_item_info //get_auction_detail_item_info

View File

@ -41,8 +41,8 @@ namespace building
int lNPCX; int lNPCX;
int lNPCY; int lNPCY;
DWORD dwGroupVnum; // 같은 그룹은 하나만 건설가능 DWORD dwGroupVnum; // 같은 그룹은 하나만 건설가능
DWORD dwDependOnGroupVnum; // 지어져 있어야하는 그룹 DWORD dwDependOnGroupVnum; // 지어져 있어야하는 그룹
} TObjectProto; } TObjectProto;
typedef struct SObject typedef struct SObject

View File

@ -31,8 +31,8 @@ enum EItemDragonSoulSockets
ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX = 2, ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX = 2,
ITEM_SOCKET_CHARGING_AMOUNT_IDX = 2, ITEM_SOCKET_CHARGING_AMOUNT_IDX = 2,
}; };
// 헐 이거 미친거 아니야? // 헐 이거 미친거 아니야?
// 나중에 소켓 확장하면 어쩌려고 이지랄 -_-;;; // 나중에 소켓 확장하면 어쩌려고 이지랄 -_-;;;
enum EItemUniqueSockets enum EItemUniqueSockets
{ {
ITEM_SOCKET_UNIQUE_SAVE_TIME = ITEM_SOCKET_MAX_NUM - 2, ITEM_SOCKET_UNIQUE_SAVE_TIME = ITEM_SOCKET_MAX_NUM - 2,
@ -42,18 +42,18 @@ enum EItemUniqueSockets
enum EItemTypes enum EItemTypes
{ {
ITEM_NONE, //0 ITEM_NONE, //0
ITEM_WEAPON, //1//무기 ITEM_WEAPON, //1//무기
ITEM_ARMOR, //2//갑옷 ITEM_ARMOR, //2//갑옷
ITEM_USE, //3//아이템 사용 ITEM_USE, //3//아이템 사용
ITEM_AUTOUSE, //4 ITEM_AUTOUSE, //4
ITEM_MATERIAL, //5 ITEM_MATERIAL, //5
ITEM_SPECIAL, //6 //스페셜 아이템 ITEM_SPECIAL, //6 //스페셜 아이템
ITEM_TOOL, //7 ITEM_TOOL, //7
ITEM_LOTTERY, //8//복권 ITEM_LOTTERY, //8//복권
ITEM_ELK, //9//돈 ITEM_ELK, //9//돈
ITEM_METIN, //10 ITEM_METIN, //10
ITEM_CONTAINER, //11 ITEM_CONTAINER, //11
ITEM_FISH, //12//낚시 ITEM_FISH, //12//낚시
ITEM_ROD, //13 ITEM_ROD, //13
ITEM_RESOURCE, //14 ITEM_RESOURCE, //14
ITEM_CAMPFIRE, //15 ITEM_CAMPFIRE, //15
@ -61,21 +61,21 @@ enum EItemTypes
ITEM_SKILLBOOK, //17 ITEM_SKILLBOOK, //17
ITEM_QUEST, //18 ITEM_QUEST, //18
ITEM_POLYMORPH, //19 ITEM_POLYMORPH, //19
ITEM_TREASURE_BOX, //20//보물상자 ITEM_TREASURE_BOX, //20//보물상자
ITEM_TREASURE_KEY, //21//보물상자 열쇠 ITEM_TREASURE_KEY, //21//보물상자 열쇠
ITEM_SKILLFORGET, //22 ITEM_SKILLFORGET, //22
ITEM_GIFTBOX, //23 ITEM_GIFTBOX, //23
ITEM_PICK, //24 ITEM_PICK, //24
ITEM_HAIR, //25//머리 ITEM_HAIR, //25//머리
ITEM_TOTEM, //26//토템 ITEM_TOTEM, //26//토템
ITEM_BLEND, //27//생성될때 랜덤하게 속성이 붙는 약물 ITEM_BLEND, //27//생성될때 랜덤하게 속성이 붙는 약물
ITEM_COSTUME, //28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템) ITEM_COSTUME, //28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템)
ITEM_DS, //29 //용혼석 ITEM_DS, //29 //용혼석
ITEM_SPECIAL_DS, //30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨) ITEM_SPECIAL_DS, //30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨)
ITEM_EXTRACT, //31 추출도구. ITEM_EXTRACT, //31 추출도구.
ITEM_SECONDARY_COIN, //32 ?? 명도전?? ITEM_SECONDARY_COIN, //32 ?? 명도전??
ITEM_RING, //33 반지 ITEM_RING, //33 반지
ITEM_BELT, //34 벨트 ITEM_BELT, //34 벨트
}; };
enum EMetinSubTypes enum EMetinSubTypes
@ -111,8 +111,8 @@ enum EArmorSubTypes
enum ECostumeSubTypes enum ECostumeSubTypes
{ {
COSTUME_BODY = ARMOR_BODY, // [중요!!] ECostumeSubTypes enum value는 종류별로 EArmorSubTypes의 그것과 같아야 함. COSTUME_BODY = ARMOR_BODY, // [중요!!] ECostumeSubTypes enum value는 종류별로 EArmorSubTypes의 그것과 같아야 함.
COSTUME_HAIR = ARMOR_HEAD, // 이는 코스츔 아이템에 추가 속성을 붙이겠다는 사업부의 요청에 따라서 기존 로직을 활용하기 위함임. COSTUME_HAIR = ARMOR_HEAD, // 이는 코스츔 아이템에 추가 속성을 붙이겠다는 사업부의 요청에 따라서 기존 로직을 활용하기 위함임.
COSTUME_NUM_TYPES, COSTUME_NUM_TYPES,
}; };
@ -215,8 +215,8 @@ enum EUseSubTypes
USE_UNBIND, USE_UNBIND,
USE_TIME_CHARGE_PER, USE_TIME_CHARGE_PER,
USE_TIME_CHARGE_FIX, // 28 USE_TIME_CHARGE_FIX, // 28
USE_PUT_INTO_BELT_SOCKET, // 29 벨트 소켓에 사용할 수 있는 아이템 USE_PUT_INTO_BELT_SOCKET, // 29 벨트 소켓에 사용할 수 있는 아이템
USE_PUT_INTO_RING_SOCKET, // 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯) USE_PUT_INTO_RING_SOCKET, // 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯)
}; };
enum EExtractSubTypes enum EExtractSubTypes
@ -270,7 +270,7 @@ enum EItemFlag
{ {
ITEM_FLAG_REFINEABLE = (1 << 0), ITEM_FLAG_REFINEABLE = (1 << 0),
ITEM_FLAG_SAVE = (1 << 1), ITEM_FLAG_SAVE = (1 << 1),
ITEM_FLAG_STACKABLE = (1 << 2), // 여러개 합칠 수 있음 ITEM_FLAG_STACKABLE = (1 << 2), // 여러개 합칠 수 있음
ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3),
ITEM_FLAG_SLOW_QUERY = (1 << 4), ITEM_FLAG_SLOW_QUERY = (1 << 4),
ITEM_FLAG_UNUSED01 = (1 << 5), // UNUSED ITEM_FLAG_UNUSED01 = (1 << 5), // UNUSED
@ -287,24 +287,24 @@ enum EItemFlag
enum EItemAntiFlag enum EItemAntiFlag
{ {
ITEM_ANTIFLAG_FEMALE = (1 << 0), // 여성 사용 불가 ITEM_ANTIFLAG_FEMALE = (1 << 0), // 여성 사용 불가
ITEM_ANTIFLAG_MALE = (1 << 1), // 남성 사용 불가 ITEM_ANTIFLAG_MALE = (1 << 1), // 남성 사용 불가
ITEM_ANTIFLAG_WARRIOR = (1 << 2), // 무사 사용 불가 ITEM_ANTIFLAG_WARRIOR = (1 << 2), // 무사 사용 불가
ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // 자객 사용 불가 ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // 자객 사용 불가
ITEM_ANTIFLAG_SURA = (1 << 4), // 수라 사용 불가 ITEM_ANTIFLAG_SURA = (1 << 4), // 수라 사용 불가
ITEM_ANTIFLAG_SHAMAN = (1 << 5), // 무당 사용 불가 ITEM_ANTIFLAG_SHAMAN = (1 << 5), // 무당 사용 불가
ITEM_ANTIFLAG_GET = (1 << 6), // 집을 수 없음 ITEM_ANTIFLAG_GET = (1 << 6), // 집을 수 없음
ITEM_ANTIFLAG_DROP = (1 << 7), // 버릴 수 없음 ITEM_ANTIFLAG_DROP = (1 << 7), // 버릴 수 없음
ITEM_ANTIFLAG_SELL = (1 << 8), // 팔 수 없음 ITEM_ANTIFLAG_SELL = (1 << 8), // 팔 수 없음
ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A 제국 사용 불가 ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A 제국 사용 불가
ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B 제국 사용 불가 ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B 제국 사용 불가
ITEM_ANTIFLAG_EMPIRE_C = (1 << 11), // C 제국 사용 불가 ITEM_ANTIFLAG_EMPIRE_C = (1 << 11), // C 제국 사용 불가
ITEM_ANTIFLAG_SAVE = (1 << 12), // 저장되지 않음 ITEM_ANTIFLAG_SAVE = (1 << 12), // 저장되지 않음
ITEM_ANTIFLAG_GIVE = (1 << 13), // 거래 불가 ITEM_ANTIFLAG_GIVE = (1 << 13), // 거래 불가
ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK시 떨어지지 않음 ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK시 떨어지지 않음
ITEM_ANTIFLAG_STACK = (1 << 15), // 합칠 수 없음 ITEM_ANTIFLAG_STACK = (1 << 15), // 합칠 수 없음
ITEM_ANTIFLAG_MYSHOP = (1 << 16), // 개인 상점에 올릴 수 없음 ITEM_ANTIFLAG_MYSHOP = (1 << 16), // 개인 상점에 올릴 수 없음
ITEM_ANTIFLAG_SAFEBOX = (1 << 17), // 창고에 넣을 수 없음 ITEM_ANTIFLAG_SAFEBOX = (1 << 17), // 창고에 넣을 수 없음
}; };
enum EItemWearableFlag enum EItemWearableFlag
@ -335,16 +335,16 @@ enum ELimitTypes
LIMIT_CON, LIMIT_CON,
LIMIT_PCBANG, LIMIT_PCBANG,
/// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입) /// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입)
LIMIT_REAL_TIME, LIMIT_REAL_TIME,
/// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작 /// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작
/// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가 /// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가
/// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0에 unix_timestamp 타입의 소멸시간이 박힘. /// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0에 unix_timestamp 타입의 소멸시간이 박힘.
LIMIT_REAL_TIME_START_FIRST_USE, LIMIT_REAL_TIME_START_FIRST_USE,
/// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템 /// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템
/// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사) /// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사)
LIMIT_TIMER_BASED_ON_WEAR, LIMIT_TIMER_BASED_ON_WEAR,
LIMIT_MAX_NUM LIMIT_MAX_NUM

View File

@ -23,10 +23,10 @@ enum EMisc
GUILD_NAME_MAX_LEN = 12, GUILD_NAME_MAX_LEN = 12,
SHOP_HOST_ITEM_MAX_NUM = 40, /* 호스트의 최대 아이템 개수 */ SHOP_HOST_ITEM_MAX_NUM = 40, /* 호스트의 최대 아이템 개수 */
SHOP_GUEST_ITEM_MAX_NUM = 18, /* 게스트의 최대 아이템 개수 */ SHOP_GUEST_ITEM_MAX_NUM = 18, /* 게스트의 최대 아이템 개수 */
SHOP_PRICELIST_MAX_NUM = 40, ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수 SHOP_PRICELIST_MAX_NUM = 40, ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수
CHAT_MAX_LEN = 512, CHAT_MAX_LEN = 512,
@ -80,19 +80,19 @@ enum EMisc
/** /**
**** (DB상 Item Position) **** **** (DB상 Item Position) ****
+------------------------------------------------------+ 0 +------------------------------------------------------+ 0
| (45 * 2) 90 | | (45 * 2) 90 |
+------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90) +------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90)
| ( ) 32 | | ( ) 32 |
+------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32) +------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32)
| ( ) 12 | | ( ) 12 |
+------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2) +------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2)
| ( ) 18 | | ( ) 18 |
+------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3) +------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3)
| ( )| | ( )|
+------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX +------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX
| | | |
+------------------------------------------------------+ ?? +------------------------------------------------------+ ??
*/ */
}; };
@ -127,10 +127,10 @@ enum EWearPositions
WEAR_COSTUME_BODY, // 19 WEAR_COSTUME_BODY, // 19
WEAR_COSTUME_HAIR, // 20 WEAR_COSTUME_HAIR, // 20
WEAR_RING1, // 21 : 신규 반지슬롯1 (왼쪽) WEAR_RING1, // 21 : 신규 반지슬롯1 (왼쪽)
WEAR_RING2, // 22 : 신규 반지슬롯2 (오른쪽) WEAR_RING2, // 22 : 신규 반지슬롯2 (오른쪽)
WEAR_BELT, // 23 : 신규 벨트슬롯 WEAR_BELT, // 23 : 신규 벨트슬롯
WEAR_MAX = 32 // WEAR_MAX = 32 //
}; };
@ -141,7 +141,7 @@ enum EDragonSoulDeckType
DRAGON_SOUL_DECK_1, DRAGON_SOUL_DECK_1,
DRAGON_SOUL_DECK_MAX_NUM = 2, DRAGON_SOUL_DECK_MAX_NUM = 2,
DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3, // NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함! DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3, // NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함!
}; };
enum ESex enum ESex
@ -163,7 +163,7 @@ enum EDirection
DIR_MAX_NUM DIR_MAX_NUM
}; };
#define ABILITY_MAX_LEVEL 10 /* 기술 최대 레벨 */ #define ABILITY_MAX_LEVEL 10 /* 기술 최대 레벨 */
enum EAbilityDifficulty enum EAbilityDifficulty
{ {
@ -176,9 +176,9 @@ enum EAbilityDifficulty
enum EAbilityCategory enum EAbilityCategory
{ {
CATEGORY_PHYSICAL, /* 신체적 어빌리티 */ CATEGORY_PHYSICAL, /* 신체적 어빌리티 */
CATEGORY_MENTAL, /* 정신적 어빌리티 */ CATEGORY_MENTAL, /* 정신적 어빌리티 */
CATEGORY_ATTRIBUTE, /* 능력 어빌리티 */ CATEGORY_ATTRIBUTE, /* 능력 어빌리티 */
CATEGORY_NUM_TYPES CATEGORY_NUM_TYPES
}; };
@ -248,13 +248,13 @@ enum EParts
enum EChatType enum EChatType
{ {
CHAT_TYPE_TALKING, /* 그냥 채팅 */ CHAT_TYPE_TALKING, /* 그냥 채팅 */
CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */ CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
CHAT_TYPE_NOTICE, /* 공지사항 */ CHAT_TYPE_NOTICE, /* 공지사항 */
CHAT_TYPE_PARTY, /* 파티말 */ CHAT_TYPE_PARTY, /* 파티말 */
CHAT_TYPE_GUILD, /* 길드말 */ CHAT_TYPE_GUILD, /* 길드말 */
CHAT_TYPE_COMMAND, /* 일반 명령 */ CHAT_TYPE_COMMAND, /* 일반 명령 */
CHAT_TYPE_SHOUT, /* 외치기 */ CHAT_TYPE_SHOUT, /* 외치기 */
CHAT_TYPE_WHISPER, CHAT_TYPE_WHISPER,
CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_BIG_NOTICE,
CHAT_TYPE_MONARCH_NOTICE, CHAT_TYPE_MONARCH_NOTICE,
@ -397,38 +397,38 @@ enum EApplyTypes
APPLY_ATTBONUS_SURA, // 61 APPLY_ATTBONUS_SURA, // 61
APPLY_ATTBONUS_SHAMAN, // 62 APPLY_ATTBONUS_SHAMAN, // 62
APPLY_ATTBONUS_MONSTER, // 63 APPLY_ATTBONUS_MONSTER, // 63
APPLY_MALL_ATTBONUS, // 64 공격력 +x% APPLY_MALL_ATTBONUS, // 64 공격력 +x%
APPLY_MALL_DEFBONUS, // 65 방어력 +x% APPLY_MALL_DEFBONUS, // 65 방어력 +x%
APPLY_MALL_EXPBONUS, // 66 경험치 +x% APPLY_MALL_EXPBONUS, // 66 경험치 +x%
APPLY_MALL_ITEMBONUS, // 67 아이템 드롭율 x/10배 APPLY_MALL_ITEMBONUS, // 67 아이템 드롭율 x/10배
APPLY_MALL_GOLDBONUS, // 68 돈 드롭율 x/10배 APPLY_MALL_GOLDBONUS, // 68 돈 드롭율 x/10배
APPLY_MAX_HP_PCT, // 69 최대 생명력 +x% APPLY_MAX_HP_PCT, // 69 최대 생명력 +x%
APPLY_MAX_SP_PCT, // 70 최대 정신력 +x% APPLY_MAX_SP_PCT, // 70 최대 정신력 +x%
APPLY_SKILL_DAMAGE_BONUS, // 71 스킬 데미지 * (100+x)% APPLY_SKILL_DAMAGE_BONUS, // 71 스킬 데미지 * (100+x)%
APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 평타 데미지 * (100+x)% APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 평타 데미지 * (100+x)%
APPLY_SKILL_DEFEND_BONUS, // 73 스킬 데미지 방어 * (100-x)% APPLY_SKILL_DEFEND_BONUS, // 73 스킬 데미지 방어 * (100-x)%
APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 평타 데미지 방어 * (100-x)% APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 평타 데미지 방어 * (100-x)%
APPLY_PC_BANG_EXP_BONUS, // 75 PC방 아이템 EXP 보너스 APPLY_PC_BANG_EXP_BONUS, // 75 PC방 아이템 EXP 보너스
APPLY_PC_BANG_DROP_BONUS, // 76 PC방 아이템 드롭율 보너스 APPLY_PC_BANG_DROP_BONUS, // 76 PC방 아이템 드롭율 보너스
APPLY_EXTRACT_HP_PCT, // 77 사용시 HP 소모 APPLY_EXTRACT_HP_PCT, // 77 사용시 HP 소모
APPLY_RESIST_WARRIOR, // 78 무사에게 저항 APPLY_RESIST_WARRIOR, // 78 무사에게 저항
APPLY_RESIST_ASSASSIN, // 79 자객에게 저항 APPLY_RESIST_ASSASSIN, // 79 자객에게 저항
APPLY_RESIST_SURA, // 80 수라에게 저항 APPLY_RESIST_SURA, // 80 수라에게 저항
APPLY_RESIST_SHAMAN, // 81 무당에게 저항 APPLY_RESIST_SHAMAN, // 81 무당에게 저항
APPLY_ENERGY, // 82 기력 APPLY_ENERGY, // 82 기력
APPLY_DEF_GRADE, // 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다. APPLY_DEF_GRADE, // 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다.
APPLY_COSTUME_ATTR_BONUS, // 84 코스튬 아이템에 붙은 속성치 보너스 APPLY_COSTUME_ATTR_BONUS, // 84 코스튬 아이템에 붙은 속성치 보너스
APPLY_MAGIC_ATTBONUS_PER, // 85 마법 공격력 +x% APPLY_MAGIC_ATTBONUS_PER, // 85 마법 공격력 +x%
APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 마법 + 밀리 공격력 +x% APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 마법 + 밀리 공격력 +x%
APPLY_RESIST_ICE, // 87 냉기 저항 APPLY_RESIST_ICE, // 87 냉기 저항
APPLY_RESIST_EARTH, // 88 대지 저항 APPLY_RESIST_EARTH, // 88 대지 저항
APPLY_RESIST_DARK, // 89 어둠 저항 APPLY_RESIST_DARK, // 89 어둠 저항
APPLY_ANTI_CRITICAL_PCT, //90 크리티컬 저항 APPLY_ANTI_CRITICAL_PCT, //90 크리티컬 저항
APPLY_ANTI_PENETRATE_PCT, //91 관통타격 저항 APPLY_ANTI_PENETRATE_PCT, //91 관통타격 저항
MAX_APPLY_NUM, // MAX_APPLY_NUM, //
@ -580,7 +580,7 @@ enum EGuildWarState
GUILD_WAR_OVER, GUILD_WAR_OVER,
GUILD_WAR_RESERVE, GUILD_WAR_RESERVE,
GUILD_WAR_DURATION = 30*60, // 1시간 GUILD_WAR_DURATION = 30*60, // 1시간
GUILD_WAR_WIN_POINT = 1000, GUILD_WAR_WIN_POINT = 1000,
GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60, GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60,
}; };
@ -624,13 +624,13 @@ enum EMoneyLogType
enum EPremiumTypes enum EPremiumTypes
{ {
PREMIUM_EXP, // 경험치가 1.2배 PREMIUM_EXP, // 경험치가 1.2배
PREMIUM_ITEM, // 아이템 드롭율이 2배 PREMIUM_ITEM, // 아이템 드롭율이 2배
PREMIUM_SAFEBOX, // 창고가 1칸에서 3칸 PREMIUM_SAFEBOX, // 창고가 1칸에서 3칸
PREMIUM_AUTOLOOT, // 돈 자동 줍기 PREMIUM_AUTOLOOT, // 돈 자동 줍기
PREMIUM_FISH_MIND, // 고급 물고기 낚일 확률 상승 PREMIUM_FISH_MIND, // 고급 물고기 낚일 확률 상승
PREMIUM_MARRIAGE_FAST, // 금실 증가 양을 빠르게합니다. PREMIUM_MARRIAGE_FAST, // 금실 증가 양을 빠르게합니다.
PREMIUM_GOLD, // 돈 드롭율이 1.5배 PREMIUM_GOLD, // 돈 드롭율이 1.5배
PREMIUM_MAX_NUM = 9 PREMIUM_MAX_NUM = 9
}; };
@ -660,10 +660,10 @@ enum SPECIAL_EFFECT
SE_AUTO_HPUP, SE_AUTO_HPUP,
SE_AUTO_SPUP, SE_AUTO_SPUP,
SE_EQUIP_RAMADAN_RING, // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) SE_EQUIP_RAMADAN_RING, // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트 SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
} ; } ;
enum ETeenFlags enum ETeenFlags
@ -678,10 +678,10 @@ enum ETeenFlags
#include "item_length.h" #include "item_length.h"
// inventory의 position을 나타내는 구조체 // inventory의 position을 나타내는 구조체
// int와의 암시적 형변환이 있는 이유는, // int와의 암시적 형변환이 있는 이유는,
// 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,) // 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,)
// 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ??문이다. // 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ??문이다.
enum EDragonSoulRefineWindowSize enum EDragonSoulRefineWindowSize
{ {
@ -730,7 +730,7 @@ typedef struct SItemPos
return cell < INVENTORY_AND_EQUIP_SLOT_MAX; return cell < INVENTORY_AND_EQUIP_SLOT_MAX;
case DRAGON_SOUL_INVENTORY: case DRAGON_SOUL_INVENTORY:
return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM); return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM);
// 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다. // 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다.
case SAFEBOX: case SAFEBOX:
case MALL: case MALL:
return false; return false;

View File

@ -6,7 +6,7 @@
typedef DWORD IDENT; typedef DWORD IDENT;
/** /**
* @version 05/06/10 Bang2ni - Myshop Pricelist HEADER_XX_MYSHOP_PRICELIST_XXX * @version 05/06/10 Bang2ni - Myshop Pricelist HEADER_XX_MYSHOP_PRICELIST_XXX
*/ */
enum enum
{ {
@ -104,8 +104,8 @@ enum
HEADER_GD_BILLING_CHECK = 106, HEADER_GD_BILLING_CHECK = 106,
HEADER_GD_MALL_LOAD = 107, HEADER_GD_MALL_LOAD = 107,
HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< 가격정보 갱신 요청 HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< 가격정보 갱신 요청
HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< 가격정보 리스트 요청 HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< 가격정보 리스트 요청
HEADER_GD_BLOCK_CHAT = 110, HEADER_GD_BLOCK_CHAT = 110,
@ -116,21 +116,21 @@ enum
// END_OF_PCBANG_IP_LIST_BY_AUTH // END_OF_PCBANG_IP_LIST_BY_AUTH
HEADER_GD_HAMMER_OF_TOR = 114, HEADER_GD_HAMMER_OF_TOR = 114,
HEADER_GD_RELOAD_ADMIN = 115, ///<운영자 정보 요청 HEADER_GD_RELOAD_ADMIN = 115, ///<운영자 정보 요청
HEADER_GD_BREAK_MARRIAGE = 116, ///< 결혼 파기 HEADER_GD_BREAK_MARRIAGE = 116, ///< 결혼 파기
HEADER_GD_ELECT_MONARCH = 117, ///< 군주 투표 HEADER_GD_ELECT_MONARCH = 117, ///< 군주 투표
HEADER_GD_CANDIDACY = 118, ///< 군주 등록 HEADER_GD_CANDIDACY = 118, ///< 군주 등록
HEADER_GD_ADD_MONARCH_MONEY = 119, ///< 군주 돈 증가 HEADER_GD_ADD_MONARCH_MONEY = 119, ///< 군주 돈 증가
HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< 군주 돈 감소 HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< 군주 돈 감소
HEADER_GD_COME_TO_VOTE = 121, ///< 표결 HEADER_GD_COME_TO_VOTE = 121, ///< 표결
HEADER_GD_RMCANDIDACY = 122, ///< 후보 제거 (운영자) HEADER_GD_RMCANDIDACY = 122, ///< 후보 제거 (운영자)
HEADER_GD_SETMONARCH = 123, ///<군주설정 (운영자) HEADER_GD_SETMONARCH = 123, ///<군주설정 (운영자)
HEADER_GD_RMMONARCH = 124, ///<군주삭제 HEADER_GD_RMMONARCH = 124, ///<군주삭제
HEADER_GD_DEC_MONARCH_MONEY = 125, HEADER_GD_DEC_MONARCH_MONEY = 125,
HEADER_GD_CHANGE_MONARCH_LORD = 126, HEADER_GD_CHANGE_MONARCH_LORD = 126,
HEADER_GD_BLOCK_COUNTRY_IP = 127, // 광대역 IP-Block HEADER_GD_BLOCK_COUNTRY_IP = 127, // 광대역 IP-Block
HEADER_GD_BLOCK_EXCEPTION = 128, // 광대역 IP-Block 예외 HEADER_GD_BLOCK_EXCEPTION = 128, // 광대역 IP-Block 예외
HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129, HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129,
@ -139,7 +139,7 @@ enum
HEADER_GD_UPDATE_HORSE_NAME = 131, HEADER_GD_UPDATE_HORSE_NAME = 131,
HEADER_GD_REQ_HORSE_NAME = 132, HEADER_GD_REQ_HORSE_NAME = 132,
HEADER_GD_DC = 133, // Login Key를 지움 HEADER_GD_DC = 133, // Login Key를 지움
HEADER_GD_VALID_LOGOUT = 134, HEADER_GD_VALID_LOGOUT = 134,
@ -257,23 +257,23 @@ enum
HEADER_DG_WEDDING_START = 155, HEADER_DG_WEDDING_START = 155,
HEADER_DG_WEDDING_END = 156, HEADER_DG_WEDDING_END = 156,
HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< 가격정보 리스트 응답 HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< 가격정보 리스트 응답
HEADER_DG_RELOAD_ADMIN = 158, ///< 운영자 정보 리로드 HEADER_DG_RELOAD_ADMIN = 158, ///< 운영자 정보 리로드
HEADER_DG_BREAK_MARRIAGE = 159, ///< 결혼 파기 HEADER_DG_BREAK_MARRIAGE = 159, ///< 결혼 파기
HEADER_DG_ELECT_MONARCH = 160, ///< 군주 투표 HEADER_DG_ELECT_MONARCH = 160, ///< 군주 투표
HEADER_DG_CANDIDACY = 161, ///< 군주 등록 HEADER_DG_CANDIDACY = 161, ///< 군주 등록
HEADER_DG_ADD_MONARCH_MONEY = 162, ///< 군주 돈 증가 HEADER_DG_ADD_MONARCH_MONEY = 162, ///< 군주 돈 증가
HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< 군주 돈 감소 HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< 군주 돈 감소
HEADER_DG_COME_TO_VOTE = 164, ///< 표결 HEADER_DG_COME_TO_VOTE = 164, ///< 표결
HEADER_DG_RMCANDIDACY = 165, ///< 후보 제거 (운영자) HEADER_DG_RMCANDIDACY = 165, ///< 후보 제거 (운영자)
HEADER_DG_SETMONARCH = 166, ///<군주설정 (운영자) HEADER_DG_SETMONARCH = 166, ///<군주설정 (운영자)
HEADER_DG_RMMONARCH = 167, ///<군주삭제 HEADER_DG_RMMONARCH = 167, ///<군주삭제
HEADER_DG_DEC_MONARCH_MONEY = 168, HEADER_DG_DEC_MONARCH_MONEY = 168,
HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169, HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169,
HEADER_DG_UPDATE_MONARCH_INFO = 170, HEADER_DG_UPDATE_MONARCH_INFO = 170,
HEADER_DG_BLOCK_COUNTRY_IP = 171, // 광대역 IP-Block HEADER_DG_BLOCK_COUNTRY_IP = 171, // 광대역 IP-Block
HEADER_DG_BLOCK_EXCEPTION = 172, // 광대역 IP-Block 예외 account HEADER_DG_BLOCK_EXCEPTION = 172, // 광대역 IP-Block 예외 account
HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173, HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,
@ -364,7 +364,7 @@ typedef struct SPlayerItem
DWORD count; DWORD count;
DWORD vnum; DWORD vnum;
LONG alSockets[ITEM_SOCKET_MAX_NUM]; // 소켓번호 LONG alSockets[ITEM_SOCKET_MAX_NUM]; // 소켓번호
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
@ -572,9 +572,9 @@ typedef struct SShopItemTable
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
TItemPos pos; // PC 상점에만 이용 TItemPos pos; // PC 상점에만 이용
DWORD price; // PC, shop_table_ex.txt 상점에만 이용 DWORD price; // PC, shop_table_ex.txt 상점에만 이용
BYTE display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치. BYTE display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치.
} TShopItemTable; } TShopItemTable;
typedef struct SShopTable typedef struct SShopTable
@ -638,12 +638,12 @@ typedef struct SItemTable : public SEntityTable
BYTE bSpecular; BYTE bSpecular;
BYTE bGainSocketPct; BYTE bGainSocketPct;
WORD sAddonType; // 기본 속성 WORD sAddonType; // 기본 속성
// 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데, // 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데,
// 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠. // 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠.
char cLimitRealTimeFirstUseIndex; // 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1) char cLimitRealTimeFirstUseIndex; // 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1)
char cLimitTimerBasedOnWearIndex; // 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1) char cLimitTimerBasedOnWearIndex; // 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1)
} TItemTable; } TItemTable;
@ -681,7 +681,7 @@ typedef struct SPlayerLoadPacket
{ {
DWORD account_id; DWORD account_id;
DWORD player_id; DWORD player_id;
BYTE account_index; /* account 에서의 위치 */ BYTE account_index; /* account 에서의 위치 */
} TPlayerLoadPacket; } TPlayerLoadPacket;
typedef struct SPlayerCreatePacket typedef struct SPlayerCreatePacket
@ -758,9 +758,9 @@ typedef struct SEmpireSelectPacket
typedef struct SPacketGDSetup typedef struct SPacketGDSetup
{ {
char szPublicIP[16]; // Public IP which listen to users char szPublicIP[16]; // Public IP which listen to users
BYTE bChannel; // 채널 BYTE bChannel; // 채널
WORD wListenPort; // 클라이언트가 접속하는 포트 번호 WORD wListenPort; // 클라이언트가 접속하는 포트 번호
WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호 WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호
LONG alMaps[MAP_ALLOW_MAX_LEN]; LONG alMaps[MAP_ALLOW_MAX_LEN];
DWORD dwLoginCount; DWORD dwLoginCount;
BYTE bAuthServer; BYTE bAuthServer;
@ -938,8 +938,8 @@ typedef struct SPacketGuildWar
LONG lInitialScore; LONG lInitialScore;
} TPacketGuildWar; } TPacketGuildWar;
// Game -> DB : 상대적 변화값 // Game -> DB : 상대적 변화값
// DB -> Game : 토탈된 최종값 // DB -> Game : 토탈된 최종값
typedef struct SPacketGuildWarScore typedef struct SPacketGuildWarScore
{ {
DWORD dwGuildGainPoint; DWORD dwGuildGainPoint;
@ -960,8 +960,8 @@ typedef struct SRefineTable
//DWORD result_vnum; //DWORD result_vnum;
DWORD id; DWORD id;
BYTE material_count; BYTE material_count;
DWORD cost; // 소요 비용 DWORD cost; // 소요 비용
DWORD prob; // 확률 DWORD prob; // 확률
TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM]; TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable; } TRefineTable;
@ -1046,14 +1046,14 @@ typedef struct SPacketGDLoginByKey
} TPacketGDLoginByKey; } TPacketGDLoginByKey;
/** /**
* @version 05/06/08 Bang2ni - * @version 05/06/08 Bang2ni -
*/ */
typedef struct SPacketGiveGuildPriv typedef struct SPacketGiveGuildPriv
{ {
BYTE type; BYTE type;
DWORD value; DWORD value;
DWORD guild_id; DWORD guild_id;
time_t duration_sec; ///< 지속시간 time_t duration_sec; ///< 지속시간
} TPacketGiveGuildPriv; } TPacketGiveGuildPriv;
typedef struct SPacketGiveEmpirePriv typedef struct SPacketGiveEmpirePriv
{ {
@ -1088,7 +1088,7 @@ typedef struct SPacketDGChangeCharacterPriv
} TPacketDGChangeCharacterPriv; } TPacketDGChangeCharacterPriv;
/** /**
* @version 05/06/08 Bang2ni - * @version 05/06/08 Bang2ni -
*/ */
typedef struct SPacketDGChangeGuildPriv typedef struct SPacketDGChangeGuildPriv
{ {
@ -1096,7 +1096,7 @@ typedef struct SPacketDGChangeGuildPriv
DWORD value; DWORD value;
DWORD guild_id; DWORD guild_id;
BYTE bLog; BYTE bLog;
time_t end_time_sec; ///< 지속시간 time_t end_time_sec; ///< 지속시간
} TPacketDGChangeGuildPriv; } TPacketDGChangeGuildPriv;
typedef struct SPacketDGChangeEmpirePriv typedef struct SPacketDGChangeEmpirePriv
@ -1277,27 +1277,27 @@ typedef struct
DWORD dwPID2; DWORD dwPID2;
} TPacketWeddingEnd; } TPacketWeddingEnd;
/// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다. /// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다.
typedef struct SPacketMyshopPricelistHeader typedef struct SPacketMyshopPricelistHeader
{ {
DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
BYTE byCount; ///< 가격정보 갯수 BYTE byCount; ///< 가격정보 갯수
} TPacketMyshopPricelistHeader; } TPacketMyshopPricelistHeader;
/// 개인상점의 단일 아이템에 대한 가격정보 /// 개인상점의 단일 아이템에 대한 가격정보
typedef struct SItemPriceInfo typedef struct SItemPriceInfo
{ {
DWORD dwVnum; ///< 아이템 vnum DWORD dwVnum; ///< 아이템 vnum
DWORD dwPrice; ///< 가격 DWORD dwPrice; ///< 가격
} TItemPriceInfo; } TItemPriceInfo;
/// 개인상점 아이템 가격정보 리스트 테이블 /// 개인상점 아이템 가격정보 리스트 테이블
typedef struct SItemPriceListTable typedef struct SItemPriceListTable
{ {
DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID
BYTE byCount; ///< 가격정보 리스트의 갯수 BYTE byCount; ///< 가격정보 리스트의 갯수
TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< 가격정보 리스트 TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< 가격정보 리스트
} TItemPriceListTable; } TItemPriceListTable;
typedef struct typedef struct
@ -1318,12 +1318,12 @@ typedef struct SPacketPCBangIP
//ADMIN_MANAGER //ADMIN_MANAGER
typedef struct TAdminInfo typedef struct TAdminInfo
{ {
DWORD m_ID; //고유ID DWORD m_ID; //고유ID
char m_szAccount[32]; //계정 char m_szAccount[32]; //계정
char m_szName[32]; //캐릭터이름 char m_szName[32]; //캐릭터이름
char m_szContactIP[16]; //접근아이피 char m_szContactIP[16]; //접근아이피
char m_szServerIP[16]; //서버아이피 char m_szServerIP[16]; //서버아이피
DWORD m_Authority; //권한 DWORD m_Authority; //권한
} tAdminInfo; } tAdminInfo;
//END_ADMIN_MANAGER //END_ADMIN_MANAGER
@ -1344,20 +1344,20 @@ typedef struct SPacketReloadAdmin
typedef struct TMonarchInfo typedef struct TMonarchInfo
{ {
DWORD pid[4]; // 군주의 PID DWORD pid[4]; // 군주의 PID
int64_t money[4]; // 군주의 별개 돈 int64_t money[4]; // 군주의 별개 돈
char name[4][32]; // 군주의 이름 char name[4][32]; // 군주의 이름
char date[4][32]; // 군주 등록 날짜 char date[4][32]; // 군주 등록 날짜
} MonarchInfo; } MonarchInfo;
typedef struct TMonarchElectionInfo typedef struct TMonarchElectionInfo
{ {
DWORD pid; // 투표 한사람 PID DWORD pid; // 투표 한사람 PID
DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 ) DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 )
char date[32]; // 투표 날짜 char date[32]; // 투표 날짜
} MonarchElectionInfo; } MonarchElectionInfo;
// 군주 출마자 // 군주 출마자
typedef struct tMonarchCandidacy typedef struct tMonarchCandidacy
{ {
DWORD pid; DWORD pid;
@ -1429,14 +1429,14 @@ typedef struct tNeedLoginLogInfo
DWORD dwPlayerID; DWORD dwPlayerID;
} TPacketNeedLoginLogInfo; } TPacketNeedLoginLogInfo;
//독일 선물 알림 기능 테스트용 패킷 정보 //독일 선물 알림 기능 테스트용 패킷 정보
typedef struct tItemAwardInformer typedef struct tItemAwardInformer
{ {
char login[LOGIN_MAX_LEN + 1]; char login[LOGIN_MAX_LEN + 1];
char command[20]; //명령어 char command[20]; //명령어
DWORD vnum; //아이템 DWORD vnum; //아이템
} TPacketItemAwardInfromer; } TPacketItemAwardInfromer;
// 선물 알림 기능 삭제용 패킷 정보 // 선물 알림 기능 삭제용 패킷 정보
typedef struct tDeleteAwardID typedef struct tDeleteAwardID
{ {
DWORD dwID; DWORD dwID;