www.pudn.com > back.rar > iteminfoDlg.cpp


// iteminfoDlg.cpp : ʵÏÖÎļþ 
// 
 
#include "stdafx.h" 
#include "iteminfo.h" 
#include "iteminfoDlg.h" 
#include ".\iteminfodlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
struct	NPC_Info 
{ 
	// °ÔÀÓ ³»¿¡¼­ »ç¿ëÇÒ Ç׸ñµéÀº º¸·ù ÇÑ´Ù..³ªÁß¿¡ Ãß°¡ ¹× ¼öÁ¤ ÇÑ´Ù... 
	int					m_NPC_ID;		// ¸÷ÀÇ Å×À̺í»ó °íÀ¯ ¹øÈ£...Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ±×¸±¶§...db¿¡¼­ °ª »ÌÀ»¶§ »ç¿ë 
	int					m_NPC_EXP;		// ¸÷ÀÌ ÁÙ °æÇèÄ¡ 
	int					m_NPC_LV;		// ¸÷·¹º§ 
 
	int					m_Item_Percent;	// ¶³±¼ È®·ü ¼±Åà 
	int					m_Drop_NItem[10];	// ¶³±¼ º¸Åë ¾ÆÀÌÅÛ 
	int					m_Drop_Percent[10];	// ¶³±¼ ¾ÆÀÌÅÛ ¼±ÅÃµÉ È®·ü 
	// 11-12 
	int					m_Money_percent;	// µ· ¶³±¼ È®·ü 
	int					m_Drop_Money[5];	// ¶³±¼ µ· ¾×¼ö 
	int					m_Money_Per[5];	// ¶³±¼ µ· È®À² 
	//	int					m_NPC_Att;				// °ø°Ý·Â 
	//	int					m_NPC_Magic_Att;		// ¸¶¹ý °ø°Ý·Â 
 
	BYTE				m_NPC_Pattern;			// °ø°ÝÆÐÅÏ 
	int					m_NPC_Att[5];				// °ø°Ý·Â 
	int					m_NPC_Magic_Att[3];		// ¸¶¹ý °ø°Ý·Â 
 
	int					m_NPC_AC;				// ¹æ¾î·Â 
	int					m_NPC_Magic_AC;			// ¸¶¹ý¹æ¾î·Â 
 
	int					m_NPC_Suc_Rate;			// ¹°¸® °ø°Ý ¼º°ø·ü 
	int					m_NPC_Evade_Rate;		// ¹°¸® °ø°Ý ȸÇÇÀ² 
	int					m_NPC_Magic_Evade_Rate;	// ¸¶¹ý ȸÇÇÀ² 
 
	int					m_NPC_HP;				// ü·Â 
 
	NPC_SIZE			m_size;			// ¸÷ÀÇ Å©±â..±æÃ£±â, À̵¿ 󸮿¡ »ç¿ë 
	NPC_PROPERTY		m_property;		// ¹«±â Á¾·ù¿¡ µû¸¥ ¹ÞÀ» ¼Ó¼º 
 
	NPC_RESPAWN_RATE	m_respawn_rate;	// »ý¼º ºóµµ 
	NPC_RESPAWN_TIME	m_respawn_time;	// »ý¼º ½Ã°£´ë 
	NPC_ATTACK_TYPE		m_attack_type;	// ¸÷ÀÇ °ø°Ý ŸÀÔ 
	NPC_MOVE_TYPE		m_move_type;	// ¸÷ÀÇ À̵¿ ŸÀÔ 
	NPC_MOVE_METHOD		m_move_method;	// Çൿ¹æ½Ä 
	NPC_SEARCH_TYPE		m_search_type;	// ÀüÅõ ŸÀÔÀÌ·¡..¸÷ÀÇ ¼±°ø ¶Ç´Â ºñ¼±°ø ÇüÅ 
	NPC_DEFENSE_TYPE	m_defense_type;	// ¸÷ÀÇ ¹æ¾î ÇüÅ 
	//	NPC_SEARCH_RANGE	m_searchrange;			// °Ë»ö ¹üÀ§ 
	//	NPC_ATTACK_RANGE	m_attackrange;			// °ø°Ý ¹üÀ§ 
	//	NPC_MOVE_RANGE		m_moverange;			// À̵¿ Á¦ÇÑ ¹üÀ§ 
	BYTE				m_searchrange;			// Å×ÀÌºí ¾È¾²°í ±×³É ¼ýÀÚ 
	BYTE				m_attackrange;			// ±Ù°Å¸® »çÁ¤°Å¸® 
	BYTE				m_attackrangemagic;		// ¸¶¹ý °ø°Ý »çÁ¤ °Å¸® 
	BYTE				m_moverange;			// Å×ÀÌºí ¾È¾²°í ±×³É ¼ýÀÚ 
 
	int					m_target_race;	// Á¾Á· Á¶°Ç 
	NPC_CREATE_TYPE		m_createtype;	// »ý¼º ¹æ¹ý 
	NPC_TICK_GAP		m_tickgap;		// ¸í·É °£°Ý 
	int					m_drop_portion;	// Á¦°ø ¿¡³ÊÁö 
	int					m_attackmotion;	// °ø°Ý µ¿ÀÛ °¡Áö¼ö 
	BYTE				m_dialogflag;	// ´ë»ç ÇÑ´Ù ¾ÈÇÑ´Ù 
	NPC_ATTACK_TICK_GAP	m_attackgap;	// °ø°Ý¸í·É¼Óµµ 
 
	int				m_waittick;			// ´ë±â ½Ã°£ 
	int				m_movetick;			// À̵¿¸í·É½Ã°£ 
	int				m_attacktick;		// °ø°Ý¸í·É½Ã°£ 
	int				m_attackmovetick;	// °ø°ÝÀ̵¿ ¸í·É½Ã°£ 
 
	BYTE				m_exptype;			// °æÇèÄ¡ ºÐ¹è¹æ½Ä 
	int					m_special;			// ¼ÒȯÇϰųª º¯½ÅÇÒ À妽º 
	int                 m_beAbleToAttack;   // 2004.10.1 Donny npc°ø°ÝÀ¯¹« : 1ÀÌ¸é °ø°Ý°¡´É 
}; 
 
NPC_Info g_NPCInfoArray[512]; 
 
 
// CiteminfoDlg ¶Ô»°¿ò 
 
 
 
CiteminfoDlg::CiteminfoDlg(CWnd* pParent /*=NULL*/) 
: CDialog(CiteminfoDlg::IDD, pParent) 
{ 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
} 
 
void CiteminfoDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
} 
 
BEGIN_MESSAGE_MAP(CiteminfoDlg, CDialog) 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	//}}AFX_MSG_MAP 
	ON_BN_CLICKED(IDOK, OnBnClickedOk) 
END_MESSAGE_MAP() 
 
 
// CiteminfoDlg ÏûÏ¢´¦Àí³ÌÐò 
 
BOOL CiteminfoDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// ÉèÖô˶Ի°¿òµÄͼ±ê¡£µ±Ó¦ÓóÌÐòÖ÷´°¿Ú²»ÊǶԻ°¿òʱ£¬¿ò¼Ü½«×Ô¶¯ 
	//  Ö´Ðд˲Ù×÷ 
	SetIcon(m_hIcon, TRUE);			// ÉèÖôóͼ±ê 
	SetIcon(m_hIcon, FALSE);		// ÉèÖÃСͼ±ê 
 
	// TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯´úÂë 
 
	return TRUE;  // ³ý·ÇÉèÖÃÁ˿ؼþµÄ½¹µã£¬·ñÔò·µ»Ø TRUE 
} 
 
// Èç¹ûÏò¶Ô»°¿òÌí¼Ó×îС»¯°´Å¥£¬ÔòÐèÒªÏÂÃæµÄ´úÂë 
//  À´»æÖƸÃͼ±ê¡£¶ÔÓÚʹÓÃÎĵµ/ÊÓͼģÐ굀 MFC Ó¦ÓóÌÐò£¬ 
//  Õ⽫ÓÉ¿ò¼Ü×Ô¶¯Íê³É¡£ 
 
void CiteminfoDlg::OnPaint()  
{ 
	if (IsIconic()) 
	{ 
		CPaintDC dc(this); // ÓÃÓÚ»æÖƵÄÉ豸ÉÏÏÂÎÄ 
 
		SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); 
 
		// ʹͼ±êÔÚ¹¤×÷¾ØÐÎÖоÓÖÐ 
		int cxIcon = GetSystemMetrics(SM_CXICON); 
		int cyIcon = GetSystemMetrics(SM_CYICON); 
		CRect rect; 
		GetClientRect(&rect); 
		int x = (rect.Width() - cxIcon + 1) / 2; 
		int y = (rect.Height() - cyIcon + 1) / 2; 
 
		// »æÖÆÍ¼±ê 
		dc.DrawIcon(x, y, m_hIcon); 
	} 
	else 
	{ 
		CDialog::OnPaint(); 
	} 
} 
 
//µ±Óû§Í϶¯×îС»¯´°¿Úʱϵͳµ÷Óô˺¯ÊýÈ¡µÃ¹â±êÏÔʾ¡£ 
HCURSOR CiteminfoDlg::OnQueryDragIcon() 
{ 
	return static_cast(m_hIcon); 
} 
 
void	Analize_NPCTxt( FILE* fp ) 
{ 
	char* token; // ÅäÅ« 
	char string [ 1024 ]; // ¹®¼­ ÁÙ´ÜÀ§ ÀúÀå º¯¼ö 
	bool bRead = TRUE; // ¹®¼­ ´Ù Àоú´ÂÁö üũ 
	bool bLine = TRUE; // ÁÙ Àоú´ÂÁö üũ 
	char splitter[] = " \n\t"; // ±¸ºÐÀÚ : /, ij¸®Áö¸®ÅÏ, ÅÇ  
 
	if( fgets( string, 1024 , fp ) == NULL ) // ÁÙ ´ÜÀ§·Î Àбâ					 
		return; 
 
	do // °Ë»ö ·çÇÁ  
	{		 
		while( string[ 0 ] == ';' || (0==strcmp( string, "\n" )) ) // ÁÖ¼®ÀÌ ÀÖ´Ù¸é ´ÙÀ½ ÁÙ ÀÐÀ½ 
		{				 
			if ( fgets( string, 1024, fp ) == NULL ) // ´õ ÀÌ»ó ÀÐÀº°Ô ¾ø´Ù¸é ·çÇÁ Á¾·á 
			{ 
				bRead = FALSE; 
				break; 
			} 
		} 
 
		token = strtok( string, splitter );	// tokenÀ¸·Î Àоî¿À±â 
 
		// npc id 
		int id = atoi( token ); 
		g_NPCInfoArray[ id ].m_NPC_ID = id; 
		bLine = TRUE; 
 
		while ( token != NULL && bRead == TRUE ) // ÅäÅ«À¸·Î Çϳª¾¿ Àбâ 
		{									 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °æÇèÄ¡ 
			g_NPCInfoArray[ id ].m_NPC_EXP = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ·¹º§ 
			g_NPCInfoArray[ id ].m_NPC_LV = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// È®·ü 
			g_NPCInfoArray[ id ].m_Item_Percent = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¾ÆÀÌÅÛ 
			g_NPCInfoArray[ id ].m_Drop_NItem[0] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[0] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[1] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[1] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[2] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[2] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[3] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[3] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[4] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[4] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// 0329-LIM 
			g_NPCInfoArray[ id ].m_Drop_NItem[5] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[5] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[6] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[6] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[7] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[7] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[8] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[8] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Drop_NItem[9] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			g_NPCInfoArray[ id ].m_Drop_Percent[9] = atoi( token); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[ id ].m_Money_percent = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· 
			g_NPCInfoArray[ id ].m_Drop_Money[0] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· È®À² 
			g_NPCInfoArray[ id ].m_Money_Per[0] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· 
			g_NPCInfoArray[ id ].m_Drop_Money[1] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· È®À² 
			g_NPCInfoArray[ id ].m_Money_Per[1] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· 
			g_NPCInfoArray[ id ].m_Drop_Money[2] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· È®À² 
			g_NPCInfoArray[ id ].m_Money_Per[2] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· 
			g_NPCInfoArray[ id ].m_Drop_Money[3] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· È®À² 
			g_NPCInfoArray[ id ].m_Money_Per[3] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· 
			g_NPCInfoArray[ id ].m_Drop_Money[4] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// µ· È®À² 
			g_NPCInfoArray[ id ].m_Money_Per[4] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°ÝÆÐÅÏ 
			g_NPCInfoArray[ id ].m_NPC_Pattern = (BYTE)atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¹°¸®°ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Att[0] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¹°¸®°ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Att[1] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¹°¸®°ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Att[2] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¹°¸®°ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Att[3] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¹°¸®°ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Att[4] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¸¶¹ý °ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Magic_Att[0] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¸¶¹ý °ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Magic_Att[1] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			// ¸¶¹ý °ø°Ý·Â 
			g_NPCInfoArray[ id ].m_NPC_Magic_Att[2] = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¹°¸® ¹æ¾î·Â 
			g_NPCInfoArray[ id ].m_NPC_AC = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¸¶¹ý ¹æ¾î·Â 
			g_NPCInfoArray[ id ].m_NPC_Magic_AC = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¼º°øÀ² 
			g_NPCInfoArray[ id ].m_NPC_Suc_Rate = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¹°¸® ȸÇÇÀ² 
			g_NPCInfoArray[ id ].m_NPC_Evade_Rate = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¸¶¹ý ȸÇÇÀ² 
			g_NPCInfoArray[ id ].m_NPC_Magic_Evade_Rate = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ü·Â 
			g_NPCInfoArray[ id ].m_NPC_HP = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// Å©±â 
			g_NPCInfoArray[ id ].m_size = (NPC_SIZE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¼Ó¼º 
			g_NPCInfoArray[ id ].m_property  = (NPC_PROPERTY) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// µîÀåºóµµ 
			g_NPCInfoArray[ id ].m_respawn_rate = (NPC_RESPAWN_RATE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// µîÀå½Ã°£ 
			g_NPCInfoArray[ id ].m_respawn_time = (NPC_RESPAWN_TIME) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°ÝŸÀÔ 
			g_NPCInfoArray[ id ].m_attack_type = (NPC_ATTACK_TYPE)atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// À̵¿ ŸÀÔ 
			g_NPCInfoArray[ id ].m_move_type = (NPC_MOVE_TYPE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ÇൿŸÀÔ 
			g_NPCInfoArray[ id ].m_move_method = (NPC_MOVE_METHOD)atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ÀüÅõŸÀÔ..¼±°ø ºñ¼±°ø À¯¹« 
			g_NPCInfoArray[ id ].m_search_type = (NPC_SEARCH_TYPE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¹æ¾îŸÀÔ 
			g_NPCInfoArray[ id ].m_defense_type = (NPC_DEFENSE_TYPE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °Ë»ö ¹üÀ§ 
			g_NPCInfoArray[ id ].m_searchrange = (BYTE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý »çÁ¤ °Å¸®(±Ù) 
			g_NPCInfoArray[ id ].m_attackrange = (BYTE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý »çÁ¤ °Å¸®(¿ø) 
			g_NPCInfoArray[ id ].m_attackrangemagic = (BYTE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// À̵¿ Á¦ÇÑ 
			g_NPCInfoArray[ id ].m_moverange = (BYTE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			/* 
			// °Ë»ö ¹üÀ§ 
			g_NPCInfoArray[ id ].m_searchrange = (NPC_SEARCH_RANGE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý ¹üÀ§ 
			g_NPCInfoArray[ id ].m_attackrange = (NPC_ATTACK_RANGE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// À̵¿ Á¦ÇÑ 
			g_NPCInfoArray[ id ].m_moverange = (NPC_MOVE_RANGE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
			*/ 
			// Á¾Á· Á¶°Ç 
			g_NPCInfoArray[ id ].m_target_race = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// »ý¼º ¹æ½Ä 
			g_NPCInfoArray[ id ].m_createtype = (NPC_CREATE_TYPE) atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ¸í·É°£°Ý..À̵¿ 
			//			g_NPCInfoArray[ id ].m_tickgap = (NPC_TICK_GAP)atoi( token ); 
			g_NPCInfoArray[ id ].m_movetick = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// Á¦°ø¿¡³ÊÁö 
			g_NPCInfoArray[ id ].m_drop_portion = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý µ¿ÀÛ °¡Áö¼ö 
			g_NPCInfoArray[ id ].m_attackmotion = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ´ë»ç ¿©ºÎ 
			g_NPCInfoArray[id].m_dialogflag = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý ¸í·É ¼Óµµ 
			g_NPCInfoArray[id].m_attacktick = atoi( token ); 
			//			g_NPCInfoArray[id].m_attackgap = (NPC_ATTACK_TICK_GAP)atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °ø°Ý À̵¿ ¼Óµµ 
			g_NPCInfoArray[id].m_attackmovetick = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// ´ë±â½Ã°£ 
			g_NPCInfoArray[id].m_waittick = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			// °æÇèÄ¡ ºÐ¹è ¹æ½Ä 
			g_NPCInfoArray[id].m_exptype = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			g_NPCInfoArray[id].m_special = atoi( token ); 
			token = strtok( NULL, splitter ); // ´ÙÀ½ ÅäÅ« Àбâ 
 
			if ( token == NULL ) 
				MessageBox( NULL, "NpcInfo.txt error", "Error", MB_OK ); 
			else g_NPCInfoArray[id].m_beAbleToAttack = atoi( token );	// °ø°ÝÀ¯¹« 
 
			token = NULL; 
		} 
		bLine = FALSE; 
 
		if ( fgets( string, 1024 , fp ) == NULL ) // ´ÙÀ½ ÁÙ Àбâ				 
			bRead = FALSE; // ÀÐÀº°Ô ¾ø´Ù¸é stringÀº 0À¸·Î				 
 
	} while( bRead != FALSE ); // ´õ ÀÌ»ó ÀÐÀº°Ô ¾ø´Ù¸é ·çÇÁ Á¾·á . 
 
 
} 
 
void CiteminfoDlg::OnBnClickedOk() 
{ 
	// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë 
	//OnOK(); 
 
	FILE *fp = fopen("npcinfo.txt", "r"); 
	if (fp) 
		Analize_NPCTxt(fp); 
	else 
		MessageBox("NpcInfo.txt error", "Error", MB_OK); 
 
	CStdioFile file("out.txt", CFile::modeCreate | CFile::modeReadWrite); 
 
	char out[256]; 
	for (int i = 0; i < 512; i++) 
	{ 
		sprintf(out, "%d\t%d\n", g_NPCInfoArray[i].m_NPC_LV, g_NPCInfoArray[i].m_Item_Percent); 
		file.WriteString(out); 
	} 
 
	file.Flush(); 
	file.Close(); 
}