www.pudn.com > back.rar > userinfo.h


//_________________________________________________________________________________ 
// 
//	UserInfo.H 
// 
//	ÃßÈÄ¿¡ ¼ÒÄÏ Å¬·¡½º Ãß°¡ 
//	user class ´Â °èÁ¤ÀÌ ¾Æ´Ñ  
//	°ÔÀÓ³» ij¸¯ÅÍ °ü·Ã 󸮸¦ ÇÑ´Ù. 
//_________________________________________________________________________________ 
// 
 
#ifndef _USERINFO_H_ 
	#define _USERINFO_H_ 
 
//_________________________________________________________________________________ 
// 
// userinfo class..... 
//_________________________________________________________________________________ 
// 
class CItem; 
 
// Á¾Á· ¼±¾ð 
#define RACE_UNION		0 
#define RACE_FAIRY		1 
 
// 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL 10->12 
#define MAX_BUFF		12	// ³ªÁß¿¡ ¹Ù²ãÁÖÀÚ..Áö±ÝÀº 10°³°¡ ÇѰè 
 
#define MAX_WARPID		20  // Á×À»¶§ ¼Òȯ ¿öÇÁ ¾ÆÀ̵ð ÀúÀåÀ§Ä¡ 20°³ 
 
 
enum	Character_Status 
{ 
	CHR_ALIVE = 0,		// ÀÏ¹Ý »óÅ 
	CHR_RESSIVE,		// ÆÐ½Ãºê½ºÅ³ÀÌ °É¸° »óÅ 
	CHR_REST,			// ÈÞ½Ä »óÅ 
	CHR_PAGIC,			// º¸Á¶¸¶¹ý »óÅ 
	CHR_POISON,			// µ¶¿¡ °É¸° »óÅ 
	CHR_STUN,			// ½ºÅÏ 
	CHR_DEATH,			// Á×Àº »óÅ 
	CHR_WARP,			// ¿öÇÁÁßÀÎ »óÅÂ...ÀÌ »óÅ¿¡¼­´Â ³¯¶ó¿À´Â ¸ðµç ¸Þ¼¼Áö ¾Ã±â...2-19 
	CHR_WALK,			// ÇÇ·Î ¶Ç´Â ¾Æ´Ï¸¶ ¾ÆÀÌÅÛ¿¡ ÀÇÇÑ °È±â»óÅ 
	APP_LOGIN,			// ·Î±×ÀÎ  »óÅ¿¡¼­ ¿öÇÁ 032  
}; 
 
struct CP_Change_Stat;  
 
//#ifdef KOREA 
const int SPEED_HACK_TIME =	5000;  // 2005.2.21 3000->5000 ¼öÁ¤ 
//#else 
//const int SPEED_HACK_TIME =	3000; 
//#endif 
 
#define FTIMECHECK			3000.0f 
 
class CSpeedInfo		// 2004.9.13 Donny SPEEDHACK 
{ 
public: 
	DWORD	m_lPreTime; 
	BYTE	m_byCount; 
	DWORD   m_dwSendTime[2]; 
	DWORD   m_dwRecvTime[2]; 
	DWORD   m_dwClientTime[2]; 
 
	CSpeedInfo()  { Clear(); } 
	~CSpeedInfo() {          } 
 
	void Clear() 
	{		 
		m_lPreTime		= 0;		 
		m_byCount		= 0; 
		 
		memset( m_dwSendTime,   0, sizeof(m_dwSendTime) ); 
		memset( m_dwRecvTime,   0, sizeof(m_dwRecvTime) ); 
		memset( m_dwClientTime, 0, sizeof(m_dwClientTime) ); 
	} 
 
	void Reset() 
	{ 
		m_byCount		= 0; 
		 
		memset( m_dwSendTime,   0, sizeof(m_dwSendTime) ); 
		memset( m_dwRecvTime,   0, sizeof(m_dwRecvTime) ); 
		memset( m_dwClientTime, 0, sizeof(m_dwClientTime) ); 
	} 
}; 
 
///////////////////////////////////////////////////////////////////// 
// 2004.11.10 Donny : 2Â÷½ºÅ³ : º£¾î¾îÅØ (Æê°ø°Ý) 
// Class Name  : CPetAttackInfo 
// Description : Æê°ø°ÝÀÇ Á¤º¸ÀÇ ¸â¹öº¯¼ö¿Í ¼ÂÆÃ ¹× ¸®¼ÂÀÇ ¸â¹öÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù. 
///////////////////////////////////////////////////////////////////// 
#define PET_ATTACK_GAP  3000  // Æê°ø°Ý½Ã ÆêÀÇ °ø°Ý ½Ã°£ GAP Áï, 3Ãʸ¶´Ù °ø°ÝÇÑ´Ù. 
 
class CPetAttackInfo        
{ 
public: 
	bool    m_bCanAttack;         // ÆêÀÇ °ø°Ý°¡´É¿©ºÎ     
	DWORD	m_dwTimeWhenAttack;   // ÆêÀÌ Å¸°ÙÀ» °ø°ÝÇϱ⠽ÃÀÛÇÑ ½Ã°£  
	DWORD   m_dwTargetUnique;     // Ÿ°ÙÀÇ À¯´ÐÅ©¹øÈ£  
	int     m_nTargetIndex;       // Ÿ°ÙÀÇ À妽º ( À¯Àú°¡ Ÿ°ÙÀ϶§ -1 ) 
	int     m_nDamage;            // µ¥¹ÌÁö  
	bool    m_bSummon;            // Ÿ°ÙÀÌ npcÀ϶§ ±× npc°¡ ¼ÒȯµÇ¾ú´Â ÁöÀÇ ¿©ºÎ 
 
	CPetAttackInfo()  { Clear(); } 
	~CPetAttackInfo() {          } 
 
	void MakeAttack( DWORD TargetUnique, int TargetIndex, int Damage, bool Summon = false ) 
	{ 
		if ( m_bCanAttack == false ) 
		{ 
			m_dwTimeWhenAttack = g_dwCurTickTime; 
		} 
		m_bCanAttack       = true; 
		m_dwTargetUnique   = TargetUnique;	// **¸ó½ºÅͰø°Ý½Ã nArrayPos°ªÀÌ µé¾î°£´Ù.** 
		m_nTargetIndex     = TargetIndex; 
		m_nDamage          = Damage; 
		m_bSummon          = Summon; 
	} 
 
	void Clear() 
	{ 
		m_bCanAttack	   = false; 
		m_dwTimeWhenAttack = 0; 
		m_dwTargetUnique   = 0; 
		m_nTargetIndex     = 0; 
		m_nDamage          = 0; 
		m_bSummon          = false; 
	} 
}; 
 
// 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL 
struct OnBuffSkill 
{ 
	bool AuraSword;				// ¿À¶ó¼Òµå°¡ °É·Á ÀÖÀ¸¸é, true 
	BYTE AuraDeffender;         // ¿À¶óµðÆæ´õ°¡ °É·Á ÀÖÀ¸¸é 0º¸´Ù Å©´Ù. ¿ÏÀü¹æ¾î Ƚ¼ö°¡ µé¾î°£´Ù. 
	BYTE HawkDistance;			// ¼Ò¿ïȣũ¼ÒȯÀ¸·Î½á ´Ã¾î³ª´Â »çÁ¤°Å¸®. 
	bool BlessShield;           // ºí·¡½º½¯µå°¡ °É·Á ÀÖÀ¸¸é, true 
	//  2Â÷ÀüÁ÷½ºÅ³ º¯°æ  
	BYTE HolyWeapon;			// ¿Ã¶ó°¥ ±âº» °ø°Ý·Â ÆÛ¼¾Æ® 
	BYTE HolyShield;			// ¿Ã¶ó°¥ ±âº» ¹æ¾î·Â ÆÛ¼¾Æ® 
	BYTE HolyLife;				// ¿Ã¶ó°¥ HP Áõ°¡·® ÆÛ¼¾Æ® 
	BYTE HolyLifeSpeed;			// ÀÚ¿¬È¸º¹¼Óµµ 
}; 
 
class CUserInfo 
{ 
	public: 
		CUserInfo(); 
		~CUserInfo(); 
 
		// Á¢¼Ó Á¾·á ¹× ÃʱâÈ­ 
		void	CloseClient() {  
			if( m_pxClient != NULL ) 
				m_pxClient->Close(1000);  
		} 
 
		void	Clear(); 
		void	Mode_Clear(); 
 
		// ¸â¹ö º¯¼ö°ü·Ã ¸®ÅÏ 
		long	Return_Unique ( ) { return m_character_unique; } 
		DWORD	Return_Account_ID() { return m_account_id; } 
		int		Return_Floor() { return m_floor; } 
		int		Return_Map_ID() { return m_map_id; } 
		char*	Return_Character_Name() { return m_character_info.ID; } 
		int		Return_Character_Race() { return m_character_info.race; } 
		int		Return_Character_Sex() { return m_character_info.sex; } 
		DWORD	Return_Character_Head() { return m_character_info.head; } 
		DWORD	Return_Character_Body() { return m_character_info.body; } 
		DWORD	Return_Character_LHand() { return m_character_info.l_hand; } 
		DWORD	Return_Character_RHand()  
		{  
			if( m_EquipArray[2].Return_Item_Index() != 0 ) 
				return m_EquipArray[2].Return_Item_Index();  
			return 0; 
		} 
		DWORD	Return_Character_Arm() { return m_character_info.arm; } 
		DWORD	Return_Character_Foot() { return m_character_info.foot; } 
		DWORD	Return_Character_FAccessory() { return m_character_info.accessory1; } 
		DWORD	Return_Character_SAccessory() { return m_character_info.accessory2; } 
		int		Return_Character_Effect( int num ) { return m_character_info.effect[num]; } 
		int		Return_Character_XBlock() { return m_cur_block->Return_Xblock_No(); } 
		Char_Info_All* Return_Character_Info() { return &m_character_info; } 
		CItem*	Return_Equip_Item( int pos ) { return &m_EquipArray[pos]; } 
		CItem*	Return_EquipSkin_Item( int pos ) { return &m_EquipSkinArray[pos]; }  // 2005.3.11 Donny ij¸¯ÅͽºÅ² : Âø¿ëÇÑ À§Ä¡ÀÇ ½ºÅ²¾ÆÀÌÅÛÆ÷ÀÎÅÍ ¸®ÅÏÇÏ´Â ÇÔ¼ö 
		CItem*	Return_Tool_Item( int pos ) { return &m_Tool_Inventory[pos]; } 
		DWORD	Return_Pos(); 
		CItem*	Return_TarNecta( BYTE bTar , DWORD unique );		// 0 : ³ØÅ¸ 1 : Ÿ¸£ 2 : °ÇÃÊ  
		CItem*	Return_Item( DWORD itemidx, DWORD itemunique, bool equip ); 
		CItem*	Return_Item_Unique( DWORD dwItemunique ); 
		CItem*	Return_Item_Index( DWORD dwItemIndex ); 
		bool	Return_Have_Item( DWORD dwItemIndex ); // ¾ÆÀÌÅÛÀ» ÀÚ±â°í ÀÖ´ÂÁö À¯¹« 
		// 1005-LIM // 
		void	Return_Check_Have_Item( DWORD ItemIndex );	//¾ÆÀÌÅÛÀ» ¹ö¸®°Å³ª ÆÈ°Å³ª µîÀ» Çҽÿ¡ Ç×»ó È£ÃâÈÄ ¾ÆÀÌÅÛ ÀÖ´ÂÁö ¿©ºÎ Á¶»ç. 
 
		char*	Return_IP(); 
 
		//	ij¸¯ÅÍ À§Ä¡¼öÁ¤..À̵¿µµÂø ¿Ï·á½Ã ºí·° ¼Ó¤¸¼º ±îÁö º¯°æ 
		void	Position_Modify( CBlock *dest_block, int floor );	// 7-5 
		//	ij¸¯ÅÍ À§Ä¡¼öÁ¤...À̵¿ °¡´É ¿©ºÎ¿Í »ó°ü¾øÀÌ Ä³¸¯ÅÍÀÇ À§Ä¡¸¸ º¯°æ 
		void	Position_Change( CBlock *dest_block ) {	m_cur_block = dest_block; } 
		void	Do_Nothing( ); 
		// 1005-LIM // 
		void	Check_EsotericaZone( int map, int pos ); 
 
		// À¯Àú ¹æ¼Û °ü·Ã 
//		bool	WriteBuffer( BYTE* buf, DWORD size ); 
		void	WriteBuffer( BYTE* buf, DWORD size ); 
		void	WriteError( BYTE byCode ) 
		{ 
			SP_Error_Code code; 
			code.m_byErr = byCode; 
			WriteBuffer( (BYTE*)&code, sizeof( SP_Error_Code ) ); 
		} 
 
		// º¯¼ö ¼ÂÆÃ °ü·Ã 
		void	Set_Unique( long unique ) { m_character_unique = unique; } 
		void	Set_Account_ID( DWORD id ) { m_account_id = id; } 
		void	Set_Start_Block( CBlock* cb )  
		{  
			cb->Block_Occupy( m_character_unique , START_FLOOR );  
			m_cur_block = cb;  
		} 
		void	Set_Now_Block( CBlock* nb ) 
		{ 
			m_cur_block = nb; 
		} 
		void	Set_Client( CXClient* set_client ) { m_pxClient = set_client; } 
		void	Set_Character_Sex( int sex ) { m_character_info.sex = sex; } 
		void	Set_Items( CItem* item, DWORD itemidx, DWORD itemunique )  
		{  
			item->Set_ID( itemidx );  
			item->m_Item_Unique = itemunique; 
		}; 
		void	Set_CXClient( CXClient* cx ) { m_pxClient = cx; } 
		void	Set_Map_ID( int mid ){ m_map_id = mid; } 
		void	Set_Char_Info( int pos ); 
		void	Set_Character_Stat();	// ij¸¯ÅÍ ±âº» °è»ê 
		void	Set_Horse_Item();		// ¸»¾ÈÀå°ú Åõ±¸¼¼ÆÃ 
 
		// Âø¿ë °ü·Ã 
		DWORD	Takeoff_Equipment( DWORD itemidx , DWORD itemequippos , DWORD itempos ); 
		int		Change_Equipment( DWORD itemidx, DWORD itemunique , BYTE pos ); 
		DWORD	Takeoff_Potion_Equipment( DWORD itemidx , DWORD itempos ); 
		bool	Input_Potion_Equipment(DWORD itemidx, DWORD itemunique , int *pos);  //¹°¾àÀ» Âø¿ëÇÒ¶§ ¾´´Ù. 
		bool	Check_Item_Ability( int nIndex );		// Àü¿ª iteminfo¿¡¼­ ÂüÁ¶ÇÒ ¾ÆÀÌÅÛ ´É·ÂÄ¡ ÃæºÐÇϸé true 
		int		GetEquipIdx( DWORD _dwItemIdx ); 
 
		// ¾ÆÀÌÅÛ °ü·Ã 
		bool	Drop_Item( DWORD itemidx, DWORD itemunique, bool equip, CItem* item ); 
		bool	Takeout_Item( DWORD itemidx ); 
		int 	Pickup_Item( DWORD itemidx, DWORD itemunique, DWORD tileno , _Value4 *iteminfo , int anama = 0 ); 
		int 	Take_Item( DWORD itemidx, DWORD itemunique , _Value4 *iteminfo ); 
		DWORD	Buy_Item( DWORD itemidx, int count, int marketindex ,DWORD* Pos ,DWORD OverIndex, DWORD OverUnique , _Value4 *iteminfo); 
		void	Sell_Item( CItem* sell ); 
		void	Delete_Item( DWORD index , DWORD unique ,  int count , bool quest ); 
		void	Item_Life_Change( bool bAttack );	// ¾ÆÀÌÅÛ ¼ö¸í °ü·Ã.°ø°ÝÀ̸é true ¹æ¾î¸é false 
		void	ArrowBox_Life_Change(); 
		bool	Check_Item( DWORD dwIndex, int nCount );		// ÇØ´ç¾ÆÀÌÅÛ °¹¼ö¸¸Å­ ÀÖ³ª? 
		// ItemBill-LIM // 
		bool	Is_Check_Item_Index( DWORD dwIndex ); 
		// ItemMall-LIM // 
		bool	Is_Check_Item_Unique( DWORD dwIndex, DWORD dwUnique ); 
		 
		// 1117-LIM 
		void	Unique_Item_Del( DWORD itemidx ); 
		void	Unique_Item_Get( DWORD itemidx ); 
		// 1117-LIM 
		void	Get_Random_Item( int type, DWORD itemidx, DWORD itemunique ); 
		 
		// 6.4 ÀÓâ¿ø.Äù½ºÆ® °ü·Ã ÇÔ¼ö//		 
		int		Check_Item_Count( DWORD dwIndex );		//ÇØ´ç ¾ÆÀÌÅÛÀÇ °³¼ö¸¦ ±¸ÇÑ´Ù. 
		void	Check_Limit_Quest_Fail( int LimitQuest );		//Á¦ÇÑÀÌ ÀÖ´Â Äù½ºÆ®½Ã Äù½ºÆ® ½ÇÆÐ °ü·Ã? 
		void	NormalQuest_Bonus( int index );			//ÀϹÝÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º 
		bool	NormalQuest_SpecialBonus( int index );		//ÀϹÝÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º 
		void	SpecialQuest_Bonus( int index );		//½ºÆä¼ÈÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º 
		bool	SpecialQuest_SpecialBonus( int index );		//½ºÆä¼ÈÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º 
		void	ScenarioQuest_Bonus( int index );		//½Ã³ª¸®¿ÀÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º 
//		bool	ScenarioQuest_SpecialBonus( int index );	//½Ã³ª¸®¿ÀÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º 
		void	Quest_Init( int index );				//Äù½ºÆ® ÃʱâÈ­ 
		void	Quest_ReStart( int index );				//Äù½ºÆ® Àç½ÃÀÛ( ½ÇÆÐÇϰųª ¼º°ø½Ã¿¡ ´Ù½Ã ½ÃÀÛÇÑ´Ù.) 
		void	Check_NPC_Quest_Suc( CP_Quest* msg );	//NPCº¸»óÀϰæ¿ì ¼º°ø¿©ºÎ. 
		int 	Etc_Bonus();	//±âŸ º¸»ó°ü·Ã 
//		void	Check_PreQuest( BYTE quest_class, int quest_index ); //»çÀüÄù½ºÆ® Ãß°¡. 
		void	Check_Killed_NPC_Quest( int npc_index, int npc_map_id);	//NPC¸¦ Á×ÀÌ´Â Äù½ºÆ® °ü·Ã üũ 
		void	Check_Item_Quest( DWORD ItemIdx = 0);	//¾ÆÀÌÅÛ °ü·Ã 
		void	Quest_WriteBuffer( BYTE bycommand, BYTE byreason, _MyQuest myquest ); 
		bool	Quest_Require( BYTE byClass, WORD wIndex, BYTE quest_count, DWORD &dwtime ); 
#ifdef FULLMOON_IVENT 
		void	Delete_Moon_Item(); 
#endif 
		// 1108-LIM // 
#ifdef THIN_THIN_RO_DAY 
		void	Delete_THIN_THIN_RO_Item(); 
#endif 
		//////////////////////////////////////////////////////////////////////////////////////////////// 
		 
		 
		// ½ºÅ³¹× ½ºÅÈ °ü·Ã ÃʱâÈ­ 
		bool	Change_Stat( CP_Change_Stat* change );  
		void	Init_Stat(); 
		void	Init_Skill();  
		void	Change_Job_Skill_Init();	// 2Â÷ÀüÁ÷-LIM // 
		// ItemBill-LIM // 
		int		Return_Skill_Point(); 
 
		// ȸº¹ °ü·Ã.À¯Àú »ç¸Á°ü·Ã 
		void	Recover_HP( DWORD cur_time, BYTE flag ); 
		void	Die_Drop();		// Á×À»¶§ ¾ÆÀÌÅÛ ¶³±¸±â 
		void	User_Die( DWORD dwTick, bool bNPC, bool bBothPK );		// boolÀº npc¿¡°Ô Á×¾ú³ª??, ½Ö¹æ PKÀÌ¿´´ÂÁö  
 
		// À¯Àú º¯È­ 
		void	Change_User_HPMP( int nChangeHP, int nChangeMP ); 
		void	Change_User_ChargeExtacy( int nChangeCharge, int nChangeExtacy ); 
		void	Check_Charge(); 
		void	Check_Extacy(); 
		void	Check_Horse_Extacy(); 
		void	Change_Money( int nCash ); 
		bool	Use_Skillbook( BYTE	byPoint );	// ¿Ã¶ó°¥ Æ÷ÀÎÆ® 
		bool	Use_Expbook( long nExperience );  // 2004.8.2 °æÇèÄ¡ºÏ »ç¿ë½Ã. 
		bool	Use_Hexpbook( long nExperience );  // 2004.2.22 ¸»°æÇèÄ¡ºÏ »ç¿ë½Ã. 
 
		void	Change_Fame( int fame );	//¸í¼ºÄ¡ º¯È¯.ÀÓâ¿ø Ãß°¡. 
		void	Check_FamebyMake( BYTE byType, bool bSuc );		// ¾ÆÀÌÅÛ Á¦Á¶ Á¾·ù, ¼º°ø ¿©ºÎ 
 
		// À¯Àústatus °ü·Ã 
		void	Restore_Status(); 
		void    Restore_ExtraStatus();                                // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ) 
		void    ResetExtraStatusSkillData();                          // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ) 
		// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ºÒÀÇ º¸È£¸·  
		void    ContinueDamage( DWORD dwTime, DWORD byGetTime, BYTE byAttackRate, BYTE byUntillHp ); // ?Ãʸ¶´Ù ü·ÂÀÇ ?%¾¿ ü·ÂÀÇ ?±îÁö Áö¼Óµ¥¹ÌÁö¸¦ ¹Þ´Â´Ù. 
		void	Set_Status( BYTE byStatus, DWORD dwTime ); 
		void    Set_ExtraStatus( BYTE byExtraStatus, DWORD dwTime );  // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ) 
		void	Check_User_Status( DWORD cur_time ); 
		void	Check_User_TarNecta(); 
		bool    Check_CanMoveAndAttack_FromStatus();  // 2004.12.27 Donny PVP : À¯Àú »óŰ¡ ¿òÁ÷ÀÌ°í °ø°ÝÇÒ¼ö ÀÖ´Â »óÅÂÀÎÁö üũÇÏ´Â ÇÔ¼öÀÌ´Ù. 
 
		// ÇÕü °ü·Ã 
		void	Unite_Character( int ArrayNo ); 
		void	Set_Unite( int ArrayNo ); 
		void	Seperate(); 
 
		// À¯Àú ¸»»óÅ °ü·Ã 
		void		Set_Horse_Status( bool bHave, BYTE byStatus ) 
		{ 
			m_bHave = bHave; 
			m_istatus = byStatus; 
		} 
		bool		Horse_Wear( long lUnique );		// ²Ù¹Ð ¾ÆÀÌÅÛ À¯´ÏÅ© 
		bool		Horse_Change( BYTE byType, BYTE byNumber, CItem* Item, int No );		// ¾ÈÀå/Åõ±¸, ÇØ´ç¾ÆÀÌÅÛÀÇ ¹øÈ£ 
		BYTE		Get_Horse_Percent();		// ¸» ½ºÆ®·¹½º ÆÛ¼¾Æ® 
		void		Set_Horse_Stress();			// ¸»ÀÇ ÃÖ´ë ½ºÆ®·¹½º ¼öÄ¡ ¼³Á¤ 
		void		Set_Horse_Data( BYTE byType, int No );		// ¾ÈÀå/Åõ±¸, ÇØ´ç¾ÆÀÌÅÛ ¹è¿­ ¹øÈ£ 
		void		Set_Horse_Data_First();		// Á¢¼Ó½Ã ¸»ÀÇ Âø¿ë¾ÆÀÌÅÛ ¹è¿­ ¹øÈ£ ¼ÂÆÃ 
		void		Set_Horse_Trade( Horse_Info_Load* pData );	 
 
		// Åä±Û 
		void	Toggle_Run() 
		{ 
			if( m_bToggle ) 
				m_bToggle = false; 
			else m_bToggle = true; 
		} 
		bool	Toggle_AttackMode();		// ½Ã°£Á¦ÇÑ ¶§¸Å 
 
		// ½ºÅ³ °ü·Ã 
		bool	Check_Skill( BYTE bySkill );		// ÇØ´ç ½ºÅ³ ¹è¿üÀ¸¸é true, ¾È¹è¿üÀ¸¸é false 
		bool    Check_BasicSkill( BYTE bySkill );   // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âº»½ºÅ³Áß¿¡¸¸ üũÇÑ´Ù. 
		bool    Check_SpecialSkill( BYTE bySkill );  // 2Â÷ÀüÁ÷½ºÅ³ ETC 
		int		Learn_Skill( BYTE bySkill );		 
		int		Upgrade_Skill( BYTE bySkill );		// ÇØ´ç ½ºÅ³ ¾÷..¼º°øÇÏ¸é ¾÷±×·¹ÀÌµå ¼öÄ¡, ½ÇÆÐÇϸé -1..½ÇÆÐ´Â ¾÷±×·¹À̵å Ç® ¶Ç´Â ½ºÅ³ Æ÷ÀÎÆ® 0 
		void	User_Under_Skill( CUserInfo* pUser, int nSkill, BYTE bySkillLevel, int x, int y, MAP& rMap );	// À¯Àú°¡ ¹üÀ§°ø°Ý ´çÇÑ´Ù..°ø°ÝÀÚ..½ºÅ³..½ºÅ³·¹º§..±âÁØÁ¡, ¸Ê 
		void	User_Under_Range( int nAtt, bool bSkill, DWORD dwNpcIndex );	// npc°ø°Ý½Ã ¹üÀ§ °ø°ÝÀ϶§ ÁÖº¯ À¯Àú ó¸®..°ø°Ý·Â // 2004.11.10 Donny NPC¹üÀ§°ø°Ý : ¼öÁ¤  
		bool	Check_NeedSkillsForLearning( BYTE bySkill ); // 2Â÷ÀüÁ÷½ºÅ³ ETC 
 
		// buff°ü·Ã 
		void	Remove_All_Buff();		// Áװųª Á¢¼Ó Á¾·á ÇßÀ»¶§ ¹öÇÁ ¹è¿­ 
		void	SendBuff( CUserInfo* pTarget );		// target user¿¡°Ô ÇöÀç ¹öÇÁ »óÅ ½÷ÁÖ±â 
		void	Check_Buff(); 
		void    Check_PassiveSkill();  // 2004.10.27 Donny 2Â÷½ºÅ³ : ÆÐ½Ãºê½ºÅ³À» °¡Áö°í Àִ üũÇÑ´Ù. 
		int		Return_StatPoint( BYTE bySkill, BYTE byLevel ); 
		DWORD	Return_Buff_Time( BYTE bySkill, BYTE byLevel ); 
		int		Check_Light_Shield( int nDmg ); // ¶óÀÌÆ®´× ½¯µå °ü·Ã...°É·Á ÀÖÀ¸¸é npc°¡ ÀÔÀ» µ¥¹ÌÁö ¸®ÅÏ 
		BYTE	Return_SkillLevel( DWORD dwSkillIndex );		// ÇØ´ç ½ºÅ³ ·¹º§ ¸®ÅÏ 
		BYTE    Return_OriginSkillLevel( DWORD dwSkillIndex );  // 2Â÷ÀüÁ÷½ºÅ³ ETC 
		BYTE	Return_BasicSkillLevel( DWORD dwSkillIndex );   // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âº»½ºÅ³Áß¿¡¼­¸¸ °Ë»öÇÏ¿© ·¹º§À» ¸®ÅÏÇÑ´Ù. 
 
		// ¼ö¸® °ü·Ã 
		bool	Is_Equip_Item();		// true¸é Âø¿ëÇѰŠÀÖ°í false¸é Çϳªµµ ¾Èá´Ù 
		void	Repair_Item( long lUnique );	// ÀϹݼö¸® 
		void	Repair_Life( long lUnique );	// ¼ö¸í¼ö¸® 
 
		// ÆÄƼ °ü·Ã 
		void	Withdraw_Party() 
		{ 
			m_nPartyPos = NON_PARTY;			// ÇØ´ç ÆÄƼ ¹è¿­¹øÈ£..¼ÓÇØÀÖÁö ¾ÊÀ¸¸é -1...Á¨Àå ¼­¹ö°¡ ´Þ¶óÁö¸é ¾î¶»°Ô ÇϳÄ?? 
			m_lLeaderUnique = -1;		// ¼ÓÇÑ ÆÄƼÀÇ ¸®´õÀÇ À¯´ÏÅ©..¼­¹ö°¡ ´Þ¶óÁö¸é °°¾ÆÁú¶§ ¸®´õÀÇ À¯´ÏÅ©·Î ã´Â´Ù.. 
		} 
 
		//Äù½ºÆ® °ü·Ã 
		void	Check_Quest( BYTE classnum , int casenum , DWORD index ); 
		bool	Success_Quest( BYTE QuestClass , BYTE casenum , DWORD index );		 
		void	Get_Quest_Pay( BYTE questclass , BYTE cur_index ); 
		void	Get_Quest_Item( DWORD index , int count ); 
		void    Get_Quest_Cash( int count ); 
 
		//itembill 
		BYTE    Item_Bill( DWORD itemidx , int count ); 
 
		// ItemBill-LIM // 
		BYTE	Return_PrivateShop_Grade(); 
		// 1007-LIM // 
		void	Return_ItemMaster_Grade(); 
 
		// â°í °ü·Ã 
		int		Storage_Input( BYTE pos , int style , byte tab , byte array );   // â°í¿¡ ³Ö´Â´Ù. 
		// ItemBill-LIM // 
		int		Storage_DefaultInput(int tab, int style, byte array );			 
		int		Storage_Output( BYTE pos , BYTE tab , int style ); // â°í¿¡¼­ »«´Ù. 
		DWORD	Storage_Input_Item(  DWORD itemidx , DWORD itemunique , BYTE tab , BYTE itemposarray ); 
		DWORD	Storage_Output_Item( DWORD itemidx , DWORD itemunique , BYTE tab , BYTE itemposarray ); 
		bool	Check_Input_Storage_Item( int style, int array = 254 );		// ItemBill-LIM // 
		void    Get_Item_Storage( DWORD index , int count );		// ItemBill-LIM // 
		bool	Auto_Storage_Item_Input( int tab, DWORD index );	// 1004-LIM // 
 
		// ¾ÆÀÌÅÛ °­È­ °ü·Ã 
		int 	Find_Item_Upgrade_type( BYTE* jewel , DWORD* jewelunique ); 
		int		Can_Upgrade( int type , _uItemType itemindex , DWORD itemunique , int caem , CItem* pItem, bool redjewel ); 
		int		Fail_Upgrade( CItem* pItem, int type , BYTE* downrate); // ½ÇÆÐ½Ã ó¸®  
		int		Basic_Pay( BYTE* jewel , DWORD *Unique , int caem ); // ¼º°ø½Ã ó¸®  
 
		// YD 6_24Á¦Á¶   
		bool Son_Inven_Input(int style, int array, int pos); 
		int Check_Inven_Input(int style); 
	 
		bool Making_Item(DWORD MakingItemIndex,int type=0 ,int up=0); 
		DWORD Making_Item_Type5(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex); 
		DWORD Making_Item_Type4(  DWORD* pItemIndex,DWORD *pItemUnique,DWORD makingItemIndex); 
		DWORD Making_Item_Type3 ( DWORD* AlloyIndex ,DWORD *pItemUnique,DWORD makingItemIndex); 
		DWORD Making_Item_Type2(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex); 
		DWORD Making_Item_Type1(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex); 
 
 
		// Àκ¥Å丮 °ü·Ã 
		BYTE	Find_Item_size( DWORD ItemIndex );				// Àκ¥Å丮¿¡¼­ ¾ÆÀÌÅÛÀÌ Â÷ÁöÇÏ´Â Ä­¼ö È®ÀÎ 
		bool	Check_Input_Item( int style , int array = 254 ); // Àι꿡 ³ÖÀ» ¼ö ÀÖ´ÂÁö °Ë»ç 
		int		Inven_Input( BYTE pos , int style , byte array);	// Àκ¥¿¡ ³Ö´Â´Ù. 
		int		Inven_DefaultInput(int style , byte array );		// ½ºÅ¸ÀÏ¿¡ µû¶ó Â÷ÁöÇÏ´Â À§Ä¡ µ¹¸®±â 
		int		Inven_Output( BYTE pos , int style);				// Àκ¥¿¡¼­ »«´Ù.  
		int		Find_Item( DWORD pos , byte scale );				// ÀιêÅ丮¿¡¼­  ¾ÆÀÌÅÛÀÇ °ãħ À¯¹« ÆÇ´ÜÇØ¼­ °ãÄ¡¸é ÀÎ¹ê ¹è¿­À» ¹ÝȯÇÑ´Ù. 
		int		Find_Storage_Item( BYTE tab , BYTE pos , byte scale );  // â°í¿¡¼­ ¾ÆÀÌÅÛÀÇ °ãħ À¯¹« ÆÇ´ÜÇØ¼­ °ãÄ¡¸é â°í ¹è¿­À» ¹ÝȯÇÑ´Ù.  
		void	Clean_Chack_Inven(); 
 
		// 2004-2-8 
		bool	Check_Guild_Condition();		// ±æµå »ý¼º Á¶°Ç È®ÀÎ 
 
		// ³ªÁß¿¡ »ç¿ëÇÒ ÇÔ¼ö 
		bool	Register_Board( DWORD index, DWORD unique ); 
 
		// ¸»°ü·Ã 
		void	Rebirth_Horse( ); // ¿©·¯¸» Àϰæ¿ì ÀÎÀÚ°¡ ÇÊ¿äÇÏ´Ù.  
		void    Horse_Keepin( );  // ¸»À» ¸¶±Â°£¿¡ ³Ö´Â´Ù  
		void    Horse_Keepout( ); // ¸»À» ¸¶±Â°£¿¡¼­ »«´Ù. 
		void	Delete_Horse( int flag ); // ¸»À» DB¿¡¼­ Á¦°ÅÇÑ´Ù. 0,ȯ»ýÇÒ¸»   1, »ê¸»   2, ±³È¯½Ã »èÁ¦ 
 
		BYTE Check_Upgrade_Horse(); 
		// Ÿ¶ôµµ °ü·Ã 
		void	Check_PK_Count( int nCount );	// º¯ÇÒ¾ç 
 
		// Æ÷ÀÎÆ® °ü·Ã È®ÀÎ..¹× º¸³»±â 
		void	WritePoint( BYTE byType );	// º¸³¾ ŸÀÔ..À̰ſ¡ µû¶ó 
 
		// pkÆä³ÎƼ ¸Ô°í ·¹º§ ´Ù¿î 
		void	User_LevelDown( BYTE byCause );   
		// 2004.9.14 Donny Áß±¹PK½Ã½ºÅÛ : ¸ó½ºÅÍÇÑÅ× Á×À¸¸é : 0, À¯ÀúÇÑÅ× Á×À¸¸é : 1, ÀϹÝÀ¯Àú¸¦ Á×ÀÓÀ¸·Î½á : 2 
 
		// ItemBill-LIM // 
		void	Check_Storage_copy(); 
 
		// ½Ã°£ È®Àΰü·Ã 
		DWORD	m_dwStartTime;		// warp_ready·Î °ÔÀÓ ½ÃÀÛ ½Ã°£... 
		DWORD	m_dwLoadingTime;	// ·Îµù ³¡³µÀ»½Ã ½Ã°£. 
		bool	Check_Time( DWORD dwTick );	// ©·ÈÀ¸¸é true ¾È©·ÈÀ¸¸é false 
 
		// °è±Þ °ü·Ã 
		void	Set_MyClass();			// Á¢¼Ó½Ã ³» °è±Þ¼³Á¤ 
		bool	Check_MyClass();		// ¸í¼ºÄ¡ º¯°æ½Ã ³» °è±Þ ¼³Á¤..¹Ù²î¸é true..¾È¹Ù²î¸é false..¹Ù²î¸é ¹æ¼Û 
 
		// Donny 2004.8.3 Á¦´ÏÀ̺¥Æ® ´ãû. ·¹º§¾÷½Ã.. ÀüÁ÷½Ã.. 
		void	ActJenniEvent(byte type); 
		BYTE    Check_Pet_State();   // 2004.9.1 Donny ÆêÁ¤º¸ : ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â ÆêÀÇ »óŸ¦ ¸®ÅÏÇÑ´Ù. 
		BYTE    Check_User_Race();	 // 2004.10.27 Donny 2Â÷½ºÅ³ : ÀÚ½ÅÀÇ Á¾Á·À» ¸®ÅÏÇÑ´Ù. 
		bool    Has_User_Job();		 // 2004.10.27 Donny 2Â÷½ºÅ³ : Á÷¾÷À» °¡Á³´Â ÁöÀÇ ¿©ºÎ 
		// 2004.10.6 Donny ¾ÆÀÌÅÛ¼Ó¼º //------------------------------- 
		int    Check_Item_SpecialAblity( int iAblity, int iSkillIndex );  
		void   HpMpFromItemWhenAttackSuccess();	 
		int    DecreaseMPFromItemWhenUsingSkill( int iMp ); 
		int    DecreaseDamageFromItem( int iDamage, int iKind ); 
		bool   NeglectEnemyDefence(); 
		int    IncreaseDamageFromItem( int iDamage, int iKind ); 
		void   Set_Item_SpecialAblity(); 
		//------------------------------------------------------------- 
 
		// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ºÒÀǺ¸È£¸· 
		int	   Return_Damage_Apply_FairyShield( int iDamage ); // ½¯µå¸¦ ÅëÇÑ µ¥¹ÌÁö¸¦ ÁÙ¿© ÁÖ´Â ÇÔ¼öÀÌ´Ù. 
		// 2Â÷ÀüÁ÷½ºÅ³ MODE : ½¯µåÇÁ·ÎÅØÆ® 
		int    Return_Damage_Apply_KnightShield( int iDamage ); 
		// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ¾óÀ½µ¥¹ÌÁö¸¦ ÁÖ´Â ÇÔ¼öÀÌ´Ù. 
		void   ApplyIceDamage( CUserInfo* pAttack ); 
		// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ÇÊ¿äÇÑ ¸¶³ª¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù. 
		int    returnNeedMp( int nSkill, int i, BYTE bySkillLevel ); 
		// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú Æê°úÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù. 
		bool   CheckCanUseSkillRelatedWithPet( int nSkill ); 
		// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ÆÄƼ¿ÍÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù. 
		bool   CheckCanUseSkillRelatedWithParty( int nSkill ); 
		// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ¾ÆÀÌÅÛ°úÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù. 
		bool   CheckCanUseSkillRelatedWithEquipItem( int nSkill ); 
		// 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : ¸ÊÀÇ »óÅ Á¤º¸¸¦ ÃʱâÈ­ÇØÁÖ´Â ÇÔ¼öÀÌ´Ù. 
		void   Release_Block_Buff(); 
 
		// 1005-LIM // 
		void	Change_Pet_Color( int type );	//	ÆêÀÇ »öÀÇ ¹Ù²Û´Ù. 
		 
		bool	Check_Duplicate_Chat( char* chat_info ); 
 
		// 2Â÷ÀüÁ÷½ºÅ³ ETC  
		bool    IsRestoreStatusWhenBeAttacked(); 
 
		// 2Â÷ÀüÁ÷-LIM // 
		bool	Change_2ndJob( int job ); 
		// 20050602 Ȧ¸®¿þÆù, Ȧ¸®½¯µå, Ȧ¸®¶óÀÌÇÁ ¹öÇÁ¸¦ °Ç À¯Àú¿Í ÀÚ±â¿ÍÀÇ °ü°è¸¦ üũÇÏ¿© ¹öÇÁÇØÁ¦ ¿©ºÎ¸¦ °Ë»çÇÑ´Ù. 
		bool    CheckBuffReleaseCondition( BYTE bType ); 
 
	private: 
		CXClient*			m_pxClient; 
		DWORD				m_account_id; 
		long				m_character_unique; 
	public: 
 
		BYTE				m_Storage_Tab; 
		 
		Char_Info_All		m_character_info;					// ij¸¯ÅÍ Á¤º¸ 
		CItem				m_EquipArray[MAX_EQUIPED];				// Âø¿ë¾ÆÀÌÅÛ ¹è¿­ 
		// 2005.3.11 Donny ij¸¯ÅͽºÅ² : Âø¿ë½ºÅ²¾ÆÀÌÅÛ ¹è¿­  
		CItem               m_EquipSkinArray[MAX_EQUIPED_SKIN];  
		CItem				m_Tool_Inventory[MAX_INVENTORY1];			// ¹«±â ¹æ¾î±¸ Àκ¥Å丮 
		bool				m_bLiveEquip[MAX_EQUIPED];		//Item-Life-LIM 
 
 
		Char_info_Tab_Storage m_StorageTab[MAX_STORAGE_TAB]; 
		DWORD				m_StorageCoin;	 // Çüº¯È¯ long -> DWORD	// â°í µ·²Ù·¯¹Ì  
		BYTE				m_StorageInven[MAX_STORAGE_TAB][STORAGE_X][STORAGE_Y];  // â°íÀιê°ü·Ã  
		 
 
		CBlock				*m_cur_block;					// ÇöÀç ¼­ ÀÖ´Â ºí·°  ---------- 
		int					m_floor;						// ÇöÀç ¼­ÀÖ´Â Ãþ 
		int					m_map_id;		// À¯Àú°¡ ÀÖ´Â ¸ÊÀÇ ¾ÆÀ̵ð 
 
		// °ÔÀÓ ³»ºÎ Á¤º¸µé 
		int					m_level;						// ij¸¯ÅÍ ·¾ 
		Character_Status	m_status;						// »óÅ Á×Àº »óŶó¸é ü·Âȸº¹ ¾ÈÇÑ´Ù 
		BYTE				m_statustime;					// »óź° Áö¼Ó½Ã°£  
 
		int		m_Max_HP;		// ÃÖ´ë ü·Â 
		int		m_Max_MP;		// ÃÖ´ë ¸¶·Â 
		int		m_Cur_HP;		// ÇöÀç ü·Â 
		int		m_Cur_MP;		// ÇöÀç ¸¶·Â 
		DWORD 	m_Chr_EXP;		// °æÇèÄ¡ 
 
		int		m_Chr_Str;		// Èû 
		int		m_Chr_Dex;		// ¹Î 
		int		m_Chr_End;		// Áö±¸.......ÄÜ->Áö±¸ 
		int		m_Chr_Wis;		// ÁöÇý 
		int		m_Chr_Bra;		// ¿ë±â....... 
		int		m_Chr_Fam;		// ¸í¼º........ 
		int		m_Chr_Pos;		// ÆÛÁ¦¼Ç.............6-16pk°ü·Ã ·¹º§ ´Ù¿î Ƚ¼ö 
 
		int		m_Ori_Pow; 
		int		m_Ori_Dex; 
		int		m_Ori_Wis; 
 
		int		m_Chr_Att;		// ¹°¸® °ø°Ý·Â 
		int		m_Chr_AC;		// ¹°¸® ¹æ¾î·Â 
		int		m_Cur_CP;		// cp...Á¢¼ÓÇϸé 0 ÃÖ´ë 100.............. 
		int		m_Chr_Magic_Att;	// ¸¶¹ý °ø°Ý·Â 
		int		m_Chr_Magic_AC;		// ¸¶¹ý ¹æ¾î·Â................. 
 
		int		m_Chr_Evade_Rate;	// ȸÇÇÀ² 
		int		m_Chr_Succ_Rate;	// ¼º°øÀ² 
 
		DWORD	m_Cash;   // Ç뺯ȯ long -> DWORD 
		int		m_remain_point;		// ³²Àº ´É·ÂÄ¡ Æ÷ÀÎÆ® 
 
		// ü·Â ȸº¹ °ü·Ãº¯¼ö 
		DWORD	m_Last_Recover_Time;		// ¸¶Áö¸·À¸·Î ü·Â ȸº¹ÇÑ ½Ã°£...Á¢¼ÓÇÏ¸é °ÔÀÓ¿¡ µé¾î¿Â ½Ã°£ºÎÅÍ 
		DWORD	m_Holy_Recover_Time;        // 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : Ȧ¸®¶óÀÌÇÁ¹öÇÁ¸¦ ÅëÇÑ Ã¼·Â ȸº¹ÇÑ ½Ã°£À» ÀúÀå  
		DWORD   m_Heal_Recover_Time;        // 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : ÈúÀ» ÅëÇÑ Ã¼·Â ȸº¹ÇÑ ½Ã°£À» ÀúÀå 
 
		bool	m_bUnite,m_bPickTurn;		// Æä¾î¸®¿Í ÇÕü ¿©ºÎ.ÇÕü½Ã ¾ÆÀÌÅÛ ÁýÀ» ÅÏ 
		int		m_nArray;				// ÇÕüÇÑ ³ÑÀÇ ¹è¿­¹øÈ£ 
		bool	m_bUniteStatus; 
 
		bool	m_bToggle;				// °È±â/¶Ù±â....false¸é ¶Ù±â...true ¸é °È±â 
		bool	m_bAttackMode;			// ¹æ¾î ¸ðµå 
		bool    m_bShieldPTMode;        // 2Â÷ÀüÁ÷½ºÅ³ MODE : ½¯µåÇÁ·ÎÅØÆ®¸ðµå 
		DWORD	m_dwToggleTime;			// ¹æ¾î¸ðµå Åä±Û ½Ã°£ 
 
		//¸»¿¡ °üÇѰŠ
 
		//CHorseData horsedata;			//ÀúÀåÇÏ´Â ºÎºÐ 
		//CHorseRise *m_pHorseRise; 
		int		m_nHorseArrayNo;		// g_TempNPCArray¿¡¼­ ³»¸»ÀÇ À§Ä¡ 
		BYTE	m_Harray;				// m_Horsedata¿¡¼­ ÇöÀç ³»°¡Åº ¸»ÀÇ ¹è¿­ ¹øÈ£ 
 
		bool m_bHave;		//¸»À» °¡Áø À¯¹« 
		bool m_btame;		// ±æµé¾îÁø À¯¹« 0 : no 1: YES 
		BYTE m_istatus;		//¸»ÀÇ Çö »óÅ 7°¡ÁöÀÇ ¸»»óŸ¦ Á¤ÀÇ ÇÑ´Ù. 
		BYTE m_byHorseColor; // ¸»»ö±ò appear 
		bool m_bHorsepaper; // ¸»ÀÎÁõ¼­¸¦ °¡ÁøÀ¯¹« 
 
		Horse_Info_Load m_Horsedata[MAX_HORSE_PER];		// ³»°¡°¡Áø ¸»µéÀÇ Àüü Á¤º¸ ¹è¿­..ÃÖ´ë 8¸¶¸® 
		 
 
		// ½ºÅ³ °ü·Ã... db¿¡ ÀúÀåÇØ¾ßÇÑ´Ù... 
		int		m_byRemain_Skill_Point;	// ³²Àº ½ºÅ³ Æ÷ÀÎÆ®...ÃÖ´ë 100 
 
		CCharacterSkillBox	m_Basic_Skill[MAX_BASIC_SKILL];		// Á¾Á·¿¡ µû¸¥ ±âº» ½ºÅ³ 
		CCharacterSkillBox	m_Special_Skill[MAX_SPECIAL_SKILL];	// ÀüÁ÷ÈÄ Á÷¾÷¿¡ µû¸¥ Ưȭ ½ºÅ³ 
 
		DWORD	m_dwMagicTime;		// ´©±¸¿¡°Ô »óź¯È­ ¸¶¹ý °É·ÈÀ»¶§ ½Ã°£¿ë 
		 
		BYTE inven[MAX_INVEN_X][MAX_INVEN_Y];	// Àκ¥Å丮 »óÅ 
		int  item_pos;								// Àӽà À§Ä¡ ±â¾ï Àå¼Ò 
 
 
		// 6-11 
		BYTE	m_byMP_Kind;        // µî·ÏµÈ mp¹°¾à Á¾·ù 
		BYTE	m_byMP_Potion;		// µî·ÏµÈ mp¹°¾à ¾ç 
		BYTE    m_byHP_Kind;        // µî·ÏµÈ hp¹°¾à Á¾·ù  
		BYTE	m_byHP_Potion;		// µî·ÏµÈ hp¹°¾à ¾ç 
 
		char	m_ChatInfo[64];		// äÆÃ ³»¿ë ±â·Ï.		0126-LIM 
		DWORD	m_dwChatTime;		// äÆÃ Áߺ¹µÆÀ»¶§ ¸»ÇÑ ½Ã°£ ±â·Ï.	0126-LIM 
 
		// ½ºÇÙ°ü·Ã 
		DWORD	m_dwCheckTimeClient; 
		DWORD	m_dwCheckTimeServer; 
		long	m_lTotalGap; 
		BYTE	m_byCount; 
 
		BYTE	m_byChatCount;		// °°Àº ¸» ¹Ýº¹ Ƚ¼ö.	0126-LIM 
 
		// 2Â÷ÀüÁ÷½ºÅ³ º¯°æ  
		BYTE    m_byHealCount;		// Èú½ºÅ³ °ü·Ã º¯¼ö  
		int     m_nHealValue;       // Èú½ºÅ³ °ü·Ã º¯¼ö  
 
 
/*		// ½ºÇÙ°ü·Ã 
#define	MAX_TIME_CHCEK	10 
		DWORD	m_dwPacketTime;				// ÆÐŶ ¿Ô´ø ½Ã°£ 
		DWORD	m_dwCheckTimeClient[MAX_TIME_CHCEK];		// ½Ã°£check 
		DWORD	m_dwCheckTimeServer[MAX_TIME_CHCEK];		// ½Ã°£check 
		DWORD	m_dwClientGap[MAX_TIME_CHCEK]; 
		DWORD	m_dwServerGap[MAX_TIME_CHCEK]; 
		int		m_nWarnCount;		// ½ºÇÙ °æ°í ½Ã°£ 
		long	m_lTotalGap; 
		void	Reset_CheckTime() 
		{ 
			for( int i= 0; i < MAX_TIME_CHCEK; i++ ) 
			{ 
				m_dwCheckTimeClient[i] = 0; 
				m_dwCheckTimeServer[i] = 0; 
				m_dwClientGap[i] = 0; 
				m_dwServerGap[i] = 0; 
			} 
		} 
		BYTE	m_byCount; 
*/ 
		DWORD	m_dwPacketCountMove;		//À̵¿ÆÐŶ,ÀÓâ¿ø ¼öÁ¤ 
		DWORD	m_dwPacketCountAttack;		// °ø°ÝÆÐŶ °¹¼ö 
		DWORD	m_dwPacketCountSoulAttack;		// °ø°ÝÆÐŶ °¹¼ö 
		DWORD	m_dwPacketCountCheckTimeMove;	// ÆÐŶ °¹¼ö üũ ½Ã°£..À̵¿ 
		DWORD	m_dwPacketCountCheckTimeAttack;	// ÆÐŶ °¹¼ö üũ ½Ã°£..°ø°Ý 
		void	Check_PacketCount( bool bMove, DWORD dwTick );	// À̵¿À϶§´Â true °ø°ÝÀ϶§´Â false 
 
		// 6-13 ÀúÀå Ç÷¡±× 
		bool	m_bSave;			// true¸é ´ÙÀ½ ƽ¿¡ ÀúÀå 
		DWORD	m_dwSaveTime;		// ÀúÀ嵯´ø ½Ã°£ 
		bool	m_bCheck;			// Á¢¼Ó üũ 
		int		m_nCheckCount;		// Á¢¼Óüũ 1¹øÀº ºÁÁÖÀÚ 
 
		// 6-17 
		DWORD	m_dwPotionTime[2];		// ¹°¾à »ç¿ëÇß´ø ½Ã°£ 
		// 6-23 ü·Â ȸº¹ ¼öÁ¤ 
		BYTE	m_byRecoverType;		// 0:ÀÏ¹Ý 1:ÇÕü¸¸.½Ã°£Àº ÀϹݰú °°´Ù ¾çÀº Áõ°¡ 2:¹öÇÁ¸¸ ½Ã°£´ÜÃà, ¾çÀº Áõ°¡ 3:µÑ´Ù µÑ´Ù ÁÁ°Ô 4:ÈÞ½Ä »óÅ 
										// 5:È޽Ŀ¡ ÇÕü 
		// ij¸¯ÅÍÀÇ ¸ð½À  
		BYTE	m_HairColor;			// ¸Ó¸® »ö±ò 
		BYTE	m_HairStyle;				// ¸Ó¸® ¸ð¾ç  
		BYTE	m_FaceStyle;			// ¾ó±¼ ¸ð¾ç  		 
		BYTE	m_Bodysize;				// ¸öÅëÅ©±â 
 
		// 7-30 Â÷ÁöÆ÷ÀÎÆ® & ¿¢½ºÅͽà 
		WORD	m_Charge; 
		WORD	m_Extacy; 
		bool	m_bCharge;			// Â÷Áö¸ðµå ¹ßµ¿ on/off 
		bool	m_bNecta;			// ³ØÅ¸ ¸¶½Ã°í ÀÖ´Ù 
		bool	m_bTar;				// ´ã¹èÇǰí ÀÖ´Ù 
		bool	m_bRomerNecta;	// ÀÓâ¿ø Ãß°¡.·Î¸Þ¸£ ³ØÅ¸ ¸¶½Å½Ã°£. 
		// ItemBill-LIM // 
		bool	m_bSpecialCharge;	// ¾ÆÀÌÅÛ¸ô°ü·Ã ¿À¹öÂ÷Áö ¾ÆÀÌÅÛÀ» °¡Áö°í ÀÖÀ» °æ¿ì. 
		DWORD	m_dwChargeTime;		// Â÷Áö¸ðµå ¹ßµ¿ °É¸° ½Ã°£ 
		DWORD	m_dwNectaTime;		// ³ØÅ¸¸¶½Ã´Â ½Ã°£ 
		DWORD	m_dwTarTime;		// ´ã¹èÇÇ´Â ½Ã°£ 
		bool	m_bPK; 
		 
		// 2004.8.31 Donny ¼Ò¿ï¸¶½ºÅͽºÅ³  
	//	float     m_rateUpMaxHp;			// ¼Ò¿ïº£¾î¸¦ Ÿ¸é¼­ ¿Ã¶ó°£ MAX_HP ºñÀ²  
 
		// 04-1-29 
		int		m_nMaxHorseCount;	// ¸»ÀÇ ÃÖ´ë ¿¢½ºÅͽà 
		int		m_nHorseCount;		// ¸»ÀÇ ¿¢½ºÅͽÃ...ÇöÀç°ªÀÌÁö..ÀÌ°É ÀúÀåÇÒ²¨¾ß 
		bool	m_bHorseWalk;		// ¸» °È±â 
// 2004.11.30 Donny Æê¾ÆÀÌÅÛ¼öÁ¤		 
//		int		m_nHelm;			// ÇöÀç ¸»ÀÌ Â÷°íÀÖ´Â Çï¸ä ¾ÆÀÌÅÛ ¹è¿­ ¹øÈ£..ÀÏÀÏÀÌ Ã£±â ±×·¸´Ù..Á¢¼Ó½Ã ¼ÂÆÃ ..°¥¾ÆÂû¶§ ¼ÂÆÃ.. 
//		int		m_nBack;			// ÇöÀç ¸»ÀÌ Â÷°íÀÖ´Â ¾ÈÀå ¾ÆÀÌÅÛ ¹è¿­ ¹øÈ£ 
		 
		// ½Ã³ª¸®¿À Äù½ºÆ® ¿ë 8-1 
		BYTE	m_storagecheck[12]; 
		//BYTE	m_SQIndex;	  // ÇöÀç Äù½ºÆ® À妽º  
		//BYTE	m_SQarray;	 //  Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸ 
		//BYTE	m_SQCount[MAX_QUEST_SLOT];		// db ÀúÀå  
		//DWORD	m_SQTime;		// Äù½ºÆ® Áö¼Ó½Ã°£		 
 
		// À̺¥Æ® Äù½ºÆ®  
		BYTE	m_EQIndex;	  // ÇöÀç Äù½ºÆ® À妽º  
		BYTE	m_EQarray;	 //  Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸ 
		BYTE	m_EQCount[MAX_QUEST_SLOT];		// db ÀúÀå  
		DWORD	m_EQTime;		// Äù½ºÆ® Áö¼Ó½Ã°£		 
		 
		// task Äù½ºÆ®  
		BYTE	m_TQIndex;	  // ÇöÀç Äù½ºÆ® À妽º  
		BYTE	m_TQarray;	 //  Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸ 
		BYTE	m_TQCount[MAX_QUEST_SLOT];		// db ÀúÀå  
		DWORD	m_TQTime;		// Äù½ºÆ® Áö¼Ó½Ã°£	 
		 
		//6.1 ÀÓâ¿ø//////////////////////////////////////////////////////////////////////////////////////////// 
		_MyQuest	m_MyQuest[MAX_MY_QUEST_COUNT];	//ÇÑ À¯Àú°¡ °¡Áö´Â Äù½ºÆ® 
		DWORD	m_Quest_Start_Time[MAX_MY_QUEST_COUNT]; //Äù½ºÆ® ½ÃÀ۽à ½Ã°£. 
		BYTE	m_byScenarioQuestCnt;		//Äù½ºÆ® ½ÃÀÛ À妽º. 
		///////////////////////////////////////////////////////////////////////////////////////////////////// 
 
		// 8-2 
		DWORD	m_nMyBoard;				// ³»°¡ ¸ÂÃß°í ÀÖ´Â ÆÇ ¹øÈ£ 
		DWORD	m_aryPiece[MAX_PIECE];	// Â¥¸ÂÃá Á¶°¢µé 
 
		// 8-16 
		bool	m_bSword;				// Ä®À§Ä¡ true: ¼Õ false : µî 
		bool	m_bSit;					// ¾É¾ÆÀÖ³ª? 
 
		// 9-16 
		bool	m_bCritical;			// ¹æ±ÝÀü °ø°ÝÀÇ critical¿©ºÎ 
 
		// ´ëÈ­ Àç°¥  
		bool	m_Operator;				// ¿î¿µÀÚÀΰ¡? 
		bool			m_dialog; 
		DWORD			m_dialogTime; 
 
		// buff °ü·Ã 
		int		m_nCurBuff[MAX_BUFF]; 
		DWORD	m_dwCurBuffTime[MAX_BUFF]; 
		BYTE	m_byCurBuffLevel[MAX_BUFF]; 
		OnBuffSkill m_OnSpecialBuff;     // 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL 
 
		// 2004.10.14 Donny 2Â÷½ºÅ³ : ÆÐ½Ãºê½ºÅ³°ü·Ã 
		bool    m_bSetPassiveSkill;				   // À¯Àú°¡ ÆÐ½Ãºê ½ºÅ³Ã¼Å©¸¦ Çß´Â Áö ¿©ºÎ 
		// 2Â÷ÀüÁ÷½ºÅ³ PASSIVESKILL : bool->byte  
		BYTE    m_bHasPassiveSkill[MAX_PASSIVE];   // À¯Àú°¡ °¡Áö°í ÆÐ½Ãºê½ºÅ³ 
 
		// party 
		bool	m_bAccepParty;			// °ÅºÎ»óÅ ¿©ºÎ 
		int		m_nPartyPos;			// ÇØ´ç ÆÄƼ ¹è¿­¹øÈ£..¼ÓÇØÀÖÁö ¾ÊÀ¸¸é -1...Á¨Àå ¼­¹ö°¡ ´Þ¶óÁö¸é ¾î¶»°Ô ÇϳÄ?? 
		long	m_lLeaderUnique;		// ¼ÓÇÑ ÆÄƼÀÇ ¸®´õÀÇ À¯´ÏÅ©..¼­¹ö°¡ ´Þ¶óÁö¸é °°¾ÆÁú¶§ ¸®´õÀÇ À¯´ÏÅ©·Î ã´Â´Ù.. 
										// Á¨Àå..±×·¯¸é ÆÄƼ°¡ ±úÁö¸é ´Ù¸¥ ¼­¹ö¿¡ ÀÖ´Â ¾ÖµéÀº ¾îÄÉÇÏÁö??..±ÛÄɵǷÁ¸é ¸ÊÀ» ¹Ù²Ü¼ö ¾ø¾î¾î¾ß Çϳª? 
 
		// trade 
		int		m_nTradePos;			// °Å·¡¹æÀ§Ä¡ 
		bool	m_bTrade;				// ±âº»Àº ±³È¯ °ÅºÎ»óÅ 
 
		//save warp 
		BYTE	m_byWarpID;				// Á×À»¶§ ¿öÇÁÁ¸ 
 
		//±æµå Àӽÿë 
		int		m_Guild; 
		int		m_nMarkVer; 
		// 2004-2-10 
		BYTE	m_byAngle; 
 
		// user status 
		BYTE	m_byStatusSkill;	        // ÇöÀç °É·ÁÀÖ´Â ½ºÅ³ ¹øÈ£....base.h ÂüÁ¶..0ÀÌ¸é ¾È°É¸° »óÅ 
		BYTE    m_byExtraStatusSkill;       // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ) 
		DWORD	m_dwStatusTime;		        // °É¸° ½Ã°£...ÀÌ ¾Æ´Ï¶ó ²¨Áú ½Ã°£ 
		DWORD   m_dwExtraStatusTime;        // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ 
		DWORD   m_byStatusSkillUnique;      // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óŸ¦ ¾´ À¯ÀúÀÇ Ä³¸¯ÅÍ À¯´ÏÅ© ¹øÈ£ 
		DWORD   m_dwTickControlDamageTime;  // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅÂÀ» °É¸° À¯ÀúÀÇ µ¥¹ÌÁö Áִ ŸÀÌ¹Ö  
 
		bool	m_bDashFlag;		// ´ë½¬¾´ ´ÙÀ½¿¡ ÇѹøÀº ´É·ÂÄ¡..½ºÅ³ °ø°ÝÀ¸·Î ÇØÁØ´Ù 
		BYTE	m_byDashLevel;		// ´ë½¬·¹º§ 
 
		// 2Â÷ÀüÁ÷-LIM ½ÃÀÛ// 
		bool	m_b2ndDashFlag;		// ÇÑ Á¾Á·¿¡ ´ë½¬ ½ºÅ³ÀÌ 2°¡Áö°¡ µÇ¹Ç·Î À§¿¡ °É ¾²¸é ¾ÈµÈ´Ù. 
		BYTE	m_by2ndDashLevel;	// ¸¶Âù°¡Áö 
		BYTE	m_by2ndDashCount;	// ¹é½ºÅ× ´õºí ¼¦ µ¥½¬ Ä«¿îÆ®. 
		// 2Â÷ÀüÁ÷-LIM ³¡// 
 
		// Á¾·á °ü·Ã 
		bool	m_bLogout;				// true¸é Á¤»ó Á¾·á..false¸é ƨ±è 
 
		// unique°ü·Ã 
		int		m_nUniqueItem;		// À¯´ÏÅ© ¾ÆÀÌÅÛ 
		int		m_nUniqueSkill[MAX_UNIQUE];		// À¯´ÏÅ© ½ºÅ³ -- dungeon-LIM	// 1117-LIM 
		bool	m_bFirst;			// óÀ½·Îµù ³¡? 
 
		// pkÆä³ÎƼ °ü·Ã 
		BYTE	m_byPKCount;		// pk°ü·Ã Ƚ¼ö 
 
		// ¿öÇÁ·Î °¡¸é¼­ ²÷±ä°ÇÁö..¾Æ´Ô Á¢¼Ó ²÷Àº°ÇÁö 
		bool	m_bWarp;			// true¸é ¿öÇÁ´Ï±î ÆÄƼÁ¤º¸¸¦ ÃʱâÈ­ ÇÏÁö ¾Ê´Â´Ù 
		DWORD	m_dwDest;			// À̵¿½Ã ¸ñÀû ŸÀÏ 
 
		// °è±Þ 
		BYTE	m_byMyClass;		// ³» Á÷¾÷ 
 
		// ¿¡¼ÒÅ׸®Ä« °ü·Ã 
		bool	m_bEsotericaIn;		// ¿¡¼ÒÅ׸®Ä« Á¸¿¡ ÀÖÀ¸¸é true, ¹þ¾î³ª¸é false 
		DWORD	m_dwEsotericaTime;	// ¿¡¼ÒÅ׸®Ä« ½Ã°£..¸Å 10Ãʸ¦ È®ÀÎÇϴµ¥ »ç¿ë 
		 
		//6.15 ÀÓâ¿ø Ãß°¡.°³ÀλóÁ¡ °ü·Ã..// 
		int		m_nPrivateShop;			// °Å·¡¹æÀ§Ä¡ 
		 
		DWORD	m_dwEnterGameTime;		//°ÔÀÓ µé¾î¿Â ½Ã°£.(Æò±Õ ·Î±× ³²±â±â À§Çؼ­) 
 
		// ItemBill-LIM // 
		Item_Billing m_ItemBill[50];		//¾ÆÀÌÅÛºô¸µ °ü·Ã 50°³ ¹è¿­. 
 
		// 2004.9.13 Donny SPEEDHACK 
		CSpeedInfo m_SpeedInfo; 
		BYTE       m_byCurMove; 
		BYTE       m_byCurAttack; 
		DWORD      m_dwPreMoveTime; 
		DWORD      m_dwPreAttackTime; 
		bool       m_DropAsSpeedHack;    // true : ½ºÇǵåÇÙÀ¸·Î °É¸° °ÍÀÌ´Ù. 
		void       ClearTime(); 
 
		// 2004.9.23 Donny Ãß¼®À̺¥Æ®  
		bool		m_bEatEventItem; 
		DWORD       m_dwEatTime; 
 
		//2004. 9 .15 032 china ºô¸µ °ü·Ã  
		DWORD		m_dwReturnValue;	// ¸®ÅϰªÀÇ Àý´ë °ª¸¸Å­ÀÇ ·¡¹ë±îÁö ¹«·á ÀÌ¿ë 
 
		// 1005-LIM // 
		bool		m_bOverPet;			// ¿À¹öÆê ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bPetProject2;		// Æê ÇÁ·ÎÁ§Æ®2 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bPetMaster;		// Æê¸¶½ºÅÍ ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bMagicArrow;		// ¸ÅÁöÈ­»ì °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bOverCharge;		// ¿À¹öÂ÷Áö °¡ÁøÀÇ ¿©ºÎ. 
		bool		m_bOverPet2;		// ¿À¹öÆÖ2 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bOverBuff;		// ¿À¹ö¹öÇÁ ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bStableBook;		// ¾ÈÁ¤ÀÇ ÁÖ¹®¼­ °¡ÁøÁöÀÇ ¿©ºÎ. 
		// 1006-LIM // 
		bool		m_bSkillMaster1;	// ½ºÅ³¸¶½ºÅÍ1 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bSkillMaster2;	// ½ºÅ³¸¶½ºÅÍ2 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bUpgradeBook1;	// °­È­ÁÖ¹®¼­1 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bUpgradeBook2;	// °­È­ÁÖ¹®¼­1 °¡ÁøÁöÀÇ ¿©ºÎ. 
		bool		m_bSecretItem;		// ¾¾Å©¸´ ¾ÆÀÌÅÛÀ» °¡ÁøÁöÀÇ ¿©ºÎ. 
		// 1116-LIM // 
		bool		m_bFourLeafClover; 
//		bool		m_bPassPrayerAmulet; 
		BYTE		m_byPassPrayerAmuletCount;		//0425-LIM 
		bool		m_bHongPae; 
		// 1117-LIM // 
		bool		m_b2ndSkillMaster1; 
		bool		m_bSkillUp; 
		bool		m_b2ndSkillUp; 
 
		bool		m_bWalnut; 
 
 
		// 1108-LIM // 
#ifdef SOONEUNG 
		bool		m_bChap_Rice_Cake;	// Âý½Ò¶± 
		bool		m_bTaffy;			// ¿³ 
#endif 
		// 1117-LIM 
		bool		m_bDungeonRoomShow[MAX_UNIQUE];	// ´øÀü¹æ º¸°í ÀÖ´ÂÁö.		 
 
		// 1007-LIM // 
		int			m_nItemMaster;		// ¾ÆÀÌÅÛ¸¶½ºÅÍ µî±Þ( ¾øÀ¸¸é 0 ) 
 
		// 2004.10.18 Donny ¾ÆÀÌÅÛ¼Ó¼º 
		int         m_MinDamageIncreaseAblityValue; 
		int         m_MaxDamageIncreaseAblityValue; 
		int         m_SkillDamageIncreaseAblityValue; 
		int         m_NeglectEnemyAttackAblityValue; 
		int         m_PhysicalAttackDamageDecreaseValue; 
		int         m_MagicAttackDamageDecreaseValue; 
		int         m_HPGetAttackAblityValue; 
		int         m_MPGetAttackAblityValue; 
		int         m_HPMPGetAttackAblityValue; 
		int         m_UsageMPDecreaseAblityValue; 
		 
		// 2004.11.10 Donny 2Â÷½ºÅ³ : º£¾î¾îÅØ 
		CPetAttackInfo m_PetAttackInfo; 
 
		// 2004.10.26 032 Áß±¹ °èÁ¤ ºô¸µ 
		DWORD		m_logouttime; 
		int       m_RecordID; 
		 
		//ncash newchina billing 
		DWORD		m_dwUserCheckTime;  // 1ºÐ¸¶´Ù À¯Àú°¡ ÀÖ´ÂÁö¸¦ ºô¸µ¼­¹ö¿¡ ¹æ¼Û 
 
		// 1108-LIM // 
#ifdef SOONEUNG 
		DWORD		m_dwChap_Rice_Cake; 
		DWORD		m_dwTaffy; 
#endif 
		// 1117-LIM // 
		DWORD		m_dwSkillUpTime; 
		DWORD		m_dw2ndSkillUpTime; 
 
		// 20050602 
		int         iCharUniqueForWeapon;      // Ȧ¸®¿þÆù¹öÇÁ¸¦ °É¾îÁØ iClient 
		int         iCharUniqueForShield;	   // Ȧ¸®½¯µå¹öÇÁ¸¦ °É¾îÁØ iClient 
		int         iCharUniqueForLife;		   // Ȧ¸®¶óÀÌÇÁ¹öÇÁ¸¦ °É¾îÁØ iClient 
		// 20050602 
		 
}; 
 
 
struct WarpID 
{ 
		BYTE	m_byID; 
		DWORD	m_pos1x; 
		DWORD	m_pos1y; 
		DWORD	m_pos2x; 
		DWORD	m_pos2y; 
		DWORD	m_pos3x; 
		DWORD	m_pos3y; 
		DWORD	m_pos4x; 
		DWORD	m_pos4y;		 
		BYTE	m_byFloor; 
}; 
 
extern WarpID g_WarpID[MAX_WARPID]; 
 
typedef vector< CUserInfo* > UserVector; 
 
void	Add_Vector( UserVector *source, UserVector* dest ); 
 
 
 
 
 
void	Copy_User_Info_All( Char_Info_All* source, Char_Info_All* dest ); 
void	Copy_User_Class( CUserInfo* source, CUserInfo* dest ); 
 
void	Copy_User_From_InfoServer( Char_Info_Save source, CUserInfo* dest ); 
void	Copy_User_Info_Save( CUserInfo *source, Char_Info_Save *dest ); 
 
#endif 
 
 
//_________________________________________________________________________________ 
//	 
//	end of UserInfo.H 
//_________________________________________________________________________________ 
//