From 4fc612552ad1ba2a5f603e8852b976d2862b2952 Mon Sep 17 00:00:00 2001 From: sdgmt2 Date: Mon, 1 Apr 2024 12:45:35 +0200 Subject: [PATCH] fix common header encoding --- src/common/VnumHelper.h | 32 ++++---- src/common/auction_table.h | 18 ++--- src/common/building.h | 4 +- src/common/item_length.h | 100 ++++++++++++------------ src/common/length.h | 140 ++++++++++++++++----------------- src/common/tables.h | 156 ++++++++++++++++++------------------- 6 files changed, 225 insertions(+), 225 deletions(-) diff --git a/src/common/VnumHelper.h b/src/common/VnumHelper.h index c025f9d..82635e5 100644 --- a/src/common/VnumHelper.h +++ b/src/common/VnumHelper.h @@ -2,15 +2,15 @@ #define __HEADER_VNUM_HELPER__ /** - ̹ ϰų ߰ , ҽ ĺ - ĺ(=VNum) ϵڵϴ Ǿ־ ſ µ + 이미 존재하거나 앞으로 추가될 아이템, 몹 등을 소스에서 식별할 때 현재는 모두 + 식별자(숫자=VNum)를 하드코딩하는 방식으로 되어있어서 가독성이 매우 떨어지는데 - δ ҽ  (Ȥ ) ְ ڴ ö ߰. + 앞으로는 소스만 봐도 어떤 아이템(혹은 몹)인지 알 수 있게 하자는 승철님의 제안으로 추가. - * Ǵµ PCH ٲ ü ؾϴ - ϴ ʿ cppϿ include ؼ . + * 이 파일은 변경이 잦을것으로 예상되는데 PCH에 넣으면 바뀔 때마다 전체 컴파일 해야하니 + 일단은 필요한 cpp파일에서 include 해서 쓰도록 했음. - * cpp ϸ ~ ũؾϴ ׳ common ־. (game, dbƮ ) + * cpp에서 구현하면 컴파일 ~ 링크해야하니 그냥 common에 헤더만 넣었음. (game, db프로젝트 둘 다 사용 예정) @date 2011. 8. 29. */ @@ -19,35 +19,35 @@ class CItemVnumHelper { public: - /// DVD һ ȯ - static const bool IsPhoenix(DWORD vnum) { return 53001 == vnum; } // NOTE: һ ȯ 53001 mob-vnum 34001 Դϴ. + /// 독일 DVD용 불사조 소환권 + 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 IsHalloweenCandy(DWORD vnum) { return 71136 == vnum; } - /// ũ ູ + /// 크리스마스 행복의 반지 static const bool IsHappinessRing(DWORD vnum) { return 71143 == vnum; } - /// ߷Ÿ ҴƮ + /// 발렌타인 사랑의 팬던트 static const bool IsLovePendant(DWORD vnum) { return 71145 == vnum; } }; class CMobVnumHelper { public: - /// DVD һ ȣ + /// 독일 DVD용 불사조 몹 번호 static bool IsPhoenix(DWORD vnum) { return 34001 == vnum; } static bool IsIcePhoenix(DWORD vnum) { return 34003 == vnum; } - /// PetSystem ϴ ΰ? + /// PetSystem이 관리하는 펫인가? static bool IsPetUsingPetSystem(DWORD vnum) { return (IsPhoenix(vnum) || IsReindeerYoung(vnum)) || IsIcePhoenix(vnum); } - /// 2011 ũ ̺Ʈ (Ʊ ) + /// 2011년 크리스마스 이벤트용 펫 (아기 순록) static bool IsReindeerYoung(DWORD vnum) { return 34002 == vnum; } - /// 󸶴 ̺Ʈ 渶(20119) .. ҷ ̺Ʈ 󸶴 渶 Ŭ( , 20219) + /// 라마단 이벤트 보상용 흑마(20119) .. 할로윈 이벤트용 라마단 흑마 클론(스펙은 같음, 20219) static bool IsRamadanBlackHorse(DWORD vnum) { return 20119 == vnum || 20219 == vnum || 22022 == vnum; } }; diff --git a/src/common/auction_table.h b/src/common/auction_table.h index 5dbebc2..b269b37 100644 --- a/src/common/auction_table.h +++ b/src/common/auction_table.h @@ -26,7 +26,7 @@ public: int get_price () { return offer_price; } } TAuctionSimpleItemInfo; -// auction . +// 각 auction 정보들. // primary key (item_id) typedef struct _auction : public _base_auction { @@ -49,8 +49,8 @@ public: empire = _empire; } - // ޼ҵ  auction  ϴ - // Ҵ. + // 이 메소드들은 어떤 변수가 auction에서 어떤 역할을 하는지 까먹을 까봐 + // 만들어놓았다. // by rtsummit DWORD get_item_id () { return item_id; } DWORD get_bidder_id () { return bidder_id; } @@ -89,7 +89,7 @@ typedef struct _sale : public _base_auction } TSaleItemInfo; -// wish ϴ . +// wish는 실제하는 아이템은 없다. // primary key (item_num, wisher_id) 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, }; -// ݵ FAIL տ, ;Ѵ. -// ֳ, <= AUCTION_FAIL ̷ CHECK Űŵ -// ݴ SUCCESS ڿ, ;Ѵ. ٵ ֱ Ϸ... +// 반드시 FAIL 앞에, 실패 류 들이 와야한다. +// 왜냐, <= AUCTION_FAIL 이런 CHECK을 할 거거든 +// 반대로 SUCCESS 뒤에, 성공 류 들이 와야한다. 근데 성공류가 있긴 하려나... 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 }; @@ -218,7 +218,7 @@ typedef struct command_auction cmd = AUCTION_CHANGING_MONEY; price1 = _money; } - // bid cmd ٸ. + // bid랑 cmd만 다르다. void rebid (DWORD _item_id, int _bidPrice) { cmd = AUCTION_REBID; @@ -322,7 +322,7 @@ typedef struct auction_impur : public command_auction // auction_type; // start_idx; // size; -// conditions; öԲ غ. +// conditions; 정렬은 승철님께 조언을 구해보자.ㅇㅇ //} // //get_auction_detail_item_info diff --git a/src/common/building.h b/src/common/building.h index 6fcd8d9..f495f87 100644 --- a/src/common/building.h +++ b/src/common/building.h @@ -41,8 +41,8 @@ namespace building int lNPCX; int lNPCY; - DWORD dwGroupVnum; // ׷ ϳ Ǽ - DWORD dwDependOnGroupVnum; // ־ϴ ׷ + DWORD dwGroupVnum; // 같은 그룹은 하나만 건설가능 + DWORD dwDependOnGroupVnum; // 지어져 있어야하는 그룹 } TObjectProto; typedef struct SObject diff --git a/src/common/item_length.h b/src/common/item_length.h index 2f44961..036af1e 100644 --- a/src/common/item_length.h +++ b/src/common/item_length.h @@ -31,8 +31,8 @@ enum EItemDragonSoulSockets ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX = 2, ITEM_SOCKET_CHARGING_AMOUNT_IDX = 2, }; -// ̰ ģ ƴϾ? -// ߿ Ȯϸ ¼ -_-;;; +// 헐 이거 미친거 아니야? +// 나중에 소켓 확장하면 어쩌려고 이지랄 -_-;;; enum EItemUniqueSockets { ITEM_SOCKET_UNIQUE_SAVE_TIME = ITEM_SOCKET_MAX_NUM - 2, @@ -42,18 +42,18 @@ enum EItemUniqueSockets enum EItemTypes { ITEM_NONE, //0 - ITEM_WEAPON, //1// - ITEM_ARMOR, //2// - ITEM_USE, //3// + ITEM_WEAPON, //1//무기 + ITEM_ARMOR, //2//갑옷 + ITEM_USE, //3//아이템 사용 ITEM_AUTOUSE, //4 ITEM_MATERIAL, //5 - ITEM_SPECIAL, //6 // + ITEM_SPECIAL, //6 //스페셜 아이템 ITEM_TOOL, //7 - ITEM_LOTTERY, //8// - ITEM_ELK, //9// + ITEM_LOTTERY, //8//복권 + ITEM_ELK, //9//돈 ITEM_METIN, //10 ITEM_CONTAINER, //11 - ITEM_FISH, //12// + ITEM_FISH, //12//낚시 ITEM_ROD, //13 ITEM_RESOURCE, //14 ITEM_CAMPFIRE, //15 @@ -61,21 +61,21 @@ enum EItemTypes ITEM_SKILLBOOK, //17 ITEM_QUEST, //18 ITEM_POLYMORPH, //19 - ITEM_TREASURE_BOX, //20// - ITEM_TREASURE_KEY, //21// + ITEM_TREASURE_BOX, //20//보물상자 + ITEM_TREASURE_KEY, //21//보물상자 열쇠 ITEM_SKILLFORGET, //22 ITEM_GIFTBOX, //23 ITEM_PICK, //24 - ITEM_HAIR, //25//Ӹ - ITEM_TOTEM, //26// - ITEM_BLEND, //27//ɶ ϰ Ӽ ٴ ๰ - ITEM_COSTUME, //28//ڽ (2011 8 ߰ ڽ ýۿ ) - ITEM_DS, //29 //ȥ - ITEM_SPECIAL_DS, //30 // Ư ȥ (DS_SLOT ϴ UNIQUE ̶ ϸ ) - ITEM_EXTRACT, //31 ⵵. - ITEM_SECONDARY_COIN, //32 ?? ?? - ITEM_RING, //33 - ITEM_BELT, //34 Ʈ + ITEM_HAIR, //25//머리 + ITEM_TOTEM, //26//토템 + ITEM_BLEND, //27//생성될때 랜덤하게 속성이 붙는 약물 + ITEM_COSTUME, //28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템) + ITEM_DS, //29 //용혼석 + ITEM_SPECIAL_DS, //30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨) + ITEM_EXTRACT, //31 추출도구. + ITEM_SECONDARY_COIN, //32 ?? 명도전?? + ITEM_RING, //33 반지 + ITEM_BELT, //34 벨트 }; enum EMetinSubTypes @@ -111,8 +111,8 @@ enum EArmorSubTypes enum ECostumeSubTypes { - COSTUME_BODY = ARMOR_BODY, // [߿!!] ECostumeSubTypes enum value EArmorSubTypes װͰ ƾ . - COSTUME_HAIR = ARMOR_HEAD, // ̴ ڽ ۿ ߰ Ӽ ̰ڴٴ û Ȱϱ . + COSTUME_BODY = ARMOR_BODY, // [중요!!] ECostumeSubTypes enum value는 종류별로 EArmorSubTypes의 그것과 같아야 함. + COSTUME_HAIR = ARMOR_HEAD, // 이는 코스츔 아이템에 추가 속성을 붙이겠다는 사업부의 요청에 따라서 기존 로직을 활용하기 위함임. COSTUME_NUM_TYPES, }; @@ -215,8 +215,8 @@ enum EUseSubTypes USE_UNBIND, USE_TIME_CHARGE_PER, USE_TIME_CHARGE_FIX, // 28 - USE_PUT_INTO_BELT_SOCKET, // 29 Ʈ Ͽ ִ - USE_PUT_INTO_RING_SOCKET, // 30 Ͽ ִ (ũ , ߰ ) + USE_PUT_INTO_BELT_SOCKET, // 29 벨트 소켓에 사용할 수 있는 아이템 + USE_PUT_INTO_RING_SOCKET, // 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯) }; enum EExtractSubTypes @@ -270,7 +270,7 @@ enum EItemFlag { ITEM_FLAG_REFINEABLE = (1 << 0), ITEM_FLAG_SAVE = (1 << 1), - ITEM_FLAG_STACKABLE = (1 << 2), // ĥ + ITEM_FLAG_STACKABLE = (1 << 2), // 여러개 합칠 수 있음 ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), ITEM_FLAG_SLOW_QUERY = (1 << 4), ITEM_FLAG_UNUSED01 = (1 << 5), // UNUSED @@ -287,24 +287,24 @@ enum EItemFlag enum EItemAntiFlag { - ITEM_ANTIFLAG_FEMALE = (1 << 0), // Ұ - ITEM_ANTIFLAG_MALE = (1 << 1), // Ұ - ITEM_ANTIFLAG_WARRIOR = (1 << 2), // Ұ - ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // ڰ Ұ - ITEM_ANTIFLAG_SURA = (1 << 4), // Ұ - ITEM_ANTIFLAG_SHAMAN = (1 << 5), // Ұ - ITEM_ANTIFLAG_GET = (1 << 6), // - ITEM_ANTIFLAG_DROP = (1 << 7), // - ITEM_ANTIFLAG_SELL = (1 << 8), // - ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A Ұ - ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B Ұ - ITEM_ANTIFLAG_EMPIRE_C = (1 << 11), // C Ұ - ITEM_ANTIFLAG_SAVE = (1 << 12), // - ITEM_ANTIFLAG_GIVE = (1 << 13), // ŷ Ұ - ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK - ITEM_ANTIFLAG_STACK = (1 << 15), // ĥ - ITEM_ANTIFLAG_MYSHOP = (1 << 16), // ø - ITEM_ANTIFLAG_SAFEBOX = (1 << 17), // â + ITEM_ANTIFLAG_FEMALE = (1 << 0), // 여성 사용 불가 + ITEM_ANTIFLAG_MALE = (1 << 1), // 남성 사용 불가 + ITEM_ANTIFLAG_WARRIOR = (1 << 2), // 무사 사용 불가 + ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // 자객 사용 불가 + ITEM_ANTIFLAG_SURA = (1 << 4), // 수라 사용 불가 + ITEM_ANTIFLAG_SHAMAN = (1 << 5), // 무당 사용 불가 + ITEM_ANTIFLAG_GET = (1 << 6), // 집을 수 없음 + ITEM_ANTIFLAG_DROP = (1 << 7), // 버릴 수 없음 + ITEM_ANTIFLAG_SELL = (1 << 8), // 팔 수 없음 + ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A 제국 사용 불가 + ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B 제국 사용 불가 + ITEM_ANTIFLAG_EMPIRE_C = (1 << 11), // C 제국 사용 불가 + ITEM_ANTIFLAG_SAVE = (1 << 12), // 저장되지 않음 + ITEM_ANTIFLAG_GIVE = (1 << 13), // 거래 불가 + ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK시 떨어지지 않음 + ITEM_ANTIFLAG_STACK = (1 << 15), // 합칠 수 없음 + ITEM_ANTIFLAG_MYSHOP = (1 << 16), // 개인 상점에 올릴 수 없음 + ITEM_ANTIFLAG_SAFEBOX = (1 << 17), // 창고에 넣을 수 없음 }; enum EItemWearableFlag @@ -335,16 +335,16 @@ enum ELimitTypes LIMIT_CON, LIMIT_PCBANG, - /// ο ǽð ð (socket0 Ҹ ð : unix_timestamp Ÿ) + /// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입) LIMIT_REAL_TIME, - /// ó (Ȥ ) Ÿ Ÿ̸ - /// socket0 밡ɽð(ʴ, 0̸ limit value ) ִٰ - /// socket1 Ƚ socket0 unix_timestamp Ÿ Ҹð . + /// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작 + /// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가 + /// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0에 unix_timestamp 타입의 소멸시간이 박힘. LIMIT_REAL_TIME_START_FIRST_USE, - /// ð Ǵ - /// socket0 ð ʴ . ( ش 0̸ limit value socket0 ) + /// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템 + /// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사) LIMIT_TIMER_BASED_ON_WEAR, LIMIT_MAX_NUM diff --git a/src/common/length.h b/src/common/length.h index 82eca5d..4d03f1b 100644 --- a/src/common/length.h +++ b/src/common/length.h @@ -23,10 +23,10 @@ enum EMisc GUILD_NAME_MAX_LEN = 12, - SHOP_HOST_ITEM_MAX_NUM = 40, /* ȣƮ ִ */ - SHOP_GUEST_ITEM_MAX_NUM = 18, /* ԽƮ ִ */ + SHOP_HOST_ITEM_MAX_NUM = 40, /* 호스트의 최대 아이템 개수 */ + SHOP_GUEST_ITEM_MAX_NUM = 18, /* 게스트의 최대 아이템 개수 */ - SHOP_PRICELIST_MAX_NUM = 40, ///< λ Ʈ ִ + SHOP_PRICELIST_MAX_NUM = 40, ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수 CHAT_MAX_LEN = 512, @@ -80,19 +80,19 @@ enum EMisc /** - **** Ҵ (DB Item Position) **** + **** 현재까지 할당 된 아이템 영역 정리 (DB상 Item Position) **** +------------------------------------------------------+ 0 - | ij ⺻ κ丮 (45ĭ * 2) 90ĭ | + | 캐릭터 기본 인벤토리 (45칸 * 2페이지) 90칸 | +------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90) - | ij â ( ) 32ĭ | + | 캐릭터 장비 창 (착용중인 아이템) 32칸 | +------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32) - | ȥ â ( ȥ) 12ĭ | + | 용혼석 장비 창 (착용중인 용혼석) 12칸 | +------------------------------------------------------+ 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) - | Ʈ κ丮 (Ʈ ÿ Ʈ Ȱ)| + | 벨트 인벤토리 (벨트 착용시에만 벨트 레벨에 따라 활성)| +------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX - | ̻ | + | 미사용 | +------------------------------------------------------+ ?? */ }; @@ -127,10 +127,10 @@ enum EWearPositions WEAR_COSTUME_BODY, // 19 WEAR_COSTUME_HAIR, // 20 - WEAR_RING1, // 21 : ű 1 () - WEAR_RING2, // 22 : ű 2 () + WEAR_RING1, // 21 : 신규 반지슬롯1 (왼쪽) + WEAR_RING2, // 22 : 신규 반지슬롯2 (오른쪽) - WEAR_BELT, // 23 : ű Ʈ + WEAR_BELT, // 23 : 신규 벨트슬롯 WEAR_MAX = 32 // }; @@ -141,7 +141,7 @@ enum EDragonSoulDeckType DRAGON_SOUL_DECK_1, 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 @@ -163,7 +163,7 @@ enum EDirection DIR_MAX_NUM }; -#define ABILITY_MAX_LEVEL 10 /* ִ */ +#define ABILITY_MAX_LEVEL 10 /* 기술 최대 레벨 */ enum EAbilityDifficulty { @@ -176,9 +176,9 @@ enum EAbilityDifficulty enum EAbilityCategory { - CATEGORY_PHYSICAL, /* ü Ƽ */ - CATEGORY_MENTAL, /* Ƽ */ - CATEGORY_ATTRIBUTE, /* ɷ Ƽ */ + CATEGORY_PHYSICAL, /* 신체적 어빌리티 */ + CATEGORY_MENTAL, /* 정신적 어빌리티 */ + CATEGORY_ATTRIBUTE, /* 능력 어빌리티 */ CATEGORY_NUM_TYPES }; @@ -248,13 +248,13 @@ enum EParts enum EChatType { - CHAT_TYPE_TALKING, /* ׳ ä */ - CHAT_TYPE_INFO, /* ( , ġ . ) */ - CHAT_TYPE_NOTICE, /* */ - CHAT_TYPE_PARTY, /* Ƽ */ - CHAT_TYPE_GUILD, /* 帻 */ - CHAT_TYPE_COMMAND, /* Ϲ */ - CHAT_TYPE_SHOUT, /* ġ */ + CHAT_TYPE_TALKING, /* 그냥 채팅 */ + CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */ + CHAT_TYPE_NOTICE, /* 공지사항 */ + CHAT_TYPE_PARTY, /* 파티말 */ + CHAT_TYPE_GUILD, /* 길드말 */ + CHAT_TYPE_COMMAND, /* 일반 명령 */ + CHAT_TYPE_SHOUT, /* 외치기 */ CHAT_TYPE_WHISPER, CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_MONARCH_NOTICE, @@ -397,38 +397,38 @@ enum EApplyTypes APPLY_ATTBONUS_SURA, // 61 APPLY_ATTBONUS_SHAMAN, // 62 APPLY_ATTBONUS_MONSTER, // 63 - APPLY_MALL_ATTBONUS, // 64 ݷ +x% - APPLY_MALL_DEFBONUS, // 65 +x% - APPLY_MALL_EXPBONUS, // 66 ġ +x% - APPLY_MALL_ITEMBONUS, // 67 x/10 - APPLY_MALL_GOLDBONUS, // 68 x/10 - APPLY_MAX_HP_PCT, // 69 ִ +x% - APPLY_MAX_SP_PCT, // 70 ִ ŷ +x% - APPLY_SKILL_DAMAGE_BONUS, // 71 ų * (100+x)% - APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 Ÿ * (100+x)% - APPLY_SKILL_DEFEND_BONUS, // 73 ų * (100-x)% - APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 Ÿ * (100-x)% - APPLY_PC_BANG_EXP_BONUS, // 75 PC EXP ʽ - APPLY_PC_BANG_DROP_BONUS, // 76 PC ʽ + APPLY_MALL_ATTBONUS, // 64 공격력 +x% + APPLY_MALL_DEFBONUS, // 65 방어력 +x% + APPLY_MALL_EXPBONUS, // 66 경험치 +x% + APPLY_MALL_ITEMBONUS, // 67 아이템 드롭율 x/10배 + APPLY_MALL_GOLDBONUS, // 68 돈 드롭율 x/10배 + APPLY_MAX_HP_PCT, // 69 최대 생명력 +x% + APPLY_MAX_SP_PCT, // 70 최대 정신력 +x% + APPLY_SKILL_DAMAGE_BONUS, // 71 스킬 데미지 * (100+x)% + APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 평타 데미지 * (100+x)% + APPLY_SKILL_DEFEND_BONUS, // 73 스킬 데미지 방어 * (100-x)% + APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 평타 데미지 방어 * (100-x)% + APPLY_PC_BANG_EXP_BONUS, // 75 PC방 아이템 EXP 보너스 + 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_ASSASSIN, // 79 ڰ - APPLY_RESIST_SURA, // 80 󿡰 - APPLY_RESIST_SHAMAN, // 81 翡 - APPLY_ENERGY, // 82 - APPLY_DEF_GRADE, // 83 . DEF_GRADE_BONUS Ŭ󿡼 ι ǵ (...) ִ. - APPLY_COSTUME_ATTR_BONUS, // 84 ڽƬ ۿ Ӽġ ʽ - APPLY_MAGIC_ATTBONUS_PER, // 85 ݷ +x% - APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 + и ݷ +x% + APPLY_RESIST_WARRIOR, // 78 무사에게 저항 + APPLY_RESIST_ASSASSIN, // 79 자객에게 저항 + APPLY_RESIST_SURA, // 80 수라에게 저항 + APPLY_RESIST_SHAMAN, // 81 무당에게 저항 + APPLY_ENERGY, // 82 기력 + APPLY_DEF_GRADE, // 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다. + APPLY_COSTUME_ATTR_BONUS, // 84 코스튬 아이템에 붙은 속성치 보너스 + APPLY_MAGIC_ATTBONUS_PER, // 85 마법 공격력 +x% + APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 마법 + 밀리 공격력 +x% - APPLY_RESIST_ICE, // 87 ñ - APPLY_RESIST_EARTH, // 88 - APPLY_RESIST_DARK, // 89 + APPLY_RESIST_ICE, // 87 냉기 저항 + APPLY_RESIST_EARTH, // 88 대지 저항 + APPLY_RESIST_DARK, // 89 어둠 저항 - APPLY_ANTI_CRITICAL_PCT, //90 ũƼ - APPLY_ANTI_PENETRATE_PCT, //91 Ÿ + APPLY_ANTI_CRITICAL_PCT, //90 크리티컬 저항 + APPLY_ANTI_PENETRATE_PCT, //91 관통타격 저항 MAX_APPLY_NUM, // @@ -580,7 +580,7 @@ enum EGuildWarState GUILD_WAR_OVER, GUILD_WAR_RESERVE, - GUILD_WAR_DURATION = 30*60, // 1ð + GUILD_WAR_DURATION = 30*60, // 1시간 GUILD_WAR_WIN_POINT = 1000, GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60, }; @@ -624,13 +624,13 @@ enum EMoneyLogType enum EPremiumTypes { - PREMIUM_EXP, // ġ 1.2 - PREMIUM_ITEM, // 2 - PREMIUM_SAFEBOX, // â 1ĭ 3ĭ - PREMIUM_AUTOLOOT, // ڵ ݱ - PREMIUM_FISH_MIND, // Ȯ - PREMIUM_MARRIAGE_FAST, // ݽ մϴ. - PREMIUM_GOLD, // 1.5 + PREMIUM_EXP, // 경험치가 1.2배 + PREMIUM_ITEM, // 아이템 드롭율이 2배 + PREMIUM_SAFEBOX, // 창고가 1칸에서 3칸 + PREMIUM_AUTOLOOT, // 돈 자동 줍기 + PREMIUM_FISH_MIND, // 고급 물고기 낚일 확률 상승 + PREMIUM_MARRIAGE_FAST, // 금실 증가 양을 빠르게합니다. + PREMIUM_GOLD, // 돈 드롭율이 1.5배 PREMIUM_MAX_NUM = 9 }; @@ -660,10 +660,10 @@ enum SPECIAL_EFFECT SE_AUTO_HPUP, SE_AUTO_SPUP, - SE_EQUIP_RAMADAN_RING, // 󸶴 ʽ´ (71135) Ʈ (ߵƮ, Ʈ ƴ) - SE_EQUIP_HALLOWEEN_CANDY, // ҷ (-_-;) ߵϴ Ʈ - SE_EQUIP_HAPPINESS_RING, // ũ ູ (71143) Ʈ (ߵƮ, Ʈ ƴ) - SE_EQUIP_LOVE_PENDANT, // ߷Ÿ ҴƮ(71145) Ʈ (ߵƮ, Ʈ ƴ) + SE_EQUIP_RAMADAN_RING, // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) + SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트 + SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) + SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) } ; enum ETeenFlags @@ -678,10 +678,10 @@ enum ETeenFlags #include "item_length.h" -// inventory position Ÿ ü -// int Ͻ ȯ ִ , -// κ õ Լ window_type ʰ, cell ϳ ޾ұ ,( κ ϳ ̾ inventory type̶ ʿ ,) -// κ Լ ȣκ ϴ ϱ ??̴. +// inventory의 position을 나타내는 구조체 +// int와의 암시적 형변환이 있는 이유는, +// 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,) +// 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ??문이다. enum EDragonSoulRefineWindowSize { @@ -730,7 +730,7 @@ typedef struct SItemPos return cell < INVENTORY_AND_EQUIP_SLOT_MAX; case DRAGON_SOUL_INVENTORY: return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM); - // ũⰡ window valid üũ . + // 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다. case SAFEBOX: case MALL: return false; diff --git a/src/common/tables.h b/src/common/tables.h index e50b236..ebfc248 100644 --- a/src/common/tables.h +++ b/src/common/tables.h @@ -6,7 +6,7 @@ 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 { @@ -104,8 +104,8 @@ enum HEADER_GD_BILLING_CHECK = 106, HEADER_GD_MALL_LOAD = 107, - HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< û - HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< Ʈ û + HEADER_GD_MYSHOP_PRICELIST_UPDATE = 108, ///< 가격정보 갱신 요청 + HEADER_GD_MYSHOP_PRICELIST_REQ = 109, ///< 가격정보 리스트 요청 HEADER_GD_BLOCK_CHAT = 110, @@ -116,21 +116,21 @@ enum // END_OF_PCBANG_IP_LIST_BY_AUTH HEADER_GD_HAMMER_OF_TOR = 114, - HEADER_GD_RELOAD_ADMIN = 115, ///< û - HEADER_GD_BREAK_MARRIAGE = 116, ///< ȥ ı - HEADER_GD_ELECT_MONARCH = 117, ///< ǥ - HEADER_GD_CANDIDACY = 118, ///< - HEADER_GD_ADD_MONARCH_MONEY = 119, ///< - HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< - HEADER_GD_COME_TO_VOTE = 121, ///< ǥ - HEADER_GD_RMCANDIDACY = 122, ///< ĺ () - HEADER_GD_SETMONARCH = 123, ///<ּ () - HEADER_GD_RMMONARCH = 124, ///<ֻ + HEADER_GD_RELOAD_ADMIN = 115, ///<운영자 정보 요청 + HEADER_GD_BREAK_MARRIAGE = 116, ///< 결혼 파기 + HEADER_GD_ELECT_MONARCH = 117, ///< 군주 투표 + HEADER_GD_CANDIDACY = 118, ///< 군주 등록 + HEADER_GD_ADD_MONARCH_MONEY = 119, ///< 군주 돈 증가 + HEADER_GD_TAKE_MONARCH_MONEY = 120, ///< 군주 돈 감소 + HEADER_GD_COME_TO_VOTE = 121, ///< 표결 + HEADER_GD_RMCANDIDACY = 122, ///< 후보 제거 (운영자) + HEADER_GD_SETMONARCH = 123, ///<군주설정 (운영자) + HEADER_GD_RMMONARCH = 124, ///<군주삭제 HEADER_GD_DEC_MONARCH_MONEY = 125, HEADER_GD_CHANGE_MONARCH_LORD = 126, - HEADER_GD_BLOCK_COUNTRY_IP = 127, // 뿪 IP-Block - HEADER_GD_BLOCK_EXCEPTION = 128, // 뿪 IP-Block + HEADER_GD_BLOCK_COUNTRY_IP = 127, // 광대역 IP-Block + HEADER_GD_BLOCK_EXCEPTION = 128, // 광대역 IP-Block 예외 HEADER_GD_REQ_CHANGE_GUILD_MASTER = 129, @@ -139,7 +139,7 @@ enum HEADER_GD_UPDATE_HORSE_NAME = 131, HEADER_GD_REQ_HORSE_NAME = 132, - HEADER_GD_DC = 133, // Login Key + HEADER_GD_DC = 133, // Login Key를 지움 HEADER_GD_VALID_LOGOUT = 134, @@ -257,23 +257,23 @@ enum HEADER_DG_WEDDING_START = 155, HEADER_DG_WEDDING_END = 156, - HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< Ʈ - HEADER_DG_RELOAD_ADMIN = 158, ///<  ε - HEADER_DG_BREAK_MARRIAGE = 159, ///< ȥ ı - HEADER_DG_ELECT_MONARCH = 160, ///< ǥ - HEADER_DG_CANDIDACY = 161, ///< - HEADER_DG_ADD_MONARCH_MONEY = 162, ///< - HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< - HEADER_DG_COME_TO_VOTE = 164, ///< ǥ - HEADER_DG_RMCANDIDACY = 165, ///< ĺ () - HEADER_DG_SETMONARCH = 166, ///<ּ () - HEADER_DG_RMMONARCH = 167, ///<ֻ + HEADER_DG_MYSHOP_PRICELIST_RES = 157, ///< 가격정보 리스트 응답 + HEADER_DG_RELOAD_ADMIN = 158, ///< 운영자 정보 리로드 + HEADER_DG_BREAK_MARRIAGE = 159, ///< 결혼 파기 + HEADER_DG_ELECT_MONARCH = 160, ///< 군주 투표 + HEADER_DG_CANDIDACY = 161, ///< 군주 등록 + HEADER_DG_ADD_MONARCH_MONEY = 162, ///< 군주 돈 증가 + HEADER_DG_TAKE_MONARCH_MONEY = 163, ///< 군주 돈 감소 + HEADER_DG_COME_TO_VOTE = 164, ///< 표결 + HEADER_DG_RMCANDIDACY = 165, ///< 후보 제거 (운영자) + HEADER_DG_SETMONARCH = 166, ///<군주설정 (운영자) + HEADER_DG_RMMONARCH = 167, ///<군주삭제 HEADER_DG_DEC_MONARCH_MONEY = 168, HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169, HEADER_DG_UPDATE_MONARCH_INFO = 170, - HEADER_DG_BLOCK_COUNTRY_IP = 171, // 뿪 IP-Block - HEADER_DG_BLOCK_EXCEPTION = 172, // 뿪 IP-Block account + HEADER_DG_BLOCK_COUNTRY_IP = 171, // 광대역 IP-Block + HEADER_DG_BLOCK_EXCEPTION = 172, // 광대역 IP-Block 예외 account HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173, @@ -364,7 +364,7 @@ typedef struct SPlayerItem DWORD count; DWORD vnum; - LONG alSockets[ITEM_SOCKET_MAX_NUM]; // Ϲȣ + LONG alSockets[ITEM_SOCKET_MAX_NUM]; // 소켓번호 TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; @@ -572,9 +572,9 @@ typedef struct SShopItemTable DWORD vnum; BYTE count; - TItemPos pos; // PC ̿ - DWORD price; // PC, shop_table_ex.txt ̿ - BYTE display_pos; // PC, shop_table_ex.txt ̿, ġ. + TItemPos pos; // PC 상점에만 이용 + DWORD price; // PC, shop_table_ex.txt 상점에만 이용 + BYTE display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치. } TShopItemTable; typedef struct SShopTable @@ -638,12 +638,12 @@ typedef struct SItemTable : public SEntityTable BYTE bSpecular; BYTE bGainSocketPct; - WORD sAddonType; // ⺻ Ӽ + WORD sAddonType; // 기본 속성 - // Ʒ limit flag realtime üũ , VNUM ε, - // Ź ۸ ʿ 쿡 LIMIT_MAX_NUM 鼭 üũϴ ϰ Ŀ ̸ . - char cLimitRealTimeFirstUseIndex; // limit ʵ尪 ߿ LIMIT_REAL_TIME_FIRST_USE ÷ ġ ( -1) - char cLimitTimerBasedOnWearIndex; // limit ʵ尪 ߿ LIMIT_TIMER_BASED_ON_WEAR ÷ ġ ( -1) + // 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데, + // 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠. + char cLimitRealTimeFirstUseIndex; // 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1) + char cLimitTimerBasedOnWearIndex; // 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1) } TItemTable; @@ -681,7 +681,7 @@ typedef struct SPlayerLoadPacket { DWORD account_id; DWORD player_id; - BYTE account_index; /* account ġ */ + BYTE account_index; /* account 에서의 위치 */ } TPlayerLoadPacket; typedef struct SPlayerCreatePacket @@ -758,9 +758,9 @@ typedef struct SEmpireSelectPacket typedef struct SPacketGDSetup { char szPublicIP[16]; // Public IP which listen to users - BYTE bChannel; // ä - WORD wListenPort; // Ŭ̾Ʈ ϴ Ʈ ȣ - WORD wP2PPort; // Ű P2P Ʈ ȣ + BYTE bChannel; // 채널 + WORD wListenPort; // 클라이언트가 접속하는 포트 번호 + WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호 LONG alMaps[MAP_ALLOW_MAX_LEN]; DWORD dwLoginCount; BYTE bAuthServer; @@ -938,8 +938,8 @@ typedef struct SPacketGuildWar LONG lInitialScore; } TPacketGuildWar; -// Game -> DB : ȭ -// DB -> Game : Ż +// Game -> DB : 상대적 변화값 +// DB -> Game : 토탈된 최종값 typedef struct SPacketGuildWarScore { DWORD dwGuildGainPoint; @@ -960,8 +960,8 @@ typedef struct SRefineTable //DWORD result_vnum; DWORD id; BYTE material_count; - DWORD cost; // ҿ - DWORD prob; // Ȯ + DWORD cost; // 소요 비용 + DWORD prob; // 확률 TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM]; } TRefineTable; @@ -1046,14 +1046,14 @@ typedef struct SPacketGDLoginByKey } TPacketGDLoginByKey; /** - * @version 05/06/08 Bang2ni - ӽð ߰ + * @version 05/06/08 Bang2ni - 지속시간 추가 */ typedef struct SPacketGiveGuildPriv { BYTE type; DWORD value; DWORD guild_id; - time_t duration_sec; ///< ӽð + time_t duration_sec; ///< 지속시간 } TPacketGiveGuildPriv; typedef struct SPacketGiveEmpirePriv { @@ -1088,7 +1088,7 @@ typedef struct SPacketDGChangeCharacterPriv } TPacketDGChangeCharacterPriv; /** - * @version 05/06/08 Bang2ni - ӽð ߰ + * @version 05/06/08 Bang2ni - 지속시간 추가 */ typedef struct SPacketDGChangeGuildPriv { @@ -1096,7 +1096,7 @@ typedef struct SPacketDGChangeGuildPriv DWORD value; DWORD guild_id; BYTE bLog; - time_t end_time_sec; ///< ӽð + time_t end_time_sec; ///< 지속시간 } TPacketDGChangeGuildPriv; typedef struct SPacketDGChangeEmpirePriv @@ -1277,27 +1277,27 @@ typedef struct DWORD dwPID2; } TPacketWeddingEnd; -/// λ . Ŷ ڿ byCount ŭ TItemPriceInfo ´. +/// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다. typedef struct SPacketMyshopPricelistHeader { - DWORD dwOwnerID; ///< ÷̾ ID - BYTE byCount; ///< + DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID + BYTE byCount; ///< 가격정보 갯수 } TPacketMyshopPricelistHeader; -/// λ ۿ +/// 개인상점의 단일 아이템에 대한 가격정보 typedef struct SItemPriceInfo { - DWORD dwVnum; ///< vnum - DWORD dwPrice; ///< + DWORD dwVnum; ///< 아이템 vnum + DWORD dwPrice; ///< 가격 } TItemPriceInfo; -/// λ Ʈ ̺ +/// 개인상점 아이템 가격정보 리스트 테이블 typedef struct SItemPriceListTable { - DWORD dwOwnerID; ///< ÷̾ ID - BYTE byCount; ///< Ʈ + DWORD dwOwnerID; ///< 가격정보를 가진 플레이어 ID + BYTE byCount; ///< 가격정보 리스트의 갯수 - TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< Ʈ + TItemPriceInfo aPriceInfo[SHOP_PRICELIST_MAX_NUM]; ///< 가격정보 리스트 } TItemPriceListTable; typedef struct @@ -1318,12 +1318,12 @@ typedef struct SPacketPCBangIP //ADMIN_MANAGER typedef struct TAdminInfo { - DWORD m_ID; //ID - char m_szAccount[32]; // - char m_szName[32]; //ij̸ - char m_szContactIP[16]; //پ - char m_szServerIP[16]; // - DWORD m_Authority; // + DWORD m_ID; //고유ID + char m_szAccount[32]; //계정 + char m_szName[32]; //캐릭터이름 + char m_szContactIP[16]; //접근아이피 + char m_szServerIP[16]; //서버아이피 + DWORD m_Authority; //권한 } tAdminInfo; //END_ADMIN_MANAGER @@ -1344,20 +1344,20 @@ typedef struct SPacketReloadAdmin typedef struct TMonarchInfo { - DWORD pid[4]; // PID - int64_t money[4]; // - char name[4][32]; // ̸ - char date[4][32]; // ¥ + DWORD pid[4]; // 군주의 PID + int64_t money[4]; // 군주의 별개 돈 + char name[4][32]; // 군주의 이름 + char date[4][32]; // 군주 등록 날짜 } MonarchInfo; typedef struct TMonarchElectionInfo { - DWORD pid; // ǥ ѻ PID - DWORD selectedpid; // ǥ PID ( ) - char date[32]; // ǥ ¥ + DWORD pid; // 투표 한사람 PID + DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 ) + char date[32]; // 투표 날짜 } MonarchElectionInfo; -// ⸶ +// 군주 출마자 typedef struct tMonarchCandidacy { DWORD pid; @@ -1429,14 +1429,14 @@ typedef struct tNeedLoginLogInfo DWORD dwPlayerID; } TPacketNeedLoginLogInfo; -// ˸ ׽Ʈ Ŷ +//독일 선물 알림 기능 테스트용 패킷 정보 typedef struct tItemAwardInformer { char login[LOGIN_MAX_LEN + 1]; - char command[20]; //ɾ - DWORD vnum; // + char command[20]; //명령어 + DWORD vnum; //아이템 } TPacketItemAwardInfromer; -// ˸ Ŷ +// 선물 알림 기능 삭제용 패킷 정보 typedef struct tDeleteAwardID { DWORD dwID;