From 82317e6c4d02b873a8311b3467b0de06948c4e8d Mon Sep 17 00:00:00 2001 From: sdgmt2 Date: Mon, 1 Apr 2024 12:39:34 +0200 Subject: [PATCH] fix game header encoding --- src/game/src/DragonSoul.h | 20 +- src/game/src/MarkImage.h | 14 +- src/game/src/MarkManager.h | 8 +- src/game/src/OXEvent.h | 8 +- src/game/src/PetSystem.h | 32 +- src/game/src/SpeedServer.h | 10 +- src/game/src/TrafficProfiler.h | 58 ++-- src/game/src/affect.h | 80 ++--- src/game/src/auction_manager.h | 10 +- src/game/src/battle.h | 4 +- src/game/src/belt_inventory_helper.h | 18 +- src/game/src/buff_on_attributes.h | 20 +- src/game/src/castle.h | 30 +- src/game/src/char.h | 434 +++++++++++++-------------- src/game/src/char_manager.h | 12 +- src/game/src/cmd.h | 10 +- src/game/src/config.h | 6 +- src/game/src/constants.h | 4 +- src/game/src/cube.h | 4 +- src/game/src/db.h | 6 +- src/game/src/desc.h | 14 +- src/game/src/dungeon.h | 14 +- src/game/src/entity.h | 2 +- src/game/src/event.h | 12 +- src/game/src/exchange.h | 2 +- src/game/src/group_text_parse_tree.h | 10 +- src/game/src/guild.h | 56 ++-- src/game/src/horse_rider.h | 6 +- src/game/src/input.h | 10 +- src/game/src/item.h | 60 ++-- src/game/src/item_manager.h | 62 ++-- src/game/src/messenger_manager.h | 4 +- src/game/src/mob_manager.h | 8 +- src/game/src/monarch.h | 8 +- src/game/src/motion.h | 68 ++--- src/game/src/p2p.h | 8 +- src/game/src/packet.h | 82 ++--- src/game/src/party.h | 16 +- src/game/src/priv_manager.h | 22 +- src/game/src/pvp.h | 10 +- src/game/src/questmanager.h | 6 +- src/game/src/questnpc.h | 6 +- src/game/src/questpc.h | 12 +- src/game/src/refine.h | 4 +- src/game/src/sectree.h | 8 +- src/game/src/sectree_manager.h | 66 ++-- src/game/src/shop.h | 20 +- src/game/src/shopEx.h | 10 +- src/game/src/skill.h | 228 +++++++------- src/game/src/skill_power.h | 10 +- src/game/src/target.h | 4 +- src/game/src/unique_item.h | 18 +- src/game/src/war_map.h | 6 +- src/game/src/xmas_event.h | 4 +- 54 files changed, 832 insertions(+), 832 deletions(-) diff --git a/src/game/src/DragonSoul.h b/src/game/src/DragonSoul.h index b7e5e35..44db655 100644 --- a/src/game/src/DragonSoul.h +++ b/src/game/src/DragonSoul.h @@ -16,23 +16,23 @@ public: bool ReadDragonSoulTableFile(const char * c_pszFileName); void GetDragonSoulInfo(DWORD dwVnum, OUT BYTE& bType, OUT BYTE& bGrade, OUT BYTE& bStep, OUT BYTE& bRefine) const; - // fixme : titempos + // fixme : titempos로 WORD GetBasePosition(const LPITEM pItem) const; bool IsValidCellForThisItem(const LPITEM pItem, const TItemPos& Cell) const; int GetDuration(const LPITEM pItem) const; - // ȥ ޾Ƽ Ư ϴ Լ + // 용혼석을 받아서 특정 용심을 추출하는 함수 bool ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtractor = NULL); - // Ư ȥ(pItem) â θ ϰ, - // н λ깰 ִ Լ.(λ깰 dragon_soul_table.txt ) - // DestCell invalid , ȥ ڵ ߰. - // , ȥ(pItem) delete. - // ִٸ Ȯ pExtractor->GetValue(0)%ŭ . - // λ깰 ڵ ߰. + // 특정 용혼석(pItem)을 장비창에서 제거할 때에 성공 여부를 결정하고, + // 실패시 부산물을 주는 함수.(부산물은 dragon_soul_table.txt에 정의) + // DestCell에 invalid한 값을 넣으면 성공 시, 용혼석을 빈 공간에 자동 추가. + // 실패 시, 용혼석(pItem)은 delete됨. + // 추출아이템이 있다면 추출 성공 확률이 pExtractor->GetValue(0)%만큼 증가함. + // 부산물은 언제나 자동 추가. bool PullOut(LPCHARACTER ch, TItemPos DestCell, IN OUT LPITEM& pItem, LPITEM pExtractor = NULL); - // ȥ ׷̵ Լ + // 용혼석 업그레이드 함수 bool DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); bool DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); bool DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); @@ -47,7 +47,7 @@ public: private: void SendRefineResultPacket(LPCHARACTER ch, BYTE bSubHeader, const TItemPos& pos); - // ij ȥ 캸, Ȱȭ ȥ ٸ, ij ȥ Ȱ ¸ off Ű Լ. + // 캐릭터의 용혼석 덱을 살펴보고, 활성화 된 용혼석이 없다면, 캐릭터의 용혼석 활성 상태를 off 시키는 함수. void RefreshDragonSoulState(LPCHARACTER ch); DWORD MakeDragonSoulVnum(BYTE bType, BYTE grade, BYTE step, BYTE refine); diff --git a/src/game/src/MarkImage.h b/src/game/src/MarkImage.h index c12b591..bb32da6 100644 --- a/src/game/src/MarkImage.h +++ b/src/game/src/MarkImage.h @@ -16,7 +16,7 @@ struct SGuildMark }; /////////////////////////////////////////////////////////////////////////////// - Pixel m_apxBuf[SIZE]; // ̹ + Pixel m_apxBuf[SIZE]; // 실제 이미지 /////////////////////////////////////////////////////////////////////////////// void Clear(); @@ -38,11 +38,11 @@ struct SGuildMarkBlock }; /////////////////////////////////////////////////////////////////////////////// - Pixel m_apxBuf[SIZE]; // ̹ + Pixel m_apxBuf[SIZE]; // 실제 이미지 - BYTE m_abCompBuf[MAX_COMP_SIZE]; // - lzo_uint m_sizeCompBuf; // ũ - DWORD m_crc; // CRC + BYTE m_abCompBuf[MAX_COMP_SIZE]; // 압축된 데이터 + lzo_uint m_sizeCompBuf; // 압축된 크기 + DWORD m_crc; // 압축된 데이터의 CRC /////////////////////////////////////////////////////////////////////////////// DWORD GetCRC() const; @@ -87,9 +87,9 @@ class CGuildMarkImage bool SaveMark(DWORD posMark, BYTE * pbMarkImage); bool DeleteMark(DWORD posMark); - bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // -> Ŭ̾Ʈ + bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // 서버 -> 클라이언트 - DWORD GetEmptyPosition(); // ũ ġ ´. + DWORD GetEmptyPosition(); // 빈 마크 위치를 얻는다. void GetBlockCRCList(DWORD * crcList); void GetDiffBlocks(const DWORD * crcList, std::map & mapDiffBlocks); diff --git a/src/game/src/MarkManager.h b/src/game/src/MarkManager.h index f8fa142..90df057 100644 --- a/src/game/src/MarkManager.h +++ b/src/game/src/MarkManager.h @@ -32,11 +32,11 @@ class CGuildMarkManager : public singleton // void SetMarkPathPrefix(const char * prefix); - bool LoadMarkIndex(); // ũ ε ҷ ( ) - bool SaveMarkIndex(); // ũ ε ϱ + bool LoadMarkIndex(); // 마크 인덱스 불러오기 (서버에서만 사용) + bool SaveMarkIndex(); // 마크 인덱스 저장하기 - void LoadMarkImages(); // ũ ̹ ҷ - void SaveMarkImage(DWORD imgIdx); // ũ ̹ + void LoadMarkImages(); // 모든 마크 이미지를 불러오기 + void SaveMarkImage(DWORD imgIdx); // 마크 이미지 저장 bool GetMarkImageFilename(DWORD imgIdx, std::string & path) const; bool AddMarkIDByGuildID(DWORD guildID, DWORD markID); diff --git a/src/game/src/OXEvent.h b/src/game/src/OXEvent.h index c6d716e..a23b28f 100644 --- a/src/game/src/OXEvent.h +++ b/src/game/src/OXEvent.h @@ -10,10 +10,10 @@ struct tag_Quiz enum OXEventStatus { - OXEVENT_FINISH = 0, // OX̺Ʈ - OXEVENT_OPEN = 1, // OX̺Ʈ ۵. (20012) ؼ 尡 - OXEVENT_CLOSE = 2, // OX̺Ʈ . (20012) ܵ - OXEVENT_QUIZ = 3, //  . + OXEVENT_FINISH = 0, // OX이벤트가 완전히 끝난 상태 + OXEVENT_OPEN = 1, // OX이벤트가 시작됨. 을두지(20012)를 통해서 입장가능 + OXEVENT_CLOSE = 2, // OX이벤트의 참가가 끝남. 을두지(20012)를 통한 입장이 차단됨 + OXEVENT_QUIZ = 3, // 퀴즈를 출제함. OXEVENT_ERR = 0xff }; diff --git a/src/game/src/PetSystem.h b/src/game/src/PetSystem.h index 6348403..eda5bdd 100644 --- a/src/game/src/PetSystem.h +++ b/src/game/src/PetSystem.h @@ -4,7 +4,7 @@ class CHARACTER; -// TODO: μ ɷġ? ģе, Ÿ... ġ +// TODO: 펫으로서의 능력치? 라던가 친밀도, 배고픔 기타등등... 수치 struct SPetAbility { }; @@ -34,8 +34,8 @@ protected: virtual bool Update(DWORD deltaTime); protected: - virtual bool _UpdateFollowAI(); ///< ٴϴ AI ó - virtual bool _UpdatAloneActionAI(float fMinDist, float fMaxDist); ///< ó ȥ AI ó + virtual bool _UpdateFollowAI(); ///< 주인을 따라다니는 AI 처리 + virtual bool _UpdatAloneActionAI(float fMinDist, float fMaxDist); ///< 주인 근처에서 혼자 노는 AI 처리 /// @TODO //virtual bool _UpdateCombatAI(); @@ -62,13 +62,13 @@ public: bool IsSummoned() const { return 0 != m_pkChar; } void SetSummonItem (LPITEM pItem); DWORD GetSummonItemVID () { return m_dwSummonItemVID; } - // ִ Լ ŵδ Լ. - // ̰ Ѱ, , - // POINT_MOV_SPEED, POINT_ATT_SPEED, POINT_CAST_SPEED PointChange() Լ Ἥ ҿ °, - // PointChange() Ŀ 𼱰 ComputePoints() ϸ ϴ ʱȭǰ, - // , ComputePoints() θ Ŭ POINT ʴ´ٴ Ŵ. - // ׷ ִ ComputePoints() ο petsystem->RefreshBuff() θ Ͽ, - // ClearBuff() θ, ComputePoints ϴ Ѵ. + // 버프 주는 함수와 거두는 함수. + // 이게 좀 괴랄한게, 서버가 ㅄ라서, + // POINT_MOV_SPEED, POINT_ATT_SPEED, POINT_CAST_SPEED는 PointChange()란 함수만 써서 변경해 봐야 소용이 없는게, + // PointChange() 이후에 어디선가 ComputePoints()를 하면 싹다 초기화되고, + // 더 웃긴건, ComputePoints()를 부르지 않으면 클라의 POINT는 전혀 변하지 않는다는 거다. + // 그래서 버프를 주는 것은 ComputePoints() 내부에서 petsystem->RefreshBuff()를 부르도록 하였고, + // 버프를 빼는 것은 ClearBuff()를 부르고, ComputePoints를 하는 것으로 한다. void GiveBuff(); void ClearBuff(); @@ -87,7 +87,7 @@ private: LPCHARACTER m_pkChar; // Instance of pet(CHARACTER) LPCHARACTER m_pkOwner; -// SPetAbility m_petAbility; // ɷġ +// SPetAbility m_petAbility; // 능력치 }; /** @@ -95,7 +95,7 @@ private: class CPetSystem { public: - typedef std::unordered_map TPetActorMap; /// map. ( ijͰ vnum ..??) + typedef std::unordered_map TPetActorMap; /// map. (한 캐릭터가 같은 vnum의 펫을 여러개 가질 일이 있을까..??) public: CPetSystem(LPCHARACTER owner); @@ -107,7 +107,7 @@ public: bool Update(DWORD deltaTime); void Destroy(); - size_t CountSummoned() const; ///< ȯ(üȭ ijͰ ִ) + size_t CountSummoned() const; ///< 현재 소환된(실체화 된 캐릭터가 있는) 펫의 개수 public: void SetUpdatePeriod(DWORD ms); @@ -117,7 +117,7 @@ public: void Unsummon(DWORD mobVnum, bool bDeleteFromList = false); void Unsummon(CPetActor* petActor, bool bDeleteFromList = false); - // TODO: ¥ ý  . (ijͰ ߰ ...) + // TODO: 진짜 펫 시스템이 들어갈 때 구현. (캐릭터가 보유한 펫의 정보를 추가할 때 라던가...) CPetActor* AddPet(DWORD mobVnum, const char* petName, const SPetAbility& ability, DWORD options = CPetActor::EPetOption_Followable | CPetActor::EPetOption_Summonable | CPetActor::EPetOption_Combatable); void DeletePet(DWORD mobVnum); @@ -126,8 +126,8 @@ public: private: TPetActorMap m_petActorMap; - LPCHARACTER m_pkOwner; ///< ý Owner - DWORD m_dwUpdatePeriod; ///< Ʈ ֱ (ms) + LPCHARACTER m_pkOwner; ///< 펫 시스템의 Owner + DWORD m_dwUpdatePeriod; ///< 업데이트 주기 (ms단위) DWORD m_dwLastUpdateTime; LPEVENT m_pkPetSystemUpdateEvent; }; diff --git a/src/game/src/SpeedServer.h b/src/game/src/SpeedServer.h index f4f61e6..eee5a90 100644 --- a/src/game/src/SpeedServer.h +++ b/src/game/src/SpeedServer.h @@ -4,11 +4,11 @@ #include #include -// castle.cpp ִ Ͽ -#define EMPIRE_NONE 0 // ƹ ƴ -#define EMPIRE_RED 1 // ż -#define EMPIRE_YELLOW 2 // õ -#define EMPIRE_BLUE 3 // +// castle.cpp 에 있는 것을 복붙 하였다 +#define EMPIRE_NONE 0 // 아무국가 아님 +#define EMPIRE_RED 1 // 신수 +#define EMPIRE_YELLOW 2 // 천조 +#define EMPIRE_BLUE 3 // 진노 class HME { diff --git a/src/game/src/TrafficProfiler.h b/src/game/src/TrafficProfiler.h index 50aaf20..80aa37b 100644 --- a/src/game/src/TrafficProfiler.h +++ b/src/game/src/TrafficProfiler.h @@ -12,17 +12,17 @@ /** * @class TrafficProfiler - * @brief Network I/O traffic Ŷ ϴ profiler. + * @brief Network I/O traffic 을 패킷 단위로 측정하는 profiler. * @author Bang2ni * @version 05/07/07 Bang2ni - First release. * - * ð Network I/O traffic Ŷ ϰ, Text file · ۼѴ. + * 시간대 별로 Network I/O 의 traffic 을 패킷 단위로 측정하고, Text file 형태로 보고서를 작성한다. */ class TrafficProfiler : public singleton< TrafficProfiler > { public: - /// I/O + /// I/O 방향 enum IODirection { IODIR_INPUT = 0, ///< Input IODIR_OUTPUT, ///< Output @@ -37,25 +37,25 @@ class TrafficProfiler : public singleton< TrafficProfiler > /// Destructor ~TrafficProfiler( void ); - /// Profiling ʿ ʱȭ Ѵ. + /// Profiling 에 필요한 초기화를 한다. /** - * @param [in] dwFlushCycle Flush ֱ. ̴. - * @param [in] pszLogFileName Profiling log file ̸ - * @return false profiling log file open ߴ. + * @param [in] dwFlushCycle Flush 주기. 초 단위이다. + * @param [in] pszLogFileName Profiling log file 의 이름 + * @return false 일 경우 profiling log file 을 open 하지 못했다. * - * profiling log file open() Ѵ. + * profiling log file 을 open(생성) 한다. */ bool Initialize( DWORD dwFlushCycle, const char* pszLogFileName ); - /// Profiling ۵ưų Packet Report Ѵ. + /// Profiling 을 위해 전송됐거나 전송 할 Packet 을 Report 한다. /** - * @param [in] dir Profiling Packet - * @param [in] byHeader Packet - * @param [in] dwSize Packet size - * @return Initialize ʾҴٸ false ȯѴ. + * @param [in] dir Profiling 할 Packet 의 방향 + * @param [in] byHeader Packet 헤더 + * @param [in] dwSize Packet 의 총 size + * @return Initialize 되지 않았다면 false 를 반환한다. * - * Packet شϴ size Ų. - * Initialize ij ֱ Flush Ŀ Flush ֱ ŭ ð 帥 ȣȴٸ Report Flush Ѵ. + * Packet 에 해당하는 size 를 누적시킨다. + * Initialize 이후나 최근 Flush 된 이후에 Flush 주기 만큼 시간이 흐른 후 호출된다면 Report 이후 Flush 한다. */ bool Report( IODirection dir, BYTE byHeader, DWORD dwSize ) { @@ -65,22 +65,22 @@ class TrafficProfiler : public singleton< TrafficProfiler > return true; } - /// Report Ͽ . + /// 현재까지 Report 된 내용을 파일에 쓴다. /** - * @return Initialize ʾҴ. + * @return Initialize 되지 않았다. */ bool Flush( void ); private: - /// Profling õ variables ʱȭ Ѵ. + /// Profling 에 관련된 variables 를 초기화 한다. void InitializeProfiling( void ); - /// Report Packet traffic Ѵ. + /// Report 된 Packet 의 traffic 를 계산한다. /** - * @param [in] dir Profiling Packet - * @param [in] byHeader Packet - * @param [in] dwSize Packet size + * @param [in] dir Profiling 할 Packet 의 방향 + * @param [in] byHeader Packet 헤더 + * @param [in] dwSize Packet 의 총 size */ void ComputeTraffic( IODirection dir, BYTE byHeader, DWORD dwSize ) { @@ -96,8 +96,8 @@ class TrafficProfiler : public singleton< TrafficProfiler > /// Traffic info type. /** - * first: size - * second: packet ۵ Ƚ + * first: 누적된 총 size + * second: 이 packet 이 전송된 횟수 */ typedef std::pair< DWORD, DWORD > TrafficInfo; @@ -105,11 +105,11 @@ class TrafficProfiler : public singleton< TrafficProfiler > typedef std::vector< TrafficInfo > TrafficVec; FILE* m_pfProfileLogFile; ///< Profile log file pointer - DWORD m_dwFlushCycle; ///< Flush ֱ - time_t m_tmProfileStartTime; ///< ð. Flush Update ȴ. - DWORD m_dwTotalTraffic; ///< Report Traffic 뷮 - DWORD m_dwTotalPacket; ///< Report Packet - TrafficVec m_aTrafficVec[ IODIR_MAX ]; ///< Report Traffic vector 迭. ⸶ vector . + DWORD m_dwFlushCycle; ///< Flush 주기 + time_t m_tmProfileStartTime; ///< 프로파일을 시작한 시간. Flush 될 때마다 Update 된다. + DWORD m_dwTotalTraffic; ///< Report 된 총 Traffic 용량 + DWORD m_dwTotalPacket; ///< Report 된 총 Packet 수 + TrafficVec m_aTrafficVec[ IODIR_MAX ]; ///< Report 된 Traffic 을 저장할 vector의 배열. 각 방향마다 vector 를 가진다. }; #endif // _METIN_II_TRAFFICPROFILER_H_ diff --git a/src/game/src/affect.h b/src/game/src/affect.h index 90e610b..69cbefa 100644 --- a/src/game/src/affect.h +++ b/src/game/src/affect.h @@ -54,23 +54,23 @@ enum EAffectTypes AFFECT_DEF_GRADE, // 226 AFFECT_PREMIUM_START = 500, - AFFECT_EXP_BONUS = 500, // - AFFECT_ITEM_BONUS = 501, // 尩 + AFFECT_EXP_BONUS = 500, // 경험의 반지 + AFFECT_ITEM_BONUS = 501, // 도둑의 장갑 AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX, AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT, AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND, - AFFECT_MARRIAGE_FAST = 505, // - AFFECT_GOLD_BONUS = 506, // Ȯ 50% + AFFECT_MARRIAGE_FAST = 505, // 원앙의 깃털 + AFFECT_GOLD_BONUS = 506, // 돈 드롭확률 50%증가 AFFECT_PREMIUM_END = 509, - AFFECT_MALL = 510, // Ʈ - AFFECT_NO_DEATH_PENALTY = 511, // ȣ (ġ гƼ ѹ ش) - AFFECT_SKILL_BOOK_BONUS = 512, // (å Ȯ 50% ) - AFFECT_SKILL_NO_BOOK_DELAY = 513, // ־ȼ + AFFECT_MALL = 510, // 몰 아이템 에펙트 + AFFECT_NO_DEATH_PENALTY = 511, // 용신의 가호 (경험치가 패널티를 한번 막아준다) + AFFECT_SKILL_BOOK_BONUS = 512, // 선인의 교훈 (책 수련 성공 확률이 50% 증가) + AFFECT_SKILL_NO_BOOK_DELAY = 513, // 주안술서 - AFFECT_HAIR = 514, // ȿ - AFFECT_COLLECT = 515, //Ʈ - AFFECT_EXP_BONUS_EURO_FREE = 516, // ( 14 ⺻ ȿ) + AFFECT_HAIR = 514, // 헤어 효과 + AFFECT_COLLECT = 515, //수집퀘스트 + AFFECT_EXP_BONUS_EURO_FREE = 516, // 경험의 반지 (유럽 버전 14 레벨 이하 기본 효과) AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517, AFFECT_UNIQUE_ABILITY = 518, @@ -121,8 +121,8 @@ enum EAffectBits AFF_SLOW, AFF_STUN, - AFF_DUNGEON_READY, // غ - AFF_DUNGEON_UNIQUE, // ũ (Ŭ̾Ʈ ø) + AFF_DUNGEON_READY, // 던전에서 준비 상태 + AFF_DUNGEON_UNIQUE, // 던전 유니크 (클라이언트에서 컬링되지않음) AFF_BUILDING_CONSTRUCTION_SMALL, AFF_BUILDING_CONSTRUCTION_LARGE, @@ -133,34 +133,34 @@ enum EAffectBits AFF_FISH_MIND, - AFF_JEONGWIHON, // ȥ - AFF_GEOMGYEONG, // ˰ - AFF_CHEONGEUN, // õ - AFF_GYEONGGONG, // - AFF_EUNHYUNG, // - AFF_GWIGUM, // Ͱ - AFF_TERROR, // - AFF_JUMAGAP, // ָ - AFF_HOSIN, // ȣ - AFF_BOHO, // ȣ - AFF_KWAESOK, // - AFF_MANASHIELD, // - AFF_MUYEONG, // affect - AFF_REVIVE_INVISIBLE, // Ȱ õ - AFF_FIRE, // - AFF_GICHEON, // õ - AFF_JEUNGRYEOK, // ¼ - AFF_TANHWAN_DASH, // źȯݿ ޸Ʈ - AFF_PABEOP, // Ĺ - AFF_CHEONGEUN_WITH_FALL, // õ + AFF_JEONGWIHON, // 전귀혼 + AFF_GEOMGYEONG, // 검경 + AFF_CHEONGEUN, // 천근추 + AFF_GYEONGGONG, // 경공술 + AFF_EUNHYUNG, // 은형법 + AFF_GWIGUM, // 귀검 + AFF_TERROR, // 공포 + AFF_JUMAGAP, // 주마갑 + AFF_HOSIN, // 호신 + AFF_BOHO, // 보호 + AFF_KWAESOK, // 쾌속 + AFF_MANASHIELD, // 마나쉴드 + AFF_MUYEONG, // 무영진 affect + AFF_REVIVE_INVISIBLE, // 부활시 잠시동안 무적 + AFF_FIRE, // 지속 불 데미지 + AFF_GICHEON, // 기천대공 + AFF_JEUNGRYEOK, // 증력술 + AFF_TANHWAN_DASH, // 탄환격용 달리기어펙트 + AFF_PABEOP, // 파법술 + AFF_CHEONGEUN_WITH_FALL, // 천근추 AFF_POLYMORPH, AFF_WAR_FLAG1, AFF_WAR_FLAG2, AFF_WAR_FLAG3, AFF_CHINA_FIREWORK, - AFF_HAIR, // - AFF_GERMANY, // + AFF_HAIR, // 헤어 + AFF_GERMANY, // 독일 AFF_BITS_MAX }; @@ -170,11 +170,11 @@ extern void SendAffectAddPacket(LPDESC d, CAffect * pkAff); // AFFECT_DURATION_BUG_FIX enum AffectVariable { - // Affect Ѵ  ־ . - // ð ̱ ſ ū Ѵ븦 ķ̼. - //// 24Ʈ Ƿ 25Ʈ . - // ... 25Ʈ Ѵٰ س 29bit ϰ ִ û ̶ּ... - // collect quest ð 60 ϰ Ƿ, ⵵ 60 . + // Affect가 무한대로 들어가 있어야 할 경우 사용. + // 시간을 계속 줄이기 때문에 매우 큰값으로 무한대를 에뮬레이션함. + //// 24비트는 적으므로 25비트를 사용. + // ... 25비트 사용한다고 해놓고선 29bit 사용하고 있는 엄청난 주석이란... + // collect quest에서 무한 시간을 60년으로 사용하고 있으므로, 여기도 60년으로 하자. INFINITE_AFFECT_DURATION = 60 * 365 * 24 * 60 * 60 }; diff --git a/src/game/src/auction_manager.h b/src/game/src/auction_manager.h index 598f3a8..73f710e 100644 --- a/src/game/src/auction_manager.h +++ b/src/game/src/auction_manager.h @@ -63,7 +63,7 @@ private: TPCMap offer_map; - // sorting members + // sorting을 위한 members public: typedef std::vector TItemInfoVec; private: @@ -76,7 +76,7 @@ private: public: void SortedItemInfos (TItemInfoVec& vec, BYTE grade, BYTE category, int start_idx, BYTE size, BYTE order[5]); - // Լ. + // 나의 경매장을 위한 함수. void YourItemInfoList (TItemInfoVec& vec, DWORD player_id, int start_idx, BYTE size); }; @@ -131,7 +131,7 @@ private: typedef std::pair BidInfo; typedef std::map TItemMap; typedef std::unordered_map TMyBidBoard; - // bidder_id key + // bidder_id가 key TMyBidBoard pc_map; public: @@ -144,7 +144,7 @@ public: BidInfo GetMoney (DWORD player_id, DWORD item_id); bool Delete (DWORD player_id, DWORD item_id); - // ̹ . + // 이미 있으면 덮어 씌운다. void Insert (DWORD player_id, DWORD item_id, int money); void Lock (DWORD player_id, DWORD item_id); void UnLock (DWORD player_id, DWORD item_id); @@ -156,7 +156,7 @@ private : typedef std::unordered_map TItemMap; TItemMap auction_item_map; - // auction ϵ , ̺ Ե ʴ ϴ ͵ + // auction에 등록된 정보 중 가격, 등등 아이템 테이블에 포함되지 않는 정보들을 관리하는 것들 AuctionBoard Auction; SaleBoard Sale; WishBoard Wish; diff --git a/src/game/src/battle.h b/src/game/src/battle.h index abba2af..f265d39 100644 --- a/src/game/src/battle.h +++ b/src/game/src/battle.h @@ -3,7 +3,7 @@ #include "char.h" -enum EBattleTypes // +enum EBattleTypes // 상대방 기준 { BATTLE_NONE, BATTLE_DAMAGE, @@ -30,7 +30,7 @@ extern void NormalAttackAffect(LPCHARACTER pkAttacker, LPCHARACTER pkVictim); extern int battle_hit(LPCHARACTER ch, LPCHARACTER victim); -// Ư +// 특성 공격 inline void AttackAffect(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, BYTE att_point, diff --git a/src/game/src/belt_inventory_helper.h b/src/game/src/belt_inventory_helper.h index b3d8e20..5cacc58 100644 --- a/src/game/src/belt_inventory_helper.h +++ b/src/game/src/belt_inventory_helper.h @@ -13,7 +13,7 @@ public: { static TGradeUnit beltGradeByLevelTable[] = { - 0, // Ʈ+0 + 0, // 벨트+0 1, // +1 1, // +2 2, // +3 @@ -34,20 +34,20 @@ public: return beltGradeByLevelTable[level]; } - // Ʈ ,  ̿ ִ + // 현재 벨트 레벨을 기준으로, 어떤 셀들을 이용할 수 있는지 리턴 static const TGradeUnit* GetAvailableRuleTableByGrade() { /** - Ʈ +0 ~ +9 , 7ܰ еǾ κ丮 Ȱ ȭ ȴ. - Ʈ Ʒ ׸ . >= Ȱ ̸ . - (, 0̸ Ұ, ȣ ڴ ) + 벨트는 총 +0 ~ +9 레벨을 가질 수 있으며, 레벨에 따라 7단계 등급으로 구분되어 인벤토리가 활성 화 된다. + 벨트 레벨에 따른 사용 가능한 셀은 아래 그림과 같음. 현재 등급 >= 활성가능 등급이면 사용 가능. + (단, 현재 레벨이 0이면 무조건 사용 불가, 괄호 안의 숫자는 등급) 2(1) 4(2) 6(4) 8(6) 5(3) 5(3) 6(4) 8(6) 7(5) 7(5) 7(5) 8(6) 9(7) 9(7) 9(7) 9(7) - Ʈ κ丮 ũ 4x4 (16ĭ) + 벨트 인벤토리의 크기는 4x4 (16칸) */ static TGradeUnit availableRuleByGrade[BELT_INVENTORY_SLOT_COUNT] = { @@ -62,14 +62,14 @@ public: static bool IsAvailableCell(WORD cell, int beltGrade /*int beltLevel*/) { - // ȹ ٲ.. Ƴ... + // 기획 또 바뀜.. 아놔... //const TGradeUnit beltGrade = GetBeltGradeByRefineLevel(beltLevel); const TGradeUnit* ruleTable = GetAvailableRuleTableByGrade(); return ruleTable[cell] <= beltGrade; } - /// pc Ʈ κ丮 ϳ ϴ ˻ϴ Լ. + /// pc의 벨트 인벤토리에 아이템이 하나라도 존재하는 지 검사하는 함수. static bool IsExistItemInBeltInventory(LPCHARACTER pc) { for (WORD i = BELT_INVENTORY_SLOT_START; i < BELT_INVENTORY_SLOT_END; ++i) @@ -83,7 +83,7 @@ public: return false; } - /// item Ʈ κ丮  ִ Ÿ ˻ϴ Լ. ( Ģ ȹڰ ) + /// item이 벨트 인벤토리에 들어갈 수 있는 타입인지 검사하는 함수. (이 규칙은 기획자가 결정함) static bool CanMoveIntoBeltInventory(LPITEM item) { bool canMove = false; diff --git a/src/game/src/buff_on_attributes.h b/src/game/src/buff_on_attributes.h index ab88060..7e1ddef 100644 --- a/src/game/src/buff_on_attributes.h +++ b/src/game/src/buff_on_attributes.h @@ -9,20 +9,20 @@ public: CBuffOnAttributes(LPCHARACTER pOwner, BYTE m_point_type, std::vector * vec_buff_targets); ~CBuffOnAttributes(); - // ̸鼭, m_p_vec_buff_wear_targets شϴ , ش ȿ . + // 장착 중 이면서, m_p_vec_buff_wear_targets에 해당하는 아이템인 경우, 해당 아이템으로 인해 붙은 효과를 제거. void RemoveBuffFromItem(LPITEM pItem); - // m_p_vec_buff_wear_targets شϴ , ش attribute ȿ ߰. + // m_p_vec_buff_wear_targets에 해당하는 아이템인 경우, 해당 아이템의 attribute에 대한 효과 추가. void AddBuffFromItem(LPITEM pItem); - // m_bBuffValue ٲٰ, ٲ. + // m_bBuffValue를 바꾸고, 버프의 값도 바꿈. void ChangeBuffValue(BYTE bNewValue); - // CHRACTRE::ComputePoints Ӽġ ʱȭϰ ٽ ϹǷ, - // Ӽġ owner . + // CHRACTRE::ComputePoints에서 속성치를 초기화하고 다시 계산하므로, + // 버프 속성치들을 강제적으로 owner에게 줌. void GiveAllAttributes(); - // m_p_vec_buff_wear_targets شϴ attribute type ջϰ, - // attribute (m_bBuffValue)% ŭ . + // m_p_vec_buff_wear_targets에 해당하는 모든 아이템의 attribute를 type별로 합산하고, + // 그 attribute들의 (m_bBuffValue)% 만큼을 버프로 줌. bool On(BYTE bValue); - // , ʱȭ + // 버프 제거 후, 초기화 void Off(); void Initialize(); @@ -32,9 +32,9 @@ private: BYTE m_bBuffValue; std::vector * m_p_vec_buff_wear_targets; - // apply_type, apply_value + // apply_type, apply_value 페어의 맵 typedef std::map TMapAttr; - // m_p_vec_buff_wear_targets شϴ attribute type ջϿ . + // m_p_vec_buff_wear_targets에 해당하는 모든 아이템의 attribute를 type별로 합산하여 가지고 있음. TMapAttr m_map_additional_attrs; }; diff --git a/src/game/src/castle.h b/src/game/src/castle.h index b1439fd..58f2d82 100644 --- a/src/game/src/castle.h +++ b/src/game/src/castle.h @@ -9,36 +9,36 @@ #define _castle_h_ -#define MAX_CASTLE_GUARD_REGION 4 // ġ -#define MAX_CASTLE_GUARD_PER_REGION 10 // ġҼִ 񺴱׷ -#define MAX_CASTLE_FROG 20 // Ȳ β -#define MAX_CASTLE_TOWER 10 // ȭ ִ ȯ -#define MIN_CASTLE_TOWER 5 // ȭ ּ ȯ +#define MAX_CASTLE_GUARD_REGION 4 // 경비병 배치 구역 +#define MAX_CASTLE_GUARD_PER_REGION 10 // 한지역에 배치할수있는 경비병그룹 +#define MAX_CASTLE_FROG 20 // 황금 두꺼비 +#define MAX_CASTLE_TOWER 10 // 봉화 최대 소환 개수 +#define MIN_CASTLE_TOWER 5 // 봉화 최소 소환 개수 -#define CASTLE_FROG_PRICE 100000000 // Ȳݵβ (1) -#define CASTLE_FROG_VNUM 11505 // Ȳݵβ ȣ -//#define CASTLE_TOWER_VNUM 11506 // ȭ ȣ +#define CASTLE_FROG_PRICE 100000000 // 황금두꺼비 가격 (1억) +#define CASTLE_FROG_VNUM 11505 // 황금두꺼비 번호 +//#define CASTLE_TOWER_VNUM 11506 // 봉화 번호 #define IS_CASTLE_MAP(map) (181==(map)||182==(map)||(183)==(map)) //#define IS_CASTLE_TOWER(vnum) (11506==(vnum)||11507==(vnum)||11508==(vnum)||11509==(vnum) || 11510==(vnum)) enum CASTLE_STATE { - CASTLE_SIEGE_NONE, // ȭ - CASTLE_SIEGE_STRUGGLE, // - CASTLE_SIEGE_END // ߴٸ 1ð ȭ ִ. + CASTLE_SIEGE_NONE, // 평화모드 + CASTLE_SIEGE_STRUGGLE, // 공성중 + CASTLE_SIEGE_END // 수성에 성공했다면 1시간동안 봉화를 깰 수 있다. }; struct CASTLE_DATA { - LPCHARACTER frog[MAX_CASTLE_FROG]; // Ȳݵβ + LPCHARACTER frog[MAX_CASTLE_FROG]; // 황금두꺼비 - LPCHARACTER guard[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // - DWORD guard_group[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // + LPCHARACTER guard[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // 경비병 리더 + DWORD guard_group[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // 경비병 리더 - LPCHARACTER tower[MAX_CASTLE_TOWER]; // ȭ + LPCHARACTER tower[MAX_CASTLE_TOWER]; // 봉화 LPEVENT siege_event; LPEVENT stone_event; diff --git a/src/game/src/char.h b/src/game/src/char.h index 4fe039f..a4e810a 100644 --- a/src/game/src/char.h +++ b/src/game/src/char.h @@ -83,7 +83,7 @@ enum EDamageType DAMAGE_TYPE_NONE, DAMAGE_TYPE_NORMAL, DAMAGE_TYPE_NORMAL_RANGE, - //ų + //스킬 DAMAGE_TYPE_MELEE, DAMAGE_TYPE_RANGE, DAMAGE_TYPE_FIRE, @@ -105,103 +105,103 @@ enum EPointTypes POINT_MAX_HP, // 6 POINT_SP, // 7 POINT_MAX_SP, // 8 - POINT_STAMINA, // 9 ׹̳ - POINT_MAX_STAMINA, // 10 ִ ׹̳ + POINT_STAMINA, // 9 스테미너 + POINT_MAX_STAMINA, // 10 최대 스테미너 POINT_GOLD, // 11 - POINT_ST, // 12 ٷ - POINT_HT, // 13 ü - POINT_DX, // 14 ø - POINT_IQ, // 15 ŷ + POINT_ST, // 12 근력 + POINT_HT, // 13 체력 + POINT_DX, // 14 민첩성 + POINT_IQ, // 15 정신력 POINT_DEF_GRADE, // 16 ... - POINT_ATT_SPEED, // 17 ݼӵ - POINT_ATT_GRADE, // 18 ݷ MAX - POINT_MOV_SPEED, // 19 ̵ӵ - POINT_CLIENT_DEF_GRADE, // 20 - POINT_CASTING_SPEED, // 21 ֹӵ (ٿŸ*100) / (100 + ̰) = ٿ Ÿ - POINT_MAGIC_ATT_GRADE, // 22 ݷ - POINT_MAGIC_DEF_GRADE, // 23 - POINT_EMPIRE_POINT, // 24 - POINT_LEVEL_STEP, // 25 ܰ.. (1 2 3 , 4 Ǹ ) - POINT_STAT, // 26 ɷġ ø ִ - POINT_SUB_SKILL, // 27 ų Ʈ - POINT_SKILL, // 28 Ƽ ų Ʈ - POINT_WEAPON_MIN, // 29 ּ - POINT_WEAPON_MAX, // 30 ִ - POINT_PLAYTIME, // 31 ÷̽ð - POINT_HP_REGEN, // 32 HP ȸ - POINT_SP_REGEN, // 33 SP ȸ + POINT_ATT_SPEED, // 17 공격속도 + POINT_ATT_GRADE, // 18 공격력 MAX + POINT_MOV_SPEED, // 19 이동속도 + POINT_CLIENT_DEF_GRADE, // 20 방어등급 + POINT_CASTING_SPEED, // 21 주문속도 (쿨다운타임*100) / (100 + 이값) = 최종 쿨다운 타임 + POINT_MAGIC_ATT_GRADE, // 22 마법공격력 + POINT_MAGIC_DEF_GRADE, // 23 마법방어력 + POINT_EMPIRE_POINT, // 24 제국점수 + POINT_LEVEL_STEP, // 25 한 레벨에서의 단계.. (1 2 3 될 때 보상, 4 되면 레벨 업) + POINT_STAT, // 26 능력치 올릴 수 있는 개수 + POINT_SUB_SKILL, // 27 보조 스킬 포인트 + POINT_SKILL, // 28 액티브 스킬 포인트 + POINT_WEAPON_MIN, // 29 무기 최소 데미지 + POINT_WEAPON_MAX, // 30 무기 최대 데미지 + POINT_PLAYTIME, // 31 플레이시간 + POINT_HP_REGEN, // 32 HP 회복률 + POINT_SP_REGEN, // 33 SP 회복률 - POINT_BOW_DISTANCE, // 34 Ȱ Ÿ ġ (meter) + POINT_BOW_DISTANCE, // 34 활 사정거리 증가치 (meter) - POINT_HP_RECOVERY, // 35 ü ȸ - POINT_SP_RECOVERY, // 36 ŷ ȸ + POINT_HP_RECOVERY, // 35 체력 회복 증가량 + POINT_SP_RECOVERY, // 36 정신력 회복 증가량 - POINT_POISON_PCT, // 37 Ȯ - POINT_STUN_PCT, // 38 Ȯ - POINT_SLOW_PCT, // 39 ο Ȯ - POINT_CRITICAL_PCT, // 40 ũƼ Ȯ - POINT_PENETRATE_PCT, // 41 Ÿ Ȯ - POINT_CURSE_PCT, // 42 Ȯ + POINT_POISON_PCT, // 37 독 확률 + POINT_STUN_PCT, // 38 기절 확률 + POINT_SLOW_PCT, // 39 슬로우 확률 + POINT_CRITICAL_PCT, // 40 크리티컬 확률 + POINT_PENETRATE_PCT, // 41 관통타격 확률 + POINT_CURSE_PCT, // 42 저주 확률 - POINT_ATTBONUS_HUMAN, // 43 ΰ - POINT_ATTBONUS_ANIMAL, // 44 % - POINT_ATTBONUS_ORC, // 45 Ϳ % - POINT_ATTBONUS_MILGYO, // 46 б % - POINT_ATTBONUS_UNDEAD, // 47 ü % - POINT_ATTBONUS_DEVIL, // 48 (Ǹ) % - POINT_ATTBONUS_INSECT, // 49 - POINT_ATTBONUS_FIRE, // 50 ȭ - POINT_ATTBONUS_ICE, // 51 - POINT_ATTBONUS_DESERT, // 52 縷 - POINT_ATTBONUS_MONSTER, // 53 Ϳ - POINT_ATTBONUS_WARRIOR, // 54 翡 - POINT_ATTBONUS_ASSASSIN, // 55 ڰ - POINT_ATTBONUS_SURA, // 56 󿡰 - POINT_ATTBONUS_SHAMAN, // 57 翡 - POINT_ATTBONUS_TREE, // 58 20050729.myevan UNUSED5 + POINT_ATTBONUS_HUMAN, // 43 인간에게 강함 + POINT_ATTBONUS_ANIMAL, // 44 동물에게 데미지 % 증가 + POINT_ATTBONUS_ORC, // 45 웅귀에게 데미지 % 증가 + POINT_ATTBONUS_MILGYO, // 46 밀교에게 데미지 % 증가 + POINT_ATTBONUS_UNDEAD, // 47 시체에게 데미지 % 증가 + POINT_ATTBONUS_DEVIL, // 48 마귀(악마)에게 데미지 % 증가 + POINT_ATTBONUS_INSECT, // 49 벌레족 + POINT_ATTBONUS_FIRE, // 50 화염족 + POINT_ATTBONUS_ICE, // 51 빙설족 + POINT_ATTBONUS_DESERT, // 52 사막족 + POINT_ATTBONUS_MONSTER, // 53 모든 몬스터에게 강함 + POINT_ATTBONUS_WARRIOR, // 54 무사에게 강함 + POINT_ATTBONUS_ASSASSIN, // 55 자객에게 강함 + POINT_ATTBONUS_SURA, // 56 수라에게 강함 + POINT_ATTBONUS_SHAMAN, // 57 무당에게 강함 + POINT_ATTBONUS_TREE, // 58 나무에게 강함 20050729.myevan UNUSED5 - POINT_RESIST_WARRIOR, // 59 翡 - POINT_RESIST_ASSASSIN, // 60 ڰ - POINT_RESIST_SURA, // 61 󿡰 - POINT_RESIST_SHAMAN, // 62 翡 + POINT_RESIST_WARRIOR, // 59 무사에게 저항 + POINT_RESIST_ASSASSIN, // 60 자객에게 저항 + POINT_RESIST_SURA, // 61 수라에게 저항 + POINT_RESIST_SHAMAN, // 62 무당에게 저항 - POINT_STEAL_HP, // 63 - POINT_STEAL_SP, // 64 ŷ + POINT_STEAL_HP, // 63 생명력 흡수 + POINT_STEAL_SP, // 64 정신력 흡수 - POINT_MANA_BURN_PCT, // 65 + POINT_MANA_BURN_PCT, // 65 마나 번 - /// ؽ ʽ /// + /// 피해시 보너스 /// - POINT_DAMAGE_SP_RECOVER, // 66 ݴ ŷ ȸ Ȯ + POINT_DAMAGE_SP_RECOVER, // 66 공격당할 시 정신력 회복 확률 - POINT_BLOCK, // 67 - POINT_DODGE, // 68 ȸ + POINT_BLOCK, // 67 블럭율 + POINT_DODGE, // 68 회피율 POINT_RESIST_SWORD, // 69 POINT_RESIST_TWOHAND, // 70 POINT_RESIST_DAGGER, // 71 POINT_RESIST_BELL, // 72 POINT_RESIST_FAN, // 73 - POINT_RESIST_BOW, // 74 ȭ : - POINT_RESIST_FIRE, // 75 ȭ : ȭݿ - POINT_RESIST_ELEC, // 76 : ݿ - POINT_RESIST_MAGIC, // 77 : - POINT_RESIST_WIND, // 78 ٶ : ٶݿ + POINT_RESIST_BOW, // 74 화살 저항 : 대미지 감소 + POINT_RESIST_FIRE, // 75 화염 저항 : 화염공격에 대한 대미지 감소 + POINT_RESIST_ELEC, // 76 전기 저항 : 전기공격에 대한 대미지 감소 + POINT_RESIST_MAGIC, // 77 술법 저항 : 모든술법에 대한 대미지 감소 + POINT_RESIST_WIND, // 78 바람 저항 : 바람공격에 대한 대미지 감소 - POINT_REFLECT_MELEE, // 79 ݻ + POINT_REFLECT_MELEE, // 79 공격 반사 - /// Ư ؽ /// - POINT_REFLECT_CURSE, // 80 ݻ - POINT_POISON_REDUCE, // 81 + /// 특수 피해시 /// + POINT_REFLECT_CURSE, // 80 저주 반사 + POINT_POISON_REDUCE, // 81 독데미지 감소 - /// Ҹ /// - POINT_KILL_SP_RECOVER, // 82 Ҹ MP ȸ + /// 적 소멸시 /// + POINT_KILL_SP_RECOVER, // 82 적 소멸시 MP 회복 POINT_EXP_DOUBLE_BONUS, // 83 POINT_GOLD_DOUBLE_BONUS, // 84 POINT_ITEM_DROP_BONUS, // 85 - /// ȸ /// + /// 회복 관련 /// POINT_POTION_BONUS, // 86 POINT_KILL_HP_RECOVERY, // 87 @@ -225,7 +225,7 @@ enum EPointTypes POINT_HIT_HP_RECOVERY, // 100 POINT_HIT_SP_RECOVERY, // 101 - POINT_MANASHIELD, // 102 żȣ ų ȿ + POINT_MANASHIELD, // 102 흑신수호 스킬에 의한 마나쉴드 효과 정도 POINT_PARTY_BUFFER_BONUS, // 103 POINT_PARTY_SKILL_MASTER_BONUS, // 104 @@ -234,56 +234,56 @@ enum EPointTypes POINT_SP_RECOVER_CONTINUE, // 106 POINT_STEAL_GOLD, // 107 - POINT_POLYMORPH, // 108 ȣ - POINT_MOUNT, // 109 Ÿִ ȣ + POINT_POLYMORPH, // 108 변신한 몬스터 번호 + POINT_MOUNT, // 109 타고있는 몬스터 번호 POINT_PARTY_HASTE_BONUS, // 110 POINT_PARTY_DEFENDER_BONUS, // 111 - POINT_STAT_RESET_COUNT, // 112 ܾ Ʈ (1 1Ʈ °) + POINT_STAT_RESET_COUNT, // 112 피의 단약 사용을 통한 스텟 리셋 포인트 (1당 1포인트 리셋가능) POINT_HORSE_SKILL, // 113 - POINT_MALL_ATTBONUS, // 114 ݷ +x% - POINT_MALL_DEFBONUS, // 115 +x% - POINT_MALL_EXPBONUS, // 116 ġ +x% - POINT_MALL_ITEMBONUS, // 117 x/10 - POINT_MALL_GOLDBONUS, // 118 x/10 + POINT_MALL_ATTBONUS, // 114 공격력 +x% + POINT_MALL_DEFBONUS, // 115 방어력 +x% + POINT_MALL_EXPBONUS, // 116 경험치 +x% + POINT_MALL_ITEMBONUS, // 117 아이템 드롭율 x/10배 + POINT_MALL_GOLDBONUS, // 118 돈 드롭율 x/10배 - POINT_MAX_HP_PCT, // 119 ִ +x% - POINT_MAX_SP_PCT, // 120 ִŷ +x% + POINT_MAX_HP_PCT, // 119 최대생명력 +x% + POINT_MAX_SP_PCT, // 120 최대정신력 +x% - POINT_SKILL_DAMAGE_BONUS, // 121 ų *(100+x)% - POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 Ÿ *(100+x)% + POINT_SKILL_DAMAGE_BONUS, // 121 스킬 데미지 *(100+x)% + POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 평타 데미지 *(100+x)% // DEFEND_BONUS_ATTRIBUTES - POINT_SKILL_DEFEND_BONUS, // 123 ų - POINT_NORMAL_HIT_DEFEND_BONUS, // 124 Ÿ + POINT_SKILL_DEFEND_BONUS, // 123 스킬 방어 데미지 + POINT_NORMAL_HIT_DEFEND_BONUS, // 124 평타 방어 데미지 // END_OF_DEFEND_BONUS_ATTRIBUTES // PC_BANG_ITEM_ADD - POINT_PC_BANG_EXP_BONUS, // 125 PC ġ ʽ - POINT_PC_BANG_DROP_BONUS, // 126 PC ӷ ʽ + POINT_PC_BANG_EXP_BONUS, // 125 PC방 전용 경험치 보너스 + POINT_PC_BANG_DROP_BONUS, // 126 PC방 전용 드롭률 보너스 // END_PC_BANG_ITEM_ADD - POINT_RAMADAN_CANDY_BONUS_EXP, // 󸶴 ġ + POINT_RAMADAN_CANDY_BONUS_EXP, // 라마단 사탕 경험치 증가용 - POINT_ENERGY = 128, // 128 + POINT_ENERGY = 128, // 128 기력 - // ui . - // ʱ⸸, Ŭ̾Ʈ ð POINT ϱ ̷ Ѵ. - // β - POINT_ENERGY_END_TIME = 129, // 129 ð + // 기력 ui 용. + // 서버에서 쓰지 않기만, 클라이언트에서 기력의 끝 시간을 POINT로 관리하기 때문에 이렇게 한다. + // 아 부끄럽다 + POINT_ENERGY_END_TIME = 129, // 129 기력 종료 시간 POINT_COSTUME_ATTR_BONUS = 130, POINT_MAGIC_ATT_BONUS_PER = 131, POINT_MELEE_MAGIC_ATT_BONUS_PER = 132, - // ߰ Ӽ - POINT_RESIST_ICE = 133, // ñ : ݿ - POINT_RESIST_EARTH = 134, // : ݿ - POINT_RESIST_DARK = 135, // : ݿ + // 추가 속성 저항 + POINT_RESIST_ICE = 133, // 냉기 저항 : 얼음공격에 대한 대미지 감소 + POINT_RESIST_EARTH = 134, // 대지 저항 : 얼음공격에 대한 대미지 감소 + POINT_RESIST_DARK = 135, // 어둠 저항 : 얼음공격에 대한 대미지 감소 - POINT_RESIST_CRITICAL = 136, // ũƼ : ũƼ Ȯ - POINT_RESIST_PENETRATE = 137, // Ÿ : Ÿ Ȯ + POINT_RESIST_CRITICAL = 136, // 크리티컬 저항 : 상대의 크리티컬 확률을 감소 + POINT_RESIST_PENETRATE = 137, // 관통타격 저항 : 상대의 관통타격 확률을 감소 //POINT_MAX_NUM = 129 common/length.h }; @@ -352,7 +352,7 @@ struct DynamicCharacterPtr { uint32_t id; }; -/* ϴ */ +/* 저장하는 데이터 */ typedef struct character_point { int points[POINT_MAX_NUM]; @@ -375,7 +375,7 @@ typedef struct character_point BYTE skill_group; } CHARACTER_POINT; -/* ʴ ij */ +/* 저장되지 않는 캐릭터 데이터 */ typedef struct character_point_instant { int points[POINT_MAX_NUM]; @@ -397,7 +397,7 @@ typedef struct character_point_instant LPITEM pItems[INVENTORY_AND_EQUIP_SLOT_MAX]; BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX]; - // ȥ κ丮. + // 용혼석 인벤토리. LPITEM pDSItems[DRAGON_SOUL_INVENTORY_MAX_NUM]; WORD wDSItemGrid[DRAGON_SOUL_INVENTORY_MAX_NUM]; @@ -409,7 +409,7 @@ typedef struct character_point_instant BYTE gm_level; - BYTE bBasePart; // ȣ + BYTE bBasePart; // 평상복 번호 int iMaxStamina; @@ -507,7 +507,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider { protected: ////////////////////////////////////////////////////////////////////////////////// - // Entity + // Entity 관련 virtual void EncodeInsertPacket(LPENTITY entity); virtual void EncodeRemovePacket(LPENTITY entity); ////////////////////////////////////////////////////////////////////////////////// @@ -517,7 +517,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdatePacket(); ////////////////////////////////////////////////////////////////////////////////// - // FSM (Finite State Machine) + // FSM (Finite State Machine) 관련 protected: CStateTemplate m_stateMove; CStateTemplate m_stateBattle; @@ -587,13 +587,13 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetPlayerID() const { return m_dwPlayerID; } void SetPlayerProto(const TPlayerTable * table); - void CreatePlayerProto(TPlayerTable & tab); // + void CreatePlayerProto(TPlayerTable & tab); // 저장 시 사용 void SetProto(const CMob * c_pkMob); WORD GetRaceNum() const; void Save(); // DelayedSave - void SaveReal(); // + void SaveReal(); // 실제 저장 void FlushDelayedSaveItem(); const char * GetName() const; @@ -634,7 +634,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetExp() const { return m_points.exp; } void SetExp(DWORD exp) { m_points.exp = exp; } DWORD GetNextExp() const; - LPCHARACTER DistributeExp(); // Ѵ. + LPCHARACTER DistributeExp(); // 제일 많이 때린 사람을 리턴한다. void DistributeHP(LPCHARACTER pkKiller); void DistributeSP(LPCHARACTER pkKiller, int iMethod=0); @@ -717,14 +717,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetPolymorphItemVnum() const; DWORD GetMonsterDrainSPPoint() const; - void MainCharacterPacket(); // ijͶ ش. + void MainCharacterPacket(); // 내가 메인캐릭터라고 보내준다. void ComputePoints(); void ComputeBattlePoints(); void PointChange(BYTE type, int amount, bool bAmount = false, bool bBroadcast = false); void PointsPacket(); void ApplyPoint(BYTE bApplyType, int iVal); - void CheckMaximumPoints(); // HP, SP ִ밪 ˻ϰ ٸ . + void CheckMaximumPoints(); // HP, SP 등의 현재 값이 최대값 보다 높은지 검사하고 높다면 낮춘다. bool Show(int lMapIndex, int x, int y, int z = INT_MAX, bool bShowSpawnMotion = false); @@ -749,7 +749,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsBlockMode(BYTE bFlag) const { return (m_pointsInstant.bBlockMode & bFlag)?true:false; } bool IsPolymorphed() const { return m_dwPolymorphRace>0; } - bool IsPolyMaintainStat() const { return m_bPolyMaintainStat; } // ϴ . + bool IsPolyMaintainStat() const { return m_bPolyMaintainStat; } // 이전 스텟을 유지하는 폴리모프. void SetPolymorph(DWORD dwRaceNum, bool bMaintainStat = false); DWORD GetPolymorphVnum() const { return m_dwPolymorphRace; } int GetPolymorphPower() const; @@ -806,15 +806,15 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void SetNowWalking(bool bWalkFlag); void ResetWalking() { SetNowWalking(m_bWalking); } - bool Goto(int x, int y); // ٷ ̵ Ű ʰ ǥ ġ BLENDING Ų. + bool Goto(int x, int y); // 바로 이동 시키지 않고 목표 위치로 BLENDING 시킨다. void Stop(); - bool CanMove() const; // ̵ ִ°? + bool CanMove() const; // 이동할 수 있는가? void SyncPacket(); - bool Sync(int x, int y); // ޼ҵ ̵ Ѵ ( ǿ ̵ Ұ ) - bool Move(int x, int y); // ˻ϰ Sync ޼ҵ带 ̵ Ѵ. - void OnMove(bool bIsAttack = false); // ϶ Ҹ. Move() ޼ҵ ̿ܿ Ҹ ִ. + bool Sync(int x, int y); // 실제 이 메소드로 이동 한다 (각 종 조건에 의한 이동 불가가 없음) + bool Move(int x, int y); // 조건을 검사하고 Sync 메소드를 통해 이동 한다. + void OnMove(bool bIsAttack = false); // 움직일때 불린다. Move() 메소드 이외에서도 불릴 수 있다. DWORD GetMotionMode() const; float GetMoveMotionSpeed() const; float GetMoveSpeed() const; @@ -825,7 +825,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetLastMoveTime() const { return m_dwLastMoveTime; } DWORD GetLastAttackTime() const { return m_dwLastAttackTime; } - void SetLastAttacked(DWORD time); // ݹ ð ġ + void SetLastAttacked(DWORD time); // 마지막으로 공격받은 시간 및 위치를 저장함 bool SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList = true); bool IsSyncOwner(LPCHARACTER ch) const; @@ -852,7 +852,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider float m_fSyncTime; LPCHARACTER m_pkChrSyncOwner; - CHARACTER_LIST m_kLst_pkChrSyncOwned; // SyncOwner ڵ + CHARACTER_LIST m_kLst_pkChrSyncOwned; // 내가 SyncOwner인 자들 PIXEL_POSITION m_posDest; PIXEL_POSITION m_posStart; @@ -875,7 +875,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool m_bStaminaConsume; // End - // Quickslot + // Quickslot 관련 public: void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos); bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot); @@ -904,7 +904,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void LoadAffect(DWORD dwCount, TPacketAffectElement * pElements); void SaveAffect(); - // Affect loading ΰ? + // Affect loading이 끝난 상태인가? bool IsLoadedAffect() const { return m_bIsLoadedAffect; } bool IsGoodAffect(BYTE bAffectType) const; @@ -930,25 +930,25 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void DenyToParty(LPCHARACTER member); void AcceptToParty(LPCHARACTER member); - /// ڽ Ƽ ٸ character ʴѴ. + /// 자신의 파티에 다른 character 를 초대한다. /** - * @param pchInvitee ʴ character. Ƽ ̾ Ѵ. + * @param pchInvitee 초대할 대상 character. 파티에 참여 가능한 상태이어야 한다. * - * character ° Ƽ ʴϰ ʴ ִ ° ƴ϶ ʴϴ ijͿ شϴ ä ޼ Ѵ. + * 양측 character 의 상태가 파티에 초대하고 초대받을 수 있는 상태가 아니라면 초대하는 캐릭터에게 해당하는 채팅 메세지를 전송한다. */ void PartyInvite(LPCHARACTER pchInvitee); - /// ʴߴ character óѴ. + /// 초대했던 character 의 수락을 처리한다. /** - * @param pchInvitee Ƽ character. Ƽ ̾ Ѵ. + * @param pchInvitee 파티에 참여할 character. 파티에 참여가능한 상태이어야 한다. * - * pchInvitee Ƽ ִ Ȳ ƴ϶ شϴ ä ޼ Ѵ. + * pchInvitee 가 파티에 가입할 수 있는 상황이 아니라면 해당하는 채팅 메세지를 전송한다. */ void PartyInviteAccept(LPCHARACTER pchInvitee); - /// ʴߴ character ʴ źθ óѴ. + /// 초대했던 character 의 초대 거부를 처리한다. /** - * @param [in] dwPID ʴ ߴ character PID + * @param [in] dwPID 초대 했던 character 의 PID */ void PartyInviteDeny(DWORD dwPID); @@ -961,45 +961,45 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider protected: - /// Ƽ Ѵ. + /// 파티에 가입한다. /** - * @param pkLeader Ƽ + * @param pkLeader 가입할 파티의 리더 */ void PartyJoin(LPCHARACTER pkLeader); /** - * Ƽ ڵ. - * Error code ð ΰ 氡(mutable) type (static) type . - * Error code PERR_SEPARATOR 氡 type ̰ type ̴. + * 파티 가입을 할 수 없을 경우의 에러코드. + * Error code 는 시간에 의존적인가에 따라 변경가능한(mutable) type 과 정적(static) type 으로 나뉜다. + * Error code 의 값이 PERR_SEPARATOR 보다 낮으면 변경가능한 type 이고 높으면 정적 type 이다. */ enum PartyJoinErrCode { - PERR_NONE = 0, ///< ó - PERR_SERVER, ///< Ƽ ó Ұ - PERR_DUNGEON, ///< ijͰ - PERR_OBSERVER, ///< - PERR_LVBOUNDARY, ///< ijͿ ̰ - PERR_LOWLEVEL, ///< Ƽ ְ 30 - PERR_HILEVEL, ///< Ƽ 30 - PERR_ALREADYJOIN, ///< Ƽ ijͰ ̹ Ƽ - PERR_PARTYISFULL, ///< Ƽο ʰ + PERR_NONE = 0, ///< 처리성공 + PERR_SERVER, ///< 서버문제로 파티관련 처리 불가 + PERR_DUNGEON, ///< 캐릭터가 던전에 있음 + PERR_OBSERVER, ///< 관전모드임 + PERR_LVBOUNDARY, ///< 상대 캐릭터와 레벨차이가 남 + PERR_LOWLEVEL, ///< 상대파티의 최고레벨보다 30레벨 낮음 + PERR_HILEVEL, ///< 상대파티의 최저레벨보다 30레벨 높음 + PERR_ALREADYJOIN, ///< 파티가입 대상 캐릭터가 이미 파티중 + PERR_PARTYISFULL, ///< 파티인원 제한 초과 PERR_SEPARATOR, ///< Error type separator. - PERR_DIFFEMPIRE, ///< ijͿ ٸ - PERR_MAX ///< Error code ְġ. տ Error code ߰Ѵ. + PERR_DIFFEMPIRE, ///< 상대 캐릭터와 다른 제국임 + PERR_MAX ///< Error code 최고치. 이 앞에 Error code 를 추가한다. }; - /// Ƽ ̳ Ἲ ˻Ѵ. + /// 파티 가입이나 결성 가능한 조건을 검사한다. /** - * @param pchLeader Ƽ leader ̰ų ʴ character - * @param pchGuest ʴ޴ character - * @return PartyJoinErrCode ȯ ִ. + * @param pchLeader 파티의 leader 이거나 초대한 character + * @param pchGuest 초대받는 character + * @return 모든 PartyJoinErrCode 가 반환될 수 있다. */ static PartyJoinErrCode IsPartyJoinableCondition(const LPCHARACTER pchLeader, const LPCHARACTER pchGuest); - /// Ƽ ̳ Ἲ ˻Ѵ. + /// 파티 가입이나 결성 가능한 동적인 조건을 검사한다. /** - * @param pchLeader Ƽ leader ̰ų ʴ character - * @param pchGuest ʴ޴ character - * @return mutable type code ȯѴ. + * @param pchLeader 파티의 leader 이거나 초대한 character + * @param pchGuest 초대받는 character + * @return mutable type 의 code 만 반환한다. */ static PartyJoinErrCode IsPartyJoinableMutableCondition(const LPCHARACTER pchLeader, const LPCHARACTER pchGuest); @@ -1008,11 +1008,11 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider LPEVENT m_pkPartyRequestEvent; /** - * Ƽû Event map. - * key: ʴ ij PID - * value: event pointer + * 파티초청 Event map. + * key: 초대받은 캐릭터의 PID + * value: event의 pointer * - * ʴ ij͵鿡 event map. + * 초대한 캐릭터들에 대한 event map. */ typedef std::map< DWORD, LPEVENT > EventMap; EventMap m_PartyInviteEventMap; @@ -1046,7 +1046,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Item related public: - bool CanHandleItem(bool bSkipRefineCheck = false, bool bSkipObserver = false); // ִ°? + bool CanHandleItem(bool bSkipRefineCheck = false, bool bSkipObserver = false); // 아이템 관련 행위를 할 수 있는가? bool IsItemLoaded() const { return m_bItemLoaded; } void SetItemLoaded() { m_bItemLoaded = true; } @@ -1061,14 +1061,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider LPITEM GetWear(BYTE bCell) const; // MYSHOP_PRICE_LIST - void UseSilkBotary(void); /// + void UseSilkBotary(void); /// 비단 보따리 아이템의 사용 - /// DB ij÷ ޾ƿ Ʈ ϰ óѴ. + /// DB 캐시로 부터 받아온 가격정보 리스트를 유저에게 전송하고 보따리 아이템 사용을 처리한다. /** - * @param [in] p Ʈ Ŷ + * @param [in] p 가격정보 리스트 패킷 * - * ó UseSilkBotary DB ij÷ Ʈ ûϰ - * Լ ܺ óѴ. + * 접속한 후 처음 비단 보따리 아이템 사용 시 UseSilkBotary 에서 DB 캐시로 가격정보 리스트를 요청하고 + * 응답받은 시점에 이 함수에서 실제 비단보따리 사용을 처리한다. */ void UseSilkBotaryReal(const TPacketMyshopPricelistHeader* p); // END_OF_MYSHOP_PRICE_LIST @@ -1114,10 +1114,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool EquipItem(LPITEM item, int iCandidateCell = -1); bool UnequipItem(LPITEM item); - // item ִ Ȯϰ, Ұ ϴٸ ijͿ ˷ִ Լ + // 현재 item을 착용할 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수 bool CanEquipNow(const LPITEM item, const TItemPos& srcCell = NPOS, const TItemPos& destCell = NPOS); - // item ִ Ȯϰ, Ұ ϴٸ ijͿ ˷ִ Լ + // 착용중인 item을 벗을 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수 bool CanUnequipNow(const LPITEM item, const TItemPos& srcCell = NPOS, const TItemPos& destCell = NPOS); bool SwapItem(BYTE bCell, BYTE bDestCell); @@ -1149,14 +1149,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider protected: - /// ۿ Ѵ. + /// 한 아이템에 대한 가격정보를 전송한다. /** - * @param [in] dwItemVnum vnum - * @param [in] dwItemPrice + * @param [in] dwItemVnum 아이템 vnum + * @param [in] dwItemPrice 아이템 가격 */ void SendMyShopPriceListCmd(DWORD dwItemVnum, DWORD dwItemPrice); - bool m_bNoOpenedShop; ///< ̹ λ ִ ( ٸ true) + bool m_bNoOpenedShop; ///< 이번 접속 후 개인상점을 연 적이 있는지의 여부(열었던 적이 없다면 true) bool m_bItemLoaded; int m_iRefineAdditionalCell; @@ -1170,7 +1170,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void SetGold(INT gold) { m_points.gold = gold; } bool DropGold(INT gold); INT GetAllowedGold() const; - void GiveGold(INT iAmount); // Ƽ Ƽ й, α ó + void GiveGold(INT iAmount); // 파티가 있으면 파티 분배, 로그 등의 처리 // End of Money //////////////////////////////////////////////////////////////////////////////////////// @@ -1236,9 +1236,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool CanFight() const; bool CanBeginFight() const; - void BeginFight(LPCHARACTER pkVictim); // pkVictimr ο Ѵ. (, ֳ üũϷ CanBeginFight ) + void BeginFight(LPCHARACTER pkVictim); // pkVictimr과 싸우기 시작한다. (강제적임, 시작할 수 있나 체크하려면 CanBeginFight을 사용) - bool CounterAttack(LPCHARACTER pkChr); // ݰϱ (͸ ) + bool CounterAttack(LPCHARACTER pkChr); // 반격하기 (몬스터만 사용) bool IsStun() const; void Stun(); @@ -1268,7 +1268,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdateAlignment(int iAmount); int GetAlignment() const; - //ġ + //선악치 얻기 int GetRealAlignment() const; void ShowAlignment(bool bShow); @@ -1317,7 +1317,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD m_dwFlyTargetID; std::vector m_vec_dwFlyTargets; - TDamageMap m_map_kDamage; //  ijͰ 󸶸ŭ ־°? + TDamageMap m_map_kDamage; // 어떤 캐릭터가 나에게 얼마만큼의 데미지를 주었는가? // AttackLog m_kAttackLog; DWORD m_dwKillerPID; @@ -1340,8 +1340,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider BYTE GetDropMetinStonePct() const { return m_bDropMetinStonePct; } protected: - LPCHARACTER m_pkChrStone; // - CHARACTER_SET m_set_pkChrSpawnedBy; // + LPCHARACTER m_pkChrStone; // 나를 스폰한 돌 + CHARACTER_SET m_set_pkChrSpawnedBy; // 내가 스폰한 놈들 DWORD m_dwDropMetinStone; BYTE m_bDropMetinStonePct; // End of Stone @@ -1399,7 +1399,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider private: bool m_bDisableCooltime; - DWORD m_dwLastSkillTime; ///< skill ð(millisecond). + DWORD m_dwLastSkillTime; ///< 마지막으로 skill 을 쓴 시간(millisecond). // End of Skill // MOB_SKILL @@ -1456,10 +1456,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider // AI related public: void AssignTriggers(const TMobTable * table); - LPCHARACTER GetVictim() const; // + LPCHARACTER GetVictim() const; // 공격할 대상 리턴 void SetVictim(LPCHARACTER pkVictim); LPCHARACTER GetNearestVictim(LPCHARACTER pkChr); - LPCHARACTER GetProtege() const; // ȣؾ + LPCHARACTER GetProtege() const; // 보호해야 할 대상 리턴 bool Follow(LPCHARACTER pkChr, float fMinimumDistance = 150.0f); bool Return(); @@ -1483,8 +1483,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Target protected: - LPCHARACTER m_pkChrTarget; // Ÿ - CHARACTER_SET m_set_pkChrTargetedBy; // Ÿ ִ + LPCHARACTER m_pkChrTarget; // 내 타겟 + CHARACTER_SET m_set_pkChrTargetedBy; // 나를 타겟으로 가지고 있는 사람들 public: void SetTarget(LPCHARACTER pkChrTarget); @@ -1505,19 +1505,19 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void ChangeSafeboxSize(BYTE bSize); void CloseSafebox(); - /// â û + /// 창고 열기 요청 /** - * @param [in] pszPassword 1 ̻ 6 â йȣ + * @param [in] pszPassword 1자 이상 6자 이하의 창고 비밀번호 * - * DB â⸦ ûѴ. - * â ߺ ϸ, ֱ â ð 10 ̳ Ѵ. + * DB 에 창고열기를 요청한다. + * 창고는 중복으로 열지 못하며, 최근 창고를 닫은 시간으로 부터 10초 이내에는 열 지 못한다. */ void ReqSafeboxLoad(const char* pszPassword); - /// â û + /// 창고 열기 요청의 취소 /** - * ReqSafeboxLoad ȣϰ CloseSafebox ʾ Լ ȣϸ â ִ. - * â û DB ޾ Լ ؼ û ְ ش. + * ReqSafeboxLoad 를 호출하고 CloseSafebox 하지 않았을 때 이 함수를 호출하면 창고를 열 수 있다. + * 창고열기의 요청이 DB 서버에서 실패응답을 받았을 경우 이 함수를 사용해서 요청을 할 수 있게 해준다. */ void CancelSafeboxLoad( void ) { m_bOpeningSafebox = false; } @@ -1535,7 +1535,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider CSafebox * m_pkSafebox; int m_iSafeboxSize; int m_iSafeboxLoadTime; - bool m_bOpeningSafebox; ///< â û ̰ų ִ° , true ṵ̂ų . + bool m_bOpeningSafebox; ///< 창고가 열기 요청 중이거나 열려있는가 여부, true 일 경우 열기요청이거나 열려있음. CSafebox * m_pkMall; int m_iMallLoadTime; @@ -1569,7 +1569,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void HorseSummon(bool bSummon, bool bFromFar = false, DWORD dwVnum = 0, const char* name = 0); - LPCHARACTER GetHorse() const { return m_chHorse; } // ȯ + LPCHARACTER GetHorse() const { return m_chHorse; } // 현재 소환중인 말 LPCHARACTER GetRider() const; // rider on horse void SetRider(LPCHARACTER ch); @@ -1631,7 +1631,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Resists & Proofs public: - bool CannotMoveByAffect() const; // Ư ȿ ΰ? + bool CannotMoveByAffect() const; // 특정 효과에 의해 움직일 수 없는 상태인가? bool IsImmune(DWORD dwImmuneFlag); void SetImmuneFlag(DWORD dw) { m_pointsInstant.dwImmuneFlag = dw; } @@ -1671,7 +1671,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdateStateMachine(DWORD dwPulse); void SetNextStatePulse(int iPulseNext); - // ij νϽ Ʈ Լ. ̻ ӱ CFSM::Update Լ ȣϰų UpdateStateMachine Լ ߴµ, Ʈ Լ ߰. + // 캐릭터 인스턴스 업데이트 함수. 기존엔 이상한 상속구조로 CFSM::Update 함수를 호출하거나 UpdateStateMachine 함수를 사용했는데, 별개의 업데이트 함수 추가함. void UpdateCharacter(DWORD dwPulse); protected: @@ -1741,9 +1741,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider int m_aiPremiumTimes[PREMIUM_MAX_NUM]; // CHANGE_ITEM_ATTRIBUTES - static const DWORD msc_dwDefaultChangeItemAttrCycle; ///< Ʈ Ӽ ֱ - static const char msc_szLastChangeItemAttrFlag[]; ///< ֱ Ӽ ð Quest Flag ̸ - static const char msc_szChangeItemAttrCycleFlag[]; ///< Ӽ ֱ Quest Flag ̸ + static const DWORD msc_dwDefaultChangeItemAttrCycle; ///< 디폴트 아이템 속성변경 가능 주기 + static const char msc_szLastChangeItemAttrFlag[]; ///< 최근 아이템 속성을 변경한 시간의 Quest Flag 이름 + static const char msc_szChangeItemAttrCycleFlag[]; ///< 아이템 속성병경 가능 주기의 Quest Flag 이름 // END_OF_CHANGE_ITEM_ATTRIBUTES // PC_BANG_ITEM_ADD @@ -1824,7 +1824,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider int GetMyShopTime() const { return m_iMyShopTime; } void SetMyShopTime() { m_iMyShopTime = thecore_pulse(); } - // Hack üũ. + // Hack 방지를 위한 체크. bool IsHack(bool bSendMsg = true, bool bCheckShopOwner = true, int limittime = g_nPortalLimitTime); // MONARCH @@ -1874,9 +1874,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsSiegeNPC() const; private: - //߱ - //18 ̸ - //3ð : 50 % 5 ð 0% + //중국 전용 + //18세 미만 전용 + //3시간 : 50 % 5 시간 0% e_overtime m_eOverTime; public: @@ -1952,7 +1952,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider typedef std::map TMapBuffOnAttrs; TMapBuffOnAttrs m_map_buff_on_attrs; - // : Ȱ ׽Ʈ Ͽ. + // 무적 : 원활한 테스트를 위하여. public: void SetArmada() { cannot_dead = true; } void ResetArmada() { cannot_dead = false; } @@ -1967,7 +1967,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsPet() { return m_bIsPet; } #endif - // . + //최종 데미지 보정. private: float m_fAttMul; float m_fDamMul; @@ -1980,7 +1980,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider private: bool IsValidItemPosition(TItemPos Pos) const; - // Ŷ ӽ + //독일 선물 기능 패킷 임시 저장 private: unsigned int itemAward_vnum = 0; char itemAward_cmd[20] = ""; @@ -1994,10 +1994,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //void SetItemAward_flag(bool flag) { itemAward_flag = flag; } public: - //ȥ + //용혼석 - // ij affect, quest load DZ DragonSoul_Initialize ȣϸ ȵȴ. - // affect εǾ LoadAffect ȣ. + // 캐릭터의 affect, quest가 load 되기 전에 DragonSoul_Initialize를 호출하면 안된다. + // affect가 가장 마지막에 로드되어 LoadAffect에서 호출함. void DragonSoul_Initialize(); bool DragonSoul_IsQualified() const; @@ -2008,17 +2008,17 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool DragonSoul_ActivateDeck(int deck_idx); void DragonSoul_DeactivateAll(); - // ݵ ClearItem ҷ Ѵ. - // ֳϸ.... - // ȥ ϳ ϳ deactivate active ȥ ִ Ȯϰ, - // active ȥ ϳ ٸ, ij ȥ affect, Ȱ ¸ Ѵ. + // 반드시 ClearItem 전에 불러야 한다. + // 왜냐하면.... + // 용혼석 하나 하나를 deactivate할 때마다 덱에 active인 용혼석이 있는지 확인하고, + // active인 용혼석이 하나도 없다면, 캐릭터의 용혼석 affect와, 활성 상태를 제거한다. // - // ClearItem , ijͰ ϰ ִ unequipϴ ٶ, - // ȥ Affect ŵǰ, ᱹ α , ȥ Ȱȭ ʴ´. - // (Unequip α׾ƿ , ƴ .) - // ȥ deactivateŰ ij ȥ Ȱ ´ ǵ帮 ʴ´. + // 하지만 ClearItem 시, 캐릭터가 착용하고 있는 모든 아이템을 unequip하는 바람에, + // 용혼석 Affect가 제거되고, 결국 로그인 시, 용혼석이 활성화되지 않는다. + // (Unequip할 때에는 로그아웃 상태인지, 아닌지 알 수 없다.) + // 용혼석만 deactivate시키고 캐릭터의 용혼석 덱 활성 상태는 건드리지 않는다. void DragonSoul_CleanUp(); - // ȥ ȭâ + // 용혼석 강화창 public: bool DragonSoul_RefineWindow_Open(LPENTITY pEntity); bool DragonSoul_RefineWindow_Close(); @@ -2026,8 +2026,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool DragonSoul_RefineWindow_CanRefine(); private: - // SyncPosition ǿϿ Ÿ ̻ ϱ Ͽ, - // SyncPosition Ͼ . + // SyncPosition을 악용하여 타유저를 이상한 곳으로 보내는 핵 방어하기 위하여, + // SyncPosition이 일어날 때를 기록. timeval m_tvLastSyncTime; int m_iSyncHackCount; public: diff --git a/src/game/src/char_manager.h b/src/game/src/char_manager.h index 7b1fc0b..517ad28 100644 --- a/src/game/src/char_manager.h +++ b/src/game/src/char_manager.h @@ -24,7 +24,7 @@ class CHARACTER_MANAGER : public singleton void Destroy(); - void GracefulShutdown(); // ˴ٿ . PC Ű Destroy Ѵ. + void GracefulShutdown(); // 정상적 셧다운할 때 사용. PC를 모두 저장시키고 Destroy 한다. DWORD AllocVID(); @@ -56,11 +56,11 @@ class CHARACTER_MANAGER : public singleton bool AddToStateList(LPCHARACTER ch); void RemoveFromStateList(LPCHARACTER ch); - // DelayedSave:  ƾ ؾ ϸ - // ʹ Ƿ " Ѵ" ǥø صΰ - // (: 1 frame) Ŀ Ų. + // DelayedSave: 어떠한 루틴 내에서 저장을 해야 할 짓을 많이 하면 저장 + // 쿼리가 너무 많아지므로 "저장을 한다" 라고 표시만 해두고 잠깐 + // (예: 1 frame) 후에 저장시킨다. void DelayedSave(LPCHARACTER ch); - bool FlushDelayedSave(LPCHARACTER ch); // Delayed Ʈ ִٸ Ѵ. ó . + bool FlushDelayedSave(LPCHARACTER ch); // Delayed 리스트에 있다면 지우고 저장한다. 끊김 처리시 사용 됨. void ProcessDelayedSave(); template Func for_each_pc(Func f); @@ -124,7 +124,7 @@ class CHARACTER_MANAGER : public singleton NAME_MAP m_map_pkPCChr; char dummy1[1024]; // memory barrier - CHARACTER_SET m_set_pkChrState; // FSM ư ִ + CHARACTER_SET m_set_pkChrState; // FSM이 돌아가고 있는 놈들 CHARACTER_SET m_set_pkChrForDelayedSave; CHARACTER_SET m_set_pkChrMonsterLog; diff --git a/src/game/src/cmd.h b/src/game/src/cmd.h index 562c35e..0305ebc 100644 --- a/src/game/src/cmd.h +++ b/src/game/src/cmd.h @@ -51,11 +51,11 @@ enum SCMD_XMAS }; extern void Shutdown(int iSec); -extern void SendNotice(const char * c_pszBuf); // Ӽ -extern void SendLog(const char * c_pszBuf); // ڿԸ -extern void BroadcastNotice(const char * c_pszBuf); // -extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont); // ʿ -extern void SendMonarchNotice(BYTE bEmpire, const char * c_pszBuf); // +extern void SendNotice(const char * c_pszBuf); // 이 게임서버에만 공지 +extern void SendLog(const char * c_pszBuf); // 운영자에게만 공지 +extern void BroadcastNotice(const char * c_pszBuf); // 전 서버에 공지 +extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont); // 지정 맵에만 공지 +extern void SendMonarchNotice(BYTE bEmpire, const char * c_pszBuf); // 같은 제국에게 공지 // LUA_ADD_BGM_INFO void CHARACTER_SetBGMVolumeEnable(); diff --git a/src/game/src/config.h b/src/game/src/config.h index 685b95a..b610fe7 100644 --- a/src/game/src/config.h +++ b/src/game/src/config.h @@ -35,7 +35,7 @@ extern bool china_event_server; extern bool g_bNoMoreClient; extern bool g_bNoRegen; -extern bool g_bTrafficProfileOn; ///< true ̸ TrafficProfiler Ҵ. +extern bool g_bTrafficProfileOn; ///< true 이면 TrafficProfiler 를 켠다. extern BYTE g_bChannel; @@ -99,8 +99,8 @@ extern int VIEW_RANGE; extern int VIEW_BONUS_RANGE; extern bool g_bCheckMultiHack; -extern bool g_protectNormalPlayer; // ڰ "ȭ" Ϲ -extern bool g_noticeBattleZone; // ߸뿡 ϸ ȳ޼ ˷ +extern bool g_protectNormalPlayer; // 범법자가 "평화모드" 인 일반유저를 공격하지 못함 +extern bool g_noticeBattleZone; // 중립지대에 입장하면 안내메세지를 알려줌 extern DWORD g_GoldDropTimeLimitValue; diff --git a/src/game/src/constants.h b/src/game/src/constants.h index 0cb11d2..d3bf88f 100644 --- a/src/game/src/constants.h +++ b/src/game/src/constants.h @@ -13,7 +13,7 @@ enum EMonsterChatState typedef struct SMobRankStat { - int iGoldPercent; // Ȯ + int iGoldPercent; // 돈이 나올 확률 } TMobRankStat; typedef struct SMobStat @@ -124,7 +124,7 @@ extern const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM]; extern const int aSkillAttackAffectProbByRank[MOB_RANK_MAX_NUM]; -extern const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL]; // 1 +extern const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL]; // 1개까지 extern const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL]; extern const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM]; diff --git a/src/game/src/cube.h b/src/game/src/cube.h index dffa9c4..c2db176 100644 --- a/src/game/src/cube.h +++ b/src/game/src/cube.h @@ -2,7 +2,7 @@ * date : 2006.11.20 * file : cube.h * author : mhh - * description : ťý + * description : 큐브시스템 */ #ifndef _cube_h_ @@ -30,7 +30,7 @@ struct CUBE_DATA std::vector item; std::vector reward; int percent; - unsigned int gold; // ʿ ݾ + unsigned int gold; // 제조시 필요한 금액 CUBE_DATA(); diff --git a/src/game/src/db.h b/src/game/src/db.h index 21db8fc..4c3ea8f 100644 --- a/src/game/src/db.h +++ b/src/game/src/db.h @@ -105,7 +105,7 @@ class DBManager : public singleton void FlushBilling(bool bForce=false); void CheckBilling(); - void StopAllBilling(); // 20050503.ipkn.DB-AUTH ̺ (翬 ) + void StopAllBilling(); // 20050503.ipkn.DB-AUTH 접속 종료시 빌링 테이블 모두 지우기 (재연결시 복구함) DWORD CountQuery() { return m_sql.CountQuery(); } DWORD CountQueryResult() { return m_sql.CountResult(); } @@ -119,8 +119,8 @@ class DBManager : public singleton const std::string & GetDBString(const std::string& key); const std::vector & GetGreetMessage(); - template void FuncQuery(Functor f, const char * c_pszFormat, ...); // fڷ ȣ (SQLMsg *) ˾Ƽ - template void FuncAfterQuery(Functor f, const char * c_pszFormat, ...); // f ȣ void f(void) + template void FuncQuery(Functor f, const char * c_pszFormat, ...); // 결과를 f인자로 호출함 (SQLMsg *) 알아서 해제됨 + template void FuncAfterQuery(Functor f, const char * c_pszFormat, ...); // 끝나고 나면 f가 호출됨 void f(void) 형태 size_t EscapeString(char* dst, size_t dstSize, const char *src, size_t srcSize); diff --git a/src/game/src/desc.h b/src/game/src/desc.h index b2f4a1d..b7e31ef 100644 --- a/src/game/src/desc.h +++ b/src/game/src/desc.h @@ -47,14 +47,14 @@ class CLoginKey }; -// sequence ã Ÿ +// sequence 버그 찾기용 데이타 struct seq_t { BYTE hdr; BYTE seq; }; typedef std::vector seq_vector_t; -// sequence ã Ÿ +// sequence 버그 찾기용 데이타 extern void DescReadHandler(bufferevent *bev, void *ctx); extern void DescWriteHandler(bufferevent *bev, void *ctx); @@ -109,7 +109,7 @@ class DESC bool IsPhase(int phase) const { return m_iPhase == phase ? true : false; } - // ڵ彦ũ (ð ȭ) + // 핸드쉐이크 (시간 동기화) void StartHandshake(DWORD _dw); void SendHandshake(DWORD dwCurTime, LONG lNewDelta); bool HandshakeProcess(DWORD dwTime, LONG lDelta, bool bInfiniteRetry=false); @@ -118,7 +118,7 @@ class DESC DWORD GetHandshake() const { return m_dwHandshake; } DWORD GetClientTime(); - // + // 제국 BYTE GetEmpire(); // for p2p @@ -127,7 +127,7 @@ class DESC void DisconnectOfSameLogin(); void SetAdminMode(); - bool IsAdminMode(); // Handshake ֳ? + bool IsAdminMode(); // Handshake 에서 어드민 명령을 쓸수있나? void SetPong(bool b); bool IsPong(); @@ -200,7 +200,7 @@ class DESC WORD m_wP2PPort; BYTE m_bP2PChannel; - bool m_bAdminMode; // Handshake ֳ? + bool m_bAdminMode; // Handshake 에서 어드민 명령을 쓸수있나? bool m_bPong; int m_iCurrentSequence; @@ -252,7 +252,7 @@ class DESC void ChatPacket(BYTE type, const char * format, ...); - /* ã ڵ */ + /* 시퀀스 버그 찾기용 코드 */ public: seq_vector_t m_seq_vector; void push_seq (BYTE hdr, BYTE seq); diff --git a/src/game/src/dungeon.h b/src/game/src/dungeon.h index 4743c6a..6bf90cd 100644 --- a/src/game/src/dungeon.h +++ b/src/game/src/dungeon.h @@ -38,8 +38,8 @@ class CDungeon void IncMonster() { m_iMonsterCount++; SPDLOG_DEBUG("MonsterCount {}", m_iMonsterCount); } void DecMonster() { m_iMonsterCount--; CheckEliminated(); } - int CountMonster() { return m_iMonsterCount; } // ͷ - int CountRealMonster(); // ʻ ִ + int CountMonster() { return m_iMonsterCount; } // 데이터로 리젠한 몬스터의 수 + int CountRealMonster(); // 실제로 맵상에 있는 몬스터 void IncPartyMember(LPPARTY pParty, LPCHARACTER ch); void DecPartyMember(LPPARTY pParty, LPCHARACTER ch); @@ -103,7 +103,7 @@ class CDungeon void SetFlag(std::string name, int value); void SetWarpLocation (int map_index, int x, int y); - // item group item_vnum item_count . + // item group은 item_vnum과 item_count로 구성. typedef std::vector > ItemGroup; void CreateItemGroup (std::string& group_name, ItemGroup& item_group); const ItemGroup* GetItemGroup (std::string& group_name); @@ -142,7 +142,7 @@ class CDungeon bool m_bExitAllAtEliminate; bool m_bWarpAtEliminate; - // ϴ ġ + // 적 전멸시 워프하는 위치 int m_iWarpDelay; int m_lWarpMapIndex; int m_lWarpX; @@ -163,9 +163,9 @@ class CDungeon friend EVENTFUNC(dungeon_exit_all_event); friend EVENTFUNC(dungeon_jump_to_event); - // Ƽ ӽ . - // m_map_pkParty νϿ ٰ ǴϿ, - // ӽ÷ Ƽ ϴ . + // 파티 단위 던전 입장을 위한 임시 변수. + // m_map_pkParty는 관리가 부실하여 사용할 수 없다고 판단하여, + // 임시로 한 파티에 대한 관리를 하는 변수 생성. LPPARTY m_pParty; public : diff --git a/src/game/src/entity.h b/src/game/src/entity.h index a314f1e..eca7644 100644 --- a/src/game/src/entity.h +++ b/src/game/src/entity.h @@ -28,7 +28,7 @@ class CEntity void ViewCleanup(); void ViewInsert(LPENTITY entity, bool recursive = true); void ViewRemove(LPENTITY entity, bool recursive = true); - void ViewReencode(); // Entity Ŷ ٽ . + void ViewReencode(); // 주위 Entity에 패킷을 다시 보낸다. int GetViewAge() const { return m_iViewAge; } diff --git a/src/game/src/event.h b/src/game/src/event.h index ee1abcf..32b8025 100644 --- a/src/game/src/event.h +++ b/src/game/src/event.h @@ -1,8 +1,8 @@ /* * Filename: event.h - * Description: ̺Ʈ (timed event) + * Description: 이벤트 관련 (timed event) * - * Author: (aka. , Cronan), ۿ (aka. myevan, ڷ) + * Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루) */ #ifndef __INC_LIBTHECORE_EVENT_H__ #define __INC_LIBTHECORE_EVENT_H__ @@ -81,10 +81,10 @@ extern int event_count(); #define event_create(func, info, when) event_create_ex(func, info, when) extern LPEVENT event_create_ex(TEVENTFUNC func, event_info_data* info, int when); -extern void event_cancel(LPEVENT * event); // ̺Ʈ -extern int event_processing_time(LPEVENT event); // ð -extern int event_time(LPEVENT event); // ð -extern void event_reset_time(LPEVENT event, int when); // ð +extern void event_cancel(LPEVENT * event); // 이벤트 취소 +extern int event_processing_time(LPEVENT event); // 수행 시간 리턴 +extern int event_time(LPEVENT event); // 남은 시간 리턴 +extern void event_reset_time(LPEVENT event, int when); // 실행 시간 재 설정 extern void event_set_verbose(int level); extern event_info_data* FindEventInfo(DWORD dwID); diff --git a/src/game/src/exchange.h b/src/game/src/exchange.h index 9f6e02b..bf9c13c 100644 --- a/src/game/src/exchange.h +++ b/src/game/src/exchange.h @@ -35,7 +35,7 @@ class CExchange bool CheckSpace(); private: - CExchange * m_pCompany; // CExchange + CExchange * m_pCompany; // 상대방의 CExchange 포인터 LPCHARACTER m_pOwner; diff --git a/src/game/src/group_text_parse_tree.h b/src/game/src/group_text_parse_tree.h index f12413b..206a8be 100644 --- a/src/game/src/group_text_parse_tree.h +++ b/src/game/src/group_text_parse_tree.h @@ -45,15 +45,15 @@ public: int GetRowCount(); template - bool GetValue(size_t i, const std::string & c_rstrColKey, T& tValue) const; // n°(map ִ , txt ʹ ) row Ư ÷ ȯϴ Լ. - // ̱ , Ǹ Լ. + bool GetValue(size_t i, const std::string & c_rstrColKey, T& tValue) const; // n번째(map에 들어있는 순서일 뿐, txt의 순서와는 관계 없음) row의 특정 컬럼의 값을 반환하는 함수. + // 이질적이긴 하지만, 편의를 위한 함수. template bool GetValue(const std::string & c_rstrRowKey, const std::string & c_rstrColKey, T& tValue) const; template bool GetValue(const std::string & c_rstrRowKey, int index, T& tValue) const; bool GetRow(const std::string & c_rstrKey, OUT const CGroupNodeRow ** ppRow) const; - // , idx txt . + // 참고로, idx랑 txt에 쓰여진 순서랑 관계 없음. bool GetRow(int idx, OUT const CGroupNodeRow ** ppRow) const; bool GetGroupRow(const std::string& stGroupName, const std::string& stRow, OUT const CGroupNode::CGroupNodeRow ** ppRow) const; @@ -184,7 +184,7 @@ bool CGroupNode::GetGroupValue(const std::string& stGroupName, const std::string if (pChildGroup->GetValue(stRow, iCol, tValue)) return true; } - // default group 캽. + // default group을 살펴봄. pChildGroup = GetChildNode("default"); if (NULL != pChildGroup) { @@ -203,7 +203,7 @@ bool CGroupNode::GetGroupValue(const std::string& stGroupName, const std::string if (pChildGroup->GetValue(stRow, stCol, tValue)) return true; } - // default group 캽. + // default group을 살펴봄. pChildGroup = GetChildNode("default"); if (NULL != pChildGroup) { diff --git a/src/game/src/guild.h b/src/game/src/guild.h index b9e0aa9..7f17d81 100644 --- a/src/game/src/guild.h +++ b/src/game/src/guild.h @@ -29,12 +29,12 @@ struct SGuildMaster typedef struct SGuildMember { - DWORD pid; // player ̺ id; primary key - BYTE grade; // ÷̾ 1 to 15 (1 ¯) + DWORD pid; // player 테이블의 id; primary key + BYTE grade; // 길드상의 플레이어의 계급 1 to 15 (1이 짱) BYTE is_general; BYTE job; BYTE level; - DWORD offer_exp; // ġ + DWORD offer_exp; // 공헌한 경험치 BYTE _dummy; std::string name; @@ -72,7 +72,7 @@ typedef struct packet_guild_sub_info typedef struct SGuildGrade { - char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 , ̸ + char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 길드장, 길드원 등의 이름 BYTE auth_flag; } TGuildGrade; @@ -256,7 +256,7 @@ class CGuild bool ChargeSP(LPCHARACTER ch, int iSP); void Chat(const char* c_pszText); - void P2PChat(const char* c_pszText); // ä + void P2PChat(const char* c_pszText); // 길드 채팅 void SkillUsableChange(DWORD dwSkillVnum, bool bUsable); void AdvanceLevel(int iLevel); @@ -266,7 +266,7 @@ class CGuild void RequestWithdrawMoney(LPCHARACTER ch, int iGold); void RecvMoneyChange(int iGold); - void RecvWithdrawMoneyGive(int iChangeGold); // bGive==1 ̸ 忡 ִ õϰ и 񿡰 + void RecvWithdrawMoneyGive(int iChangeGold); // bGive==1 이면 길드장에게 주는 걸 시도하고 성공실패를 디비에게 보낸다 int GetGuildMoney() const { return m_data.gold; } @@ -277,7 +277,7 @@ class CGuild int GetGuildWarState(DWORD guild_id); bool CanStartWar(BYTE bGuildWarType); DWORD GetWarStartTime(DWORD guild_id); - bool UnderWar(DWORD guild_id); // ΰ? + bool UnderWar(DWORD guild_id); // 전쟁중인가? DWORD UnderAnyWar(BYTE bType = GUILD_WAR_TYPE_MAX_NUM); // War map relative @@ -320,26 +320,26 @@ class CGuild bool HasLand(); // GUILD_JOIN_BUG_FIX - /// character 尡 ʴ븦 Ѵ. + /// character 에게 길드가입 초대를 한다. /** - * @param pchInviter ʴ character. - * @param pchInvitee ʴ character. + * @param pchInviter 초대한 character. + * @param pchInvitee 초대할 character. * - * ʴϰų ¶ شϴ ä ޼ Ѵ. + * 초대하거나 받을수 없는 상태라면 해당하는 채팅 메세지를 전송한다. */ void Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee ); - /// ʴ뿡 character óѴ. + /// 길드초대에 대한 상대 character 의 수락을 처리한다. /** - * @param pchInvitee ʴ character + * @param pchInvitee 초대받은 character * - * 忡 ԰ ° ƴ϶ شϴ ä ޼ Ѵ. + * 길드에 가입가능한 상태가 아니라면 해당하는 채팅 메세지를 전송한다. */ void InviteAccept( LPCHARACTER pchInvitee ); - /// ʴ뿡 character źθ óѴ. + /// 길드초대에 대한 상대 character 의 거부를 처리한다. /** - * @param dwPID ʴ character PID + * @param dwPID 초대받은 character 의 PID */ void InviteDeny( DWORD dwPID ); // END_OF_GUILD_JOIN_BUG_FIX @@ -377,27 +377,27 @@ class CGuild bool abSkillUsable[GUILD_SKILL_COUNT]; // GUILD_JOIN_BUG_FIX - /// ڵ. + /// 길드 가입을 할 수 없을 경우의 에러코드. enum GuildJoinErrCode { - GERR_NONE = 0, ///< ó - GERR_WITHDRAWPENALTY, ///< Ż ԰ ð - GERR_COMMISSIONPENALTY, ///< ػ ԰ ð - GERR_ALREADYJOIN, ///< 尡 ijͰ ̹ 忡 - GERR_GUILDISFULL, ///< ο ʰ - GERR_GUILD_IS_IN_WAR, ///< 尡 - GERR_INVITE_LIMIT, ///< - GERR_MAX ///< Error code ְġ. տ Error code ߰Ѵ. + GERR_NONE = 0, ///< 처리성공 + GERR_WITHDRAWPENALTY, ///< 탈퇴후 가입가능한 시간이 지나지 않음 + GERR_COMMISSIONPENALTY, ///< 해산후 가입가능한 시간이 지나지 않음 + GERR_ALREADYJOIN, ///< 길드가입 대상 캐릭터가 이미 길드에 가입해 있음 + GERR_GUILDISFULL, ///< 길드인원 제한 초과 + GERR_GUILD_IS_IN_WAR, ///< 길드가 현재 전쟁중 + GERR_INVITE_LIMIT, ///< 길드원 가입 제한 상태 + GERR_MAX ///< Error code 최고치. 이 앞에 Error code 를 추가한다. }; - /// 忡 ˻Ѵ. + /// 길드에 가입 가능한 조건을 검사한다. /** - * @param [in] pchInvitee ʴ޴ character + * @param [in] pchInvitee 초대받는 character * @return GuildJoinErrCode */ GuildJoinErrCode VerifyGuildJoinableCondition( const LPCHARACTER pchInvitee ); typedef std::map< DWORD, LPEVENT > EventMap; - EventMap m_GuildInviteEventMap; ///< û Event map. key: ʴ ij PID + EventMap m_GuildInviteEventMap; ///< 길드 초청 Event map. key: 초대받은 캐릭터의 PID // END_OF_GUILD_JOIN_BUG_FIX }; diff --git a/src/game/src/horse_rider.h b/src/game/src/horse_rider.h index da29bb7..5f0f67f 100644 --- a/src/game/src/horse_rider.h +++ b/src/game/src/horse_rider.h @@ -8,10 +8,10 @@ const int HORSE_MAX_LEVEL = 30; struct THorseStat { - int iMinLevel; // ž ִ ּ + int iMinLevel; // 탑승할 수 있는 최소 레벨 int iNPCRace; - int iMaxHealth; // ִ ü - int iMaxStamina; // ִ ׹̳ + int iMaxHealth; // 말의 최대 체력 + int iMaxStamina; // 말의 최대 스테미너 int iST; int iDX; int iHT; diff --git a/src/game/src/input.h b/src/game/src/input.h index e90d256..79bb075 100644 --- a/src/game/src/input.h +++ b/src/game/src/input.h @@ -177,7 +177,7 @@ protected: protected: void MapLocations(const char * c_pData); void LoginSuccess(DWORD dwHandle, const char *data); - void PlayerCreateFailure(LPDESC d, BYTE bType); // 0 = Ϲ 1 = ̹ + void PlayerCreateFailure(LPDESC d, BYTE bType); // 0 = 일반 실패 1 = 이미 있음 void PlayerDeleteSuccess(LPDESC d, const char * data); void PlayerDeleteFail(LPDESC d); void PlayerLoad(LPDESC d, const char* data); @@ -272,10 +272,10 @@ protected: void BlockException(TPacketBlockException * data); // MYSHOP_PRICE_LIST - /// Ʈ û Ŷ(HEADER_DG_MYSHOP_PRICELIST_RES) óԼ + /// 아이템 가격정보 리스트 요청에 대한 응답 패킷(HEADER_DG_MYSHOP_PRICELIST_RES) 처리함수 /** - * @param d Ʈ û ÷̾ descriptor - * @param p Ŷ + * @param d 아이템 가격정보 리스트를 요청한 플레이어의 descriptor + * @param p 패킷데이터의 포인터 */ void MyshopPricelistRes( LPDESC d, const TPacketMyshopPricelistHeader* p ); // END_OF_MYSHOP_PRICE_LIST @@ -285,7 +285,7 @@ protected: //END_RELOAD_ADMIN void DetailLog(const TPacketNeedLoginLogInfo* info); - // ׽Ʈ + // 독일 선물 기능 테스트 void ItemAwardInformer(TPacketItemAwardInfromer* data); void RespondChannelStatus(LPDESC desc, const char* pcData); diff --git a/src/game/src/item.h b/src/game/src/item.h index 063ef4c..0599f1b 100644 --- a/src/game/src/item.h +++ b/src/game/src/item.h @@ -60,10 +60,10 @@ class CItem : public CEntity bool SetCount(DWORD count); DWORD GetCount(); - // GetVnum GetOriginalVnum comment - // GetVnum Masking Vnum̴. ̸ ν, Vnum 10, Vnum 20 ó ִ ̴. - // Masking ori_to_new.txt ǵ ̴. - // GetOriginalVnum Vnum, α , Ŭ̾Ʈ , Vnum Ͽ Ѵ. + // GetVnum과 GetOriginalVnum에 대한 comment + // GetVnum은 Masking 된 Vnum이다. 이를 사용함으로써, 아이템의 실제 Vnum은 10이지만, Vnum이 20인 것처럼 동작할 수 있는 것이다. + // Masking 값은 ori_to_new.txt에서 정의된 값이다. + // GetOriginalVnum은 아이템 고유의 Vnum으로, 로그 남길 때, 클라이언트에 아이템 정보 보낼 때, 저장할 때는 이 Vnum을 사용하여야 한다. // DWORD GetVnum() const { return m_dwMaskVnum ? m_dwMaskVnum : m_dwVnum; } DWORD GetOriginalVnum() const { return m_dwVnum; } @@ -103,7 +103,7 @@ class CItem : public CEntity bool IsPolymorphItem(); - void ModifyPoints(bool bAdd); // ȿ ijͿ ο Ѵ. bAdd false̸ + void ModifyPoints(bool bAdd); // 아이템의 효과를 캐릭터에 부여 한다. bAdd가 false이면 제거함 bool CreateSocket(BYTE bSlot, BYTE bGold); const int * GetSockets() { return &m_alSockets[0]; } @@ -146,7 +146,7 @@ class CItem : public CEntity DWORD GetLastOwnerPID() { return m_dwLastOwnerPID; } - int GetAttributeSetIndex(); // Ӽ ٴ° 迭 ε ϴ ش. + int GetAttributeSetIndex(); // 속성 붙는것을 지정한 배열의 어느 인덱스를 사용하는지 돌려준다. void AlterToMagicItem(); void AlterToSocketItem(int iSocketCount); @@ -165,7 +165,7 @@ class CItem : public CEntity void StopTimerBasedOnWearExpireEvent(); void StopAccessorySocketExpireEvent(); - // ϴ REAL_TIME TIMER_BASED_ON_WEAR ۿ ؼ . + // 일단 REAL_TIME과 TIMER_BASED_ON_WEAR 아이템에 대해서만 제대로 동작함. int GetDuration(); int GetAttributeCount(); @@ -180,7 +180,7 @@ class CItem : public CEntity bool IsSameSpecialGroup(const LPITEM item) const; // ACCESSORY_REFINE - // ׼ ߰ + // 액세서리에 광산을 통해 소켓을 추가 bool IsAccessoryForSocket(); int GetAccessorySocketGrade(); @@ -193,7 +193,7 @@ class CItem : public CEntity void AccessorySocketDegrade(); - // Ǽ縮 ۿ ۾ Ÿ̸ ư°( , ) + // 악세사리 를 아이템에 밖았을때 타이머 돌아가는것( 구리, 등 ) void StartAccessorySocketExpireEvent(); void SetAccessorySocketExpireEvent(LPEVENT pkEvent); @@ -227,7 +227,7 @@ class CItem : public CEntity protected: friend class CInputDB; - bool OnAfterCreatedItem(); // Բ (ε) Ҹ Լ. + bool OnAfterCreatedItem(); // 서버상에 아이템이 모든 정보와 함께 완전히 생성(로드)된 후 불리우는 함수. public: bool IsRideItem(); @@ -237,46 +237,46 @@ class CItem : public CEntity bool IsNewMountItem(); #ifdef __AUCTION__ - // + // 경매장 bool MoveToAuction (); void CopyToRawData (TPlayerItem* item); #endif - // Ͽ ij ۰ , ȯ ij ٰ Ͽ, - // ۿ, ȯ ÷׸ ο ۵ ο 뿪 ҴϿ. - // ο ۵ ۰ ȿ ϴµ, - // , Ŭ, vnum Ǿ־ - // ο vnum ˴ ھƾϴ Ÿ Ȳ ´Ҵ. - // ׷ vnum ̸, ư vnum ٲ㼭 ϰ, - // vnum ٲֵ Ѵ. + // 독일에서 기존 캐시 아이템과 같지만, 교환 가능한 캐시 아이템을 만든다고 하여, + // 오리지널 아이템에, 교환 금지 플래그만 삭제한 새로운 아이템들을 새로운 아이템 대역에 할당하였다. + // 문제는 새로운 아이템도 오리지널 아이템과 같은 효과를 내야하는데, + // 서버건, 클라건, vnum 기반으로 되어있어 + // 새로운 vnum을 죄다 서버에 새로 다 박아야하는 안타까운 상황에 맞닿았다. + // 그래서 새 vnum의 아이템이면, 서버에서 돌아갈 때는 오리지널 아이템 vnum으로 바꿔서 돌고 하고, + // 저장할 때에 본래 vnum으로 바꿔주도록 한다. - // Mask vnum  (ex. Ȳ) vnum ٲ ư ִ. + // Mask vnum은 어떤 이유(ex. 위의 상황)로 인해 vnum이 바뀌어 돌아가는 아이템을 위해 있다. void SetMaskVnum(DWORD vnum) { m_dwMaskVnum = vnum; } DWORD GetMaskVnum() { return m_dwMaskVnum; } bool IsMaskedItem() { return m_dwMaskVnum != 0; } - // ȥ + // 용혼석 bool IsDragonSoul(); int GiveMoreTime_Per(float fPercent); int GiveMoreTime_Fix(DWORD dwTime); private: - TItemTable const * m_pProto; // Ÿ + TItemTable const * m_pProto; // 프로토 타잎 DWORD m_dwVnum; LPCHARACTER m_pOwner; - BYTE m_bWindow; // ġ - DWORD m_dwID; // ȣ - bool m_bEquipped; // Ǿ°? + BYTE m_bWindow; // 현재 아이템이 위치한 윈도우 + DWORD m_dwID; // 고유번호 + bool m_bEquipped; // 장착 되었는가? DWORD m_dwVID; // VID - WORD m_wCell; // ġ - DWORD m_dwCount; // - int m_lFlag; // ߰ flag - DWORD m_dwLastOwnerPID; // ־ PID + WORD m_wCell; // 위치 + DWORD m_dwCount; // 개수 + int m_lFlag; // 추가 flag + DWORD m_dwLastOwnerPID; // 마지막 가지고 있었던 사람의 PID - bool m_bExchanging; ///< ȯ + bool m_bExchanging; ///< 현재 교환중 상태 - int m_alSockets[ITEM_SOCKET_MAX_NUM]; // Ĺ + int m_alSockets[ITEM_SOCKET_MAX_NUM]; // 아이템 소캣 TPlayerItemAttribute m_aAttr[ITEM_ATTRIBUTE_MAX_NUM]; LPEVENT m_pkDestroyEvent; diff --git a/src/game/src/item_manager.h b/src/game/src/item_manager.h index 6ca4e9b..8beb832 100644 --- a/src/game/src/item_manager.h +++ b/src/game/src/item_manager.h @@ -5,9 +5,9 @@ #include "pool.h" #endif -// special_item_group.txt ϴ Ӽ ׷ -// type attr ִ. -// Ӽ ׷ ̿ ִ special_item_group.txt Special type ǵ ׷쿡 UNIQUE ITEM̴. +// special_item_group.txt에서 정의하는 속성 그룹 +// type attr로 선언할 수 있다. +// 이 속성 그룹을 이용할 수 있는 것은 special_item_group.txt에서 Special type으로 정의된 그룹에 속한 UNIQUE ITEM이다. class CSpecialAttrGroup { public: @@ -43,10 +43,10 @@ class CSpecialItemGroup MOB_GROUP, }; - // QUEST Ÿ Ʈ ũƮ vnum.sig_use ִ ׷̴. - // , ׷쿡  ؼ ITEM ü TYPE QUEST Ѵ. - // SPECIAL Ÿ idx, item_vnum, attr_vnum ԷѴ. attr_vnum CSpecialAttrGroup Vnum̴. - // ׷쿡 ִ . + // QUEST 타입은 퀘스트 스크립트에서 vnum.sig_use를 사용할 수 있는 그룹이다. + // 단, 이 그룹에 들어가기 위해서는 ITEM 자체의 TYPE이 QUEST여야 한다. + // SPECIAL 타입은 idx, item_vnum, attr_vnum을 입력한다. attr_vnum은 위에 CSpecialAttrGroup의 Vnum이다. + // 이 그룹에 들어있는 아이템은 같이 착용할 수 없다. enum ESIGType { NORMAL, PCT, QUEST, SPECIAL }; struct CSpecialItemInfo @@ -79,9 +79,9 @@ class CSpecialItemGroup return m_vecProbs.empty(); } - // Type Multi, m_bType == PCT , - // Ȯ ذ ʰ, Ͽ Ѵ. - // ִ. + // Type Multi, 즉 m_bType == PCT 인 경우, + // 확률을 더해가지 않고, 독립적으로 계산하여 아이템을 생성한다. + // 따라서 여러 개의 아이템이 생성될 수 있다. // by rtsummit int GetMultiIndex(std::vector &idx_vec) const { @@ -143,8 +143,8 @@ class CSpecialItemGroup return false; } - // Group Type Special 쿡 - // dwVnum ĪǴ AttrVnum returnش. + // Group의 Type이 Special인 경우에 + // dwVnum에 매칭되는 AttrVnum을 return해준다. DWORD GetAttrVnum(DWORD dwVnum) const { if (CSpecialItemGroup::SPECIAL != m_bType) @@ -354,18 +354,18 @@ class ITEM_MANAGER : public singleton bool Initialize(TItemTable * table, int size); void Destroy(); - void Update(); // θ. + void Update(); // 매 루프마다 부른다. void GracefulShutdown(); DWORD GetNewID(); - bool SetMaxItemID(TItemIDRangeTable range); // ִ ̵ + bool SetMaxItemID(TItemIDRangeTable range); // 최대 고유 아이디를 지정 bool SetMaxSpareItemID(TItemIDRangeTable range); - // DelayedSave:  ƾ ؾ ϸ - // ʹ Ƿ " Ѵ" ǥø صΰ - // (: 1 frame) Ŀ Ų. + // DelayedSave: 어떠한 루틴 내에서 저장을 해야 할 짓을 많이 하면 저장 + // 쿼리가 너무 많아지므로 "저장을 한다" 라고 표시만 해두고 잠깐 + // (예: 1 frame) 후에 저장시킨다. void DelayedSave(LPITEM item); - void FlushDelayedSave(LPITEM item); // Delayed Ʈ ִٸ Ѵ. ó . + void FlushDelayedSave(LPITEM item); // Delayed 리스트에 있다면 지우고 저장한다. 끊김 처리시 사용 됨. void SaveSingleItem(LPITEM item); LPITEM CreateItem(DWORD vnum, DWORD count = 1, DWORD dwID = 0, bool bTryMagic = false, int iRarePct = -1, bool bSkipSave = false); @@ -374,7 +374,7 @@ class ITEM_MANAGER : public singleton #else void DestroyItem(LPITEM item, const char* file, size_t line); #endif - void RemoveItem(LPITEM item, const char * c_pszReason=NULL); // ڷ + void RemoveItem(LPITEM item, const char * c_pszReason=NULL); // 사용자로 부터 아이템을 제거 LPITEM Find(DWORD id); LPITEM FindByVID(DWORD vid); @@ -397,7 +397,7 @@ class ITEM_MANAGER : public singleton DWORD GetRefineFromVnum(DWORD dwVnum); - static void CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem); // pkNewItem Ӽ ϴ Լ. + static void CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem); // pkNewItem으로 모든 속성과 소켓 값들을 목사하는 함수. const CSpecialItemGroup* GetSpecialItemGroup(DWORD dwVnum); @@ -421,8 +421,8 @@ class ITEM_MANAGER : public singleton std::map m_map_ItemRefineFrom; int m_iTopOfTable; - ITEM_VID_MAP m_VIDMap; ///< m_dwVIDCount Ѵ. - DWORD m_dwVIDCount; ///< ̳༮ VID ƴ϶ ׳ μ ũ ȣ. + ITEM_VID_MAP m_VIDMap; ///< m_dwVIDCount 의 값단위로 아이템을 저장한다. + DWORD m_dwVIDCount; ///< 이녀석 VID가 아니라 그냥 프로세스 단위 유니크 번호다. DWORD m_dwCurrentID; TItemIDRangeTable m_ItemIDRange; TItemIDRangeTable m_ItemIDSpareRange; @@ -443,15 +443,15 @@ class ITEM_MANAGER : public singleton // END_OF_CHECK_UNIQUE_GROUP private: - // Ͽ ij ۰ , ȯ ij ٰ Ͽ, - // ۿ ȯ ÷׸ ο ۵ , - // ο 뿪 ҴϿ. - // ο ۵ ۰ ȿ ϴµ, - // , Ŭ, vnum Ǿ־ - // ο vnum ˴ ھƾϴ Ÿ Ȳ ´Ҵ. - // ׷ vnum ̸, ư vnum ٲ㼭 ϰ, - // vnum ٲֵ Ѵ. - // ̸ vnum ο vnum ִ . + // 독일에서 기존 캐시 아이템과 같지만, 교환 가능한 캐시 아이템을 만든다고 하여, + // 오리지널 아이템에 교환 금지 플래그만 삭제한 새로운 아이템들을 만들어, + // 새로운 아이템 대역을 할당하였다. + // 문제는 새로운 아이템도 오리지널 아이템과 같은 효과를 내야하는데, + // 서버건, 클라건, vnum 기반으로 되어있어 + // 새로운 vnum을 죄다 서버에 새로 다 박아야하는 안타까운 상황에 맞닿았다. + // 그래서 새 vnum의 아이템이면, 서버에서 돌아갈 때는 오리지널 아이템 vnum으로 바꿔서 돌고 하고, + // 저장할 때에 본래 vnum으로 바꿔주도록 한다. + // 이를 위해 오리지널 vnum과 새로운 vnum을 연결시켜주는 맵을 만듦. typedef std::map TMapDW2DW; TMapDW2DW m_map_new_to_ori; diff --git a/src/game/src/messenger_manager.h b/src/game/src/messenger_manager.h index f04c880..3aa8fbb 100644 --- a/src/game/src/messenger_manager.h +++ b/src/game/src/messenger_manager.h @@ -22,10 +22,10 @@ class MessengerManager : public singleton void RequestToAdd(LPCHARACTER ch, LPCHARACTER target); void AuthToAdd(keyA account, keyA companion, bool bDeny); - void __AddToList(keyA account, keyA companion); // m_Relation, m_InverseRelation ϴ ޼ҵ + void __AddToList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드 void AddToList(keyA account, keyA companion); - void __RemoveFromList(keyA account, keyA companion); // m_Relation, m_InverseRelation ϴ ޼ҵ + void __RemoveFromList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드 void RemoveFromList(keyA account, keyA companion); void RemoveAllList(keyA account); diff --git a/src/game/src/mob_manager.h b/src/game/src/mob_manager.h index 1ac67a9..fe86391 100644 --- a/src/game/src/mob_manager.h +++ b/src/game/src/mob_manager.h @@ -3,8 +3,8 @@ typedef struct SMobSplashAttackInfo { - DWORD dwTiming; // ų ٸ ð (ms) - DWORD dwHitDistance; // ų ų Ǵ Ÿ ( cm) + DWORD dwTiming; // 스킬 사용 후 실제로 데미지 먹힐때까지 기다리는 시간 (ms) + DWORD dwHitDistance; // 스킬 사용시 실제로 스킬 계산이 되는 거리 (전방 몇cm) SMobSplashAttackInfo(DWORD dwTiming, DWORD dwHitDistance) : dwTiming(dwTiming) @@ -37,8 +37,8 @@ class CMobInstance public: CMobInstance(); - PIXEL_POSITION m_posLastAttacked; // ġ - DWORD m_dwLastAttackedTime; // ð + PIXEL_POSITION m_posLastAttacked; // 마지막 맞은 위치 + DWORD m_dwLastAttackedTime; // 마지막 맞은 시간 DWORD m_dwLastWarpTime; bool m_IsBerserk; diff --git a/src/game/src/monarch.h b/src/game/src/monarch.h index 411dec9..8821563 100644 --- a/src/game/src/monarch.h +++ b/src/game/src/monarch.h @@ -49,11 +49,11 @@ class CMonarch : public singleton private: TMonarchInfo m_MonarchInfo; - int m_PowerUp[4]; ///< - int m_DefenseUp[4]; ///< ݰ + int m_PowerUp[4]; ///< 군주의 사자후 + int m_DefenseUp[4]; ///< 군주의 금강권 - int m_PowerUpCT[4]; ///< - int m_DefenseUpCT[4]; ///< ݰ + int m_PowerUpCT[4]; ///< 군주의 사자후 + int m_DefenseUpCT[4]; ///< 군주의 금강권 }; bool IsMonarchWarpZone (int map_idx); diff --git a/src/game/src/motion.h b/src/game/src/motion.h index e13c3c8..336db47 100644 --- a/src/game/src/motion.h +++ b/src/game/src/motion.h @@ -18,40 +18,40 @@ enum EMotionMode enum EPublicMotion { - MOTION_NONE, // 0 - MOTION_WAIT, // 1 (00.msa) - MOTION_WALK, // 2 ȱ (02.msa) - MOTION_RUN, // 3 ٱ (03.msa) - MOTION_CHANGE_WEAPON, // 4 ٲٱ - MOTION_DAMAGE, // 5 ± (30.msa) - MOTION_DAMAGE_FLYING, // 6 鳯ư (32.msa) - MOTION_STAND_UP, // 7 Ͼ (33.msa) - MOTION_DAMAGE_BACK, // 8 ĸ± (34.msa) - MOTION_DAMAGE_FLYING_BACK, // 9 ĸ鳯ư (35.msa) - MOTION_STAND_UP_BACK, // 10 ĸϾ (26.msa) - MOTION_DEAD, // 11 ױ (31.msa) - MOTION_DEAD_BACK, // 12 ĸױ (37.msa) - MOTION_NORMAL_ATTACK, // 13 ⺻ - MOTION_COMBO_ATTACK_1, // 14 ޺ - MOTION_COMBO_ATTACK_2, // 15 ޺ - MOTION_COMBO_ATTACK_3, // 16 ޺ - MOTION_COMBO_ATTACK_4, // 17 ޺ - MOTION_COMBO_ATTACK_5, // 18 ޺ - MOTION_COMBO_ATTACK_6, // 19 ޺ - MOTION_COMBO_ATTACK_7, // 20 ޺ - MOTION_COMBO_ATTACK_8, // 21 ޺ - MOTION_INTRO_WAIT, // 22 ȭ - MOTION_INTRO_SELECTED, // 23 ȭ - MOTION_INTRO_NOT_SELECTED, // 24 ȭ - MOTION_SPAWN, // 25 ȯ - MOTION_FISHING_THROW, // 26 - MOTION_FISHING_WAIT, // 27 - MOTION_FISHING_STOP, // 28 ׸α - MOTION_FISHING_REACT, // 29 - MOTION_FISHING_CATCH, // 30 - MOTION_FISHING_FAIL, // 31 - MOTION_STOP, // 32 ߱ - MOTION_SPECIAL_1, // 33 ų + MOTION_NONE, // 0 없음 + MOTION_WAIT, // 1 대기 (00.msa) + MOTION_WALK, // 2 걷기 (02.msa) + MOTION_RUN, // 3 뛰기 (03.msa) + MOTION_CHANGE_WEAPON, // 4 무기바꾸기 + MOTION_DAMAGE, // 5 정면맞기 (30.msa) + MOTION_DAMAGE_FLYING, // 6 정면날아가기 (32.msa) + MOTION_STAND_UP, // 7 정면일어나기 (33.msa) + MOTION_DAMAGE_BACK, // 8 후면맞기 (34.msa) + MOTION_DAMAGE_FLYING_BACK, // 9 후면날아가기 (35.msa) + MOTION_STAND_UP_BACK, // 10 후면일어나기 (26.msa) + MOTION_DEAD, // 11 죽기 (31.msa) + MOTION_DEAD_BACK, // 12 후면죽기 (37.msa) + MOTION_NORMAL_ATTACK, // 13 기본 공격 + MOTION_COMBO_ATTACK_1, // 14 콤보 공격 + MOTION_COMBO_ATTACK_2, // 15 콤보 공격 + MOTION_COMBO_ATTACK_3, // 16 콤보 공격 + MOTION_COMBO_ATTACK_4, // 17 콤보 공격 + MOTION_COMBO_ATTACK_5, // 18 콤보 공격 + MOTION_COMBO_ATTACK_6, // 19 콤보 공격 + MOTION_COMBO_ATTACK_7, // 20 콤보 공격 + MOTION_COMBO_ATTACK_8, // 21 콤보 공격 + MOTION_INTRO_WAIT, // 22 선택화면 대기 + MOTION_INTRO_SELECTED, // 23 선택화면 선택 + MOTION_INTRO_NOT_SELECTED, // 24 선택화면 비선택 + MOTION_SPAWN, // 25 소환 + MOTION_FISHING_THROW, // 26 낚시 던지기 + MOTION_FISHING_WAIT, // 27 낚시 대기 + MOTION_FISHING_STOP, // 28 낚시 그만두기 + MOTION_FISHING_REACT, // 29 낚시 반응 + MOTION_FISHING_CATCH, // 30 낚시 잡기 + MOTION_FISHING_FAIL, // 31 낚시 실패 + MOTION_STOP, // 32 말 멈추기 + MOTION_SPECIAL_1, // 33 몬스터 스킬 MOTION_SPECIAL_2, // 34 MOTION_SPECIAL_3, // 35 MOTION_SPECIAL_4, // 36 diff --git a/src/game/src/p2p.h b/src/game/src/p2p.h index 0db231c..ffb301a 100644 --- a/src/game/src/p2p.h +++ b/src/game/src/p2p.h @@ -24,19 +24,19 @@ class P2P_MANAGER : public singleton P2P_MANAGER(); ~P2P_MANAGER(); - // Ʒ Register* Unregister* pair ƾ Ѵ. - // ǥϱ + // 아래 Register* Unregister* pair들은 내부적으로 사실 같은 루틴을 사용한다. + // 단지 명시적으로 표시하기 위한 것 void RegisterAcceptor(LPDESC d); void UnregisterAcceptor(LPDESC d); void RegisterConnector(LPDESC d); void UnregisterConnector(LPDESC d); - void EraseUserByDesc(LPDESC d); // ش desc ִ . + void EraseUserByDesc(LPDESC d); // 해당 desc에 있는 유저들을 지운다. void FlushOutput(); - void Boot(LPDESC d); // p2p ó ʿ ش. ( ij α ) + void Boot(LPDESC d); // p2p 처리에 필요한 정보를 보내준다. (전 캐릭터의 로그인 정보 등) void Send(const void * c_pvData, int iSize, LPDESC except = NULL); diff --git a/src/game/src/packet.h b/src/game/src/packet.h index 8b1eb1e..8766082 100644 --- a/src/game/src/packet.h +++ b/src/game/src/packet.h @@ -45,14 +45,14 @@ enum HEADER_CG_ITEM_USE_TO_ITEM = 60, HEADER_CG_TARGET = 61, - HEADER_CG_TEXT = 64, // @ ۵Ǹ ؽƮ ĽѴ. + HEADER_CG_TEXT = 64, // @ 로 시작되면 텍스트를 파싱한다. HEADER_CG_WARP = 65, HEADER_CG_SCRIPT_BUTTON = 66, HEADER_CG_MESSENGER = 67, HEADER_CG_MALL_CHECKOUT = 69, - HEADER_CG_SAFEBOX_CHECKIN = 70, // â ??´. - HEADER_CG_SAFEBOX_CHECKOUT = 71, // â ´. + HEADER_CG_SAFEBOX_CHECKIN = 70, // 아이템을 창고에 넣??는다. + HEADER_CG_SAFEBOX_CHECKOUT = 71, // 아이템을 창고로 부터 빼온다. HEADER_CG_PARTY_INVITE = 72, HEADER_CG_PARTY_INVITE_ANSWER = 73, @@ -93,10 +93,10 @@ enum // HEADER_CG_ROULETTE = 200, // HEADER_CG_RUNUP_MATRIX_ANSWER = 201, - //NOTE : ̷ XXX ̰ Packet . ̷ ڵϰ Ѿ. - //enum ϴ. ƴ namepsace ϴ.. - // packet generator ٶ ʴ´. ̷ XX - //̷ٰ ġ åµ??? + //NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나. + //enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가.. + //정말 packet generator까지는 바라지도 않는다. 이런 씨XX + //이러다가 숫자 겹치면 누가 책임지는데??? HEADER_CG_DRAGON_SOUL_REFINE = 205, HEADER_CG_STATE_CHECKER = 206, @@ -286,7 +286,7 @@ enum HEADER_GG_NOTICE = 4, HEADER_GG_SHUTDOWN = 5, HEADER_GG_GUILD = 6, - HEADER_GG_DISCONNECT = 7, // + HEADER_GG_DISCONNECT = 7, // 누군가의 접속을 강제로 끊을 때 HEADER_GG_SHOUT = 8, HEADER_GG_SETUP = 9, HEADER_GG_MESSENGER_ADD = 10, @@ -454,8 +454,8 @@ typedef struct SPacketGGMessengerMobile typedef struct SPacketGGFindPosition { BYTE header; - DWORD dwFromPID; // ġ Ϸ - DWORD dwTargetPID; // ã + DWORD dwFromPID; // 저 위치로 워프하려는 사람 + DWORD dwTargetPID; // 찾는 사람 } TPacketGGFindPosition; typedef struct SPacketGGWarpCharacter @@ -496,14 +496,14 @@ typedef struct SPacketGGBlockChat LONG lBlockDuration; } TPacketGGBlockChat; -/* Ŭ̾Ʈ Ŷ */ +/* 클라이언트 측에서 보내는 패킷 */ typedef struct command_text { BYTE bHeader; } TPacketCGText; -/* α (1) */ +/* 로그인 (1) */ typedef struct command_handshake { BYTE bHeader; @@ -587,7 +587,7 @@ typedef struct command_player_create_success TSimplePlayer player; } TPacketGCPlayerCreateSuccess; -// +// 공격 typedef struct command_attack { BYTE bHeader; @@ -609,7 +609,7 @@ enum EMoveFuncType FUNC_SKILL = 0x80, }; -// ̵ +// 이동 typedef struct command_move { BYTE bHeader; @@ -628,22 +628,22 @@ typedef struct command_sync_position_element LONG lY; } TPacketCGSyncPositionElement; -// ġ ȭ -typedef struct command_sync_position // Ŷ +// 위치 동기화 +typedef struct command_sync_position // 가변 패킷 { BYTE bHeader; WORD wSize; } TPacketCGSyncPosition; -/* ä (3) */ -typedef struct command_chat // Ŷ +/* 채팅 (3) */ +typedef struct command_chat // 가변 패킷 { BYTE header; WORD size; BYTE type; } TPacketCGChat; -/* ӼӸ */ +/* 귓속말 */ typedef struct command_whisper { BYTE bHeader; @@ -803,7 +803,7 @@ typedef struct command_quest_confirm } TPacketCGQuestConfirm; /* - * Ŷ + * 서버 측에서 보내는 패킷 */ typedef struct packet_quest_confirm { @@ -919,7 +919,7 @@ typedef struct packet_add_char BYTE bAttackSpeed; BYTE bStateFlag; - DWORD dwAffectFlag[2]; // ȿ + DWORD dwAffectFlag[2]; // 효과 } TPacketGCCharacterAdd; typedef struct packet_char_additional_info @@ -981,7 +981,7 @@ typedef struct packet_del_char DWORD id; } TPacketGCCharacterDelete; -typedef struct packet_chat // Ŷ +typedef struct packet_chat // 가변 패킷 { BYTE header; WORD size; @@ -990,7 +990,7 @@ typedef struct packet_chat // BYTE bEmpire; } TPacketGCChat; -typedef struct packet_whisper // Ŷ +typedef struct packet_whisper // 가변 패킷 { BYTE bHeader; WORD wSize; @@ -1214,7 +1214,7 @@ typedef struct packet_shop_start struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM]; } TPacketGCShopStart; -typedef struct packet_shop_start_ex // TSubPacketShopTab* shop_tabs . +typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴. { typedef struct sub_packet_shop_tab { @@ -1237,7 +1237,7 @@ typedef struct packet_shop_update_price INT iPrice; } TPacketGCShopUpdatePrice; -typedef struct packet_shop // Ŷ +typedef struct packet_shop // 가변 패킷 { BYTE header; WORD size; @@ -1317,7 +1317,7 @@ typedef struct packet_move DWORD dwDuration; } TPacketGCMove; -// +// 소유권 typedef struct packet_ownership { BYTE bHeader; @@ -1325,7 +1325,7 @@ typedef struct packet_ownership DWORD dwVictimVID; } TPacketGCOwnership; -// ġ ȭ Ŷ bCount ŭ ٴ +// 위치 동기화 패킷의 bCount 만큼 붙는 단위 typedef struct packet_sync_position_element { DWORD dwVID; @@ -1333,11 +1333,11 @@ typedef struct packet_sync_position_element LONG lY; } TPacketGCSyncPositionElement; -// ġ ȭ -typedef struct packet_sync_position // Ŷ +// 위치 동기화 +typedef struct packet_sync_position // 가변 패킷 { BYTE bHeader; - WORD wSize; // = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement) + WORD wSize; // 개수 = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement) } TPacketGCSyncPosition; typedef struct packet_fly @@ -1372,7 +1372,7 @@ typedef struct packet_shoot typedef struct packet_duel_start { BYTE header; - WORD wSize; // DWORD ? = (wSize - sizeof(TPacketGCPVPList)) / 4 + WORD wSize; // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4 } TPacketGCDuelStart; enum EPVPModes @@ -1388,7 +1388,7 @@ typedef struct packet_pvp BYTE bHeader; DWORD dwVIDSrc; DWORD dwVIDDst; - BYTE bMode; // 0 ̸ , 1̸ + BYTE bMode; // 0 이면 끔, 1이면 켬 } TPacketGCPVP; typedef struct command_use_skill @@ -1785,7 +1785,7 @@ typedef struct packet_mark_idxlist BYTE header; DWORD bufSize; WORD count; - //ڿ size * (WORD + WORD)ŭ + //뒤에 size * (WORD + WORD)만큼 데이터 붙음 } TPacketGCMarkIDXList; typedef struct packet_mark_block @@ -1794,7 +1794,7 @@ typedef struct packet_mark_block DWORD bufSize; BYTE imgIdx; DWORD count; - // ڿ 64 x 48 x ȼũ(4Ʈ) = 12288ŭ + // 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음 } TPacketGCMarkBlock; typedef struct command_symbol_upload @@ -1933,8 +1933,8 @@ typedef struct SPacketGCRefineInformaion DWORD src_vnum; DWORD result_vnum; BYTE material_count; - INT cost; // ҿ - INT prob; // Ȯ + INT cost; // 소요 비용 + INT prob; // 확률 TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM]; } TPacketGCRefineInformation; @@ -2149,13 +2149,13 @@ typedef struct SPacketGCPanamaPack BYTE abIV[32]; } TPacketGCPanamaPack; -//TODO : ƿ ¯..Ŷ ޾Ƶϼ ְ Ŷ ڵ鷯 Refactoring . +//TODO : 아우 짱나..가변패킷 사이즈 받아들일수 있게 패킷 핸들러 Refactoring 하자. typedef struct SPacketGCHybridCryptKeys { SPacketGCHybridCryptKeys() : m_pStream(NULL) {} ~SPacketGCHybridCryptKeys() { - //GCC NULL delete ص ? ϴ ϰ NULL üũ . ( ٵ ̰ C++ ǥؾƴϾ --a ) + //GCC 에선 NULL delete 해도 괜찮나? 일단 안전하게 NULL 체크 하자. ( 근데 이거 C++ 표준아니었나 --a ) if( m_pStream ) { delete[] m_pStream; @@ -2188,7 +2188,7 @@ typedef struct SPacketGCHybridCryptKeys } BYTE bHeader; - WORD uDynamicPacketSize; // Ŭ DynamicPacketHeader Ѵ -_-; + WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-; INT KeyStreamLen; BYTE* pDataKeyStream; @@ -2236,7 +2236,7 @@ typedef struct SPacketGCPackageSDB } BYTE bHeader; - WORD uDynamicPacketSize; // Ŭ DynamicPacketHeader Ѵ -_-; + WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-; INT iStreamLen; BYTE* m_pDataSDBStream; @@ -2254,7 +2254,7 @@ typedef struct SPacketGCSpecificEffect char effect_file[MAX_EFFECT_FILE_NAME]; } TPacketGCSpecificEffect; -// ȥ +// 용혼석 enum EDragonSoulRefineWindowRefineType { DragonSoulRefineWindow_UPGRADE, diff --git a/src/game/src/party.h b/src/game/src/party.h index 116c3b2..7222803 100644 --- a/src/game/src/party.h +++ b/src/game/src/party.h @@ -5,7 +5,7 @@ enum // unit : minute { - PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS = 60, // Ƽ Ἲ 60 ߰ ġ ʽ + PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS = 60, // 파티 결성 후 60분 후 부터 추가 경험치 보너스 PARTY_HEAL_COOLTIME_LONG = 60, PARTY_HEAL_COOLTIME_SHORT = 30, PARTY_MAX_MEMBER = 8, @@ -69,12 +69,12 @@ class CPartyManager : public singleton void P2PQuitParty(DWORD pid); private: - TPartyMap m_map_pkParty; // PID Ƽ ֳ ˻ϱ ̳ - TPartyMap m_map_pkMobParty; // Mob Ƽ PID VID Ѵ. + TPartyMap m_map_pkParty; // PID로 어느 파티에 있나 검색하기 위한 컨테이너 + TPartyMap m_map_pkMobParty; // Mob 파티는 PID 대신 VID 로 따로 관리한다. - TPCPartySet m_set_pkPCParty; // Ƽ ü + TPCPartySet m_set_pkPCParty; // 사람들의 파티 전체 집합 - bool m_bEnablePCParty; // Ƽ ° Ұ + bool m_bEnablePCParty; // 디비가 켜져있지 않으면 사람들의 파티 상태가 변경불가 }; enum EPartyMessages @@ -246,9 +246,9 @@ class CParty TFlagMap m_map_iFlag; LPDUNGEON m_pkDungeon; - // Ʊ dungeon . - // ̷Ա ϰ ʾҴµ, party ̶ - // װ ġ ̷ ӽ÷ س´. + // 아귀 동굴용 dungeon 멤버 변수. + // 정말 이렇게까지 하고 싶진 않았는데, 던전에서 party 관리가 정말로 개판이라 + // 그거 고치기 전까지는 이렇게 임시로 해놓는다. LPDUNGEON m_pkDungeon_for_Only_party; public: void SetDungeon_for_Only_party(LPDUNGEON pDungeon); diff --git a/src/game/src/priv_manager.h b/src/game/src/priv_manager.h index 58b011d..a5e837b 100644 --- a/src/game/src/priv_manager.h +++ b/src/game/src/priv_manager.h @@ -2,10 +2,10 @@ #define __PRIV_MANAGER_H /** - * @version 05/06/08 Bang2ni - Guild privilege Լ ð ߰ - * RequestGiveGuildPriv, GiveGuildPriv Լ Ÿ - * m_aPrivGuild Ÿ - * ü SPrivGuildData, Լ GetPrivByGuildEx ߰ + * @version 05/06/08 Bang2ni - Guild privilege 관련 함수 지속 시간 추가 + * RequestGiveGuildPriv, GiveGuildPriv 함수 프로토타잎 수정 + * m_aPrivGuild 타잎 수정 + * 구조체 SPrivGuildData, 멤버 함수 GetPrivByGuildEx 추가 */ class CPrivManager : public singleton { @@ -38,18 +38,18 @@ class CPrivManager : public singleton SPrivEmpireData* GetPrivByEmpireEx(BYTE bEmpire, BYTE type); - /// ʽ + /// 길드 보너스 데이터 struct SPrivGuildData { - int value; ///< ʽ ġ - time_t end_time_sec; ///< ð + int value; ///< 보너스 수치 + time_t end_time_sec; ///< 지속 시간 }; - /// ʽ ͸ ´. + /// 길드 보너스 데이터를 얻어온다. /** - * @param [in] dwGuildID ID - * @param [in] byType ʽ Ÿ - * @return ʽ , شϴ ʽ Ÿٰ ID ʽ Ͱ NULL + * @param [in] dwGuildID 얻어올 길드의 ID + * @param [in] byType 보너스 타잎 + * @return 대상 길드의 길드 보너스 데이터의 포인터, 해당하는 보너스 타잎과 길드의 ID 에 대해 보너스 데이터가 없을 경우 NULL */ const SPrivGuildData* GetPrivByGuildEx( DWORD dwGuildID, BYTE byType ) const; diff --git a/src/game/src/pvp.h b/src/game/src/pvp.h index 116c632..fadedc1 100644 --- a/src/game/src/pvp.h +++ b/src/game/src/pvp.h @@ -3,8 +3,8 @@ class CHARACTER; -// CPVP DWORD ̵ ΰ ޾Ƽ m_dwCRC  ִ´. -// CPVPManager ̷ CRC ˻Ѵ. +// CPVP에는 DWORD 아이디 두개를 받아서 m_dwCRC를 만들어서 가지고 있는다. +// CPVPManager에서 이렇게 만든 CRC를 통해 검색한다. class CPVP { public: @@ -26,8 +26,8 @@ class CPVP CPVP(CPVP & v); ~CPVP(); - void Win(DWORD dwPID); // dwPID ̰! - bool CanRevenge(DWORD dwPID); // dwPID ־? + void Win(DWORD dwPID); // dwPID가 이겼다! + bool CanRevenge(DWORD dwPID); // dwPID가 복수할 수 있어? bool IsFight(); bool Agree(DWORD dwPID); @@ -57,7 +57,7 @@ class CPVPManager : public singleton void Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim); bool CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim); - bool Dead(LPCHARACTER pkChr, DWORD dwKillerPID); // PVP ־ + bool Dead(LPCHARACTER pkChr, DWORD dwKillerPID); // PVP에 있었나 없었나를 리턴 void GiveUp(LPCHARACTER pkChr, DWORD dwKillerPID); void Connect(LPCHARACTER pkChr); void Disconnect(LPCHARACTER pkChr); diff --git a/src/game/src/questmanager.h b/src/game/src/questmanager.h index efac155..7f505f4 100644 --- a/src/game/src/questmanager.h +++ b/src/game/src/questmanager.h @@ -56,7 +56,7 @@ namespace quest bool RunState(QuestState& qs); PC * GetPC(unsigned int pc); - PC * GetPCForce(unsigned int pc); // PC ٲ ʰ PC ͸ ´. + PC * GetPCForce(unsigned int pc); // 현재 PC를 바꾸지 않고 PC 포인터를 가져온다. unsigned int GetCurrentNPCRace(); const string & GetCurrentQuestName(); @@ -106,7 +106,7 @@ namespace quest void Letter(DWORD pc); void Letter(DWORD pc, DWORD quest_index, int state); - void ItemInformer(unsigned int pc, unsigned int vnum); //ϼ + void ItemInformer(unsigned int pc, unsigned int vnum); //독일선물기능 // @@ -254,7 +254,7 @@ namespace quest static bool ExecuteQuestScript(PC& pc, DWORD quest_index, const int state, const char* code, const int code_size, vector* pChatScripts = NULL, bool bUseCache = true); - // begin_other_pc_blcok, end_other_pc_block ü. + // begin_other_pc_blcok, end_other_pc_block을 위한 객체들. public: void BeginOtherPCBlock(DWORD pid); void EndOtherPCBlock(); diff --git a/src/game/src/questnpc.h b/src/game/src/questnpc.h index c28515c..8b355c0 100644 --- a/src/game/src/questnpc.h +++ b/src/game/src/questnpc.h @@ -21,13 +21,13 @@ namespace quest class NPC { public: - // ڰ ũƮ + // 인자가 없는 스크립트들 // first: state number typedef map AQuestScriptType; // first: quest number typedef map QuestMapType; - // ڰ ִ ũƮ + // 인자가 있는 스크립트들 // first: state number typedef map > AArgQuestScriptType; // first: quest number @@ -69,7 +69,7 @@ namespace quest bool OnChat(PC& pc); bool HasChat(); - bool OnItemInformer(PC& pc,unsigned int vnum); // ׽Ʈ + bool OnItemInformer(PC& pc,unsigned int vnum); // 독일 선물 기능 테스트 bool OnTarget(PC& pc, DWORD dwQuestIndex, const char * c_pszTargetName, const char * c_pszVerb, bool & bRet); bool OnUnmount(PC& pc); diff --git a/src/game/src/questpc.h b/src/game/src/questpc.h index 9a95080..1fd64fe 100644 --- a/src/game/src/questpc.h +++ b/src/game/src/questpc.h @@ -35,12 +35,12 @@ namespace quest enum { QUEST_SEND_ISBEGIN = (1 << 0), - QUEST_SEND_TITLE = (1 << 1), // 30 - QUEST_SEND_CLOCK_NAME = (1 << 2), // 16 + QUEST_SEND_TITLE = (1 << 1), // 30자 까지 + QUEST_SEND_CLOCK_NAME = (1 << 2), // 16자 까지 QUEST_SEND_CLOCK_VALUE = (1 << 3), - QUEST_SEND_COUNTER_NAME = (1 << 4), // 16 + QUEST_SEND_COUNTER_NAME = (1 << 4), // 16자 까지 QUEST_SEND_COUNTER_VALUE = (1 << 5), - QUEST_SEND_ICON_FILE = (1 << 6), // 24 + QUEST_SEND_ICON_FILE = (1 << 6), // 24자 까지 }; typedef map QuestInfo; @@ -122,7 +122,7 @@ namespace quest bool IsLoaded() const { return m_bLoaded; } void SetLoaded() { m_bLoaded = true; } void Build(); - // DB + // DB에 저장 void Save(); bool HasReward() { return !m_vRewardData.empty() || m_bIsGivenReward; } @@ -176,7 +176,7 @@ namespace quest TTimerMap m_TimerMap; int m_iSendToClient; - bool m_bLoaded; // ε ѹ Ѵ. + bool m_bLoaded; // 로드는 한번만 한다. int m_iLastState; diff --git a/src/game/src/refine.h b/src/game/src/refine.h index 77a1e05..a567406 100644 --- a/src/game/src/refine.h +++ b/src/game/src/refine.h @@ -5,8 +5,8 @@ enum { - BLACKSMITH_MOB = 20016, // Ȯ - ALCHEMIST_MOB = 20001, // 100% + BLACKSMITH_MOB = 20016, // 확률 개량 + ALCHEMIST_MOB = 20001, // 100% 개량 성공 BLACKSMITH_WEAPON_MOB = 20044, BLACKSMITH_ARMOR_MOB = 20045, diff --git a/src/game/src/sectree.h b/src/game/src/sectree.h index eb67503..3a5df0b 100644 --- a/src/game/src/sectree.h +++ b/src/game/src/sectree.h @@ -132,7 +132,7 @@ class SECTREE while (it_tree != m_neighbor_list.end()) { - //ù° ã ٷ + //첫번째를 찾으면 바로 리턴 if ( (*(it_tree++))->for_each_entity_for_find_victim(func) ) return; } @@ -143,7 +143,7 @@ class SECTREE while (it != m_set_entity.end()) { - // ã ٷ + //정상적으로 찾으면 바로 리턴 if ( func(*it++) ) return true; } @@ -176,9 +176,9 @@ class SECTREE DWORD GetAttribute(int x, int y); bool IsAttr(int x, int y, DWORD dwFlag); - void CloneAttribute(LPSECTREE tree); // private map ó + void CloneAttribute(LPSECTREE tree); // private map 처리시 사용 - int GetEventAttribute(int x, int y); // 20050313 + int GetEventAttribute(int x, int y); // 20050313 현재는 사용하지 않음 void SetAttribute(DWORD x, DWORD y, DWORD dwAttr); void RemoveAttribute(DWORD x, DWORD y, DWORD dwAttr); diff --git a/src/game/src/sectree_manager.h b/src/game/src/sectree_manager.h index 7b6b99e..8a4fada 100644 --- a/src/game/src/sectree_manager.h +++ b/src/game/src/sectree_manager.h @@ -165,16 +165,16 @@ class SECTREE_MANAGER : public singleton size_t GetMonsterCountInMap(int lMapIndex); size_t GetMonsterCountInMap(int lMpaIndex, DWORD dwVnum); - /// Sectree Attribute Ư ó Ѵ. + /// 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lStartX 簢 ǥ - * @param [in] lStartY 簢 ǥ - * @param [in] lEndX 簢 ǥ - * @param [in] lEndY 簢 Ʒ ǥ - * @param [in] lRotate ȸ - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lStartX 사각형 영역의 가장 왼쪽 좌표 + * @param [in] lStartY 사각형 영역의 가장 위쪽 좌표 + * @param [in] lEndX 사각형 영역의 가장 오른쪽 좌표 + * @param [in] lEndY 사각형 영역의 가장 아랫쪽 좌표 + * @param [in] lRotate 영역에 대해 회전할 각 + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegion(int lMapIndex, int lStartX, int lStartY, int lEndX, int lEndY, int lRotate, DWORD dwAttr, EAttrRegionMode mode); @@ -182,39 +182,39 @@ class SECTREE_MANAGER : public singleton private: - /// 簢 Sectree Attribute Ư ó Ѵ. + /// 직각의 사각형 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX 簢 Cell ǥ - * @param [in] lCY 簢 Cell ǥ - * @param [in] lCW 簢 Cell - * @param [in] lCH 簢 Cell - * @param [in] lRotate ȸ () - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 사각형 영역의 가장 왼쪽 Cell 의 좌표 + * @param [in] lCY 사각형 영역의 가장 위쪽 Cell 의 좌표 + * @param [in] lCW 사각형 영역의 Cell 단위 폭 + * @param [in] lCH 사각형 영역의 Cell 단위 높이 + * @param [in] lRotate 회전할 각(직각) + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionRightAngle( int lMapIndex, int lCX, int lCY, int lCW, int lCH, int lRotate, DWORD dwAttr, EAttrRegionMode mode ); - /// ̿ 簢 Sectree Attribute Ư ó Ѵ. + /// 직각 이외의 사각형 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX 簢 Cell ǥ - * @param [in] lCY 簢 Cell ǥ - * @param [in] lCW 簢 Cell - * @param [in] lCH 簢 Cell - * @param [in] lRotate ȸ ( ̿ ) - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 사각형 영역의 가장 왼쪽 Cell 의 좌표 + * @param [in] lCY 사각형 영역의 가장 위쪽 Cell 의 좌표 + * @param [in] lCW 사각형 영역의 Cell 단위 폭 + * @param [in] lCH 사각형 영역의 Cell 단위 높이 + * @param [in] lRotate 회전할 각(직각 이외의 각) + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionFreeAngle( int lMapIndex, int lCX, int lCY, int lCW, int lCH, int lRotate, DWORD dwAttr, EAttrRegionMode mode ); - /// Cell Attribute Ư ó Ѵ. + /// 한 Cell 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX Cell X ǥ - * @param [in] lCY Cell Y ǥ - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 적용할 Cell 의 X 좌표 + * @param [in] lCY 적용할 Cell 의 Y 좌표 + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionCell( int lMapIndex, int lCX, int lCY, DWORD dwAttr, EAttrRegionMode mode ); diff --git a/src/game/src/shop.h b/src/game/src/shop.h index adde8b3..8e7f913 100644 --- a/src/game/src/shop.h +++ b/src/game/src/shop.h @@ -14,12 +14,12 @@ class CShop public: typedef struct shop_item { - DWORD vnum; // ȣ - int price; // - BYTE count; // + DWORD vnum; // 아이템 번호 + int price; // 가격 + BYTE count; // 아이템 개수 LPITEM pkItem; - int itemid; // ̵ + int itemid; // 아이템 고유아이디 shop_item() { @@ -40,20 +40,20 @@ class CShop virtual void SetPCShop(LPCHARACTER ch); virtual bool IsPCShop() { return m_pkPC ? true : false; } - // ԽƮ ߰/ + // 게스트 추가/삭제 virtual bool AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire); void RemoveGuest(LPCHARACTER ch); - // + // 물건 구입 virtual int Buy(LPCHARACTER ch, BYTE pos); - // ԽƮ Ŷ + // 게스트에게 패킷을 보냄 void BroadcastUpdateItem(BYTE pos); - // Ǹ ˷ش. + // 판매중인 아이템의 갯수를 알려준다. int GetNumberByVnum(DWORD dwVnum); - // ϵǾ ִ ˷ش. + // 아이템이 상점에 등록되어 있는지 알려준다. virtual bool IsSellingItem(DWORD itemID); DWORD GetVnum() { return m_dwVnum; } @@ -70,7 +70,7 @@ class CShop typedef std::unordered_map GuestMapType; GuestMapType m_map_guest; - std::vector m_itemVector; // ϴ ǵ + std::vector m_itemVector; // 이 상점에서 취급하는 물건들 LPCHARACTER m_pkPC; }; diff --git a/src/game/src/shopEx.h b/src/game/src/shopEx.h index d688181..000192b 100644 --- a/src/game/src/shopEx.h +++ b/src/game/src/shopEx.h @@ -12,11 +12,11 @@ typedef struct SShopTableEx : SShopTable class CGroupNode; -// Ȯ shop. -// ȭ ְ, ǿ ġ ִ. -// , pc . -// Ŭ pos 45 . -// m_itemVector ʴ´. +// 확장 shop. +// 명도전을 화폐로 쓸 수 있고, 아이템을 여러 탭에 나눠 배치할 수 있다. +// 단, pc 샵은 구현하지 않음. +// 클라와 통신할 때에 탭은 pos 45 단위로 구분. +// 기존 샵의 m_itemVector은 사용하지 않는다. class CShopEx: public CShop { public: diff --git a/src/game/src/skill.h b/src/game/src/skill.h index 824890e..2977246 100644 --- a/src/game/src/skill.h +++ b/src/game/src/skill.h @@ -5,33 +5,33 @@ enum ESkillFlags { - SKILL_FLAG_ATTACK = (1 << 0), // - SKILL_FLAG_USE_MELEE_DAMAGE = (1 << 1), // ⺻ и Ÿġ b - SKILL_FLAG_COMPUTE_ATTGRADE = (1 << 2), // ݵ Ѵ - SKILL_FLAG_SELFONLY = (1 << 3), // ڽſԸ - SKILL_FLAG_USE_MAGIC_DAMAGE = (1 << 4), // ⺻ Ÿġ b - SKILL_FLAG_USE_HP_AS_COST = (1 << 5), // HP SP + SKILL_FLAG_ATTACK = (1 << 0), // 공격 기술 + SKILL_FLAG_USE_MELEE_DAMAGE = (1 << 1), // 기본 밀리 타격치를 b 값으로 사용 + SKILL_FLAG_COMPUTE_ATTGRADE = (1 << 2), // 공격등급을 계산한다 + SKILL_FLAG_SELFONLY = (1 << 3), // 자신에게만 쓸 수 있음 + SKILL_FLAG_USE_MAGIC_DAMAGE = (1 << 4), // 기본 마법 타격치를 b 값으로 사용 + SKILL_FLAG_USE_HP_AS_COST = (1 << 5), // HP를 SP대신 쓴다 SKILL_FLAG_COMPUTE_MAGIC_DAMAGE = (1 << 6), SKILL_FLAG_SPLASH = (1 << 7), - SKILL_FLAG_GIVE_PENALTY = (1 << 8), // õ(3) 2 ޴´. - SKILL_FLAG_USE_ARROW_DAMAGE = (1 << 9), // ⺻ ȭ Ÿġ b - SKILL_FLAG_PENETRATE = (1 << 10), //  - SKILL_FLAG_IGNORE_TARGET_RATING = (1 << 11), // - SKILL_FLAG_SLOW = (1 << 12), // ο - SKILL_FLAG_STUN = (1 << 13), // - SKILL_FLAG_HP_ABSORB = (1 << 14), // HP - SKILL_FLAG_SP_ABSORB = (1 << 15), // SP - SKILL_FLAG_FIRE_CONT = (1 << 16), // FIRE - SKILL_FLAG_REMOVE_BAD_AFFECT = (1 << 17), // ȿ - SKILL_FLAG_REMOVE_GOOD_AFFECT = (1 << 18), // ȿ - SKILL_FLAG_CRUSH = (1 << 19), // - SKILL_FLAG_POISON = (1 << 20), // - SKILL_FLAG_TOGGLE = (1 << 21), // - SKILL_FLAG_DISABLE_BY_POINT_UP = (1 << 22), //  ø . - SKILL_FLAG_CRUSH_LONG = (1 << 23), // ָ - SKILL_FLAG_WIND = (1 << 24), // ٶ Ӽ - SKILL_FLAG_ELEC = (1 << 25), // Ӽ - SKILL_FLAG_FIRE = (1 << 26), // Ӽ + SKILL_FLAG_GIVE_PENALTY = (1 << 8), // 쓰고나면 잠시동안(3초) 2배 데미지를 받는다. + SKILL_FLAG_USE_ARROW_DAMAGE = (1 << 9), // 기본 화살 타격치를 b 값으로 사용 + SKILL_FLAG_PENETRATE = (1 << 10), // 방어무시 + SKILL_FLAG_IGNORE_TARGET_RATING = (1 << 11), // 상대 레이팅 무시 + SKILL_FLAG_SLOW = (1 << 12), // 슬로우 공격 + SKILL_FLAG_STUN = (1 << 13), // 스턴 공격 + SKILL_FLAG_HP_ABSORB = (1 << 14), // HP 흡수 + SKILL_FLAG_SP_ABSORB = (1 << 15), // SP 흡수 + SKILL_FLAG_FIRE_CONT = (1 << 16), // FIRE 지속 데미지 + SKILL_FLAG_REMOVE_BAD_AFFECT = (1 << 17), // 나쁜효과 제거 + SKILL_FLAG_REMOVE_GOOD_AFFECT = (1 << 18), // 나쁜효과 제거 + SKILL_FLAG_CRUSH = (1 << 19), // 상대방을 날림 + SKILL_FLAG_POISON = (1 << 20), // 독 공격 + SKILL_FLAG_TOGGLE = (1 << 21), // 토글 + SKILL_FLAG_DISABLE_BY_POINT_UP = (1 << 22), // 찍어서 올릴 수 없다. + SKILL_FLAG_CRUSH_LONG = (1 << 23), // 상대방을 멀리 날림 + SKILL_FLAG_WIND = (1 << 24), // 바람 속성 + SKILL_FLAG_ELEC = (1 << 25), // 전기 속성 + SKILL_FLAG_FIRE = (1 << 26), // 불 속성 }; enum @@ -44,84 +44,84 @@ enum ESkillIndexes { SKILL_RESERVED = 0, - // 迭 + // 무사 전사 계열 // A - SKILL_SAMYEON = 1, // ↓() - SKILL_PALBANG, // ȹdz + SKILL_SAMYEON = 1, // 삼연참(세번베기) + SKILL_PALBANG, // 팔방풍우 // S - SKILL_JEONGWI, // ȥ - SKILL_GEOMKYUNG, // ˰ - SKILL_TANHWAN, // źȯ + SKILL_JEONGWI, // 전귀혼 + SKILL_GEOMKYUNG, // 검경 + SKILL_TANHWAN, // 탄환격 - // 迭 + // 무사 기공 계열 // A - SKILL_GIGONGCHAM = 16, // - SKILL_GYOKSAN, // ݻŸ - SKILL_DAEJINGAK, // + SKILL_GIGONGCHAM = 16, // 기공참 + SKILL_GYOKSAN, // 격산타우 + SKILL_DAEJINGAK, // 대진각 // S - SKILL_CHUNKEON, // õ - SKILL_GEOMPUNG, // dz + SKILL_CHUNKEON, // 천근추 + SKILL_GEOMPUNG, // 검풍 - // ڰ ϻ 迭 + // 자객 암살 계열 // A - SKILL_AMSEOP = 31, // Ͻ - SKILL_GUNGSIN, // ýź - SKILL_CHARYUN, // + SKILL_AMSEOP = 31, // 암습 + SKILL_GUNGSIN, // 궁신탄영 + SKILL_CHARYUN, // 차륜살 // S - SKILL_EUNHYUNG, // - SKILL_SANGONG, // + SKILL_EUNHYUNG, // 은형법 + SKILL_SANGONG, // 산공분 - // ڰ ü 迭 + // 자객 궁수 계열 // A - SKILL_YEONSA = 46, // - SKILL_KWANKYEOK, // ݼ - SKILL_HWAJO, // ȭ + SKILL_YEONSA = 46, // 연사 + SKILL_KWANKYEOK, // 관격술 + SKILL_HWAJO, // 화조파 // S - SKILL_GYEONGGONG, // - SKILL_GIGUNG, // + SKILL_GYEONGGONG, // 경공술 + SKILL_GIGUNG, // 기궁 - // + // 수라 검 // A - SKILL_SWAERYUNG = 61, // - SKILL_YONGKWON, // + SKILL_SWAERYUNG = 61, // 쇄령지 + SKILL_YONGKWON, // 용권파 // S - SKILL_GWIGEOM, // Ͱ - SKILL_TERROR, // - SKILL_JUMAGAP, // ָ - SKILL_PABEOB, // Ĺ + SKILL_GWIGEOM, // 귀검 + SKILL_TERROR, // 공포 + SKILL_JUMAGAP, // 주마갑 + SKILL_PABEOB, // 파법술 - // + // 수라 마법 // A - SKILL_MARYUNG = 76, // - SKILL_HWAYEOMPOK, // ȭ - SKILL_MUYEONG, // + SKILL_MARYUNG = 76, // 마령 + SKILL_HWAYEOMPOK, // 화염폭 + SKILL_MUYEONG, // 무영진 // S - SKILL_MANASHILED, // żȣ - SKILL_TUSOK, // Ӹ - SKILL_MAHWAN, // ȯ + SKILL_MANASHILED, // 흑신수호 + SKILL_TUSOK, // 투속마령 + SKILL_MAHWAN, // 마환격 - // + // 무당 용신 // A SKILL_BIPABU = 91, - SKILL_YONGBI, // 񱤻 - SKILL_PAERYONG, // з泪ѹ + SKILL_YONGBI, // 용비광사파 + SKILL_PAERYONG, // 패룡나한무 // S - //SKILL_BUDONG, // εں - SKILL_HOSIN, // ȣ - SKILL_REFLECT, // ȣ - SKILL_GICHEON, // õ + //SKILL_BUDONG, // 부동박부 + SKILL_HOSIN, // 호신 + SKILL_REFLECT, // 보호 + SKILL_GICHEON, // 기천대공 - // + // 무당 뇌신 // A - SKILL_NOEJEON = 106, // - SKILL_BYEURAK, // - SKILL_CHAIN, // üζƮ + SKILL_NOEJEON = 106, // 뇌전령 + SKILL_BYEURAK, // 벼락 + SKILL_CHAIN, // 체인라이트닝 // S - SKILL_JEONGEOP, // - SKILL_KWAESOK, // ̵ӵ - SKILL_JEUNGRYEOK, // ¼ + SKILL_JEONGEOP, // 정업인 + SKILL_KWAESOK, // 이동속도업 + SKILL_JEUNGRYEOK, // 증력술 - // ų + // 공통 스킬 // 7 SKILL_7_A_ANTI_TANHWAN = 112, SKILL_7_B_ANTI_AMSEOP, @@ -134,27 +134,27 @@ enum ESkillIndexes SKILL_8_C_ANTI_MAHWAN, SKILL_8_D_ANTI_BYEURAK, - // ų + // 보조 스킬 - SKILL_LEADERSHIP = 121, // ַ - SKILL_COMBO = 122, // - SKILL_CREATE = 123, // + SKILL_LEADERSHIP = 121, // 통솔력 + SKILL_COMBO = 122, // 연계기 + SKILL_CREATE = 123, // 제조 SKILL_MINING = 124, - SKILL_LANGUAGE1 = 126, // ż ɷ - SKILL_LANGUAGE2 = 127, // õ ɷ - SKILL_LANGUAGE3 = 128, // ɷ - SKILL_POLYMORPH = 129, // а + SKILL_LANGUAGE1 = 126, // 신수어 능력 + SKILL_LANGUAGE2 = 127, // 천조어 능력 + SKILL_LANGUAGE3 = 128, // 진노어 능력 + SKILL_POLYMORPH = 129, // 둔갑 - SKILL_HORSE = 130, // ¸ ų - SKILL_HORSE_SUMMON = 131, // ȯ ų - SKILL_HORSE_WILDATTACK = 137, // - SKILL_HORSE_CHARGE = 138, // - SKILL_HORSE_ESCAPE = 139, // Ż - SKILL_HORSE_WILDATTACK_RANGE = 140, // (Ȱ) + SKILL_HORSE = 130, // 승마 스킬 + SKILL_HORSE_SUMMON = 131, // 말 소환 스킬 + SKILL_HORSE_WILDATTACK = 137, // 난무 + SKILL_HORSE_CHARGE = 138, // 돌격 + SKILL_HORSE_ESCAPE = 139, // 탈출 + SKILL_HORSE_WILDATTACK_RANGE = 140, // 난무(활) - SKILL_ADD_HP = 141, // - SKILL_RESIST_PENETRATE = 142, // ö + SKILL_ADD_HP = 141, // 증혈 + SKILL_RESIST_PENETRATE = 142, // 철통 GUILD_SKILL_START = 151, GUILD_SKILL_EYE = 151, @@ -176,35 +176,35 @@ class CSkillProto { public: char szName[64]; - DWORD dwVnum; // ȣ + DWORD dwVnum; // 번호 - DWORD dwType; // 0: , 1: , 2: ڰ, 3: , 4: - BYTE bMaxLevel; // ִ õ - BYTE bLevelLimit; // - int iSplashRange; // ÷ Ÿ + DWORD dwType; // 0: 전직업, 1: 무사, 2: 자객, 3: 수라, 4: 무당 + BYTE bMaxLevel; // 최대 수련도 + BYTE bLevelLimit; // 레벨제한 + int iSplashRange; // 스플래쉬 거리 제한 - BYTE bPointOn; // Ű°? (Ÿġ, MAX HP, HP REGEN ) - CPoly kPointPoly; // + BYTE bPointOn; // 어디에 결과값을 적용 시키는가? (타격치, MAX HP, HP REGEN 등등등) + CPoly kPointPoly; // 결과값 만드는 공식 - CPoly kSPCostPoly; // SP - CPoly kDurationPoly; // ð - CPoly kDurationSPCostPoly; // SP - CPoly kCooldownPoly; // ٿ ð - CPoly kMasterBonusPoly; // ʽ - CPoly kSplashAroundDamageAdjustPoly; // ÷ + CPoly kSPCostPoly; // 사용 SP 공식 + CPoly kDurationPoly; // 지속 시간 공식 + CPoly kDurationSPCostPoly; // 지속 SP 공식 + CPoly kCooldownPoly; // 쿨다운 시간 공식 + CPoly kMasterBonusPoly; // 마스터일 때 보너스 공식 + CPoly kSplashAroundDamageAdjustPoly; // 스플래쉬 공격일 경우 주위 적에게 입히는 데미지 감소 비율 - DWORD dwFlag; // ųɼ - DWORD dwAffectFlag; // ų Ǵ Affect + DWORD dwFlag; // 스킬옵션 + DWORD dwAffectFlag; // 스킬에 맞은 경우 적용되는 Affect - BYTE bLevelStep; // ѹ øµ ʿ ų Ʈ - DWORD preSkillVnum; // µ ʿ ų - BYTE preSkillLevel; // ų + BYTE bLevelStep; // 한번에 올리는데 필요한 스킬 포인트 수 + DWORD preSkillVnum; // 배우는데 필요한 이전에 배워야할 스킬 + BYTE preSkillLevel; // 이전에 배워야할 스킬의 레벨 int lMaxHit; BYTE bSkillAttrType; - // 2 + // 2차 적용 BYTE bPointOn2; CPoly kPointPoly2; CPoly kDurationPoly2; @@ -218,7 +218,7 @@ class CSkillProto return dwVnum == SKILL_TANHWAN || dwVnum == SKILL_HORSE_CHARGE; } - // 3 + // 3차 적용 BYTE bPointOn3; CPoly kPointPoly3; CPoly kDurationPoly3; diff --git a/src/game/src/skill_power.h b/src/game/src/skill_power.h index a82afae..8fa96ff 100644 --- a/src/game/src/skill_power.h +++ b/src/game/src/skill_power.h @@ -8,7 +8,7 @@ class CTableBySkill : public singleton CTableBySkill() : m_aiSkillDamageByLevel(NULL) { - //ų ߰ ʱȭ + //스킬 레벨당 추가데미지 초기화 for ( int job = 0; job < JOB_MAX_NUM * 2; ++job ) m_aiSkillPowerByLevelFromType[job] = NULL; } @@ -18,18 +18,18 @@ class CTableBySkill : public singleton DeleteAll(); } - //̺ üũ + //테이블 세팅 체크 bool Check() const; - // + //삭제 void DeleteAll(); - //ų ųĿ ̺ + //스킬레벨단위 스킬파워 테이블 int GetSkillPowerByLevelFromType( int job, int skillgroup, int skilllevel, bool bMob ) const; void SetSkillPowerByLevelFromType( int idx, const int* aTable ); void DeleteSkillPowerByLevelFromType( int idx ); - // ߰ ų ̺ + //레벨당 추가 스킬데미지 테이블 int GetSkillDamageByLevel( int Level ) const; void SetSkillDamageByLevelTable( const int* aTable ); void DeleteSkillDamageByLevelTable(); diff --git a/src/game/src/target.h b/src/game/src/target.h index abc1f62..babc230 100644 --- a/src/game/src/target.h +++ b/src/game/src/target.h @@ -17,8 +17,8 @@ EVENTINFO(TargetInfo) DWORD dwPID; DWORD dwQuestIndex; - char szTargetName[32+1]; // Ʈ ϴ ̸ - char szTargetDesc[32+1]; // Ŭ̾Ʈ ۵Ǵ ̸ + char szTargetName[32+1]; // 퀘스트에서 사용하는 이름 + char szTargetDesc[32+1]; // 실제 클라이언트에 전송되는 이름 int iType; int iArg1; diff --git a/src/game/src/unique_item.h b/src/game/src/unique_item.h index f3b0990..9f10e65 100644 --- a/src/game/src/unique_item.h +++ b/src/game/src/unique_item.h @@ -40,13 +40,13 @@ enum ITEM_GIVE_STAT_RESET_COUNT_VNUM = 70014, ITEM_SKILLFORGET_VNUM = 70037, - ITEM_SKILLFORGET2_VNUM = 70055, // 7, 8 ų + ITEM_SKILLFORGET2_VNUM = 70055, // 7, 8 스킬 망각서 - UNIQUE_ITEM_FISH_MIND = 71008, // - UNIQUE_ITEM_SAFEBOX_EXPAND = 71009, // âȮ - UNIQUE_ITEM_AUTOLOOT_GOLD = 71010, // 3 - UNIQUE_ITEM_EMOTION_MASK = 71011, // - UNIQUE_ITEM_EMOTION_MASK2 = 71033, // + UNIQUE_ITEM_FISH_MIND = 71008, // 월간어심 + UNIQUE_ITEM_SAFEBOX_EXPAND = 71009, // 창고확장권 + UNIQUE_ITEM_AUTOLOOT_GOLD = 71010, // 제3의 손 + UNIQUE_ITEM_EMOTION_MASK = 71011, // 열정의 가면 + UNIQUE_ITEM_EMOTION_MASK2 = 71033, // 열정의 가면 ITEM_NEW_YEAR_GREETING_VNUM = 50023, @@ -106,11 +106,11 @@ enum REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE = 76007, - // ȥ Ȯ ִ + // 용혼석 추출 확률을 높여주는 아이템 DRAGON_SOUL_EXTRACTOR_GROUP = 10600, - // ִ + // 용심 추출해주는 아이템 DRAGON_HEART_EXTRACTOR_GROUP = 10601, - // ȥ ִ . + // 용혼석에서 추출할 때 주는 용심. DRAGON_HEART_VNUM = 100000, }; diff --git a/src/game/src/war_map.h b/src/game/src/war_map.h index d57950c..4d9a4d2 100644 --- a/src/game/src/war_map.h +++ b/src/game/src/war_map.h @@ -68,7 +68,7 @@ class CWarMap DWORD GetWinnerGuild(); void UsePotion(LPCHARACTER ch, LPITEM item); - void Draw(); // º ó + void Draw(); // 강제 무승부 처리 void Timeout(); void CheckWarEnd(); bool SetEnded(); @@ -125,8 +125,8 @@ class CWarMap void Initialize(); - int GetAccumulatedJoinerCount(); // - int GetCurJointerCount(); // + int GetAccumulatedJoinerCount(); // 누적된 참가자 수 + int GetCurJointerCount(); // 현재 참가자 수 void AppendMember(LPCHARACTER ch); void RemoveMember(LPCHARACTER ch); diff --git a/src/game/src/xmas_event.h b/src/game/src/xmas_event.h index 1fb568e..97d7bf9 100644 --- a/src/game/src/xmas_event.h +++ b/src/game/src/xmas_event.h @@ -5,8 +5,8 @@ namespace xmas { enum { - MOB_SANTA_VNUM = 20031, //Ÿ - // MOB_SANTA_VNUM = 20095, // + MOB_SANTA_VNUM = 20031, //산타 + // MOB_SANTA_VNUM = 20095, //노해 MOB_XMAS_TREE_VNUM = 20032, MOB_XMAS_FIRWORK_SELLER_VNUM = 9004, };