Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Share] CryptionRCC Source Code (for source developer).

Joined
Mar 20, 2012
Messages
760
Reaction score
368
CryptionRCC Source Code​



Screenshot :
REMOVED


Few editing needed, see post below :

find : '//add crypt' then add the code


SerialMemory.cpp
Code:
#include "stdafx.h"
#include "./SerialMemory.h"
#include "./CompByte.h"
#include "./Unzipper.h"
#include "./SFileSystem.h"
#include "../enginelib/G-Logic/GLogic.h"
#include "../enginelib/Crypt.h"[COLOR="#008000"]//add crypt[/COLOR]

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CSerialMemory::CSerialMemory(void) 
	: m_pBuffer(NULL)
	, m_nBufSize(0)
	, m_dwOffSet(0)
{
}

CSerialMemory::CSerialMemory ( const char *_szZipFileName, const char *_szFileName, bool bencode ) 
	: m_pBuffer(NULL)
	, m_nBufSize(0)
	, m_dwOffSet(0)
{
	GASSERT(_szFileName);
	GASSERT(_szZipFileName);

	OpenFile ( _szZipFileName, _szFileName, bencode );
}

CSerialMemory::~CSerialMemory(void)
{
	CloseFile ();
}

void CSerialMemory::GetFileType ( char *szFileType, int nStrLen, DWORD &FileID )
{
	StringCchCopy( szFileType, nStrLen, m_szFileType );
	FileID = m_FileID;
}

void CSerialMemory::CloseFile ()
{
	if ( m_pBuffer )
	{
		delete[] m_pBuffer;
		m_pBuffer = NULL;
	} // if ( m_pBuffer )

	m_DefaultOffSet = 0;
	m_nBufSize = 0;
	m_dwOffSet = 0;
	m_IsFileOpened = FALSE;
	m_FileID = 0;
}

BOOL CSerialMemory::OpenFile (	const char *_szZipFileName, 
								const char *_szFileName, 
								bool bencode, 
								BOOL bPack )
{
	//GASSERT(_szFileName);
	//GASSERT(_szZipFileName);
	if( !_szFileName || !_szZipFileName ) return FALSE;

	// 捞固 凯妨 乐阑锭 颇老 摧澜.
	if( IsOpen() ) CloseFile ();

	if( bPack )
	{
		CString strPath;
		strPath = _szZipFileName;
		strPath += _szFileName;

		SFileHandle * pFileHandle = GLOGIC::sFileSystem.OpenFile( strPath );
		if( pFileHandle )
		{
			FILECONTEXT * pFileContext = pFileHandle->GetFileContext();
			if( pFileContext )
			{
				BYTE buffer[4096]={0};
				DWORD dwRead;

				m_nBufSize = 0;
				m_pBuffer = new BYTE[pFileContext->lUncompressSize];

				do
				{
					dwRead = pFileHandle->Read( buffer, 4096 );
					
					memcpy( m_pBuffer+m_nBufSize, buffer, dwRead );
					m_nBufSize += dwRead;
				}
				while(dwRead > 0);
			}

			GLOGIC::sFileSystem.CloseFile( pFileHandle );
		}
	}
	else
	{
		CUnzipper cUnzip;
		m_nBufSize = cUnzip.UnzipToMemory( _szZipFileName, _szFileName, m_pBuffer );
	}

	// note :	颇老 荤捞令啊 呈公 目档 UINT_MAX啊 逞绢 咳. 距 17皋啊.
	//			颇老阑 1捞扼档 佬菌促绰吧 犬脚且荐 乐唱?
	if( m_nBufSize == UINT_MAX || m_nBufSize == 0)
		return FALSE;

	m_OpenType = FOT_READ;
	m_bencode = bencode;
	StringCchCopy ( m_szFileName, _MAX_FNAME, _szFileName );
	StringCchCopy ( m_szZipFileName, _MAX_PATH, _szZipFileName );

	if ( CCrypt::bCryptRCC )[COLOR="#008000"]//add crypt[/COLOR]
	{
		CCrypt::Decryption( (BYTE*) m_pBuffer , m_nBufSize );
	}

	//if( m_bencode )
	//{
	//	int nVersion;
	//	memcpy( &nVersion, m_pBuffer, sizeof(int) );
	//	if( nVersion > 0 && CRijndael::VERSION >= nVersion )
	//	{
	//		m_nVersion = nVersion;
	//		m_oRijndael.Initialize( CRijndael::sm_Version[nVersion-1], CRijndael::DEFAULT_KEY_LENGTH );

	//		m_nBufSize -= sizeof(int);
	//		memcpy( m_pBuffer, m_pBuffer+sizeof(int), m_nBufSize );
	//		
	//		m_oRijndael.DecryptEx( (char*)m_pBuffer, m_nBufSize );
	//	}
	//}

	ReadFileType ();

	m_IsFileOpened = TRUE;
	return TRUE;
}

void CSerialMemory::ReadFileType ()
{
	int Num = 0;

	Num = (int)read( &m_szFileType, sizeof( char )*FILETYPESIZE );
	Num = (int)read( &m_FileID, sizeof( DWORD ) );

	m_DefaultOffSet = m_dwOffSet;
}

DWORD CSerialMemory::ReadBlockSize ()
{
	DWORD dwSize;
	*this >> dwSize;
	return dwSize;
}

inline size_t CSerialMemory::read ( void* pbuffer, DWORD dwSize )
{
	GASSERT(m_nBufSize&&"CSerialMemory::read()");
	GASSERT(pbuffer&&"CSerialMemory::read()");
	
	if ( (m_dwOffSet+dwSize) > m_nBufSize )		return 0;

	memcpy( pbuffer, m_pBuffer + m_dwOffSet, dwSize );
	m_dwOffSet += dwSize;

	if ( m_bencode )
	{
		//if( m_nVersion == -1 )
		//{
			compbyte::decode ( (BYTE*)pbuffer, dwSize );
		//}
	}

	// 喊 狼固绝绰 蔼
	return 1;
}

BOOL CSerialMemory::ReadBuffer ( void* pBuffer, DWORD Size )
{
	GASSERT(pBuffer);

	int Num = 0;

	Num = (int)read ( pBuffer, Size );

	return TRUE;
}

// Note : SerialFile狼 扁夯 颇老 HEADER康开阑 力寇茄 镑 何磐.
//		0 - Position.
//
BOOL CSerialMemory::SetOffSet ( long _OffSet )
{
	m_dwOffSet = _OffSet + m_DefaultOffSet;
	if( m_dwOffSet < 0 )
		return FALSE;
	
	return TRUE;
}

//	Note : 颇老狼 m_DefaultOffSet甫 力寇茄 泅力 困摹甫 啊廉柯促.
//
long CSerialMemory::GetfTell ()
{
	return m_dwOffSet - m_DefaultOffSet;
}

BOOL CSerialMemory::BeginBlock ( EMSFILE_BLOCK _emBLOCK )
{
	//if ( emBLOCK > EMBLOCK_SIZE )	return FALSE;

	GASSERT(m_nMarkPos[m_dwBlockMarkPOS]==0&&"CSerialMemory::BeginBlock");

	m_nMarkPos[m_dwBlockMarkPOS] = GetfTell();	//	泅犁 困摹 历厘.
	*this << DWORD(-1);					//	MARK 历厘.

	++m_dwBlockMarkPOS;

	return TRUE;
}

BOOL CSerialMemory::EndBlock ( EMSFILE_BLOCK _emBLOCK )
{
	//if ( emBLOCK > EMBLOCK_SIZE )	return FALSE;

	--m_dwBlockMarkPOS;

	GASSERT(m_nMarkPos[m_dwBlockMarkPOS]!=0&&"CSerialMemory::EndBlock");

	long nEndPos = GetfTell();
	DWORD dwTotalSize = DWORD ( ( nEndPos - m_nMarkPos[m_dwBlockMarkPOS] ) - sizeof(DWORD) );

	SetOffSet ( m_nMarkPos[m_dwBlockMarkPOS] );
	*this << dwTotalSize;

	SetOffSet ( nEndPos );

	m_nMarkPos[m_dwBlockMarkPOS] = 0;

	return TRUE;
}

//////////////////////////////////////////////////////////////////////////////////
// 荐沥 救秦档 登绰 窃荐

BOOL CSerialMemory::operator >> ( short &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( int &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( WORD &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( DWORD &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( UINT &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( float &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( double &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( D3DVECTOR &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( D3DCOLORVALUE &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( D3DBLEND &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( BYTE &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( char &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( bool &Value )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	Value = FALSE;
	Num = (int)read ( &Value, sizeof(Value) );

	return TRUE;
}

BOOL CSerialMemory::operator >> ( std::string &str )
{
	GASSERT(m_OpenType==FOT_READ);
	int Num = 0;

	DWORD dwSize;
	*this >> dwSize;
	
	char *szBuffer = new char[dwSize];
	Num = (int)read ( szBuffer, sizeof(char)*(dwSize) );

	str = szBuffer;
	delete[] szBuffer;

	return TRUE;
}


StringMemory.cpp
Code:
// StringFile.cpp: implementation of the CStringFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "./CompByte.h"
#include "./StringMemory.h"
#include "./Unzipper.h"
#include "./SFileSystem.h"
#include "../enginelib/G-Logic/GLogic.h"
#include "../enginelib/Crypt.h"[COLOR="#008000"]//add crypt[/COLOR]

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CStringMemory::CStringMemory ( UINT nBufSize ) 
	: m_dwOffSet(0)
	, m_nBufSize(0)
	, m_pBufferMem(NULL)
	, m_nBufSizeTemp(0)
{
	m_dwRead = nBufSize;
	m_nBufferSize = nBufSize;
	m_pBuffer = new BYTE[nBufSize];
}

CStringMemory::~CStringMemory ()
{
	delete[] m_pBuffer;
	Close ();
}

BOOL CStringMemory::Open (	LPCSTR _szZipFileName, 
							LPCSTR _szFileName, 
							BOOL bDecode, 
							BOOL bPack )
{
	GASSERT(m_pBufferMem==NULL&&"CStringMemory::Open ()");

	if( bPack )
	{
		CString strPath;
		strPath = _szZipFileName;
		strPath += _szFileName;

		SFileHandle * pFileHandle = GLOGIC::sFileSystem.OpenFile( strPath );
		if( pFileHandle )
		{
			FILECONTEXT * pFileContext = pFileHandle->GetFileContext();
			if( pFileContext )
			{
				BYTE buffer[4096]={0};
				DWORD dwRead;

				m_nBufSize = 0;
				m_pBufferMem = new BYTE[pFileContext->lUncompressSize];

				do
				{
					dwRead = pFileHandle->Read( buffer, 4096 );

					memcpy( m_pBufferMem+m_nBufSize, buffer, dwRead );
					m_nBufSize += dwRead;
				}
				while(dwRead > 0);
			}

			GLOGIC::sFileSystem.CloseFile( pFileHandle );
		}
	}
	else
	{
		CUnzipper cUnzip;
		m_nBufSize = cUnzip.UnzipToMemory( _szZipFileName, _szFileName, m_pBufferMem );
	}
	
	// note :	颇老 荤捞令啊 呈公 目档 UINT_MAX啊 逞绢 咳. 距 17皋啊.
	//			颇老阑 1捞扼档 佬菌促绰吧 犬脚且荐 乐唱?
	if( m_nBufSize == UINT_MAX || m_nBufSize == 0)
		return FALSE;

	m_dwOffSet = 0;
	m_nBufSizeTemp = m_nBufSize;
	m_bDecode = bDecode;
	StringCchCopy( m_szFileName, MAX_PATH, _szFileName );

	if ( CCrypt::bCryptRCC )[COLOR="#008000"]//add crypt[/COLOR]
	{
		CCrypt::Decryption( m_pBufferMem , m_nBufSize );
	}

	if( m_bDecode )
	{
		int nVersion;
		memcpy( &nVersion, m_pBufferMem, sizeof(int) );
//		if( nVersion > 0 && CRijndael::VERSION >= nVersion )
		if( CRijndael::VERSION == nVersion )
		{
			m_nVersion = nVersion;
			m_oRijndael.Initialize( CRijndael::sm_Version[nVersion-1].c_str(), CRijndael::sm_KeyLength[nVersion-1], 
									CRijndael::sm_chain0, CRijndael::sm_KeyLength[nVersion-1] );

			m_nBufSize -= sizeof(int);
			m_nBufSizeTemp = m_nBufSize;
			BYTE * pTemp = m_pBufferMem + sizeof(int);
			memcpy( m_pBufferMem, pTemp, m_nBufSize );

			m_oRijndael.DecryptEx( (char*)m_pBufferMem, m_nBufSize );
		}else{
			return FALSE;
		}
	}

	return TRUE;
}

void CStringMemory::Close ()
{
	if( m_pBufferMem )
	{
		delete [] m_pBufferMem;
		m_pBufferMem = NULL;
	}

	m_dwIndex = 0;
	m_dwLine = 0;

	m_dwOffSet = 0;
	m_nBufSize = 0;
	m_nBufSizeTemp = 0;
}

DWORD CStringMemory::GetNextLine ( CString &strString )
{
	if( m_pBufferMem == NULL ) return 0;

	char *szString = strString.GetBuffer ( m_nBufferSize );
	DWORD dwReturn = this->GetNextLine ( szString, m_nBufferSize );
	if ( dwReturn == 0 )	strString.Empty();

	strString.ReleaseBuffer ();

	return dwReturn;
}

DWORD CStringMemory::GetNextLine ( PSTR &szString )
{
	if( m_pBufferMem == NULL ) return 0;

	SAFE_DELETE(szString);

	szString = new CHAR[m_nBufferSize];
	DWORD dwReturn = this->GetNextLine ( szString, m_nBufferSize );

	SAFE_DELETE(szString);
	
	return dwReturn;
}

DWORD CStringMemory::GetNextLine ( LPSTR szLine, UINT iLineSize )
{
	if( m_pBufferMem == NULL ) return 0;

	BYTE	*chTemp;
	BOOL	bStop=FALSE;
	int		nOut;

	chTemp = (LPBYTE) szLine;
	*chTemp = 0;
	nOut = 0;

	while ( !bStop )
	{
		if ( !m_dwLine || m_dwIndex==m_dwRead )
		{
			if ( m_dwOffSet >= m_nBufSize ) m_dwRead = 0;
			else
			{
				if( m_nBufSizeTemp < m_nBufferSize )
				{
					memcpy( m_pBuffer, m_pBufferMem + m_dwOffSet, sizeof(BYTE)*m_nBufSizeTemp );
					m_dwRead = m_nBufSizeTemp;
					m_dwOffSet += sizeof(BYTE)*m_nBufSizeTemp;
				}
				else
				{
					memcpy( m_pBuffer, m_pBufferMem + m_dwOffSet, sizeof(BYTE)*m_nBufferSize );
					m_nBufSizeTemp -= m_nBufferSize;
					m_dwRead = m_nBufferSize;
					m_dwOffSet += sizeof(BYTE)*m_nBufferSize;
				}

				if ( m_bDecode )	
				{
					if( m_nVersion == -1 )
					{
						compbyte::decode ( m_pBuffer, sizeof(BYTE)*m_dwRead );
					}
				}
			}

			m_dwIndex = 0;
			if ( m_dwRead == 0 )
			{
				bStop = TRUE; // Error during readfile or END-OF-FILE encountered

				if ( nOut>0 )
				{
					chTemp[nOut++] = (char) 0;
					return m_dwLine;	
				}
				else return m_dwLine = 0; //nix gelezen
			}
			else
			{
				if ( m_dwRead != (DWORD)m_nBufferSize )
					bStop = TRUE;	//END-OF-FILE
			}
		}

		for ( ; m_dwIndex<m_dwRead; m_dwIndex++ )
		{
			if ( (nOut+1) == iLineSize )
			{
				TCHAR szError[260] = {0};
				StringCchPrintf( szError, 260, "CStringMemory::m_pBuffer Not enough. File:%s, Line:%u(Over Char Number:%d)",
								m_szFileName, ++m_dwLine, iLineSize );
				::MessageBox ( NULL, szError, "Warning !", MB_ICONEXCLAMATION|MB_OK );
				chTemp[nOut] = '\0';
				return m_dwLine;
			}

			switch ( m_pBuffer[m_dwIndex] )
			{
			case 0x0d://End of Line encountered
			case 0x0a:
				if ( (m_dwIndex+1) < m_dwRead ) // Check we're not on end of m_pBuffer ???
				{
					if ( m_pBuffer[m_dwIndex+1] == '\n' || m_pBuffer[m_dwIndex+1] == '\r' )
					{
						if ( !*chTemp )	m_dwLine++;
						m_dwIndex++;
					}
				}

				if ( *chTemp )
				{
					chTemp[nOut++] = '\0';
					m_dwLine++;

					return m_dwLine;
				}

				break;

			default:
				chTemp[nOut++] = m_pBuffer[m_dwIndex];
				break;
			};
		}
	}

	if ( nOut > 0 )
	{
		chTemp[nOut++] = '\0';
		
		if ( m_dwLine==0 )	m_dwLine++;

		return m_dwLine;
	}

	return m_dwLine = 0; //nix gelezen
}

void CStringMemory::Reset ()
{
	if( m_pBufferMem == NULL ) return;

	m_dwIndex = 0;
	m_dwLine = 0;

	m_dwOffSet = 0;
	m_nBufSizeTemp = m_nBufSize;
}

RANPARAM.cpp
Code:
#include "stdafx.h"
#include "./RANPARAM.h"

#include "../enginelib/Common/Rijndael.h"
#include "../EngineLib/Common/StringFile.h"
#include "../EngineLib/Common/STRINGUTILS.h"
#include "../EngineLib/Common/compbyte.h"
#include "../EngineLib/Common/SUBPATH.h"
#include "../EngineLib/Common/StlFunctions.h"
#include "../EngineLib/Common/gltexfile.h"
#include "../EngineLib/Common/IniLoader.h"
#include "../EngineLib/DxCommon/DebugSet.h"
#include "../EngineLib/DxCommon/DxFontMan.h"
#include "shlwapi.h"

#include "../enginelib/Crypt.h"[COLOR="#008000"]//add crypt[/COLOR]

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

namespace RANPARAM
{
	std::string			strRootPath			= "";
	std::string			strParamFile		= "";
	std::string			strOptionFile		= "";

	EMSERVICE_TYPE		emSERVICE_TYPE		= EMSERVICE_DEFAULT;
	BOOL				bXML_USE			= TRUE;

	BOOL				bSAVE_USERID		= FALSE;
	std::string			strENC_USERID		= "";
	std::string			strENC_CHARID		= "";

	const std::string	strIDNULL			= "(null)";

	BOOL				bDIS_CONFT			= FALSE;		//	'磊悼' 措访 芭何.
	BOOL				bDIS_TRADE			= FALSE;		//	'磊悼' 芭贰 芭何.
	BOOL				bDIS_PARTY			= FALSE;		//	'磊悼' 颇萍 芭何.
	BOOL				bDIS_FRIEND			= FALSE;		//	'磊悼' 模备 夸没 芭何.
	BOOL				bSHOW_SIMPLEHP		= TRUE;			//	固聪 HP 钎矫
	BOOL				b3D_SOUND			= FALSE;
	BOOL				bSHOW_TIP			= TRUE;			//	屏 焊咯林扁
	BOOL				bMOVABLE_ON_CHAT	= FALSE;		//	盲泼芒 困俊辑 框流捞扁
	BOOL				bFORCED_ATTACK		= TRUE;			//	碍力 傍拜
	BOOL				bNAME_DISPLAY		= TRUE;			//	捞抚 亲惑 钎矫
	BOOL				bNON_Rebirth		= FALSE;		//  何劝 胶懦 陛瘤

	BOOL				bCONFT_BOUND		= TRUE;			//	措访矫 康开 力茄 咯何.
	WORD				wCONFT_RECOVER		= 0;			//	措访矫 雀汗距 力茄.
	float				fCONFT_HP_RATE		= 1.0f;			//	措访矫 眉仿 犬措 厚啦.
	float				fCONFT_TAR_HP_RATE	= 1.0f;			//	措访矫 眉仿 犬措 厚啦 [ 惑措规(俺牢措访矫父) ].

	DWORD				dwPARTY_GET_ITEM	= 3;			//	颇萍可记 酒捞袍 盒硅 痹蘑.(叼弃飘绰 鉴瞒嚼垫)
	DWORD				dwPARTY_GET_MONEY	= 3;			//	颇萍可记 捣 盒硅 痹蘑.(叼弃飘绰 闭殿盒硅)
	
	int					QuickSlot[QUICK_SLOT_NUM]		= { DIK_Q, DIK_W, DIK_E, DIK_A, DIK_S, DIK_D };
	
	int					SkillSlot[QUICK_SKILL_NUM]		= { DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6,
															DIK_7, DIK_8, DIK_9, DIK_0};
	
	int					MenuShotcut[QUICK_MENU_NUM]		= { DIK_I, DIK_C, DIK_K, DIK_P, DIK_T, DIK_G, 
															DIK_F, DIK_M, DIK_B, DIK_R, DIK_H, DIK_L,
															DIK_X, DIK_Z ,DIK_U, DIK_J, DIK_O};
	
	int					DefaultShotcutKey[QUICK_ALL_NUM]	= { DIK_Q, DIK_W, DIK_E, DIK_A, DIK_S, DIK_D,
																DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6,
																DIK_7, DIK_8, DIK_9, DIK_0,	DIK_I, DIK_C,
																DIK_K, DIK_P, DIK_T, DIK_G, DIK_F, DIK_M, 
																DIK_B, DIK_R, DIK_H, DIK_L, DIK_X, DIK_Z,
																DIK_U, DIK_J, DIK_O };

	// KeySettingWindow 曼炼 抛捞喉 窜绵虐 鉴辑啊 促福霸 汲沥登绢 乐绢辑 鞘夸
	int					KeySettingToRanparam[QUICK_MENU_NUM] = { SHOTCUT_INVEN, SHOTCUT_CHAR, SHOTCUT_SKILL, SHOTCUT_PARTY,
																 SHOTCUT_QUEST, SHOTCUT_CLUB, SHOTCUT_FRIEND, SHOTCUT_MAP,
																 SHOTCUT_CHATMACRO, SHOTCUT_ITEMBANK, SHOTCUT_ITEMSHOP, SHOTCUT_RUN,
																 SHOTCUT_HELP, SHOTCUT_PET, SHOTCUT_ATTACKMODE, SHOTCUT_PKMODE, SHOTCUT_SUMMON};

	// BasicMenu 曼炼 抛捞喉 窜绵虐 鉴辑啊 促福霸 汲沥登绢 乐绢辑 鞘夸
	int					BasicMenuToRanparam[BASICMENU_NUM] = { SHOTCUT_INVEN, SHOTCUT_CHAR,	SHOTCUT_SKILL, SHOTCUT_PARTY,
															   SHOTCUT_QUEST, SHOTCUT_CLUB, SHOTCUT_FRIEND, SHOTCUT_MAP,
															   SHOTCUT_ITEMBANK, SHOTCUT_RUN, SHOTCUT_ITEMSHOP, SHOTCUT_CHATMACRO};
	
	CString				ChatMacro[CHAT_MACRO_NUM];

	BOOL				bCHECKWHQL			= TRUE;
	DWORD				dwScrWidth			= 800;
	DWORD				dwScrHeight			= 600;
	EMSCREEN_FORMAT		emScrFormat			= EMSCREEN_F16;
	UINT				uScrRefreshHz		= 60;
	BOOL				bScrWindowed		= FALSE;
	BOOL				bScrWndHalfSize		= TRUE;
	BOOL				bScrWndFullSize		= FALSE;

	bool				bDISP_CONSOLE		= false;
	bool				bDISP_FPS			= false;

	BOOL				bGameCursor			= TRUE;

	LONG				nSndSfx				= 0;
	LONG				nSndMap				= 0;
	LONG				nSndMusic			= 0;
	DWORD				dw3DAlgorithm		= 0;
	DWORD				dwSndBufferSize		= 10;

	BOOL				bSndMuteSfx			= FALSE;
	BOOL				bSndMuteMap			= FALSE;
	BOOL				bSndMuteMusic		= FALSE;
	BOOL				bUsePassiveDN		= FALSE;


	DWORD				dwVideoLevel		= 0;
	DWORD				dwShadowChar		= 4;
	BOOL				bBuff				= TRUE;
	BOOL				bShadowLand			= TRUE;
	BOOL				bRealReflect		= TRUE;
	BOOL				bRefract			= TRUE;
	BOOL				bGlow				= TRUE;
	BOOL				bPost				= TRUE;
	BOOL				bFrameLimit			= TRUE;
	DWORD				dwSkinDetail		= 2;

	BOOL				bBUFF_SFX			= TRUE;
	BOOL				bEMOTICON			= TRUE;

	DWORD				dwFogRange			= 0;

	TCHAR				LoginAddress[128]	= "";

	TCHAR				FtpAddressTable[MAX_FTP][128] =
											{
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "",
											};
	TCHAR				HttpAddressTable[MAX_HTTP][128] =
											{
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "", "",
												"", "", "", "",
											};

	CString				strNewsURL			= "";
	CString				strConnectionURL	= "";

	UINT				nChinaRegion		= MAX_CHINA_REGION;
	
	UINT				nPort				= MAX_NPORT;

	SERVER_SET			China_Region[MAX_CHINA_REGION];
	
	DWORD				dwLangSet			= 0;
	CString				strGDIFont			= "Tahoma";
	CString				strFontType			= "D3DXFONT";
	
	CString				strCountry			= "kr";
	CString				strLauncherText		= "Launcher.xml";
	CString				strGameInText		= "gameintext.xml";
	CString				strGameExText		= "gameextext.xml";
	CString				strGameWord			= "gameword.xml";
	CString				strServerText		= "servertext.xml";

	CString				strUIOuterCfg		= "uioutercfg.xml";
	CString				strUIInnerCfg01		= "uiinnercfg01.xml";
	CString				strUIInnerCfg02		= "uiinnercfg02.xml";
	CString				strUIInnerCfg03		= "uiinnercfg03.xml";
	CString				strUIExtCfg			= "uiextcfg.xml";	

	TCHAR				HelpAddress[STRING_NUM_128] = _T("\\data\\help\\help.htm");
	// 吝惫 : http://2046.5u56.com/gameshop/gameshop.html
	TCHAR				ItemShopAddress[STRING_NUM_128] = _T("about:blank");
	TCHAR				RPFDataPath[STRING_NUM_128] = _T("\\package\\data.rpf");


	BOOL LOAD_CFG ( const TCHAR *szRootPath )
	{
		strRootPath = szRootPath;
		strParamFile = strRootPath + "\\param.cfg";

		gltexfile cFILE;
		cFILE.reg_sep ( '\t' );
		cFILE.reg_sep ( ' ' );

		if ( !cFILE.open(strParamFile.c_str(),false) )	return FALSE;

		int nTEMP(0);

		#ifndef KR_PARAM
		{
			//#ifndef TW_PARAM
			//	cFILE.getflag ( "bSAVE_USERID", 1, 1, bSAVE_USERID );
			//	if ( bSAVE_USERID )
			//#endif
				{
					cFILE.getflag ( "strENC_USERID", 1, 1, strENC_USERID );
					if ( strIDNULL == strENC_USERID )	strENC_USERID = "";
				}
		}
		#endif

		cFILE.getflag ( "bDISP_CONSOLE", 1, 1, bDISP_CONSOLE );
		cFILE.getflag ( "bDISP_FPS", 1, 1, bDISP_FPS );

		cFILE.getflag ( "bCHECKWHQL", 1, 1, bCHECKWHQL );
		cFILE.getflag ( "dwScrWidth", 1, 1, dwScrWidth );
		cFILE.getflag ( "dwScrHeight", 1, 1, dwScrHeight );
		cFILE.getflag ( "uScrRefreshHz", 1, 1, uScrRefreshHz );
		cFILE.getflag ( "emScrFormat", 1, 1, nTEMP );
		emScrFormat = (EMSCREEN_FORMAT) nTEMP;

		cFILE.getflag ( "bScrWindowed", 1, 1, bScrWindowed );
		cFILE.getflag ( "bScrWndFullSize", 1, 1, bScrWndFullSize );
		cFILE.getflag ( "bGameCursor", 1, 1, bGameCursor );

		cFILE.getflag ( "b3D_SOUND", 1, 1, b3D_SOUND );
		cFILE.getflag ( "nSndSfx", 1, 1, nSndSfx );
		cFILE.getflag ( "nSndMap", 1, 1, nSndMap );
		cFILE.getflag ( "nSndMusic", 1, 1, nSndMusic );
		cFILE.getflag ( "dw3DAlgorithm", 1, 1, dw3DAlgorithm );
		cFILE.getflag ( "dwSndBufferSize", 1, 1, dwSndBufferSize );

		cFILE.getflag ( "bSndMuteSfx", 1, 1, bSndMuteSfx );
		cFILE.getflag ( "bSndMuteMap", 1, 1, bSndMuteMap );
		cFILE.getflag ( "bSndMuteMusic", 1, 1, bSndMuteMusic );
		cFILE.getflag ( "bUsePassiveDN", 1, 1, bUsePassiveDN );		

		cFILE.getflag ( "dwShadowChar", 1, 1, dwShadowChar );
		cFILE.getflag ( "bBuff", 1, 1, bBuff );
		cFILE.getflag ( "bShadowLand", 1, 1, bShadowLand );
		cFILE.getflag ( "bRealReflect", 1, 1, bRealReflect );
		cFILE.getflag ( "bRefract", 1, 1, bRefract );
		cFILE.getflag ( "bGlow", 1, 1, bGlow );
		cFILE.getflag ( "bPost", 1, 1, bPost );
		cFILE.getflag ( "dwSkinDetail", 1, 1, dwSkinDetail );
		cFILE.getflag ( "dwFogRange", 1, 1, dwFogRange );
		cFILE.getflag ( "bFrameLimit", 1, 1, bFrameLimit );

		cFILE.getflag ( "bBUFF_SFX", 1, 1, bBUFF_SFX );
		cFILE.getflag ( "bEMOTICON", 1, 1, bEMOTICON );

		cFILE.getflag_sz( "LoginAddress", 1, 1, LoginAddress, STRING_NUM_128 );		
		

		for ( int i=0; i<MAX_FTP; ++i )
		{
			CString strFTPADD;
			strFTPADD.Format ( "FtpAddress%02d", i );



			memset ( FtpAddressTable[i], 0, sizeof(char)*128 );

			gltexfile::VECSTRING* pVECSTR = cFILE.findflag ( strFTPADD.GetString() );
			if ( pVECSTR )
			{
				cFILE.getflag_sz( strFTPADD.GetString(), 1, 1, FtpAddressTable[i], STRING_NUM_128 );
			}
		}

		for ( int i=0; i<MAX_HTTP; ++i )
		{
			CString strHTTPADD;
			strHTTPADD.Format ( "HttpAddress%02d", i );

			memset ( HttpAddressTable[i], 0, sizeof(char)*128 );

			gltexfile::VECSTRING* pVECSTR = cFILE.findflag ( strHTTPADD.GetString() );
			if ( pVECSTR )
			{
				cFILE.getflag_sz( strHTTPADD.GetString(), 1, 1, HttpAddressTable[i], STRING_NUM_128 );
			}
		}

		cFILE.getflag ( "strNewsURL", 1, 1, strNewsURL );
		cFILE.getflag ( "strConnectionURL", 1, 1, strConnectionURL );
		cFILE.getflag ( "nChinaRegion", 1, 1, nChinaRegion );
		

		cFILE.getflag ( "strFontType", 1, 1, strFontType );
		cFILE.getflag ( "dwLangSet", 1, 1, dwLangSet );
		cFILE.getflag ( "strGDIFont", 1, 1, strGDIFont );

		cFILE.getflag ( "strCountry", 1, 1, strCountry );
		cFILE.getflag ( "strLauncherText", 1, 1, strLauncherText );
		cFILE.getflag ( "strGameInText", 1, 1, strGameInText );
		cFILE.getflag ( "strGameExText", 1, 1, strGameExText );
		cFILE.getflag ( "strGameWord", 1, 1, strGameWord );
		cFILE.getflag ( "strServerText", 1, 1, strServerText );

		cFILE.getflag ( "strUIOuterCfg", 1, 1, strUIOuterCfg );
		cFILE.getflag ( "strUIInnerCfg01", 1, 1, strUIInnerCfg01 );
		cFILE.getflag ( "strUIInnerCfg02", 1, 1, strUIInnerCfg02 );
		cFILE.getflag ( "strUIInnerCfg03", 1, 1, strUIInnerCfg03 );
		cFILE.getflag ( "strUIExtCfg", 1, 1, strUIExtCfg );

		//	Note : 蜡瓤己 眉农.
		//
		if ( COMMENT::FONTSYS[0]!=strFontType.GetString() && COMMENT::FONTSYS[1]!=strFontType.GetString() )
		{
			strFontType = COMMENT::FONTSYS[0].c_str();
		}

		if ( !bScrWndHalfSize )		bScrWndFullSize = TRUE;

		return TRUE;
	}
	
	BOOL LOAD ( const TCHAR *szRootPath, bool bServer )
	{
		CCrypt::LoadSetting ( szRootPath );[COLOR="#008000"]//add crypt[/COLOR]
		strRootPath = szRootPath;

		if ( !LOAD_PARAM ( szRootPath ) )
		{
			return LOAD_CFG( szRootPath );
		}

		if ( !LOAD_OPT( szRootPath, bServer ) )
		{
			return FALSE;
		}

        //	吝惫老 版快 瘤开 急琶矫 蔼阑 盎脚秦霖促.
#ifdef CH_PARAM
		
		if ( nChinaRegion == MAX_CHINA_REGION )	return TRUE;

		StringCchCopy( LoginAddress, STRING_NUM_128, China_Region[nChinaRegion].LoginAddress.GetString() );

		for( int i=0 ; ; ++i )
		{
			if( China_Region[nChinaRegion].HttpAddressTable[i].IsEmpty() ) 
				break;

			StringCchCopy( HttpAddressTable[i], STRING_NUM_128, China_Region[nChinaRegion].HttpAddressTable[i].GetString() );
		}

		strNewsURL = China_Region[nChinaRegion].strNewsURL;
#endif

		return TRUE;
	}

	BOOL SAVE ()
	{
		if ( strOptionFile.empty() )	return FALSE;

		CString strBuffer;

		strBuffer += _T("[GAME OPTION]\n");

		#ifndef KR_PARAM
		{
			if ( strENC_USERID.empty() )
			{
				strBuffer.AppendFormat( "bSAVE_USERID = %d\n", FALSE );
				strBuffer.AppendFormat( "strENC_USERID = %s\n", strIDNULL );
			}
			else
			{
				strBuffer.AppendFormat( "bSAVE_USERID = %d\n", TRUE );
				strBuffer.AppendFormat( "strENC_USERID = %s\n", strENC_USERID );
			}

		}
		#endif

		strBuffer.AppendFormat( "nChinaRegion = %d\n", nChinaRegion );
		strBuffer.AppendFormat( "nPort = %d\n", nPort );

		{
			strBuffer += _T(";\n");
			strBuffer += _T("[SCREEN OPTION]\n");
			strBuffer.AppendFormat( "bCHECKWHQL	= %d\n", bCHECKWHQL );
			strBuffer.AppendFormat( "dwScrWidth	= %d\n", dwScrWidth );
			strBuffer.AppendFormat( "dwScrHeight = %d\n", dwScrHeight );
			strBuffer.AppendFormat( "emScrFormat = %d\n", emScrFormat );
			strBuffer.AppendFormat( "uScrRefreshHz = %d\n", uScrRefreshHz );
			strBuffer.AppendFormat( "bScrWindowed = %d\n", bScrWindowed );
			strBuffer.AppendFormat( "bScrWndFullSize = %d\n", bScrWndFullSize );
			strBuffer.AppendFormat( "bGameCursor = %d\n", bGameCursor );
		}

		{
			strBuffer += _T(";\n");
			strBuffer += _T("[SOUND OPTION]\n");
			strBuffer.AppendFormat( "b3D_SOUND = %d\n", b3D_SOUND );
			strBuffer.AppendFormat( "nSndSfx = %d\n", nSndSfx );
			strBuffer.AppendFormat( "nSndMap = %d\n", nSndMap );
			strBuffer.AppendFormat( "nSndMusic = %d\n", nSndMusic );
			strBuffer.AppendFormat( "dw3DAlgorithm = %d\n", dw3DAlgorithm );
			strBuffer.AppendFormat( "dwSndBufferSize = %d\n", dwSndBufferSize );
			strBuffer.AppendFormat( "bSndMuteSfx = %d\n", bSndMuteSfx );
			strBuffer.AppendFormat( "bSndMuteMap = %d\n", bSndMuteMap );
			strBuffer.AppendFormat( "bSndMuteMusic = %d\n", bSndMuteMusic );
		}

		{
			strBuffer += _T(";\n");
			strBuffer += _T("[GRAPHIC OPTION]\n");
			strBuffer.AppendFormat( "dwVideoLevel = %d\n", dwVideoLevel );
			strBuffer.AppendFormat( "dwShadowChar = %d\n", dwShadowChar );
			strBuffer.AppendFormat( "bBuff = %d\n", bBuff );
			strBuffer.AppendFormat( "bShadowLand = %d\n", bShadowLand );
			strBuffer.AppendFormat( "bRealReflect = %d\n", bRealReflect );
			strBuffer.AppendFormat( "bRefract = %d\n", bRefract );
			strBuffer.AppendFormat( "bGlow = %d\n", bGlow );
			strBuffer.AppendFormat( "bPost = %d\n", bPost );
			strBuffer.AppendFormat( "bFrameLimit = %d\n", bFrameLimit );
			strBuffer.AppendFormat( "dwSkinDetail = %d\n", dwSkinDetail );
			strBuffer.AppendFormat( "bBUFF_SFX = %d\n", bBUFF_SFX );
			strBuffer.AppendFormat( "bEMOTICON = %d\n", bEMOTICON );
			strBuffer.AppendFormat( "dwFogRange = %d\n", dwFogRange );
			strBuffer.AppendFormat( "strFontType = %s\n", strFontType );
		}

		CRijndael oRijndael;
		oRijndael.Initialize( CRijndael::sm_Version[CRijndael::VERSION-1].c_str(), CRijndael::sm_KeyLength[CRijndael::VERSION-1] );

		int nLen = oRijndael.GetEncryptStringLength( strBuffer );
		char * szBuffer = new char[nLen];
		memset( szBuffer, 0, nLen );

		oRijndael.EncryptEx( strBuffer.GetString(), szBuffer, strBuffer.GetLength() );
		int nVersion = CRijndael::VERSION;

		if ( nVersion <= 0 && strlen( szBuffer ) <= 0 )	return FALSE;

		CFile file;
		if ( ! file.Open( strOptionFile.c_str(), CFile::modeCreate|CFile::modeWrite ) )	// 颇老 凯扁
		{
			delete [] szBuffer;
			return FALSE;
		}
		
		file.Write( &nVersion, sizeof(int) );							// 滚怜 静扁
		file.Write( szBuffer, nLen );		// 颇老 静扁
		file.Close();

		delete [] szBuffer;

		return TRUE;
	}

	std::string strIDPARAM;
	std::string strIDPARAM2;
	std::string strIDPARAM3;

	std::string strJPUUID;

	void SETIDPARAM( std::string strPARAM )		{ strIDPARAM = strPARAM; }
	void SETIDPARAM2( std::string strPARAM )	{ strIDPARAM2 = strPARAM; }
	void SETIDPARAM3( std::string strPARAM )	{ strIDPARAM3 = strPARAM; }
	void SETJAPANUUID( std::string strUUID )	{ strJPUUID = strUUID; }

	const TCHAR* GETIDPARAM()					{ return strIDPARAM.c_str(); }
	const TCHAR* GETIDPARAM2()					{ return strIDPARAM2.c_str(); }
	const TCHAR* GETIDPARAM3()					{ return strIDPARAM3.c_str(); }
	const TCHAR* GETJAPANUUID()					{ return strJPUUID.c_str(); }

	bool VALIDIDPARAM ()
	{
		switch ( emSERVICE_TYPE )
		{
//		Japan 肺弊牢 规侥 函版
//		case EMSERVICE_JAPAN:
//			return !strIDPARAM.empty() && !strIDPARAM2.empty() && !strIDPARAM3.empty();

		default:
			return !strIDPARAM.empty();
		};

		return false;
	}

	enum { emENCKEYLENG = MAX_COMPUTERNAME_LENGTH+32 };
	char szEncryptKEY[emENCKEYLENG] = "unnamed";

	void SETENCRYPT ()
	{
		//DWORD dwNAMELENG = emENCKEYLENG;
		//BOOL bOK = GetComputerName ( szEncryptKEY, &dwNAMELENG );
		//if ( !bOK )
		//{
		//	DWORD dwERR = GetLastError();
		//	CDebugSet::ToLogFile ( "error GetComputerName(), code : %d", dwERR );
		//}

		//StringCchCat ( szEncryptKEY, emENCKEYLENG, "XWeRtSOn32QwRtQs" );
		StringCchCopy ( szEncryptKEY, emENCKEYLENG, "XWeRtSOn32QwRtQs" );
	}

	void INIT_DATA()
	{
		bDIS_CONFT			= FALSE;		//	'磊悼' 措访 芭何.
		bDIS_TRADE			= FALSE;		//	'磊悼' 芭贰 芭何.
		bDIS_PARTY			= FALSE;		//	'磊悼' 颇萍 芭何.
		bDIS_FRIEND			= FALSE;		//	'磊悼' 模备 夸没 芭何.
		bSHOW_SIMPLEHP		= TRUE;
		b3D_SOUND			= FALSE;
		bSHOW_TIP			= TRUE;			//	屏 焊咯林扁
		bMOVABLE_ON_CHAT	= FALSE;		//	盲泼芒 困俊辑 框流捞扁
		bFORCED_ATTACK		= TRUE;			//	碍力 傍拜 - 吝惫
		bNAME_DISPLAY		= TRUE	;		//	捞抚 亲惑 钎矫
		bNON_Rebirth		= FALSE;		//  何劝 胶懦 陛瘤

		bCONFT_BOUND		= TRUE;			//	措访矫 康开 力茄 咯何.
		wCONFT_RECOVER		= 0;			//	措访矫 雀汗距 力茄.
		fCONFT_HP_RATE		= 1.0f;			//	措访矫 眉仿 犬措 厚啦.
		fCONFT_TAR_HP_RATE	= 1.0f;			//	措访矫 眉仿 犬措 厚啦 [ 惑措规(俺牢措访矫父) ].

		dwPARTY_GET_ITEM	= 3;			//	颇萍可记 酒捞袍 盒硅 痹蘑.(叼弃飘绰 鉴瞒嚼垫)
		dwPARTY_GET_MONEY	= 3;			//	颇萍可记 捣 盒硅 痹蘑.(叼弃飘绰 闭殿盒硅)

		int i=0; 

		for( i = 0; i < QUICK_SLOT_NUM; ++i){
			QuickSlot[i]  =	DefaultShotcutKey[i];
		}

		for( i = 0; i < QUICK_SKILL_NUM; ++i){
			SkillSlot[i]  =	DefaultShotcutKey[i+QUICK_SLOT_NUM];
		}

		for( i = 0; i < QUICK_MENU_NUM; ++i){
			MenuShotcut[i] = DefaultShotcutKey[i+QUICK_SLOT_NUM+QUICK_SKILL_NUM];
		}
		
		for( i = 0; i < CHAT_MACRO_NUM; ++i){
			ChatMacro[i] = "";
		}
	}

	BOOL SETCHARID( const TCHAR* szCHARID )
	{
		strENC_CHARID = szCHARID;
		
		return TRUE;
	}

	std::string GETCHARID()
	{
		return strENC_CHARID;
	}


	BOOL SETUSERID ( const TCHAR* szUSERID )
	{
		SETENCRYPT ();

		BYTE szENC_USERID[MAX_PATH] = "";

		size_t nKEYLENG = strlen ( szEncryptKEY );
		size_t nIDLENG = strlen ( szUSERID );
		compbyte::encrypt ( (UCHAR*) szEncryptKEY, (DWORD)nKEYLENG, (const UCHAR*) szUSERID, szENC_USERID, (DWORD)nIDLENG );
		compbyte::hex2string( szENC_USERID, (DWORD)nIDLENG, strENC_USERID );
	
		return TRUE;
	}

	std::string GETUSERID_ENC ()
	{
		return strENC_USERID;
	}

	std::string GETUSERID_DEC ()
	{
		SETENCRYPT ();

		const char* szENC_USERID = strENC_USERID.c_str();

		size_t nKEYLENG = strlen ( szEncryptKEY );
		size_t nIDLENG = strlen ( szENC_USERID );
		if ( nIDLENG == 0 )		return "";

		BYTE szHEX_USERID[MAX_PATH] = "";
		char szDEC_USERID[MAX_PATH] = "";

		SecureZeroMemory ( szHEX_USERID, MAX_PATH );
		SecureZeroMemory ( szDEC_USERID, MAX_PATH );

		BOOL bOK = compbyte::string2hex ( (UCHAR*)szENC_USERID, (UCHAR*) szHEX_USERID, (DWORD) nIDLENG );
		size_t nHEXLENG = strlen ( (char*) szHEX_USERID );

		compbyte::decrypt ( (UCHAR*) szEncryptKEY, (DWORD) nKEYLENG, (const UCHAR*) szHEX_USERID, (UCHAR*) szDEC_USERID, (DWORD) nHEXLENG );

		return szDEC_USERID;
	}

	BOOL LOAD_GAMEOPT ()
	{
		INIT_DATA();
		std::string strUSERID = GETCHARID(); // 颇老疙 啊廉坷绰 何盒...
		if ( strUSERID.empty() )
		{
			MessageBox ( NULL, "USERID啊 瘤沥登绢 乐瘤 臼酒 LOAD_GAMEOPT() 荐青阂啊.", "ERROR", MB_OK );
			return FALSE;
		}

		TCHAR szPROFILE[MAX_PATH]={0};
		SHGetSpecialFolderPath( NULL, szPROFILE, CSIDL_PERSONAL, FALSE );

		std::string strOPTFILE(szPROFILE);
		strOPTFILE += SUBPATH::PLAYINFO_ROOT;
		strOPTFILE += strUSERID;
		strOPTFILE += _T(".gameopt");

		gltexfile cFILE;
		cFILE.reg_sep ( '\t' );
//		cFILE.reg_sep ( ' ' );

		if ( !cFILE.open(strOPTFILE.c_str(),false) )	return FALSE;

		DWORD dwVER;
		bool bok = cFILE.getflag ( "EMGAMEOPT_VER", 1, 1, dwVER );
		if ( !bok )		return FALSE;		


		if( dwVER == EMGAMEOPT_VER ) // 盲泼 概农肺 滚傈
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );
			cFILE.getflag ( "bFORCED_ATTACK", 1, 1, bFORCED_ATTACK );
			cFILE.getflag ( "bNAME_DISPLAY", 1, 1, bNAME_DISPLAY );
			cFILE.getflag ( "bNON_Rebirth", 1, 1, bNON_Rebirth );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );

			CString strTemp;
			int i = 0;

			// QUICK_POTION_SHOTCUT
			for (i = 0; i< QUICK_SLOT_NUM; ++i){
				strTemp.Format("QUICK_SLOT%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, QuickSlot[i] );
			}

			// QUICK_SKILL_SHOTCUT
			for (i = 0; i< QUICK_SKILL_NUM; ++i){
				strTemp.Format("SKILL_SLOT%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, SkillSlot[i] );
			}


			// MENU_SHOTCUT
			cFILE.getflag ("SHOTCUT_INVEN", 1, 1, MenuShotcut[SHOTCUT_INVEN] );
			cFILE.getflag ("SHOTCUT_CHAR", 1, 1, MenuShotcut[SHOTCUT_CHAR] );
			cFILE.getflag ("SHOTCUT_SKILL", 1, 1, MenuShotcut[SHOTCUT_SKILL] );
			cFILE.getflag ("SHOTCUT_PARTY", 1, 1, MenuShotcut[SHOTCUT_PARTY] );
			cFILE.getflag ("SHOTCUT_QUEST", 1, 1, MenuShotcut[SHOTCUT_QUEST] );
			cFILE.getflag ("SHOTCUT_CLUB", 1, 1, MenuShotcut[SHOTCUT_CLUB] );
			cFILE.getflag ("SHOTCUT_FRIEND", 1, 1, MenuShotcut[SHOTCUT_FRIEND] );
			cFILE.getflag ("SHOTCUT_MAP", 1, 1, MenuShotcut[SHOTCUT_MAP] );
			cFILE.getflag ("SHOTCUT_ITEMBANK", 1, 1, MenuShotcut[SHOTCUT_ITEMBANK] );
			cFILE.getflag ("SHOTCUT_RUN", 1, 1, MenuShotcut[SHOTCUT_RUN] );
			cFILE.getflag ("SHOTCUT_HELP", 1, 1, MenuShotcut[SHOTCUT_HELP] );
			cFILE.getflag ("SHOTCUT_PET", 1, 1, MenuShotcut[SHOTCUT_PET] );
			cFILE.getflag ("SHOTCUT_ATTACKMODE", 1, 1, MenuShotcut[SHOTCUT_ATTACKMODE] );
			cFILE.getflag ("SHOTCUT_PKMODE", 1, 1, MenuShotcut[SHOTCUT_PKMODE] );
			cFILE.getflag ("SHOTCUT_ITEMSHOP", 1, 1, MenuShotcut[SHOTCUT_ITEMSHOP] );
			cFILE.getflag ("SHOTCUT_CHATMACRO", 1, 1, MenuShotcut[SHOTCUT_CHATMACRO] );
			cFILE.getflag ("SHOTCUT_SUMMON", 1, 1, MenuShotcut[SHOTCUT_SUMMON] );

			// 盲泼 概农肺
			for (i = 0; i< CHAT_MACRO_NUM; ++i){
				strTemp.Format("CHATMACRO%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 2, 2, ChatMacro[i] );
			}


		}
		if( dwVER == 0x0110 ) // 盲泼 概农肺 滚傈
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );
			cFILE.getflag ( "bFORCED_ATTACK", 1, 1, bFORCED_ATTACK );
			cFILE.getflag ( "bNAME_DISPLAY", 1, 1, bNAME_DISPLAY );
			cFILE.getflag ( "bNON_Rebirth", 1, 1, bNON_Rebirth );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );

			CString strTemp;
			int i = 0;

			// QUICK_POTION_SHOTCUT
			for (i = 0; i< QUICK_SLOT_NUM; ++i){
				strTemp.Format("QUICK_SLOT%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, QuickSlot[i] );
			}

			// QUICK_SKILL_SHOTCUT
			for (i = 0; i< QUICK_SKILL_NUM; ++i){
				strTemp.Format("SKILL_SLOT%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, SkillSlot[i] );
			}


			// MENU_SHOTCUT
			cFILE.getflag ("SHOTCUT_INVEN", 1, 1, MenuShotcut[SHOTCUT_INVEN] );
			cFILE.getflag ("SHOTCUT_CHAR", 1, 1, MenuShotcut[SHOTCUT_CHAR] );
			cFILE.getflag ("SHOTCUT_SKILL", 1, 1, MenuShotcut[SHOTCUT_SKILL] );
			cFILE.getflag ("SHOTCUT_PARTY", 1, 1, MenuShotcut[SHOTCUT_PARTY] );
			cFILE.getflag ("SHOTCUT_QUEST", 1, 1, MenuShotcut[SHOTCUT_QUEST] );
			cFILE.getflag ("SHOTCUT_CLUB", 1, 1, MenuShotcut[SHOTCUT_CLUB] );
			cFILE.getflag ("SHOTCUT_FRIEND", 1, 1, MenuShotcut[SHOTCUT_FRIEND] );
			cFILE.getflag ("SHOTCUT_MAP", 1, 1, MenuShotcut[SHOTCUT_MAP] );
			cFILE.getflag ("SHOTCUT_ITEMBANK", 1, 1, MenuShotcut[SHOTCUT_ITEMBANK] );
			cFILE.getflag ("SHOTCUT_RUN", 1, 1, MenuShotcut[SHOTCUT_RUN] );
			cFILE.getflag ("SHOTCUT_HELP", 1, 1, MenuShotcut[SHOTCUT_HELP] );
			cFILE.getflag ("SHOTCUT_PET", 1, 1, MenuShotcut[SHOTCUT_PET] );
			cFILE.getflag ("SHOTCUT_ATTACKMODE", 1, 1, MenuShotcut[SHOTCUT_ATTACKMODE] );
			cFILE.getflag ("SHOTCUT_PKMODE", 1, 1, MenuShotcut[SHOTCUT_PKMODE] );
			cFILE.getflag ("SHOTCUT_ITEMSHOP", 1, 1, MenuShotcut[SHOTCUT_ITEMSHOP] );
			cFILE.getflag ("SHOTCUT_CHATMACRO", 1, 1, MenuShotcut[SHOTCUT_CHATMACRO] );

			// 盲泼 概农肺
			for (i = 0; i< CHAT_MACRO_NUM; ++i){
				strTemp.Format("CHATMACRO%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 2, 2, ChatMacro[i] );
			}


		}
		if( dwVER == 0x0109 ) // 盲泼 概农肺 滚傈
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );
			cFILE.getflag ( "bFORCED_ATTACK", 1, 1, bFORCED_ATTACK );
			cFILE.getflag ( "bNAME_DISPLAY", 1, 1, bNAME_DISPLAY );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );

			CString strTemp;
			int i = 0;

			// QUICK_POTION_SHOTCUT
			for (i = 0; i< QUICK_SLOT_NUM; ++i){
				strTemp.Format("QUICK_SLOT%d", i);
                cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, QuickSlot[i] );
			}

			// QUICK_SKILL_SHOTCUT
			for (i = 0; i< QUICK_SKILL_NUM; ++i){
				strTemp.Format("SKILL_SLOT%d", i);
                cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, SkillSlot[i] );
			}


            // MENU_SHOTCUT
			cFILE.getflag ("SHOTCUT_INVEN", 1, 1, MenuShotcut[SHOTCUT_INVEN] );
			cFILE.getflag ("SHOTCUT_CHAR", 1, 1, MenuShotcut[SHOTCUT_CHAR] );
			cFILE.getflag ("SHOTCUT_SKILL", 1, 1, MenuShotcut[SHOTCUT_SKILL] );
			cFILE.getflag ("SHOTCUT_PARTY", 1, 1, MenuShotcut[SHOTCUT_PARTY] );
			cFILE.getflag ("SHOTCUT_QUEST", 1, 1, MenuShotcut[SHOTCUT_QUEST] );
			cFILE.getflag ("SHOTCUT_CLUB", 1, 1, MenuShotcut[SHOTCUT_CLUB] );
			cFILE.getflag ("SHOTCUT_FRIEND", 1, 1, MenuShotcut[SHOTCUT_FRIEND] );
			cFILE.getflag ("SHOTCUT_MAP", 1, 1, MenuShotcut[SHOTCUT_MAP] );
			cFILE.getflag ("SHOTCUT_ITEMBANK", 1, 1, MenuShotcut[SHOTCUT_ITEMBANK] );
			cFILE.getflag ("SHOTCUT_RUN", 1, 1, MenuShotcut[SHOTCUT_RUN] );
			cFILE.getflag ("SHOTCUT_HELP", 1, 1, MenuShotcut[SHOTCUT_HELP] );
			cFILE.getflag ("SHOTCUT_PET", 1, 1, MenuShotcut[SHOTCUT_PET] );
			cFILE.getflag ("SHOTCUT_ATTACKMODE", 1, 1, MenuShotcut[SHOTCUT_ATTACKMODE] );
			cFILE.getflag ("SHOTCUT_PKMODE", 1, 1, MenuShotcut[SHOTCUT_PKMODE] );
			cFILE.getflag ("SHOTCUT_ITEMSHOP", 1, 1, MenuShotcut[SHOTCUT_ITEMSHOP] );
			cFILE.getflag ("SHOTCUT_CHATMACRO", 1, 1, MenuShotcut[SHOTCUT_CHATMACRO] );

			// 盲泼 概农肺
			for (i = 0; i< CHAT_MACRO_NUM; ++i){
				strTemp.Format("CHATMACRO%d", i);
				cFILE.getflag ( (LPCTSTR)strTemp, 2, 2, ChatMacro[i] );
			}


		}
		else if ( dwVER==0x0108 ) // 窜绵虐 历厘 滚傈
		{ 
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );
			cFILE.getflag ( "bFORCED_ATTACK", 1, 1, bFORCED_ATTACK );
			cFILE.getflag ( "bNAME_DISPLAY", 1, 1, bNAME_DISPLAY );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );

			CString strTemp;
			int i = 0;

			// QUICK_POTION_SHOTCUT
			for (i = 0; i< QUICK_SLOT_NUM; ++i){
				strTemp.Format("QUICK_SLOT%d", i);
                cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, QuickSlot[i] );
			}

			// QUICK_SKILL_SHOTCUT
			for (i = 0; i< QUICK_SKILL_NUM; ++i){
				strTemp.Format("SKILL_SLOT%d", i);
                cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, SkillSlot[i] );
			}

			// QUICK_MENU_SHOTCUT
			for (i = 0; i< QUICK_MENU_NUM; ++i){
				strTemp.Format("MENU_SHOTCUT%d", i);
                cFILE.getflag ( (LPCTSTR)strTemp, 1, 1, MenuShotcut[i] );
			}
		}
		else if ( dwVER==0x0107 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );
			cFILE.getflag ( "bFORCED_ATTACK", 1, 1, bFORCED_ATTACK );
			cFILE.getflag ( "bNAME_DISPLAY", 1, 1, bNAME_DISPLAY );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}
		else if ( dwVER==0x0106 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );
			cFILE.getflag ( "bSHOW_TIP", 1, 1, bSHOW_TIP );
			cFILE.getflag ( "bMOVABLE_ON_CHAT", 1, 1, bMOVABLE_ON_CHAT );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}
		else if ( dwVER==0x0105 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );		
			cFILE.getflag ( "bSHOW_SIMPLEHP", 1, 1, bSHOW_SIMPLEHP );		

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}
		else if ( dwVER==0x0104 || dwVER==0x0103 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );
			cFILE.getflag ( "bDIS_FRIEND", 1, 1, bDIS_FRIEND );			

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}
		else if ( dwVER==0x0102 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}
		else if ( dwVER==0x0101 )
		{
			cFILE.getflag ( "bDIS_CONFT", 1, 1, bDIS_CONFT );
			cFILE.getflag ( "bDIS_TRADE", 1, 1, bDIS_TRADE );
			cFILE.getflag ( "bDIS_PARTY", 1, 1, bDIS_PARTY );

			cFILE.getflag ( "bCONFT_BOUND", 1, 1, bCONFT_BOUND );
			cFILE.getflag ( "wCONFT_RECOVER", 1, 1, wCONFT_RECOVER );
			cFILE.getflag ( "fCONFT_HP_RATE", 1, 1, fCONFT_HP_RATE );
			cFILE.getflag ( "fCONFT_TAR_HP_RATE", 1, 1, fCONFT_TAR_HP_RATE );

			cFILE.getflag ( "dwPARTY_GET_ITEM", 1, 1, dwPARTY_GET_ITEM );
			cFILE.getflag ( "dwPARTY_GET_MONEY", 1, 1, dwPARTY_GET_MONEY );
		}

		return TRUE;
	}

	BOOL SAVE_GAMEOPT ()
	{
		std::string strUSERID = GETCHARID(); // 颇老疙 啊廉坷绰 何盒...
		if ( strUSERID.empty() )
		{
			//MessageBox ( NULL, "USERID啊 瘤沥登绢 乐瘤 臼酒 SAVE_GAMEOPT() 荐青阂啊.", "ERROR", MB_OK );
			return FALSE;
		}
		
		TCHAR szPROFILE[MAX_PATH]={0};
		SHGetSpecialFolderPath( NULL, szPROFILE, CSIDL_PERSONAL, FALSE );

		std::string strOPTFILE(szPROFILE);
		strOPTFILE += SUBPATH::PLAYINFO_ROOT;
		strOPTFILE += strUSERID;
		strOPTFILE += _T(".gameopt");

		FILE* file=NULL;
		file = fopen ( strOPTFILE.c_str(), "wt" );
		if ( !file )	return FALSE;

		fprintf ( file, "\n" );
		fprintf ( file, "// GAME OPTION\n" );

		fprintf ( file, "EMGAMEOPT_VER\t%d\n", EMGAMEOPT_VER );
		fprintf ( file, "bDIS_CONFT\t%d\n", bDIS_CONFT );
		fprintf ( file, "bDIS_TRADE\t%d\n", bDIS_TRADE );
		fprintf ( file, "bDIS_PARTY\t%d\n", bDIS_PARTY );
		fprintf ( file, "bDIS_FRIEND\t%d\n", bDIS_FRIEND );	
		fprintf ( file, "bSHOW_SIMPLEHP\t%d\n", bSHOW_SIMPLEHP );	
		fprintf ( file, "bSHOW_TIP\t%d\n", bSHOW_TIP );
		fprintf ( file, "bMOVABLE_ON_CHAT\t%d\n", bMOVABLE_ON_CHAT );
		fprintf ( file, "bFORCED_ATTACK\t%d\n", bFORCED_ATTACK );
		fprintf ( file, "bNAME_DISPLAY\t%d\n", bNAME_DISPLAY );
		fprintf ( file, "bNON_Rebirth\t%d\n", bNON_Rebirth );

		fprintf ( file, "bCONFT_BOUND\t%d\n", bCONFT_BOUND );
		fprintf ( file, "wCONFT_RECOVER\t%d\n", wCONFT_RECOVER );
		fprintf ( file, "fCONFT_HP_RATE\t%1.1f\n", fCONFT_HP_RATE );
		fprintf ( file, "fCONFT_TAR_HP_RATE\t%1.1f\n", fCONFT_TAR_HP_RATE );

		fprintf ( file, "dwPARTY_GET_ITEM\t%d\n", dwPARTY_GET_ITEM );
		fprintf ( file, "dwPARTY_GET_MONEY\t%d\n", dwPARTY_GET_MONEY );


		CString strTemp;
		int i=0;

		// QUICK_POTION_SHOTCUT
		for (i=0; i< QUICK_SLOT_NUM; ++i){
			if(QuickSlot[i] > 0){
				strTemp.Format("QUICK_SLOT%d\t%d\n", i, QuickSlot[i]);			
				fprintf ( file, strTemp);
			}
		}

		// QUICK_SKILL_SHOTCUT
		for (i=0; i< QUICK_SKILL_NUM; ++i){
			if(SkillSlot[i] > 0){
				strTemp.Format("SKILL_SLOT%d\t%d\n", i, SkillSlot[i]);
				fprintf ( file, strTemp);
			}
		}

		// MENU_SHOTCUT
		fprintf ( file, "SHOTCUT_INVEN\t%d\n", MenuShotcut[SHOTCUT_INVEN] );
		fprintf ( file, "SHOTCUT_CHAR\t%d\n", MenuShotcut[SHOTCUT_CHAR] );
		fprintf ( file, "SHOTCUT_SKILL\t%d\n", MenuShotcut[SHOTCUT_SKILL] );
		fprintf ( file, "SHOTCUT_PARTY\t%d\n", MenuShotcut[SHOTCUT_PARTY] );
		fprintf ( file, "SHOTCUT_QUEST\t%d\n", MenuShotcut[SHOTCUT_QUEST] );
		fprintf ( file, "SHOTCUT_CLUB\t%d\n", MenuShotcut[SHOTCUT_CLUB] );
		fprintf ( file, "SHOTCUT_FRIEND\t%d\n", MenuShotcut[SHOTCUT_FRIEND] );
		fprintf ( file, "SHOTCUT_MAP\t%d\n", MenuShotcut[SHOTCUT_MAP] );
		fprintf ( file, "SHOTCUT_ITEMBANK\t%d\n", MenuShotcut[SHOTCUT_ITEMBANK] );
		fprintf ( file, "SHOTCUT_RUN\t%d\n", MenuShotcut[SHOTCUT_RUN] );
		fprintf ( file, "SHOTCUT_HELP\t%d\n", MenuShotcut[SHOTCUT_HELP] );
		fprintf ( file, "SHOTCUT_PET\t%d\n", MenuShotcut[SHOTCUT_PET] );
		fprintf ( file, "SHOTCUT_ATTACKMODE\t%d\n", MenuShotcut[SHOTCUT_ATTACKMODE] );
		fprintf ( file, "SHOTCUT_PKMODE\t%d\n", MenuShotcut[SHOTCUT_PKMODE] );
		fprintf ( file, "SHOTCUT_ITEMSHOP\t%d\n", MenuShotcut[SHOTCUT_ITEMSHOP] );
		fprintf ( file, "SHOTCUT_CHATMACRO\t%d\n", MenuShotcut[SHOTCUT_CHATMACRO] );
		fprintf ( file, "SHOTCUT_SUMMON\t%d\n", MenuShotcut[SHOTCUT_SUMMON] );

		// 盲泼 概农肺
		CString strMacro;
		for (i=0; i< CHAT_MACRO_NUM; ++i){
			if(ChatMacro[i].GetLength() > 0){
				strMacro = ChatMacro[i];
				strMacro.Replace("%", "%%");
				strTemp.Format("CHATMACRO%d\t=\t%s\n", i, strMacro);
				fprintf ( file, strTemp);
			}
		}


		fclose ( file );
	
		return TRUE;
	}

	
	BOOL LOAD_PARAM( const TCHAR *szRootPath )
	{
		strParamFile = strRootPath;
		strParamFile += "\\param.ini";

		CIniLoader cFILE;
		
		if( !cFILE.open( strParamFile, true) )
		{
			return FALSE;
		}

		// param.ini use not error msg box
		cFILE.SetUseErrorMsgBox( FALSE );

		{
			cFILE.getflag_sz( "SERVER SET", "LoginAddress", 0, 1, LoginAddress, STRING_NUM_128 );

			UINT nNum = cFILE.GetKeyDataSize( "SERVER SET", "HttpAddress" );

			memset( HttpAddressTable, 0, sizeof(HttpAddressTable) );
			
			for ( UINT i=0; i<nNum; ++i )
			{
				CString strHttpAddress;
				cFILE.getflag( "SERVER SET", "HttpAddress", i, nNum, strHttpAddress );
				strHttpAddress.Trim( _T(" ") );

				StringCchCopy( HttpAddressTable[i], STRING_NUM_128, strHttpAddress );
			}
			cFILE.getflag ( "SERVER SET", "strNewsURL", 0, 1, strNewsURL );
			cFILE.getflag ( "SERVER SET", "nPort", 0, 1, nPort );
			cFILE.getflag ( "SERVER SET", "strConnectionURL", 0, 1, strConnectionURL );
			cFILE.getflag ( "SERVER SET", "bUsePassiveDN", 0, 1, bUsePassiveDN );			
		}

		#ifdef CH_PARAM
		{
			CString strSection;

			for( UINT i=0; i<MAX_CHINA_REGION; ++i )
			{
				strSection.Format( "CH_REGION_%d", i );
				cFILE.getflag( strSection.GetString(), "strName", 0, 1, China_Region[i].strName );
				cFILE.getflag( strSection.GetString(), "LoginAddress", 0, 1, China_Region[i].LoginAddress );

				UINT nNum = cFILE.GetKeyDataSize( strSection.GetString(), "HttpAddress" );
				if( nNum > MAX_HTTP ) nNum = MAX_HTTP;
				for( UINT j=0; j<nNum; ++j )
				{
					cFILE.getflag( strSection.GetString(), "HttpAddress", j, nNum, China_Region[i].HttpAddressTable[j] );
					China_Region[i].HttpAddressTable[j].Trim( _T(" ") );
				}

				cFILE.getflag( strSection.GetString(), "strNewsURL", 0, 1, China_Region[i].strNewsURL );

				nNum = cFILE.GetKeyDataSize( strSection.GetString(), "ServerName" );
				if( nNum > MAX_SERVER ) nNum = MAX_SERVER;
				for( UINT j=0; j<nNum; ++j )
				{
					cFILE.getflag( strSection.GetString(), "ServerName", j, nNum, China_Region[i].ServerName[j] );
					China_Region[i].ServerName[j].Trim( _T(" ") );
				}

				cFILE.getflag( strSection.GetString(), "ItemShopAddress", 0, 1, China_Region[i].strItemShop );
			}
		}
		#endif

		{
			cFILE.getflag ( "GUI OPTION", "dwLangSet", 0, 1, dwLangSet );
			cFILE.getflag ( "GUI OPTION", "strGDIFont", 0, 1, strGDIFont );
		}

		{
			cFILE.getflag ( "TEXT FILE", "strCountry", 0, 1, strCountry );
			cFILE.getflag ( "TEXT FILE", "strLauncherText", 0, 1, strLauncherText );	
			cFILE.getflag ( "TEXT FILE", "strGameInText", 0, 1, strGameInText );
			cFILE.getflag ( "TEXT FILE", "strGameExText", 0, 1, strGameExText );
			cFILE.getflag ( "TEXT FILE", "strGameWord", 0, 1, strGameWord );
			cFILE.getflag ( "TEXT FILE", "strServerText", 0, 1, strServerText );

			cFILE.getflag ( "TEXT FILE", "strUIOuterCfg", 0, 1, strUIOuterCfg );
			cFILE.getflag ( "TEXT FILE", "strUIInnerCfg01", 0, 1, strUIInnerCfg01 );
			cFILE.getflag ( "TEXT FILE", "strUIInnerCfg02", 0, 1, strUIInnerCfg02 );
			cFILE.getflag ( "TEXT FILE", "strUIInnerCfg03", 0, 1, strUIInnerCfg03 );
			cFILE.getflag ( "TEXT FILE", "strUIExtCfg", 0, 1, strUIExtCfg );
		}

		// 档框富 昆 其捞瘤 林家, 酒流 荤侩 救窃 ( 霖酋 )
cFILE.getflag_sz( "ETC OPTION", "HelpAddress", 0, 1, HelpAddress, STRING_NUM_128 );
cFILE.getflag_sz( "ETC OPTION", "ItemShopAddress", 0, 1, ItemShopAddress, STRING_NUM_128 );
cFILE.getflag_sz( "ETC OPTION", "RPFDataPath", 0, 1, RPFDataPath, STRING_NUM_128 );

		//	Note : 蜡瓤己 眉农.
		//
		if ( COMMENT::FONTSYS[0]!=strFontType.GetString() && COMMENT::FONTSYS[1]!=strFontType.GetString() )
		{
			strFontType = COMMENT::FONTSYS[0].c_str();
		}		

		return TRUE;
	}

	
	BOOL LOAD_OPT( const TCHAR *szRootPath, bool bServer )
	{
		strOptionFile = strRootPath;
		strOptionFile += "\\option.ini";


		if ( !PathFileExists( strOptionFile.c_str() ) )
		{
			return FALSE;
		}

		CIniLoader cFILE;
		
		if( !cFILE.open( strOptionFile, true) )
		{
			return FALSE;
		}

		// param.ini use not error msg box
		cFILE.SetUseErrorMsgBox( FALSE );

		#ifndef KR_PARAM
		{
			if( !bServer )
			{
			//#ifndef TW_PARAM
			//	cFILE.getflag( "GAME OPTION", "bSAVE_USERID", 0, 1, bSAVE_USERID );
			//	if ( bSAVE_USERID )
			//#endif
				{
					cFILE.getflag( "GAME OPTION", "strENC_USERID", 0, 1, strENC_USERID );
					if ( strIDNULL == strENC_USERID )	strENC_USERID = "";
				}
			}
			//cFILE.getflag ( "GAME OPTION", "bDISP_CONSOLE", 0, 1, bDISP_CONSOLE );
			//cFILE.getflag ( "GAME OPTION", "bDISP_FPS", 0, 1, bDISP_FPS );
		}
		#endif

		cFILE.getflag( "GAME OPTION", "nChinaRegion", 0, 1, nChinaRegion );
		//cFILE.getflag( "GAME OPTION", "nPort", 0, 1, nPort );
		
		{
			cFILE.getflag ( "SCREEN OPTION", "bCHECKWHQL", 0, 1, bCHECKWHQL );
			cFILE.getflag ( "SCREEN OPTION", "dwScrWidth", 0, 1, dwScrWidth );
			cFILE.getflag ( "SCREEN OPTION", "dwScrHeight", 0, 1, dwScrHeight );
			int nTEMP(0);
			cFILE.getflag ( "SCREEN OPTION", "emScrFormat", 0, 1, nTEMP );
			emScrFormat = (EMSCREEN_FORMAT) nTEMP;
			cFILE.getflag ( "SCREEN OPTION", "uScrRefreshHz", 0, 1, uScrRefreshHz );
			cFILE.getflag ( "SCREEN OPTION", "bScrWindowed", 0, 1, bScrWindowed );
			cFILE.getflag ( "SCREEN OPTION", "bScrWndFullSize", 0, 1, bScrWndFullSize );
			cFILE.getflag ( "SCREEN OPTION", "bGameCursor", 0, 1, bGameCursor );
		}
		
		{
			cFILE.getflag ( "SOUND OPTION", "b3D_SOUND", 0, 1, b3D_SOUND );
			cFILE.getflag ( "SOUND OPTION", "nSndSfx", 0, 1, nSndSfx );
			cFILE.getflag ( "SOUND OPTION", "nSndMap", 0, 1, nSndMap );
			cFILE.getflag ( "SOUND OPTION", "nSndMusic", 0, 1, nSndMusic );
			cFILE.getflag ( "SOUND OPTION", "dw3DAlgorithm", 0, 1, dw3DAlgorithm );
			cFILE.getflag ( "SOUND OPTION", "dwSndBufferSize", 0, 1, dwSndBufferSize );
			cFILE.getflag ( "SOUND OPTION", "bSndMuteSfx", 0, 1, bSndMuteSfx );
			cFILE.getflag ( "SOUND OPTION", "bSndMuteMap", 0, 1, bSndMuteMap );
			cFILE.getflag ( "SOUND OPTION", "bSndMuteMusic", 0, 1, bSndMuteMusic );
		}

		{
			cFILE.getflag ( "GRAPHIC OPTION", "dwVideoLevel", 0, 1, dwVideoLevel );
			cFILE.getflag ( "GRAPHIC OPTION", "dwShadowChar", 0, 1, dwShadowChar );
			cFILE.getflag ( "GRAPHIC OPTION", "bBuff", 0, 1, bBuff );
			cFILE.getflag ( "GRAPHIC OPTION", "bShadowLand", 0, 1, bShadowLand );
			cFILE.getflag ( "GRAPHIC OPTION", "bRealReflect", 0, 1, bRealReflect );
			cFILE.getflag ( "GRAPHIC OPTION", "bRefract", 0, 1, bRefract );
			cFILE.getflag ( "GRAPHIC OPTION", "bGlow", 0, 1, bGlow );
			cFILE.getflag ( "GRAPHIC OPTION", "bPost", 0, 1, bPost );
			cFILE.getflag ( "GRAPHIC OPTION", "bFrameLimit", 0, 1, bFrameLimit );
			cFILE.getflag ( "GRAPHIC OPTION", "dwSkinDetail", 0, 1, dwSkinDetail );
			cFILE.getflag ( "GRAPHIC OPTION", "dwFogRange", 0, 1, dwFogRange );
			cFILE.getflag ( "GRAPHIC OPTION", "bBUFF_SFX", 0, 1, bBUFF_SFX );
			cFILE.getflag ( "GRAPHIC OPTION", "bEMOTICON", 0, 1, bEMOTICON );
			cFILE.getflag ( "GRAPHIC OPTION", "strFontType", 0, 1, strFontType );
		}

		if ( !bScrWndHalfSize )		bScrWndFullSize = TRUE;

		return TRUE;		
	}
};


add crypt.cpp & h under enginelib project

rebuild enginelib then build cryptionrcc. done




EDIT :
<-- download and put inside client directory (same directory with param.ini)
and encrypt AsenDURE.ini with your REditor.


NOTE : THIS ENCRYPTION ONLY CAN BE APPLIED FOR FILES INSIDE .RCC ONLY!

QUIT.


'SELAMAT HARI RAYA AIDILFITRI' :love:

Credits :
prisonmx : for the fresh source
seiferxiii : for forwarding the source to jdev
jdev : for fixing the fresh code
 
Last edited:
Joined
May 26, 2013
Messages
414
Reaction score
24
yeahh @AsenDure nice share... so I can encript rcc my virgin .. thank you ...
share ranviewer donk @Asendure,, saya pengen ngedit senjata sama momon... pleasseee...
source codenya gpp, yg udah jadi juga gpp...
 
Newbie Spellweaver
Joined
Oct 5, 2011
Messages
63
Reaction score
2
EngineLib_Korea.lib(SerialMemory.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z) referenced in function "public: int __thiscall CSerialMemory::OpenFile(char const *,char const *,bool,int)" (?OpenFile@CSerialMemory@@QAEHPBD0_NH@Z)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z)
EngineLib_Korea.lib(SerialMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
MfcExLib_Korea.lib(RANPARAM.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::LoadSetting(char const *)" (?LoadSetting@CCrypt@@YAXPBD@Z) referenced in function "int __cdecl RANPARAM::LOAD(char const *,bool)" (?LOAD@RANPARAM@@YAHPBD_N@Z)

?????
 
Last edited:
Experienced Elementalist
Joined
Nov 9, 2012
Messages
290
Reaction score
2
Nc. We Can encrypt In rcc :)

Compatible With Revenge Source Code?
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
Nc. We Can encrypt In rcc :)

Compatible With Revenge Source Code?

any source code. tested with base ep7 v1 source shared by jolin. works fine.

EngineLib_Korea.lib(SerialMemory.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z) referenced in function "public: int __thiscall CSerialMemory::OpenFile(char const *,char const *,bool,int)" (?OpenFile@CSerialMemory@@QAEHPBD0_NH@Z)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z)
EngineLib_Korea.lib(SerialMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
MfcExLib_Korea.lib(RANPARAM.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::LoadSetting(char const *)" (?LoadSetting@CCrypt@@YAXPBD@Z) referenced in function "int __cdecl RANPARAM::LOAD(char const *,bool)" (?LOAD@RANPARAM@@YAHPBD_N@Z)

?????

check the source again, add crypt.cpp & h under enginelib project
 
Last edited:
Newbie Spellweaver
Joined
Oct 5, 2011
Messages
63
Reaction score
2
ngineLib_Korea.lib(SerialMemory.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z) referenced in function "public: int __thiscall CSerialMemory::OpenFile(char const *,char const *,bool,int)" (?OpenFile@CSerialMemory@@QAEHPBD0_NH@Z)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z)
EngineLib_Korea.lib(SerialMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
MfcExLib_Korea.lib(RANPARAM.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::LoadSetting(char const *)" (?LoadSetting@CCrypt@@YAXPBD@Z) referenced in function "int __cdecl RANPARAM::LOAD(char const *,bool)" (?LOAD@RANPARAM@@YAHPBD_N@Z)

I use Juver Source
 
Skilled Illusionist
Joined
Jul 13, 2013
Messages
316
Reaction score
53
These works 100% , don't just copy paste the code , when i had these code took me awhile to find StringMemory and SerialMemory
also u need Gameset.ini
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
These works 100% , don't just copy paste the code , when i had these code took me awhile to find StringMemory and SerialMemory
also u need Gameset.ini

I've post stringmemory and serialmemory including :" find : '//add crypt' then add the code - compare the code posted with your codes"

I've test this before share it. without gameset.ini as you mentioned. it will work without error.

ngineLib_Korea.lib(SerialMemory.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z) referenced in function "public: int __thiscall CSerialMemory::OpenFile(char const *,char const *,bool,int)" (?OpenFile@CSerialMemory@@QAEHPBD0_NH@Z)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "void __cdecl CCrypt::Decryption(unsigned char *,int)" (?Decryption@CCrypt@@YAXPAEH@Z)
EngineLib_Korea.lib(SerialMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
EngineLib_Korea.lib(StringMemory.obj) : error LNK2001: unresolved external symbol "int CCrypt::bCryptRCC" (?bCryptRCC@CCrypt@@3HA)
MfcExLib_Korea.lib(RANPARAM.obj) : error LNK2019: unresolved external symbol "void __cdecl CCrypt::LoadSetting(char const *)" (?LoadSetting@CCrypt@@YAXPBD@Z) referenced in function "int __cdecl RANPARAM::LOAD(char const *,bool)" (?LOAD@RANPARAM@@YAHPBD_N@Z)

I use Juver Source

after apply those codes, save and rebuild enginelib, then build CryptionRCC
 
Last edited:
Newbie Spellweaver
Joined
Mar 15, 2007
Messages
84
Reaction score
41
-----------------------------------------------
ERROR REPORT
-----------------------------------------------
Execution time : 2013-08-08 10:10:49
[2013-08-08 10:10:50] ERROR : CIniLoader::eek:pen(), File Open AsenDURE.ini
[2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
-----------------------------------------------
ERROR REPORT
-----------------------------------------------
Execution time : 2013-08-08 10:10:49
[2013-08-08 10:10:50] ERROR : CIniLoader::eek:pen(), File Open AsenDURE.ini
[2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File

1st post updated.
 
-=GameOver=-
Joined
Jun 25, 2013
Messages
597
Reaction score
115
anyone else faced this error too ? I think this error is not about the source shared here since IsamaII manage to compile without error



yes I have it and I'm sorry it's not for share :)
then you mean your not really quit?..BTW that's good your the one here good for sharing much clear not just giving clues/puzzle development
 
Joined
Dec 5, 2011
Messages
808
Reaction score
236
I still got this error hahaha

-----------------------------------------------
ERROR REPORT
-----------------------------------------------
Execution time : 2013-08-08 10:10:49
[2013-08-08 10:10:50] ERROR : CIniLoader::eek:pen(), File Open AsenDURE.ini
[2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
I still got this error hahaha

encrypt AsenDURE.ini using your REditor.


AsenDURE.INI

Code:
[GAME_SET] 
dwCryptKey = 0 
bEngineDebug = 0

source:
Code:
namespace CCrypt
{
	BOOL	bCryptRCC = TRUE;
	BOOL	bEngineDebug = TRUE;

	void  LoadSetting( const TCHAR *szRootPath )
	{
		CString strFileName = szRootPath;
		strFileName += "\\AsenDURE.ini";

		CIniLoader cFILE;

		DWORD	dwKey = 0;
			
		if( cFILE.open( strFileName.GetString(), true) )
		{
			cFILE.SetUseErrorMsgBox( FALSE );

			cFILE.getflag ( "GAME_SET", "dwCryptKey", 0, 1, dwKey );
			cFILE.getflag ( "GAME_SET", "bEngineDebug", 0, 1, bEngineDebug );
		}
		else
		{
			CDebugSet::ToLogFile("CCrypt::LoadSetting Cant Load Setting File");
		}
		if ( dwKey == 7892756 )	bCryptRCC = FALSE;

	}
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
after applied the cryption codes, encrypt all files inside .rcc using your ran_crypt. then you can test it.
make sure you've encrypt all files inside rcc before run using emulator or game client. and dont forget to encryrpt files inside glogicserver.rcc too :3
 
Joined
Jan 23, 2010
Messages
992
Reaction score
264
after applied the cryption codes, encrypt all files inside .rcc using your ran_crypt. then you can test it.
make sure you've encrypt all files inside rcc before run using emulator or game client. and dont forget to encryrpt files inside glogicserver.rcc too :3

no share source you can build then share tool ranviewer or not?
 
Back
Top