Elite Diviner
- Joined
- Sep 29, 2016
- Messages
- 461
- Reaction score
- 10
Re.upload files please...dead link...thanks
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
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
You must be registered to see links
EDIT :
You must be registered to see links<-- 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
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
You must be registered to see links
EDIT :
You must be registered to see links<-- 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