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

Page 1 of 5 12345 LastLast
Results 1 to 15 of 66
  1. #1
    荷希 (糖糖姐姐) AsenDURE is offline
    True MemberRank
    Mar 2012 Join Date
    MalaysiaLocation
    756Posts

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

    CryptionRCC Source Code



    Screenshot :



    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"//add crypt
    
    #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 )//add crypt
    	{
    		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"//add crypt
    
    #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 )//add crypt
    	{
    		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"//add crypt
    
    #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 );//add crypt
    		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


    >>Click here to download<<

    EDIT :
    Asendure.ini <-- 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'

    Credits :
    prisonmx : for the fresh source
    seiferxiii : for forwarding the source to jdev
    jdev : for fixing the fresh code
    Last edited by AsenDURE; 13-06-21 at 09:59 AM. Reason: Re-upload Source


  2. #2
    Account Upgraded | Title Enabled! SixTeam is offline
    True MemberRank
    May 2013 Join Date
    City Banana'sLocation
    412Posts

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

    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...

  3. #3
    Member pomza is offline
    MemberRank
    Oct 2011 Join Date
    63Posts

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

    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 by pomza; 07-08-13 at 11:46 PM.

  4. #4
    Account Upgraded | Title Enabled! Christian1221 is offline
    True MemberRank
    Nov 2012 Join Date
    Wilmington, NorLocation
    295Posts

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

    Nc. We Can encrypt In rcc :)

    Compatible With Revenge Source Code?

  5. #5
    荷希 (糖糖姐姐) AsenDURE is offline
    True MemberRank
    Mar 2012 Join Date
    MalaysiaLocation
    756Posts

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

    Quote Originally Posted by Christian1221 View Post
    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.

    Quote Originally Posted by pomza View Post
    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 by AsenDURE; 08-08-13 at 01:28 AM.

  6. #6
    Member pomza is offline
    MemberRank
    Oct 2011 Join Date
    63Posts

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

    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

  7. #7
    Dark Carnival JerMTheSLayer is offline
    True MemberRank
    Jul 2013 Join Date
    316Posts

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

    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

  8. #8
    荷希 (糖糖姐姐) AsenDURE is offline
    True MemberRank
    Mar 2012 Join Date
    MalaysiaLocation
    756Posts

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

    Quote Originally Posted by JerMTheSLayer View Post
    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.

    Quote Originally Posted by pomza View Post
    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 by AsenDURE; 08-08-13 at 01:46 AM.

  9. #9
    Member pomza is offline
    MemberRank
    Oct 2011 Join Date
    63Posts

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

    LINK : fatal error LNK1181: cannot open input file 'dxerr9.lib'

    error ?

  10. #10
    Hardcore Member IsamaII is online now
    MemberRank
    Mar 2007 Join Date
    121Posts

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

    -----------------------------------------------
    ERROR REPORT
    -----------------------------------------------
    Execution time : 2013-08-08 10:10:49
    [2013-08-08 10:10:50] ERROR : CIniLoader::open(), File Open AsenDURE.ini
    [2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File

  11. #11
    荷希 (糖糖姐姐) AsenDURE is offline
    True MemberRank
    Mar 2012 Join Date
    MalaysiaLocation
    756Posts

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

    Quote Originally Posted by IsamaII View Post
    -----------------------------------------------
    ERROR REPORT
    -----------------------------------------------
    Execution time : 2013-08-08 10:10:49
    [2013-08-08 10:10:50] ERROR : CIniLoader::open(), File Open AsenDURE.ini
    [2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File
    1st post updated.

  12. #12
    Member pomza is offline
    MemberRank
    Oct 2011 Join Date
    63Posts

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

    LINK : fatal error LNK1181: cannot open input file 'dxerr9.lib'

  13. #13
    荷希 (糖糖姐姐) AsenDURE is offline
    True MemberRank
    Mar 2012 Join Date
    MalaysiaLocation
    756Posts

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

    Quote Originally Posted by pomza View Post
    LINK : fatal error LNK1181: cannot open input file 'dxerr9.lib'
    anyone else faced this error too ? I think this error is not about the source shared here since IsamaII manage to compile without error

    Quote Originally Posted by blackcatyb View Post
    you have source RanViewer ?
    yes I have it and I'm sorry it's not for share :)

  14. #14
    -=GameOver=- Ace17 is offline
    True MemberRank
    Jun 2013 Join Date
    598Posts

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

    Quote Originally Posted by AsenDURE View Post
    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

  15. #15
    Compiling... Page Not Found is offline
    True MemberRank
    Dec 2011 Join Date
    MotherboardLocation
    820Posts

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

    I still got this error hahaha

    -----------------------------------------------
    ERROR REPORT
    -----------------------------------------------
    Execution time : 2013-08-08 10:10:49
    [2013-08-08 10:10:50] ERROR : CIniLoader::open(), File Open AsenDURE.ini
    [2013-08-08 10:10:50] CCrypt::LoadSetting Cant Load Setting File



Page 1 of 5 12345 LastLast

Advertisement