1
0
forked from metin2/client

convert comments in h files to utf8

This commit is contained in:
2024-12-17 22:41:21 +01:00
parent 361a62853d
commit 373c184dfe
69 changed files with 634 additions and 634 deletions

View File

@ -64,8 +64,8 @@ class CAccountConnector : public CNetworkStream, public CSingleton<CAccountConne
bool __AuthState_RecvHybridCryptSDB(int VarSize);
bool __AnalyzePacket(UINT uHeader, UINT uPacketSize, bool (CAccountConnector::*pfnDispatchPacket)());
// TODO: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽô<D3BD>. header<EFBFBD>ڿ<EFBFBD> size 4byte<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´ٴ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> Packet System Refactoring<EFBFBD>ؾ<EFBFBD> <20>Ѵ<EFBFBD>.
// TODO: 지금 현재는 임시다. header뒤에 size 4byte가 무조건 온다는 가정임.
// 제대로 하려면 Packet System Refactoring해야 한다.
bool __AnalyzeVarSizePacket(UINT uHeader, bool (CAccountConnector::*pfnDispatchPacket)(int));
protected:

View File

@ -56,12 +56,12 @@ const DWORD c_Equipment_Unique2 = c_Equipment_Start + 8;
const DWORD c_Equipment_Arrow = c_Equipment_Start + 9;
const DWORD c_Equipment_Shield = c_Equipment_Start + 10;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ű<EFBFBD> <20><><EFBFBD><EFBFBD> & <20><>Ʈ
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ҵ<EFBFBD><D2B4><EFBFBD> <20><> <20>ִ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>, <20>ڽ<EFBFBD>Ƭ <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߷<EFBFBD><DFB7>ִ<EFBFBD>.
// <EFBFBD>̰<EFBFBD> <20><> ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><><EFBFBD><EFBFBD>
// 새로 추가된 신규 반지 & 벨트
// 장착형 아이템에 할당할 수 있는 위치가 기존 장비, 채기랍 퀘스트 보상, 코스튬 시스템 등으로 인해서 공간이 잘려있다.
// 이게 다 채기랍 보상 버프를 장착아이템처럼 구현한 ㅅㄲ 때문에 난리났따... ㅆㅂ
//
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>â<EFBFBD><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>DB<44><42> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 90 ~ 102 <EFBFBD>̰<EFBFBD>,
// 2013<EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ǵ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> 111 ~ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>񿡼<EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> 121 <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>, 122<32><32><EFBFBD>ʹ<EFBFBD> <20><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
// 정리하면, 기존 장비창들은 서버DB상 아이템 포지션이 90 ~ 102 이고,
// 2013년 초에 새로 추가되는 슬롯들은 111 ~ 부터 시작한다. 착용 장비에서 최대로 사용할 수 있는 값은 121 까지이고, 122부터는 용혼석에서 사용한다.
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
const DWORD c_New_Equipment_Start = c_Equipment_Start + 21;
const DWORD c_New_Equipment_Count = 3;
@ -99,7 +99,7 @@ enum EDragonSoulStepTypes
};
#ifdef ENABLE_COSTUME_SYSTEM
const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD>(19) <20>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 19<31><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> common/length.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [주의] 숫자(19) 하드코딩 주의. 현재 서버에서 코스츔 슬롯은 19부터임. 서버 common/length.h 파일의 EWearPositions 열거형 참고.
const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0;
const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1;
const DWORD c_Costume_Slot_Count = 2;
@ -107,19 +107,19 @@ enum EDragonSoulStepTypes
#endif
// [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD>(32) <20>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> common/length.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32<33><32><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>(32 <20>̻<EFBFBD><CCBB><EFBFBD> Ȯ<><C8AE> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>.),
// <EFBFBD><EFBFBD> <20><><EFBFBD>ĺ<EFBFBD><C4BA>͸<EFBFBD> <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
// [주의] 숫자(32) 하드코딩 주의. 현재 서버에서 용혼석 슬롯은 32부터임.
// 서버 common/length.h 파일의 EWearPositions 열거형이 32까지 확장될 것을 염두하고(32 이상은 확장 하기 힘들게 되어있음.),
// 그 이후부터를 용혼석 장착 슬롯으로 사용.
const DWORD c_Wear_Max = 32;
const DWORD c_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max;
const DWORD c_DragonSoul_Equip_Slot_Max = 6;
const DWORD c_DragonSoul_Equip_End = c_DragonSoul_Equip_Start + c_DragonSoul_Equip_Slot_Max * DS_DECK_MAX_NUM;
// NOTE: 2013<EFBFBD><EFBFBD> 2<><32> 5<><35> <20><><EFBFBD><EFBFBD>... <20><>ȥ<EFBFBD><C8A5> <20><>ũ<EFBFBD><C5A9> 2<><32><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴµ<CFB4>, <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20>־ 3<><33> <20><>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> <20><> <20><>. <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD>
// NOTE: 2013년 2월 5일 현재... 용혼석 데크는 2개가 존재하는데, 향후 확장 가능성이 있어서 3개 데크 여유분을 할당 해 둠. 그 뒤 공간은 벨트 인벤토리로 사용
const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
// <EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD><CEBA>
// 벨트 아이템이 제공하는 인벤토리
const DWORD c_Belt_Inventory_Slot_Start = c_DragonSoul_Equip_End + c_DragonSoul_Equip_Reserved_Count;
const DWORD c_Belt_Inventory_Width = 4;
const DWORD c_Belt_Inventory_Height= 4;
@ -131,7 +131,7 @@ const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
const DWORD c_Inventory_Count = c_DragonSoul_Equip_End;
#endif
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA>
// 용혼석 전용 인벤토리
const DWORD c_DragonSoul_Inventory_Start = 0;
const DWORD c_DragonSoul_Inventory_Box_Size = 32;
const DWORD c_DragonSoul_Inventory_Count = CItemData::DS_SLOT_NUM_TYPES * DRAGON_SOUL_GRADE_MAX * c_DragonSoul_Inventory_Box_Size;
@ -157,13 +157,13 @@ enum ESlotType
enum EWindows
{
RESERVED_WINDOW,
INVENTORY, // <EFBFBD><20>κ<EFBFBD><CEBA>丮. (45ĭ ¥<><C2A5><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> = 90ĭ)
INVENTORY, // 기본 인벤토리. (45칸 짜리가 2페이지 존재 = 90)
EQUIPMENT,
SAFEBOX,
MALL,
DRAGON_SOUL_INVENTORY,
GROUND, // NOTE: 2013<EFBFBD><EFBFBD> 2<><32>5<EFBFBD><35> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> unused.. <EFBFBD><EFBFBD> <20>ִ°<D6B4><C2B0><EFBFBD>???
BELT_INVENTORY, // NOTE: W2.1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ǵ<EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ʈ <20>κ<EFBFBD><CEBA>
GROUND, // NOTE: 2013년 2월5일 현재까지 unused.. 왜 있는거지???
BELT_INVENTORY, // NOTE: W2.1 버전에 새로 추가되는 벨트 슬롯 아이템이 제공하는 벨트 인벤토리
WINDOW_TYPE_MAX,
};
@ -192,9 +192,9 @@ typedef struct SItemPos
cell = _cell;
}
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cell<6C><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE<54><45> <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, oi
// <EFBFBD><20>κ<EFBFBD><CEBA><EFBFBD> int, <20><20>κ<EFBFBD><CEBA><EFBFBD> WORD<52><44> <20>Ǿ<EFBFBD><C7BE>־<EFBFBD>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD> int<6E><74> <20>޴´<DEB4>.
// 기존에 cell의 형을 보면 BYTE가 대부분이지만, oi
// 어떤 부분은 int, 어떤 부분은 WORD로 되어있어,
// 가장 큰 자료형인 int로 받는다.
// int operator=(const int _cell)
// {
//window_type = INVENTORY;

View File

@ -73,8 +73,8 @@ class CInstanceBase
AFFECT_SLOW,
AFFECT_STUN,
AFFECT_DUNGEON_READY, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>غ<EFBFBD> <20><><EFBFBD><EFBFBD>
AFFECT_SHOW_ALWAYS, // AFFECT_DUNGEON_UNIQUE <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
AFFECT_DUNGEON_READY, // 던전에서 준비 상태
AFFECT_SHOW_ALWAYS, // AFFECT_DUNGEON_UNIQUE 에서 변경(클라이언트에서 컬링되지않음)
AFFECT_BUILDING_CONSTRUCTION_SMALL,
AFFECT_BUILDING_CONSTRUCTION_LARGE,
@ -85,34 +85,34 @@ class CInstanceBase
AFFECT_FISH_MIND, // 13
AFFECT_JEONGWI, // 14 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ
AFFECT_GEOMGYEONG, // 15 <EFBFBD>˰<EFBFBD>
AFFECT_CHEONGEUN, // 16 õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_GYEONGGONG, // 17 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_EUNHYEONG, // 18 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_GWIGEOM, // 19 <EFBFBD>Ͱ<EFBFBD>
AFFECT_GONGPO, // 20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_JUMAGAP, // 21 <EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>
AFFECT_HOSIN, // 22 ȣ<EFBFBD><EFBFBD>
AFFECT_BOHO, // 23 <EFBFBD><EFBFBD>ȣ
AFFECT_KWAESOK, // 24 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_HEUKSIN, // 25 <EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD>ȣ
AFFECT_MUYEONG, // 26 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_REVIVE_INVISIBILITY, // 27 <EFBFBD><EFBFBD>Ȱ <20><><EFBFBD><EFBFBD>
AFFECT_FIRE, // 28 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
AFFECT_GICHEON, // 29 <EFBFBD><EFBFBD>õ <20><><EFBFBD><EFBFBD>
AFFECT_JEUNGRYEOK, // 30 <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
AFFECT_DASH, // 31 <EFBFBD>
AFFECT_PABEOP, // 32 <EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>
AFFECT_FALLEN_CHEONGEUN, // 33 <EFBFBD>ٿ<EFBFBD> <20>׷<EFBFBD><D7B7>̵<EFBFBD> õ<><C3B5><EFBFBD><EFBFBD>
AFFECT_POLYMORPH, // 34 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AFFECT_JEONGWI, // 14 전귀혼
AFFECT_GEOMGYEONG, // 15 검경
AFFECT_CHEONGEUN, // 16 천근추
AFFECT_GYEONGGONG, // 17 경공술
AFFECT_EUNHYEONG, // 18 은형법
AFFECT_GWIGEOM, // 19 귀검
AFFECT_GONGPO, // 20 공포
AFFECT_JUMAGAP, // 21 주마갑
AFFECT_HOSIN, // 22 호신
AFFECT_BOHO, // 23 보호
AFFECT_KWAESOK, // 24 쾌속
AFFECT_HEUKSIN, // 25 흑신수호
AFFECT_MUYEONG, // 26 무영진
AFFECT_REVIVE_INVISIBILITY, // 27 부활 무적
AFFECT_FIRE, // 28 지속 불
AFFECT_GICHEON, // 29 기천 대공
AFFECT_JEUNGRYEOK, // 30 증력술
AFFECT_DASH, // 31 대쉬
AFFECT_PABEOP, // 32 파법술
AFFECT_FALLEN_CHEONGEUN, // 33 다운 그레이드 천근추
AFFECT_POLYMORPH, // 34 폴리모프
AFFECT_WAR_FLAG1, // 35
AFFECT_WAR_FLAG2, // 36
AFFECT_WAR_FLAG3, // 37
AFFECT_CHINA_FIREWORK, // 38
AFFECT_PREMIUM_SILVER,
AFFECT_PREMIUM_GOLD,
AFFECT_RAMADAN_RING, // 41 <EFBFBD>ʽ´<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Affect
AFFECT_RAMADAN_RING, // 41 초승달 반지 착용 Affect
AFFECT_NUM = 64,
@ -154,31 +154,31 @@ class CInstanceBase
NEW_AFFECT_BOW_DISTANCE, // 225
NEW_AFFECT_EXP_BONUS = 500, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NEW_AFFECT_ITEM_BONUS = 501, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
NEW_AFFECT_EXP_BONUS = 500, // 경험의 반지
NEW_AFFECT_ITEM_BONUS = 501, // 도둑의 장갑
NEW_AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX,
NEW_AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT,
NEW_AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND,
NEW_AFFECT_MARRIAGE_FAST = 505, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ݽ<EFBFBD>),
NEW_AFFECT_MARRIAGE_FAST = 505, // 원앙의 깃털 (금슬),
NEW_AFFECT_GOLD_BONUS = 506,
NEW_AFFECT_MALL = 510, // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
NEW_AFFECT_NO_DEATH_PENALTY = 511, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ (<28><><EFBFBD><EFBFBD>ġ <20>г<EFBFBD>Ƽ<EFBFBD><C6BC> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>)
NEW_AFFECT_SKILL_BOOK_BONUS = 512, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> 50% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
NEW_AFFECT_SKILL_BOOK_NO_DELAY = 513, // <EFBFBD>־<EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
NEW_AFFECT_MALL = 510, // 몰 아이템 에펙트
NEW_AFFECT_NO_DEATH_PENALTY = 511, // 용신의 가호 (경험치 패널티를 한번 막아준다)
NEW_AFFECT_SKILL_BOOK_BONUS = 512, // 선인의 교훈 (책 수련 성공 확률이 50% 증가)
NEW_AFFECT_SKILL_BOOK_NO_DELAY = 513, // 주안 술서 (책 수련 딜레이 없음)
NEW_AFFECT_EXP_BONUS_EURO_FREE = 516, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 14 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>⺻ ȿ<><C8BF>)
NEW_AFFECT_EXP_BONUS_EURO_FREE = 516, // 경험의 반지 (유럽 버전 14 레벨 이하 기본 효과)
NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517,
NEW_AFFECT_AUTO_HP_RECOVERY = 534, // <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HP
NEW_AFFECT_AUTO_SP_RECOVERY = 535, // <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SP
NEW_AFFECT_AUTO_HP_RECOVERY = 534, // 자동물약 HP
NEW_AFFECT_AUTO_SP_RECOVERY = 535, // 자동물약 SP
NEW_AFFECT_DRAGON_SOUL_QUALIFIED = 540,
NEW_AFFECT_DRAGON_SOUL_DECK1 = 541,
NEW_AFFECT_DRAGON_SOUL_DECK2 = 542,
NEW_AFFECT_RAMADAN_ABILITY = 300,
NEW_AFFECT_RAMADAN_RING = 301, // <EFBFBD>󸶴<EFBFBD> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ´<CABD><C2B4><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NEW_AFFECT_RAMADAN_RING = 301, // 라마단 이벤트용 특수아이템 초승달의 반지 착용 유무
NEW_AFFECT_NOG_POCKET_ABILITY = 302,
@ -263,7 +263,7 @@ class CInstanceBase
TITLE_NONE = 4,
};
enum //<EFBFBD>Ʒ<EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20>ٲ<EFBFBD><D9B2><EFBFBD> registerEffect <EFBFBD>ʵ<EFBFBD> <20>ٲپ<D9B2> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
enum //아래 번호가 바뀌면 registerEffect 쪽도 바꾸어 줘야 한다.
{
EFFECT_REFINED_NONE,
@ -291,8 +291,8 @@ class CInstanceBase
EFFECT_BODYARMOR_REFINED8,
EFFECT_BODYARMOR_REFINED9,
EFFECT_BODYARMOR_SPECIAL, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-2-1
EFFECT_BODYARMOR_SPECIAL2, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-2-2
EFFECT_BODYARMOR_SPECIAL, // 갑옷 4-2-1
EFFECT_BODYARMOR_SPECIAL2, // 갑옷 4-2-2
EFFECT_REFINED_NUM,
};
@ -305,7 +305,7 @@ class CInstanceBase
DAMAGE_BLOCK = (1<<3),
DAMAGE_PENETRATE= (1<<4),
DAMAGE_CRITICAL = (1<<5),
// <EFBFBD><EFBFBD>-_-<EFBFBD><EFBFBD>
// -_-
};
enum
@ -359,17 +359,17 @@ class CInstanceBase
EFFECT_SUCCESS,
EFFECT_FAIL,
EFFECT_FR_SUCCESS,
EFFECT_LEVELUP_ON_14_FOR_GERMANY, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
EFFECT_LEVELUP_UNDER_15_FOR_GERMANY,//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
EFFECT_LEVELUP_ON_14_FOR_GERMANY, //레벨업 14일때 ( 독일전용 )
EFFECT_LEVELUP_UNDER_15_FOR_GERMANY,//레벨업 15일때 ( 독일전용 )
EFFECT_PERCENT_DAMAGE1,
EFFECT_PERCENT_DAMAGE2,
EFFECT_PERCENT_DAMAGE3,
EFFECT_AUTO_HPUP,
EFFECT_AUTO_SPUP,
EFFECT_RAMADAN_RING_EQUIP, // <EFBFBD>ʽ´<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
EFFECT_HALLOWEEN_CANDY_EQUIP, // <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
EFFECT_HAPPINESS_RING_EQUIP, // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
EFFECT_LOVE_PENDANT_EQUIP, // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
EFFECT_RAMADAN_RING_EQUIP, // 초승달 반지 착용 순간에 발동하는 이펙트
EFFECT_HALLOWEEN_CANDY_EQUIP, // 할로윈 사탕 착용 순간에 발동하는 이펙트
EFFECT_HAPPINESS_RING_EQUIP, // 행복의 반지 착용 순간에 발동하는 이펙트
EFFECT_LOVE_PENDANT_EQUIP, // 행복의 반지 착용 순간에 발동하는 이펙트
EFFECT_TEMP,
EFFECT_NUM,
};
@ -434,7 +434,7 @@ class CInstanceBase
void MountHorse(UINT eRace);
void DismountHorse();
// <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ <20>Լ<EFBFBD>. <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 스크립트용 테스트 함수. 나중에 없에자
void SCRIPT_SetAffect(UINT eAffect, bool isVisible);
float CalculateDistanceSq3d(const TPixelPosition& c_rkPPosDst);
@ -604,7 +604,7 @@ class CInstanceBase
BOOL CanAttackHorseLevel();
#ifdef __MOVIE_MODE__
BOOL IsMovieMode(); // <EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ⱥ<EFBFBD><C8BA>̴°<CCB4>
BOOL IsMovieMode(); // 운영자용 완전히 안보이는거
#endif
bool NEW_CanMoveToDestPixelPosition(const TPixelPosition& c_rkPPosDst);
@ -750,8 +750,8 @@ class CInstanceBase
//void SetParts(const WORD * c_pParts);
void Refresh(DWORD dwMotIndex, bool isLoop);
//void AttachEffectByID(DWORD dwParentPartIndex, const char * c_pszBoneName, DWORD dwEffectID, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ms<6D><73><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//void AttachEffectByName(DWORD dwParentPartIndex, const char * c_pszBoneName, const char * c_pszEffectName, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ms<6D><73><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//void AttachEffectByID(DWORD dwParentPartIndex, const char * c_pszBoneName, DWORD dwEffectID, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // 수명은 ms단위입니다.
//void AttachEffectByName(DWORD dwParentPartIndex, const char * c_pszBoneName, const char * c_pszEffectName, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // 수명은 ms단위입니다.
float GetDistance(CInstanceBase * pkTargetInst);
float GetDistance(const TPixelPosition & c_rPixelPosition);
@ -763,7 +763,7 @@ class CInstanceBase
bool __Background_IsWaterPixelPosition(const TPixelPosition& c_rkPPos);
bool __Background_GetWaterHeight(const TPixelPosition& c_rkPPos, float* pfHeight);
// 2004.07.25.myevan.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 2004.07.25.myevan.이펙트 안나오는 문제
/////////////////////////////////////////////////////////////
void __ClearAffectFlagContainer();
void __ClearAffects();
@ -817,7 +817,7 @@ class CInstanceBase
void __DisableChangingTCPState();
BOOL __IsEnableTCPProcess(UINT eCurFunc);
// 2004.07.17.levites.isShow<EFBFBD><EFBFBD> ViewFrustumCheck<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 2004.07.17.levites.isShow ViewFrustumCheck로 변경
bool __CanRender();
bool __IsInViewFrustum();

View File

@ -1,2 +1,2 @@
#define LOCALE_SERVICE_VIETNAM // <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD>
#define LOCALE_SERVICE_VIETNAM_MILD // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#define LOCALE_SERVICE_VIETNAM // 베트남
#define LOCALE_SERVICE_VIETNAM_MILD // 심의 버전

View File

@ -16,7 +16,7 @@ struct SGuildMark
};
///////////////////////////////////////////////////////////////////////////////
Pixel m_apxBuf[SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD>
Pixel m_apxBuf[SIZE]; // 실제 이미지
///////////////////////////////////////////////////////////////////////////////
void Clear();
@ -38,11 +38,11 @@ struct SGuildMarkBlock
};
///////////////////////////////////////////////////////////////////////////////
Pixel m_apxBuf[SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD>
Pixel m_apxBuf[SIZE]; // 실제 이미지
BYTE m_abCompBuf[MAX_COMP_SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
size_t m_sizeCompBuf; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>
DWORD m_crc; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRC
BYTE m_abCompBuf[MAX_COMP_SIZE]; // 압축된 데이터
size_t 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); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ
bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // 서버 -> 클라이언트
DWORD GetEmptyPosition(); // <EFBFBD><EFBFBD> <20><>ũ <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD>´<EFBFBD>.
DWORD GetEmptyPosition(); // 빈 마크 위치를 얻는다.
void GetBlockCRCList(DWORD * crcList);
void GetDiffBlocks(const DWORD * crcList, std::map<BYTE, const SGuildMarkBlock *> & mapDiffBlocks);

View File

@ -32,11 +32,11 @@ class CGuildMarkManager : public singleton<CGuildMarkManager>
//
void SetMarkPathPrefix(const char * prefix);
bool LoadMarkIndex(); // <EFBFBD><EFBFBD>ũ <20>ε<EFBFBD><CEB5><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
bool SaveMarkIndex(); // <EFBFBD><EFBFBD>ũ <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
bool LoadMarkIndex(); // 마크 인덱스 불러오기 (서버에서만 사용)
bool SaveMarkIndex(); // 마크 인덱스 저장하기
void LoadMarkImages(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>
void SaveMarkImage(DWORD imgIdx); // <EFBFBD><EFBFBD>ũ <20>̹<EFBFBD><CCB9><EFBFBD> <20><><EFBFBD><EFBFBD>
void LoadMarkImages(); // 모든 마크 이미지를 불러오기
void SaveMarkImage(DWORD imgIdx); // 마크 이미지 저장
bool GetMarkImageFilename(DWORD imgIdx, std::string & path) const;
bool AddMarkIDByGuildID(DWORD guildID, DWORD markID);

View File

@ -1,11 +1,11 @@
#pragma once
// <EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD>ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>(<28><>)
// 페이드아웃 길이(초)
#define MOVIEMAN_FADE_DURATION 1300
#define MOVIEMAN_SKIPPABLE_YES true
#define MOVIEMAN_POSTEFFECT_FADEOUT 1
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DX 7.0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 동영상 재생에 DX 7.0 사용
struct IDirectDraw;
struct IDirectDrawSurface;
struct IDirectDrawMediaStream;

View File

@ -90,7 +90,7 @@ struct SNetworkUpdateActorData
short m_sAlignment;
BYTE m_byPKMode;
DWORD m_dwMountVnum;
DWORD m_dwStateFlags; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Create <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_dwStateFlags; // 본래 Create 때만 쓰이는 변수임
CAffectFlagContainer m_kAffectFlags;
SNetworkUpdateActorData()

View File

@ -4,18 +4,18 @@
#include "Hackshield.h"
#include METIN2HS_INCLUDE_ANTICPXSVR
#else
#pragma pack(push) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> alignment <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma pack(push) //기존 alignment 저장
#pragma pack(8)
#define ANTICPX_TRANS_BUFFER_MAX 400
typedef struct _AHNHS_TRANS_BUFFER
{
unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* <EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ִ<EFBFBD> ũ<><C5A9> */];
unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* 송수신 패킷의 최대 크기 */];
unsigned short nLength;
} AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER;
#pragma pack(pop) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> alignment <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
#pragma pack(pop) // 기존 alignment 복구.
#endif /* !USE_AHNLAB_HACKSHIELD */
#include "../gamelib/RaceData.h"
@ -30,8 +30,8 @@ enum
HEADER_CG_LOGIN = 1,
HEADER_CG_ATTACK = 2,
HEADER_CG_CHAT = 3,
HEADER_CG_PLAYER_CREATE = 4, // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD>
HEADER_CG_PLAYER_DESTROY = 5, // <EFBFBD>÷<EFBFBD><EFBFBD>̾ <20><><EFBFBD><EFBFBD>.
HEADER_CG_PLAYER_CREATE = 4, // 새로운 플래이어를 생성
HEADER_CG_PLAYER_DESTROY = 5, // 플래이어를 삭제.
HEADER_CG_PLAYER_SELECT = 6,
HEADER_CG_CHARACTER_MOVE = 7,
HEADER_CG_SYNC_POSITION = 8,
@ -95,8 +95,8 @@ enum
HEADER_CG_MESSENGER = 67,
//HEADER_BLANK68 = 68,
HEADER_CG_MALL_CHECKOUT = 69,
HEADER_CG_SAFEBOX_CHECKIN = 70, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20>ִ´<D6B4>.
HEADER_CG_SAFEBOX_CHECKOUT = 71, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
HEADER_CG_SAFEBOX_CHECKIN = 70, // 아이템을 창고에 넣는다.
HEADER_CG_SAFEBOX_CHECKOUT = 71, // 아이템을 창고로 부터 빼온다.
HEADER_CG_PARTY_INVITE = 72,
HEADER_CG_PARTY_INVITE_ANSWER = 73,
HEADER_CG_PARTY_REMOVE = 74,
@ -144,7 +144,7 @@ enum
HEADER_CG_GUILD_SYMBOL_CRC = 113,
HEADER_CG_SCRIPT_SELECT_ITEM = 114,
HEADER_CG_LOGIN4 = 115,
HEADER_CG_LOGIN5_OPENID = 116, //OpenID : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
HEADER_CG_LOGIN5_OPENID = 116, //OpenID : 실행시 받은 인증키를 서버에 보냄.
HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
@ -188,17 +188,17 @@ enum
HEADER_GC_CHANGE_SPEED = 18,
HEADER_GC_CHARACTER_UPDATE = 19,
#if defined(GAIDEN)
HEADER_GC_ITEM_DEL = 20, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_SET = 21, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_DEL = 20, // 아이템 창에 추가
HEADER_GC_ITEM_SET = 21, // 아이템 창에 추가
#else
HEADER_GC_ITEM_SET = 20, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_SET2 = 21, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_SET = 20, // 아이템 창에 추가
HEADER_GC_ITEM_SET2 = 21, // 아이템 창에 추가
#endif
HEADER_GC_ITEM_USE = 22, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>)
HEADER_GC_ITEM_DROP = 23, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HEADER_GC_ITEM_UPDATE = 25, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
HEADER_GC_ITEM_GROUND_ADD = 26, // <EFBFBD>ٴڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
HEADER_GC_ITEM_GROUND_DEL = 27, // <EFBFBD>ٴڿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HEADER_GC_ITEM_USE = 22, // 아이템 사용 (주위 사람들에게 보여주기 위해)
HEADER_GC_ITEM_DROP = 23, // 아이템 버리기
HEADER_GC_ITEM_UPDATE = 25, // 아이템 수치 업데이트
HEADER_GC_ITEM_GROUND_ADD = 26, // 바닥에 아이템 추가
HEADER_GC_ITEM_GROUND_DEL = 27, // 바닥에서 아이템 삭제
HEADER_GC_QUICKSLOT_ADD = 28,
HEADER_GC_QUICKSLOT_DEL = 29,
HEADER_GC_QUICKSLOT_SWAP = 30,
@ -386,13 +386,13 @@ enum
PLAYER_PER_ACCOUNT3 = 3,
PLAYER_PER_ACCOUNT4 = 4,
PLAYER_ITEM_SLOT_MAX_NUM = 20, // <EFBFBD>÷<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Դ<EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> <20><><EFBFBD><EFBFBD>.
PLAYER_ITEM_SLOT_MAX_NUM = 20, // 플래이어의 슬롯당 들어가는 갯수.
QUICKSLOT_MAX_LINE = 4,
QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QUICKSLOT_MAX_COUNT_PER_LINE = 8, // 클라이언트 임의 결정값
QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
QUICKSLOT_MAX_NUM = 36, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><>
QUICKSLOT_MAX_NUM = 36, // 서버와 맞춰져 있는 값
SHOP_HOST_ITEM_MAX_NUM = 40,
@ -465,7 +465,7 @@ typedef struct packet_mark_idxlist
BYTE header;
DWORD bufSize;
WORD count;
//<EFBFBD>ڿ<EFBFBD> size * (WORD + WORD)<EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//뒤에 size * (WORD + WORD)만큼 데이터 붙음
} TPacketGCMarkIDXList;
typedef struct packet_mark_block
@ -474,7 +474,7 @@ typedef struct packet_mark_block
DWORD bufSize;
BYTE imgIdx;
DWORD count;
// <EFBFBD>ڿ<EFBFBD> 64 x 48 x <EFBFBD>ȼ<EFBFBD>ũ<EFBFBD><EFBFBD>(4<><34><EFBFBD><EFBFBD>Ʈ) = 12288<38><38>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
} TPacketGCMarkBlock;
typedef struct command_symbol_upload
@ -543,7 +543,7 @@ typedef struct command_login
char pwd[PASS_MAX_NUM + 1];
} TPacketCGLogin;
// start - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>
// start - 권한 서버 접속을 위한 패킷들
typedef struct command_login2
{
BYTE header;
@ -566,7 +566,7 @@ typedef struct command_login5
char authKey[OPENID_AUTHKEY_LEN + 1];
DWORD adwClientKey[4];
} TPacketCGLogin5;
// end - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>
// end - 권한 서버 접속을 위한 패킷들
typedef struct command_direct_enter
{
@ -585,8 +585,8 @@ typedef struct command_player_select
typedef struct command_attack
{
BYTE header;
BYTE bType; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
DWORD dwVictimVID; // <EFBFBD><EFBFBD> VID
BYTE bType; // 공격 유형
DWORD dwVictimVID; // VID
BYTE bCRCMagicCubeProcPiece;
BYTE bCRCMagicCubeFilePiece;
} TPacketCGAttack;
@ -1014,9 +1014,9 @@ typedef struct SShopItemTable
DWORD vnum;
BYTE count;
TItemPos pos; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
DWORD price; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
BYTE display_pos; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ġ.
TItemPos pos; // PC 상점에만 이용
DWORD price; // PC 상점에만 이용
BYTE display_pos; // PC 상점에만 이용, 보일 위치.
} TShopItemTable;
typedef struct SPacketCGMyShop
@ -1116,18 +1116,18 @@ typedef struct command_script_select_item
// From Server
enum EPhase
{
PHASE_CLOSE, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
PHASE_HANDSHAKE, // <EFBFBD>Ǽ<EFBFBD>..;;
PHASE_LOGIN, // <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> <20><>
PHASE_SELECT, // ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD>
PHASE_LOADING, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD>
PHASE_GAME, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD>
PHASE_DEAD, // <EFBFBD>׾<EFBFBD><EFBFBD><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..)
PHASE_CLOSE, // 끊기는 상태 (또는 끊기 전 상태)
PHASE_HANDSHAKE, // 악수..;;
PHASE_LOGIN, // 로그인 중
PHASE_SELECT, // 캐릭터 선택 화면
PHASE_LOADING, // 선택 후 로딩 화면
PHASE_GAME, // 게임 화면
PHASE_DEAD, // 죽었을 때.. (게임 안에 있는 것일 수도..)
PHASE_DBCLIENT_CONNECTING, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_DBCLIENT, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_P2P, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_AUTH, // <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
PHASE_DBCLIENT_CONNECTING, // 서버용
PHASE_DBCLIENT, // 서버용
PHASE_P2P, // 서버용
PHASE_AUTH, // 로그인 인증 용
};
typedef struct packet_phase
@ -1136,7 +1136,7 @@ typedef struct packet_phase
BYTE phase;
} TPacketGCPhase;
typedef struct packet_blank // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ.
typedef struct packet_blank // 공백패킷.
{
BYTE header;
} TPacketGCBlank;
@ -1273,7 +1273,7 @@ enum EPKModes
PK_MODE_MAX_NUM,
};
// 2004.11.20.myevan.CRaceData::PART_MAX_NUM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°Ͱ<C2B0> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 2004.11.20.myevan.CRaceData::PART_MAX_NUM 사용안하게 수정 - 서버에서 사용하는것과 일치하지 않음
enum ECharacterEquipmentPart
{
CHR_EQUIPPART_ARMOR,
@ -1293,7 +1293,7 @@ typedef struct packet_char_additional_info
BYTE bEmpire;
DWORD dwGuildID;
DWORD dwLevel;
short sAlignment; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
short sAlignment; //선악치
BYTE bPKMode;
DWORD dwMountVnum;
} TPacketGCCharacterAdditionalInfo;
@ -1405,14 +1405,14 @@ typedef struct packet_GlobalTime
enum EChatType
{
CHAT_TYPE_TALKING, /* <EFBFBD>׳<EFBFBD> ä<><C3A4> */
CHAT_TYPE_INFO, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>) */
CHAT_TYPE_NOTICE, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
CHAT_TYPE_PARTY, /* <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> */
CHAT_TYPE_GUILD, /* <EFBFBD><EFBFBD><EFBFBD> */
CHAT_TYPE_COMMAND, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
CHAT_TYPE_SHOUT, /* <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> */
CHAT_TYPE_WHISPER, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Only Client Enum
CHAT_TYPE_TALKING, /* 그냥 채팅 */
CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
CHAT_TYPE_NOTICE, /* 공지사항 */
CHAT_TYPE_PARTY, /* 파티말 */
CHAT_TYPE_GUILD, /* 길드말 */
CHAT_TYPE_COMMAND, /* 명령 */
CHAT_TYPE_SHOUT, /* 외치기 */
CHAT_TYPE_WHISPER, // 서버와는 연동되지 않는 Only Client Enum
CHAT_TYPE_BIG_NOTICE,
CHAT_TYPE_MAX_NUM,
};
@ -1426,7 +1426,7 @@ typedef struct packet_chatting
BYTE bEmpire;
} TPacketGCChat;
typedef struct packet_whisper // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ
typedef struct packet_whisper // 가변 패킷
{
BYTE bHeader;
WORD wSize;
@ -1513,57 +1513,57 @@ enum EPointTypes
POINT_MAX_HP, // 6
POINT_SP, // 7
POINT_MAX_SP, // 8
POINT_STAMINA, // 9 <EFBFBD><EFBFBD><EFBFBD>׹̳<EFBFBD>
POINT_MAX_STAMINA, // 10 <EFBFBD>ִ<EFBFBD> <20><><EFBFBD>׹̳<D7B9>
POINT_STAMINA, // 9 스테미너
POINT_MAX_STAMINA, // 10 최대 스테미너
POINT_GOLD, // 11
POINT_ST, // 12 <EFBFBD>ٷ<EFBFBD>
POINT_HT, // 13 ü<EFBFBD><EFBFBD>
POINT_DX, // 14 <EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD>
POINT_IQ, // 15 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>
POINT_ATT_POWER, // 16 <EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>
POINT_ATT_SPEED, // 17 <EFBFBD><EFBFBD><EFBFBD>ݼӵ<EFBFBD>
POINT_EVADE_RATE, // 18 ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_MOV_SPEED, // 19 <EFBFBD>̵<EFBFBD><EFBFBD>ӵ<EFBFBD>
POINT_DEF_GRADE, // 20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_CASTING_SPEED, // 21 <EFBFBD>ֹ<EFBFBD><EFBFBD>ӵ<EFBFBD> (<28><><EFBFBD>ٿ<EFBFBD>Ÿ<EFBFBD><C5B8>*100) / (100 + <EFBFBD>̰<EFBFBD>) = <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٿ<EFBFBD> Ÿ<><C5B8>
POINT_MAGIC_ATT_GRADE, // 22 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>
POINT_MAGIC_DEF_GRADE, // 23 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_EMPIRE_POINT, // 24 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_LEVEL_STEP, // 25 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.. (1 2 3 <20><> <20><> <20><><EFBFBD><EFBFBD>, 4 <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>)
POINT_STAT, // 26 <EFBFBD>ɷ<EFBFBD>ġ <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_SUB_SKILL, // 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
POINT_SKILL, // 28 <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
// POINT_SKILL_PASV, // 27 <EFBFBD>нú<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
// POINT_SKILL_ACTIVE, // 28 <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
POINT_MIN_ATK, // 29 <EFBFBD>ּ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD>
POINT_MAX_ATK, // 30 <EFBFBD>ִ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD>
POINT_PLAYTIME, // 31 <EFBFBD>÷<EFBFBD><EFBFBD>̽ð<EFBFBD>
POINT_HP_REGEN, // 32 HP ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_SP_REGEN, // 33 SP ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ST, // 12 근력
POINT_HT, // 13 체력
POINT_DX, // 14 민첩성
POINT_IQ, // 15 정신력
POINT_ATT_POWER, // 16 공격력
POINT_ATT_SPEED, // 17 공격속도
POINT_EVADE_RATE, // 18 회피율
POINT_MOV_SPEED, // 19 이동속도
POINT_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_SKILL_PASV, // 27 패시브 기술 올릴 수 있는 개수
// POINT_SKILL_ACTIVE, // 28 액티브 스킬 포인트
POINT_MIN_ATK, // 29 최소 파괴력
POINT_MAX_ATK, // 30 최대 파괴력
POINT_PLAYTIME, // 31 플레이시간
POINT_HP_REGEN, // 32 HP 회복률
POINT_SP_REGEN, // 33 SP 회복률
POINT_BOW_DISTANCE, // 34 Ȱ <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ġ (meter)
POINT_BOW_DISTANCE, // 34 활 사정거리 증가치 (meter)
POINT_HP_RECOVERY, // 35 ü<EFBFBD><EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_SP_RECOVERY, // 36 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_HP_RECOVERY, // 35 체력 회복 증가량
POINT_SP_RECOVERY, // 36 정신력 회복 증가량
POINT_POISON_PCT, // 37 <EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_STUN_PCT, // 38 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_SLOW_PCT, // 39 <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> Ȯ<><C8AE>
POINT_CRITICAL_PCT, // 40 ũ<EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_PENETRATE_PCT, // 41 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_CURSE_PCT, // 42 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
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 <EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_ANIMAL, // 44 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_ORC, // 45 <EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_MILGYO, // 46 <EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_UNDEAD, // 47 <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_DEVIL, // 48 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ǹ<EFBFBD>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_INSECT, // 49 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ATTBONUS_FIRE, // 50 ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ATTBONUS_ICE, // 51 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ATTBONUS_DESERT, // 52 <EFBFBD><EFBFBD><EFBFBD>
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_UNUSED0, // 53 UNUSED0
POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
@ -1575,42 +1575,42 @@ enum EPointTypes
POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
POINT_STEAL_HP, // 63 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_STEAL_SP, // 64 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_STEAL_HP, // 63 생명력 흡수
POINT_STEAL_SP, // 64 정신력 흡수
POINT_MANA_BURN_PCT, // 65 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
POINT_MANA_BURN_PCT, // 65 마나 번
/// <EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> ///
/// 피해시 보너스 ///
POINT_DAMAGE_SP_RECOVER, // 66 <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> Ȯ<><C8AE>
POINT_DAMAGE_SP_RECOVER, // 66 공격당할 시 정신력 회복 확률
POINT_BLOCK, // 67 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_DODGE, // 68 ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_FIRE, // 75 ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : ȭ<><C8AD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_ELEC, // 76 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_MAGIC, // 77 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_WIND, // 78 <EFBFBD>ٶ<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_BOW, // 74 화살 저항 : 대미지 감소
POINT_RESIST_FIRE, // 75 화염 저항 : 화염공격에 대한 대미지 감소
POINT_RESIST_ELEC, // 76 전기 저항 : 전기공격에 대한 대미지 감소
POINT_RESIST_MAGIC, // 77 술법 저항 : 모든술법에 대한 대미지 감소
POINT_RESIST_WIND, // 78 바람 저항 : 바람공격에 대한 대미지 감소
POINT_REFLECT_MELEE, // 79 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݻ<EFBFBD>
POINT_REFLECT_MELEE, // 79 공격 반사
/// Ư<EFBFBD><EFBFBD> <20><><EFBFBD>ؽ<EFBFBD> ///
POINT_REFLECT_CURSE, // 80 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݻ<EFBFBD>
POINT_POISON_REDUCE, // 81 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// 특수 피해시 ///
POINT_REFLECT_CURSE, // 80 저주 반사
POINT_POISON_REDUCE, // 81 독데미지 감소
/// <EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8><EFBFBD> ///
POINT_KILL_SP_RECOVER, // 82 <EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8><EFBFBD> MP ȸ<EFBFBD><EFBFBD>
/// 적 소멸시 ///
POINT_KILL_SP_RECOVER, // 82 적 소멸시 MP 회복
POINT_EXP_DOUBLE_BONUS, // 83
POINT_GOLD_DOUBLE_BONUS, // 84
POINT_ITEM_DROP_BONUS, // 85
/// ȸ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ///
/// 회복 관련 ///
POINT_POTION_BONUS, // 86
POINT_KILL_HP_RECOVER, // 87
@ -1635,32 +1635,32 @@ enum EPointTypes
POINT_STAT_RESET_COUNT = 112,
POINT_HORSE_SKILL = 113,
POINT_MALL_ATTBONUS, // 114 <EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> +x%
POINT_MALL_DEFBONUS, // 115 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x%
POINT_MALL_EXPBONUS, // 116 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ +x%
POINT_MALL_ITEMBONUS, // 117 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD>
POINT_MALL_GOLDBONUS, // 118 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD>
POINT_MAX_HP_PCT, // 119 <EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x%
POINT_MAX_SP_PCT, // 120 <EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> +x%
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_SKILL_DAMAGE_BONUS, // 121 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)%
POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)%
POINT_SKILL_DAMAGE_BONUS, // 121 스킬 데미지 *(100+x)%
POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 평타 데미지 *(100+x)%
POINT_SKILL_DEFEND_BONUS, // 123 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_NORMAL_HIT_DEFEND_BONUS, // 124 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_SKILL_DEFEND_BONUS, // 123 스킬 방어 데미지
POINT_NORMAL_HIT_DEFEND_BONUS, // 124 평타 방어 데미지
POINT_PC_BANG_EXP_BONUS, // 125
POINT_PC_BANG_DROP_BONUS, // 126 PC<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD>
POINT_PC_BANG_DROP_BONUS, // 126 PC방 전용 드롭률 보너스
POINT_ENERGY = 128, // 128 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ENERGY = 128, // 128 기력
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ui <EFBFBD><EFBFBD>.
// <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>,
// uiTaskBar<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> affect<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<>󸮾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> blend_affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>,
// <EFBFBD>ӽ÷<EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD> <20>д<EFBFBD>.
POINT_ENERGY_END_TIME = 129, // 129 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
// 기력 ui .
// 이렇게 하고 싶지 않았지만,
// uiTaskBar에서는 affect에 접근할 수 없고,
// 더구나 클라리언트에서는 blend_affect는 관리하지 않아,
// 임시로 이렇게 둔다.
POINT_ENERGY_END_TIME = 129, // 129 기력 종료 시간
// Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ
// 클라이언트 포인트
POINT_MIN_WEP = 200,
POINT_MAX_WEP,
POINT_MIN_MAGIC_WEP,
@ -1668,7 +1668,7 @@ enum EPointTypes
POINT_HIT_RATE,
//POINT_MAX_NUM = 255,=>stdafx.h <EFBFBD><EFBFBD>/
//POINT_MAX_NUM = 255,=>stdafx.h /
};
typedef struct packet_points
@ -1684,8 +1684,8 @@ typedef struct packet_point_change
DWORD dwVID;
BYTE Type;
long amount; // <EFBFBD>ٲ<EFBFBD> <20><>
long value; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
long amount; // 바뀐 값
long value; // 현재 값
} TPacketGCPointChange;
typedef struct packet_motion
@ -1723,7 +1723,7 @@ typedef struct packet_set_item
BYTE pos;
DWORD vnum;
BYTE count;
DWORD flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
DWORD flags; // 플래그 추가
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet;
@ -1750,8 +1750,8 @@ typedef struct packet_set_item2
TItemPos Cell;
DWORD vnum;
BYTE count;
DWORD flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
DWORD anti_flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
DWORD flags; // 플래그 추가
DWORD anti_flags; // 플래그 추가
bool highlight;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
@ -1832,7 +1832,7 @@ typedef struct packet_shop_start
struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
} TPacketGCShopStart;
typedef struct packet_shop_start_ex // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSubPacketShopTab* shop_tabs <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴.
{
typedef struct sub_packet_shop_tab
{
@ -1975,12 +1975,12 @@ typedef struct packet_move
enum
{
QUEST_SEND_IS_BEGIN = 1 << 0,
QUEST_SEND_TITLE = 1 << 1, // 28<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
QUEST_SEND_CLOCK_NAME = 1 << 2, // 16<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
QUEST_SEND_TITLE = 1 << 1, // 28자 까지
QUEST_SEND_CLOCK_NAME = 1 << 2, // 16자 까지
QUEST_SEND_CLOCK_VALUE = 1 << 3,
QUEST_SEND_COUNTER_NAME = 1 << 4, // 16<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
QUEST_SEND_COUNTER_NAME = 1 << 4, // 16자 까지
QUEST_SEND_COUNTER_VALUE = 1 << 5,
QUEST_SEND_ICON_FILE = 1 << 6, // 24<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
QUEST_SEND_ICON_FILE = 1 << 6, // 24자 까지
};
typedef struct packet_quest_info
@ -2003,8 +2003,8 @@ typedef struct packet_attack
{
BYTE header;
DWORD dwVID;
DWORD dwVictimVID; // <EFBFBD><EFBFBD> VID
BYTE bType; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
DWORD dwVictimVID; // VID
BYTE bType; // 공격 유형
} TPacketGCAttack;
typedef struct packet_c2c
@ -2074,7 +2074,7 @@ enum EPVPModes
typedef struct packet_duel_start
{
BYTE header ;
WORD wSize ; // DWORD<EFBFBD><EFBFBD> <20>? <20><><EFBFBD><EFBFBD> = (wSize - sizeof(TPacketGCPVPList)) / 4
WORD wSize ; // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4
} TPacketGCDuelStart ;
typedef struct packet_pvp
@ -2230,7 +2230,7 @@ enum
typedef struct packet_guild_sub_grade
{
char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 길드장, 길드원 등의 이름
BYTE auth_flag;
} TPacketGCGuildSubGrade;
@ -2271,7 +2271,7 @@ enum EGuildWarState
GUILD_WAR_ON_WAR,
GUILD_WAR_END,
GUILD_WAR_DURATION = 2*60*60, // 2<EFBFBD>ð<EFBFBD>
GUILD_WAR_DURATION = 2*60*60, // 2시간
};
typedef struct packet_guild_war
@ -2347,8 +2347,8 @@ typedef struct SRefineTable
DWORD src_vnum;
DWORD result_vnum;
BYTE material_count;
int cost; // <EFBFBD>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD>
int prob; // Ȯ<EFBFBD><EFBFBD>
int cost; // 소요 비용
int prob; // 확률
TMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable;
@ -2383,17 +2383,17 @@ enum SPECIAL_EFFECT
SE_SUCCESS,
SE_FAIL,
SE_FR_SUCCESS,
SE_LEVELUP_ON_14_FOR_GERMANY, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
SE_LEVELUP_UNDER_15_FOR_GERMANY,//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
SE_LEVELUP_ON_14_FOR_GERMANY, //레벨업 14일때 ( 독일전용 )
SE_LEVELUP_UNDER_15_FOR_GERMANY,//레벨업 15일때 ( 독일전용 )
SE_PERCENT_DAMAGE1,
SE_PERCENT_DAMAGE2,
SE_PERCENT_DAMAGE3,
SE_AUTO_HPUP,
SE_AUTO_SPUP,
SE_EQUIP_RAMADAN_RING, // <EFBFBD>ʽ´<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_HALLOWEEN_CANDY, // <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(-_-;)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_HAPPINESS_RING, // ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_LOVE_PENDANT, // <EFBFBD>߷<EFBFBD>Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD>Ʈ(71145) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ (<28>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ƴ<EFBFBD>)
SE_EQUIP_RAMADAN_RING, // 초승달의 반지를 착용하는 순간에 발동하는 이펙트
SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지를 착용하는 순간에 발동하는 이펙트
SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
};
typedef struct SPacketGCSpecialEffect
@ -2696,7 +2696,7 @@ typedef struct packet_hs_check_req
AHNHS_TRANS_BUFFER Req;
} TPacketHSCheck;
//NOTE : recv/send<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, bPacketData<74><61> <20><><EFBFBD><20>ٲ<EFBFBD><D9B2><EFBFBD>.
//NOTE : recv/send에 공통으로 생김, bPacketData의 내용만 바뀐다.
typedef struct packet_xtrap_verify
{
BYTE bHeader;
@ -2714,7 +2714,7 @@ typedef struct packet_autoban_quiz
// END_OF_AUTOBAN
#ifdef __AUCTION__
// Argument<EFBFBD><EFBFBD> <20><EFBFBD><EBB5B5> cmd<6D><64> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>.
// Argument의 용도는 cmd에 따라 다르다.
typedef struct SPacketCGAuctionCmd
{
BYTE bHeader;
@ -2740,7 +2740,7 @@ typedef struct SPacketGCSpecificEffect
char effect_file[128];
} TPacketGCSpecificEffect;
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
// 용혼석
enum EDragonSoulRefineWindowRefineType
{
DragonSoulRefineWindow_UPGRADE,

View File

@ -80,7 +80,7 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
CURSOR_SHAPE_COUNT,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̹<EFBFBD> <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> enumerate
// 안정적인 네이밍 변환을 위한 임시 enumerate
NORMAL = CURSOR_SHAPE_NORMAL,
ATTACK = CURSOR_SHAPE_ATTACK,
TARGET = CURSOR_SHAPE_TARGET,
@ -254,16 +254,16 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
protected:
IGraphBuilder* m_pGraphBuilder; // Graph Builder
IBaseFilter* m_pFilterSG; // Sample Grabber <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ISampleGrabber* m_pSampleGrabber; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> ĸó<C4B8><C3B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD>
IBaseFilter* m_pFilterSG; // Sample Grabber 필터
ISampleGrabber* m_pSampleGrabber; // 영상 이미지 캡처를 위한 샘플 그래버
IMediaControl* m_pMediaCtrl; // Media Control
IMediaEventEx* m_pMediaEvent; // Media Event
IVideoWindow* m_pVideoWnd; // Video Window
IBasicVideo* m_pBasicVideo;
BYTE* m_pCaptureBuffer; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> ĸó<C4B8><C3B3> <20><><EFBFBD><EFBFBD>
LONG m_lBufferSize; // Video <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> <20><><EFBFBD><EFBFBD>
CGraphicImageTexture* m_pLogoTex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD>
bool m_bLogoError; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>
BYTE* m_pCaptureBuffer; // 영상 이미지를 캡처한 버퍼
LONG m_lBufferSize; // Video 버퍼 크기 변수
CGraphicImageTexture* m_pLogoTex; // 출력할 텍스쳐
bool m_bLogoError; // 영상 읽기 상태
bool m_bLogoPlay;
int m_nLeft, m_nRight, m_nTop, m_nBottom;

View File

@ -3,7 +3,7 @@
#include "Packet.h"
/*
* <EFBFBD><EFBFBD>ȯ â <20><><EFBFBD><EFBFBD>
* 교환 창 관련
*/
class CPythonExchange : public CSingleton<CPythonExchange>
{
@ -86,7 +86,7 @@ class CPythonExchange : public CSingleton<CPythonExchange>
protected:
bool m_isTrading;
bool m_elk_mode; // <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>ؼ<EFBFBD> <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
bool m_elk_mode; // 엘크를 클릭해서 교환했을때를 위한 변종임.
TExchangeData m_self;
TExchangeData m_victim;
};

View File

@ -1,8 +1,8 @@
#pragma once
// Note : ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Item<EFBFBD><EFBFBD> Update<EFBFBD><EFBFBD> Rendering<EFBFBD><EFBFBD> å<><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Icon Image Instance<EFBFBD><EFBFBD> <20>Ŵ<EFBFBD><C5B4><EFBFBD> <20><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD> <20>ְ<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ϴ<EFBFBD> - 2003. 01. 13. [levites]
// Note : 화면상에 떨어진 Item Update Rendering을 책임지는 한편
// 각 아이템의 데이타와 Icon Image Instance의 매니져 역할까지 주관
// 조금 난잡해진거 같기도 하다 - 2003. 01. 13. [levites]
#include "../EterGrnLib/ThingInstance.h"

View File

@ -148,7 +148,7 @@ class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
DWORD dwDstTime;
};
// ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
// 캐릭터 리스트
typedef struct
{
float m_fX;
@ -180,14 +180,14 @@ class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
float m_fMiniMapRadius;
// <EFBFBD><EFBFBD> <20>׸<EFBFBD>...
// 맵 그림...
LPDIRECT3DTEXTURE9 m_lpMiniMapTexture[AROUND_AREA_NUM];
// <EFBFBD>̴ϸ<EFBFBD> Ŀ<><C4BF>
// 미니맵 커버
CGraphicImageInstance m_MiniMapFilterGraphicImageInstance;
CGraphicExpandedImageInstance m_MiniMapCameraraphicImageInstance;
// ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ
// 캐릭터 마크
CGraphicExpandedImageInstance m_PlayerMark;
CGraphicImageInstance m_WhiteMark;

View File

@ -154,7 +154,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool SendQuickSlotDelPacket(BYTE wpos);
bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
// PointReset <EFBFBD><EFBFBD> <20>ӽ<EFBFBD>
// PointReset 개 임시
bool SendPointResetPacket();
// Shop
@ -257,7 +257,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
// CRC Report
bool __SendCRCReportPacket();
// <EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD> <20><>ȭ
// 용홍석 강화
bool SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos);
// Handshake
@ -277,7 +277,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
void __TEST_SetSkillGroupFake(int iIndex);
//////////////////////////////////////////////////////////////////////////
// Phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Phase 관련
//////////////////////////////////////////////////////////////////////////
public:
void SetOffLinePhase();
@ -314,7 +314,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool SendMessengerRemovePacket(const char * c_szKey, const char * c_szName);
protected:
bool OnProcess(); // State<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
bool OnProcess(); // State들을 실제로 실행한다.
void OffLinePhase();
void HandShakePhase();
void LoginPhase();
@ -528,10 +528,10 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
// Use Potion
bool RecvSpecialEffect();
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ߵ<EFBFBD> <20><>Ŷ.
// 서버에서 지정한 이팩트 발동 패킷.
bool RecvSpecificEffect();
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 용혼석 관련
bool RecvDragonSoulRefine();
// MiniMap Info
@ -554,10 +554,10 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool RecvXTrapVerifyRequest();
protected:
// <EFBFBD≯<EFBFBD>Ƽ<EFBFBD><EFBFBD>
// 이모티콘
bool ParseEmoticon(const char * pChatMsg, DWORD * pdwEmoticon);
// <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݵ<EFBFBD>
// 파이썬으로 보내는 콜들
void OnConnectFailure();
void OnScriptEventStart(int iSkin, int iIndex);

View File

@ -1,7 +1,7 @@
#pragma once
/*
* NPC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
* NPC 데이터 프로토 타잎을 관리 한다.
*/
class CPythonNonPlayer : public CSingleton<CPythonNonPlayer>
{

View File

@ -7,13 +7,13 @@
class CInstanceBase;
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> (<28>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
* 메인 캐릭터 (자신이 조정하는 캐릭터) 가 가진 정보들을 관리한다.
*
* 2003-01-12 Levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CPythonCharacter<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20>Ը<EFBFBD><D4B8><EFBFBD> <20>ʹ<EFBFBD> Ŀ<><C4BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <20>ָ<EFBFBD><D6B8>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>и<EFBFBD>
* 2003-07-19 Levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> ó<><C3B3> CharacterInstance<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD> <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Ż<EFBFBD>ٲ<EFBFBD> <20><>.
* 2003-01-12 Levites 본래는 CPythonCharacter가 가지고 있었지만 규모가 너무 커져 버린데다
* 위치도 애매해서 따로 분리
* 2003-07-19 Levites 메인 캐릭터의 이동 처리 CharacterInstance에서 떼어다 붙임
* 기존의 데이타 보존의 역할에서 완벽한 메인 플레이어 제어 클래스로
* 탈바꿈 함.
*/
class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
@ -88,8 +88,8 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
float fnextEfficientPercentage;
BOOL isCoolTime;
float fCoolTime; // NOTE : <EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float fLastUsedTime; // <EFBFBD><EFBFBD>â<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
float fCoolTime; // NOTE : 쿨타임 중인 스킬 슬롯을
float fLastUsedTime; // 퀵창에 등록할 때 사용하는 변수
BOOL bActive;
} TSkillInstance;
@ -161,15 +161,15 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
SKILL_PERFECT_MASTER,
};
// <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ưȭ <20><><EFBFBD><EFBFBD>ü.. <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD> Ưȭ ó<><C3B3> <20>۾<EFBFBD><DBBE><EFBFBD> <20><> <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ᱹ Ưȭó<C8AD><C3B3>.
// 자동물약 상태 관련 특화 구조체.. 이런식의 특화 처리 작업을 안 하려고 최대한 노력했지만 실패하고 결국 특화처리.
struct SAutoPotionInfo
{
SAutoPotionInfo() : bActivated(false), totalAmount(0), currentAmount(0) {}
bool bActivated; // Ȱ<EFBFBD><EFBFBD>ȭ <20>Ǿ<EFBFBD><C7BE>°<EFBFBD>?
long currentAmount; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
long totalAmount; // <EFBFBD><EFBFBD>ü <20><>
long inventorySlotIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
bool bActivated; // 활성화 되었는가?
long currentAmount; // 현재 남은 양
long totalAmount; // 전체 양
long inventorySlotIndex; // 사용중인 아이템의 인벤토리상 슬롯 인덱스
};
enum EAutoPotionType
@ -227,7 +227,7 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
// Reserved
bool NEW_IsEmptyReservedDelayTime(float fElapsedtime); // <EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> - [levites]
bool NEW_IsEmptyReservedDelayTime(float fElapsedtime); // 네이밍 교정 논의 필요 - [levites]
// Dungeon
@ -240,7 +240,7 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
// flying target set
void Clear();
void ClearSkillDict(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> ClearGame <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20>Լ<EFBFBD>
void ClearSkillDict(); // 없어지거나 ClearGame 쪽으로 포함될 함수
void NEW_ClearSkillData(bool bAll = false);
void Update();

View File

@ -63,9 +63,9 @@ class CPythonPlayerEventHandler : public CActorInstance::IEventHandler
virtual void OnSetFlyTarget();
virtual void OnShoot(DWORD dwSkillIndex);
virtual void OnNoTarget() { /*Tracenf("Shoot : target<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");*/ }
virtual void OnExplodingOutOfRange() { /*Tracenf("Shoot : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");*/ }
virtual void OnExplodingAtBackground() { /*Tracenf("Shoot : <EFBFBD><EFBFBD><EFBFBD><20>¾ҽ<C2BE><D2BD>ϴ<EFBFBD>.");*/ }
virtual void OnNoTarget() { /*Tracenf("Shoot : target이 없습니다.");*/ }
virtual void OnExplodingOutOfRange() { /*Tracenf("Shoot : 사정거리가 끝났습니다.");*/ }
virtual void OnExplodingAtBackground() { /*Tracenf("Shoot : 배경에 맞았습니다.");*/ }
virtual void OnExplodingAtAnotherTarget(DWORD dwSkillIndex, DWORD dwVID);
virtual void OnExplodingAtTarget(DWORD dwSkillIndex);

View File

@ -3,12 +3,12 @@
#include "Packet.h"
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
* 상점 처리
*
* 2003-01-16 anoa <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>
* 2003-12-26 levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2003-01-16 anoa 일차 완료
* 2003-12-26 levites 수정
*
* 2012-10-29 rtsummit <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> ȭ<><C8AD> <20><><EFBFBD><EFBFBD> <20><> tab <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> shop Ȯ<EFBFBD><EFBFBD>.
* 2012-10-29 rtsummit 새로운 화폐 출현 및 tab 기능 추가로 인한 shop 확장.
*
*/
typedef enum

View File

@ -104,7 +104,7 @@ class CPythonSkill : public CSingleton<CPythonSkill>
SKILL_ATTRIBUTE_NEED_EMPTY_BOTTLE = (1 << 12),
SKILL_ATTRIBUTE_NEED_POISON_BOTTLE = (1 << 13),
SKILL_ATTRIBUTE_ATTACK_SKILL = (1 << 14),
SKILL_ATTRIBUTE_TIME_INCREASE_SKILL = (1 << 15), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> attribute
SKILL_ATTRIBUTE_TIME_INCREASE_SKILL = (1 << 15), // 증지술 전용 attribute
SKILL_ATTRIBUTE_CHARGE_ATTACK = (1 << 16),
SKILL_ATTRIBUTE_PASSIVE = (1 << 17),
SKILL_ATTRIBUTE_CANNOT_LEVEL_UP = (1 << 18),
@ -138,7 +138,7 @@ class CPythonSkill : public CSingleton<CPythonSkill>
enum
{
SKILL_GRADE_COUNT = 3,
SKILL_EFFECT_COUNT = 4, //<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> <20><>,<2C><>,<2C><><EFBFBD><EFBFBD> <20>̿ܿ<CCBF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>߰<EFBFBD>.
SKILL_EFFECT_COUNT = 4, //스킬은 초,중,고급 이외에 마스터일때 이펙트 추가.
SKILL_GRADE_STEP_COUNT = 20,
SKILL_GRADEGAP = 25,
};
@ -243,8 +243,8 @@ class CPythonSkill : public CSingleton<CPythonSkill>
DWORD dwSkillAttribute;
DWORD dwNeedWeapon;
DWORD dwTargetRange;
WORD wMotionIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
WORD wMotionIndexForMe; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
WORD wMotionIndex; // 없어질 변수
WORD wMotionIndexForMe; // 없어질 변수
BOOL isRequirement;
std::string strRequireSkillName;

View File

@ -3,7 +3,7 @@
#include "../eterBase/Singleton.h"
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴϴ<EFBFBD> <20>ؽ<EFBFBD>Ʈ ó<><C3B3>
* 따라다니는 텍스트 처리
*/
class CPythonTextTail : public CSingleton<CPythonTextTail>
{
@ -20,8 +20,8 @@ class CPythonTextTail : public CSingleton<CPythonTextTail>
CGraphicTextInstance* pLevelTextInstance;
// Todo : <EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD> VID<49><44> <20>ٲٵ<D9B2><D9B5><EFBFBD> <20>Ѵ<EFBFBD>.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ƨ<><C6A8> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD>
// Todo : 이건 전부 VID로 바꾸도록 한다.
// 도중 캐릭터가 없어질 경우 튕길 가능성이 있음
CGraphicObjectInstance * pOwner;
DWORD dwVirtualID;
@ -29,7 +29,7 @@ class CPythonTextTail : public CSingleton<CPythonTextTail>
float x, y, z;
float fDistanceFromPlayer;
D3DXCOLOR Color;
BOOL bNameFlag; // <EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <20>Բ<EFBFBD> <20>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
BOOL bNameFlag; // 이름도 함께 켤것인지의 플래그
float xStart, yStart;
float xEnd, yEnd;