ClientListEntry* ClientList::CheckAuth(const char* iName, const char* iPassword) { LinkedListIterator<ClientListEntry*> iterator(clientlist); MD5 tmpMD5(iPassword); iterator.Reset(); while(iterator.MoreElements()) { if (iterator.GetData()->CheckAuth(iName, tmpMD5)) return iterator.GetData(); iterator.Advance(); } int16 tmpadmin; _log(WORLD__ZONELIST,"Login with '%s' and '%s'", iName, iPassword); uint32 accid = database.CheckLogin(iName, iPassword, &tmpadmin); if (accid) { ClientListEntry* tmp = new ClientListEntry(GetNextCLEID(), accid, iName, tmpMD5, tmpadmin); clientlist.Append(tmp); return tmp; } return 0; }
ClientListEntry* ClientList::CheckAuth(const char* iName, const char* iPassword) { LinkedListIterator<ClientListEntry*> iterator(clientlist); MD5 tmpMD5(iPassword); iterator.Reset(); while(iterator.MoreElements()) { if (iterator.GetData()->CheckAuth(iName, tmpMD5)) return iterator.GetData(); iterator.Advance(); } int16 tmpadmin; //Log.LogDebugType(Logs::Detail, Logs::World_Server,"Login with '%s' and '%s'", iName, iPassword); uint32 accid = database.CheckLogin(iName, iPassword, &tmpadmin); if (accid) { uint32 lsid = 0; database.GetAccountIDByName(iName, &tmpadmin, &lsid); auto tmp = new ClientListEntry(GetNextCLEID(), lsid, iName, tmpMD5, tmpadmin, 0, 0); clientlist.Append(tmp); return tmp; } return 0; }
void ExportLanguage() { std::map<uint32_t, std::map<ELanguageType, TString> > languageServerErrCodeMap; ReadServerErrCodeFile(languageServerErrCodeMap); std::map<TString, std::map<ELanguageType, TString> >& languageMap = CLanguageManager::GetInstance()->GetLanguageMap(); // 1. Export Bin File. CSerializer fileData; for (int i = 0; i < eLT_Count; ++i) { fileData << languageMap.size(); for (auto iter = languageMap.begin(); iter != languageMap.end(); ++iter) { auto subIter = iter->second.find((ELanguageType)i); if (subIter != iter->second.end()) { fileData << subIter->second; } else { fileData << iter->first; } } bool bRet = false; for (auto iter : languageServerErrCodeMap) { auto subIter = iter.second.find((ELanguageType)i); if (subIter != iter.second.end()) { if (!bRet) { fileData << languageServerErrCodeMap.size(); bRet = true; } fileData << iter.first; fileData << iter.second[(ELanguageType)i]; } } TString strFilePath = CResourceManager::GetInstance()->GetResourcePath(eRT_Language); strFilePath.append(_T("/")).append(pszLanguageTypeString[i]).append(_T(".bin")); fileData.Deserialize(strFilePath.c_str(), _T("wb+")); fileData.Reset(); } //2. Export enum file. std::string content; content.append("#ifndef BEYONDENGINEEDITOR_LANGUAGEENUM_H__INCLUDE\n#define BEYONDENGINEEDITOR_LANGUAGEENUM_H__INCLUDE\n").append("\nenum ELanguageTextType\n{\n"); for (auto iter = languageMap.begin(); iter != languageMap.end(); iter++) { content.append(" ").append(iter->first.c_str()).append(",\n"); } content.append("\n eL_Count,\n").append(" eL_Force32Bit = 0xFFFFFFFF\n};\n"); content.append("#define LUA_LANGUAGE_MAP(LM)\\\n"); int32_t nCounter = 0; for (auto iter = languageMap.begin(); iter != languageMap.end(); ++iter) { TCHAR szValueBuffer[32]; _stprintf(szValueBuffer, "%d", nCounter++); content.append(" ").append("LM(").append(iter->first.c_str()).append(",").append(szValueBuffer).append(")\\\n"); } content.append("\n#endif"); fileData.Reset(); fileData << content; fileData.SetWritePos(fileData.GetWritePos() - 1);// back scape the 0 in the string end. bool bFileTheSame = false; const TString strHeaderFilePath = CResourceManager::GetInstance()->GetResourcePath(eRT_SourceCode) + _T("/Language/Language.h"); if (CFilePathTool::GetInstance()->Exists(strHeaderFilePath.c_str())) { CSerializer tmpData(strHeaderFilePath.c_str(), "rb"); if (tmpData.GetWritePos() == fileData.GetWritePos()) { CMD5 tmpMD5(tmpData.GetBuffer(), tmpData.GetWritePos()); CMD5 currentMD5(fileData.GetBuffer(), fileData.GetWritePos()); bFileTheSame = tmpMD5 == currentMD5; } } if (!bFileTheSame) { fileData.Deserialize(strHeaderFilePath.c_str(), _T("wb+")); } //3. Export txt file. for (int i = 0; i < eLT_Count; ++i) { bool bHasData = false; fileData.Reset(); for (auto iter = languageMap.begin(); iter != languageMap.end(); ++iter) { auto subIter = iter->second.find((ELanguageType)i); if (subIter != iter->second.end()) { TString strData = (TString)(wxString::FromUTF8(subIter->second.c_str())); if (!bHasData && !strData.empty()) { bHasData = true; } fileData << strData; fileData.SetWritePos(fileData.GetWritePos() - 1); } fileData << "\n"; fileData.SetWritePos(fileData.GetWritePos() - 1); } if (bHasData) { TString strFilePath = CResourceManager::GetInstance()->GetResourcePath(eRT_Resource); strFilePath.append(_T("/")).append(pszLanguageTypeString[i]).append(_T(".txt")); fileData.Deserialize(strFilePath.c_str(), _T("wt+")); } } fileData.Reset(); const std::map<TString, TString>& languageTagMap = CLanguageManager::GetInstance()->GetLanguageTagMap(); for (auto iter = languageTagMap.begin(); iter != languageTagMap.end(); ++iter) { TString strData = (TString)(wxString::FromUTF8(iter->second.c_str())); fileData << strData; fileData.SetWritePos(fileData.GetWritePos() - 1); fileData << "\n"; fileData.SetWritePos(fileData.GetWritePos() - 1); } TString strFilePath = CResourceManager::GetInstance()->GetResourcePath(eRT_Resource); strFilePath.append(_T("/")).append("Tag").append(_T(".txt")); fileData.Deserialize(strFilePath.c_str(), _T("wt+")); fileData.Reset(); for (auto iter = languageMap.begin(); iter != languageMap.end(); ++iter) { TString strData = (TString)(wxString::FromUTF8(iter->first.c_str())); fileData << strData; fileData.SetWritePos(fileData.GetWritePos() - 1); fileData << "\n"; fileData.SetWritePos(fileData.GetWritePos() - 1); } strFilePath = CResourceManager::GetInstance()->GetResourcePath(eRT_Resource); strFilePath.append(_T("/")).append(_T("Enum.txt")); fileData.Deserialize(strFilePath.c_str(), _T("wt+")); }