From fb39a1c5d52bc72fda31520457776053a0ccf166 Mon Sep 17 00:00:00 2001 From: Cussrro Date: Thu, 19 Dec 2024 17:33:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/DNCashServer/DNCashServer.cpp | 5 ++ Server/DNDBServer/DNDBServer.cpp | 7 ++- Server/DNGameServer/DNGameServer.cpp | 35 +++++++----- Server/DNGameServer/DNMasterConnection.cpp | 56 +++++++++---------- Server/DNLogServer/DNLogServer.cpp | 16 ++++-- Server/DNLoginServer/DNLoginServer.cpp | 5 ++ Server/DNMasterServer/DNMasterServer.cpp | 5 ++ Server/DNVillageServer/DNVillageServer.cpp | 7 ++- Server/ServiceMonitorEx/ServiceMonitorEx.sln | 18 ++++++ Server/ServiceMonitorEx/Source/ConfigMngr.cpp | 4 +- .../Source/ServiceMonitor.vcxproj | 51 +++++++++++++++++ 11 files changed, 158 insertions(+), 51 deletions(-) diff --git a/Server/DNCashServer/DNCashServer.cpp b/Server/DNCashServer/DNCashServer.cpp index cb2d5c69..12952812 100644 --- a/Server/DNCashServer/DNCashServer.cpp +++ b/Server/DNCashServer/DNCashServer.cpp @@ -189,6 +189,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) g_Config.szResourceNation += szResNation; } } + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } #if defined(_KR) diff --git a/Server/DNDBServer/DNDBServer.cpp b/Server/DNDBServer/DNDBServer.cpp index 5a38ed7d..b1d043fb 100644 --- a/Server/DNDBServer/DNDBServer.cpp +++ b/Server/DNDBServer/DNDBServer.cpp @@ -191,6 +191,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) g_Config.szResourceNation += szResNation; } } + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } //나라마다 틀리고 고정 값은 공통으로 config에서 읽는다. @@ -366,7 +371,7 @@ bool InitApp(int argc, TCHAR * argv[]) g_Log.Log(LogType::_FILELOG, L"## AcceptPort (%d)\r\n", g_Config.nAcceptPort); } - if (argc > 1 && g_Config.nManagedID > 0) + if (g_Config.nManagedID > 0) { g_pIocpManager->CreateThread(); g_pServiceConnection = new CDNServiceConnection(g_Config.nManagedID); diff --git a/Server/DNGameServer/DNGameServer.cpp b/Server/DNGameServer/DNGameServer.cpp index e45fc3e4..fea67762 100644 --- a/Server/DNGameServer/DNGameServer.cpp +++ b/Server/DNGameServer/DNGameServer.cpp @@ -372,7 +372,7 @@ bool LoadConfig(int argc, TCHAR * argv[]) if (wszProbeStr[0] != '\0') WideCharToMultiByte(CP_ACP, 0, wszProbeStr, (int)wcslen(wszProbeStr), g_Config.szProbeIP, sizeof(g_Config.szProbeIP), NULL, NULL); - // ResourcePath ش. + // ResourcePath 등록해준다. WCHAR wszPath[_MAX_PATH] = { 0, }; char szPath[_MAX_PATH] = { 0, }; g_IniFile.GetValue( L"Resource", L"Path", wszPath ); @@ -427,6 +427,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) #endif } + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); + return true; } @@ -438,14 +443,14 @@ bool LoadNpcQuest() #endif // #if defined (_WORK) && defined (PRE_ADD_SERVER_LOAD_SHORTENING) g_pNpcQuestScriptManager->CreateLuaState(g_pGameServerManager->GetThreadCount()); - // 庰 npc ȭ & Ʈ ũƮ ε Ѵ. + // 각 쓰레드별로 npc 대화 & 퀘스트 관련 스크립트들을 전부 로딩 한다. for ( int i = 0 ; i < g_pGameServerManager->GetThreadCount(); i++ ) { lua_State* pLuaState = g_pNpcQuestScriptManager->OpenStateByIndex(i); DefAllAPIFunc(pLuaState); //----------------------------------------------------------------------------------------------------------- - // ũƮ ε + // 스크립트 공통 파일 먼저 로드 std::vector CommonFileList; g_Log.Log(LogType::_FILELOG, L"QuestNPC_Common...Folder : %S\n", CEtResourceMng::GetInstance().GetFullPath( "QuestNPC_Common" ).c_str()); CEtResourceMng::GetInstance().FindFileListAll_IgnoreExistFile( "QuestNPC_Common", "*.lua", CommonFileList ); @@ -738,10 +743,10 @@ bool InitApp(int argc, TCHAR * argv[]) g_pLogConnection->SetIp(g_Config.LogInfo.szIP); g_pLogConnection->SetPort(g_Config.LogInfo.nPort); - // Ȥó ؼ.. ϴ ǰ. + // 혹시나 해서.. 쓰레드 일단 다 생성되고. Sleep(1000); - if ((g_Config.nManagedID > 0) && g_Config.bUseCmd) + if (g_Config.nManagedID > 0) { g_pServiceConnection = new CDNServiceConnection(g_Config.nManagedID); if (!g_pServiceConnection) return false; @@ -764,7 +769,7 @@ bool InitApp(int argc, TCHAR * argv[]) #endif #if defined(_GPK) - // Shanda + // Shanda 보안 g_Config.pDynCode = GPKCreateSvrDynCode(); if (!g_Config.pDynCode){ g_Log.Log(LogType::_FILELOG, L"SvrDynCode NULL!!!\r\n"); @@ -801,7 +806,7 @@ bool InitApp(int argc, TCHAR * argv[]) return false; } - bool bChAuthRet = g_Config.pDynCode->LoadAuthFile("AuthData.dat"); // CSAuthõ + bool bChAuthRet = g_Config.pDynCode->LoadAuthFile("AuthData.dat"); // CSAuth관련된 애 if (bChAuthRet == false) { g_Log.Log(LogType::_FILELOG, L"LoadAuthFile [AuthData.dat] failed!!!\r\n"); @@ -829,8 +834,8 @@ void ClearApp() SAFE_DELETE(g_pActozShield); #endif // #if defined(_KRAZ) - // 2008.01.20 - // Connection ReconnectThread ȭ ̽ ReconnectThread + // 2008.01.20 김밥 + // Connection 과 ReconnectThread 간에 동기화 이슈로 ReconnectThread 먼저 종료 if( g_pIocpManager ) { g_pIocpManager->CloseAcceptors(); @@ -976,12 +981,12 @@ int _tmain(int argc, TCHAR* argv[]) setlocale(LC_ALL, "Korean"); #endif - // ó غ + // 예외 처리자 준비 //#if !defined(_FINAL_BUILD) - //unhandledexception ΰ쿡 ׻ Ǯ޸𸮴 - DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE, MiniDumpWithFullMemory); // Release C4744 ߻Ͽ Singleton , CExceptionReport::GetInstancePtr() inline ȭ ( : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) + //unhandledexception 인경우에는 항상 풀메모리덤프 + DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE, MiniDumpWithFullMemory); // Release 모드 컴파일 시 C4744 경고가 발생하여 Singleton 구현 변경, CExceptionReport::GetInstancePtr() 을 inline 화 하지 않음 (참고 : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) //#else // _FINAL_BUILD -// DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE); // Release C4744 ߻Ͽ Singleton , CExceptionReport::GetInstancePtr() inline ȭ ( : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) +// DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE); // Release 모드 컴파일 시 C4744 경고가 발생하여 Singleton 구현 변경, CExceptionReport::GetInstancePtr() 을 inline 화 하지 않음 (참고 : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) //#endif // _FINAL_BUILD if (NOERROR != dwRetVal) { DWORD dwErrNo = ::GetLastError(); @@ -1021,7 +1026,7 @@ int _tmain(int argc, TCHAR* argv[]) g_pIocpManager->VerifyAccept(ACCEPTOPEN_VERIFY_TYPE_APPINITCOMPLETE); g_Config.bAllLoaded = true; - wprintf(L"exit ġ \r\n"); + wprintf(L"exit 명령을 치면 종료\r\n"); //SetConsoleTitleA(FormatA("GameServer Rev.%s", revDNGameServer).c_str()); //rlkt_revision @@ -1118,7 +1123,7 @@ int _tmain(int argc, TCHAR* argv[]) { if (g_pDataManager->AllLoad() == false) { - _DANGER_POINT_MSG(L"reloadext !"); + _DANGER_POINT_MSG(L"reloadext 실패!"); break; } } diff --git a/Server/DNGameServer/DNMasterConnection.cpp b/Server/DNGameServer/DNMasterConnection.cpp index 66d309be..006abce9 100644 --- a/Server/DNGameServer/DNMasterConnection.cpp +++ b/Server/DNGameServer/DNMasterConnection.cpp @@ -64,7 +64,7 @@ bool CDNMasterConnection::GetActive() void CDNMasterConnection::Reconnect() { - // Ⱑ Ʋ DNMasterConnection ҽ \ ϸ ȵ~ + //이쪽은 동기가 틀려서 DNMasterConnection및 게임 리소스 억세스 하면 안데요~ if (!CConnection::GetActive() && !GetConnecting()) { SetConnecting(true); @@ -92,7 +92,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD { if (g_pDataManager->AllLoad() == false) { - _DANGER_POINT_MSG(L"ext reload Ͽϴ. ⵿ּ"); + _DANGER_POINT_MSG(L"ext reload에 실패하였습니다. 서버를 재기동해주세요"); } break; } @@ -116,10 +116,10 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD */ MARegist *pRegist = (MARegist*)pData; if (pRegist->cWorldSetID <= 0) - return ERROR_NONE; // 0̸ . 0̻ ѹ ´. + return ERROR_NONE; // 0이면 걍 무시. 0이상 값으로 어차피 한번 더 온다. m_cWorldSetID = pRegist->cWorldSetID; - m_cGameID = pRegist->cGameID; // Ϳ (Ӽ ĺ) + m_cGameID = pRegist->cGameID; //이 마스터에서의 나(게임서버의 식별자) g_pMasterConnectionManager->AddWorldIDConnection(m_nSessionID, m_cWorldSetID); //GameServerInfo Notice to MasterServer @@ -145,7 +145,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD CDNDBConnection *pDBCon = g_pDBConnectionManager->GetDBConnection(cThreadID); if (pDBCon) { - //ϸ鼭 ϴ + //시작하면서 얻어야 하는 것 모음 if (g_pEvent->IsInitWorld(m_cWorldSetID) == false) pDBCon->QueryEventList(cThreadID, m_cWorldSetID); @@ -204,7 +204,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD case MAGA_REQROOMID: { - //Ⱑ Ǵ Ʈ. + //여기가 게임이 진행이 되는 엔트리다. CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServer(); if (pServer) @@ -222,7 +222,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD case MAGA_REQTUTORIALROOMID: { - //Ⱑ Ǵ Ʈ. + //여기가 게임이 진행이 되는 엔트리다. CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServer(); if (pServer) pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID); @@ -320,7 +320,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD } } else - return false; //޼ ƴ϶ ó ѱ. + return false; //월드메세지가 아니라면 세션처리로 넘긴다. break; } @@ -495,7 +495,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD DN_CONTINUE; } - CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(pResetAuthNode->uiAccountDBID); //account id մϴ. + CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(pResetAuthNode->uiAccountDBID); //account id 여야합니다. if (pServer) { aA.nSessionID = pResetAuthNode->nSessionID; aA.nAccountDBID = pResetAuthNode->uiAccountDBID; @@ -507,38 +507,38 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD break; // Guild - case MAGA_DISMISSGUILD: // ü ˸ + case MAGA_DISMISSGUILD: // 길드 해체 알림 { g_pGuildManager->OnRecvMaDismissGuild(reinterpret_cast(pData)); } break; - case MAGA_ADDGUILDMEMBER: // ߰ ˸ + case MAGA_ADDGUILDMEMBER: // 길드원 추가 알림 { g_pGuildManager->OnRecvMaAddGuildMember(reinterpret_cast(pData)); } break; - case MAGA_DELGUILDMEMBER: // (Ż/߹) ˸ + case MAGA_DELGUILDMEMBER: // 길드원 제거 (탈퇴/추방) 알림 { g_pGuildManager->OnRecvMaDelGuildMember(reinterpret_cast(pData)); } break; - case MAGA_CHANGEGUILDINFO: // ˸ + case MAGA_CHANGEGUILDINFO: // 길드 정보 변경 알림 { g_pGuildManager->OnRecvMaChangeGuildInfo(reinterpret_cast(pData)); } break; - case MAGA_CHANGEGUILDMEMBERINFO: // ˸ + case MAGA_CHANGEGUILDMEMBERINFO: // 길드원 정보 변경 알림 { g_pGuildManager->OnRecvMaChangeGuildMemberInfo(reinterpret_cast(pData)); } break; - case MAGA_GUILDCHAT: // ä ˸ + case MAGA_GUILDCHAT: // 길드 채팅 알림 { g_pGuildManager->OnRecvMaGuildChat(reinterpret_cast(pData)); } @@ -587,7 +587,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD SetGuildWarStepIndex(GUILDWAR_STEP_NONE); bool bChangeEvent = false; - // ID Ʈ + // 스케쥴ID가 같으면 업데이트 if (GetGuildWarScheduleID() == pPacket->wScheduleID) { if (pPacket->cEventType == GUILDWAR_EVENT_START && GetGuildWarStepIndex() < pPacket->cEventStep) @@ -595,7 +595,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD else if (pPacket->cEventType == GUILDWAR_EVENT_END && GetGuildWarStepIndex() == pPacket->cEventStep) bChangeEvent = true; } - else // ID ٸ ο + else // 스케쥴ID가 다르면 새로운 등록 bChangeEvent = true; if (bChangeEvent) @@ -610,7 +610,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD if (pServer) pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID); } - // ̸ ʱȭ + // 마지막이면 초기화 if( pPacket->cEventStep == GUILDWAR_STEP_REWARD && pPacket->cEventType == GUILDWAR_EVENT_END ) GuildWarReset(); } @@ -644,7 +644,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD else SetGuildWarFinalPart(pPacket->cGuildFinalPart+1); - // ± õǾ ʱȭ + // 우승길드 셋팅되어 있으면 초기화 if( pPacket->cGuildFinalPart != GUILDWAR_FINALPART_NONE && m_PreWinGuildUID.IsSet() ) { MAGuildWarPreWinGuild aA; @@ -761,7 +761,7 @@ bool CDNMasterConnection::PreMessageProcess(int nMainCmd, int nSubCmd, char * pD pServer->StoreExternalBuffer(0, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID); } - // ǽð + // 실시간 보고 if (g_pServiceConnection) { if( g_pServiceConnection->GetSocketContextPtr() == NULL ) @@ -1088,13 +1088,13 @@ int CDNMasterConnection::MessageProcess(int nMainCmd, int nSubCmd, char * pData, UINT nAccountDBID; memcpy(&nAccountDBID, pData, sizeof(UINT)); - CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(nAccountDBID); //account id մϴ. - if (pServer) //ܺθ޼ Ľ + CDNRUDPGameServer * pServer = g_pGameServerManager->GetGameServerByAID(nAccountDBID); //account id 여야합니다. + if (pServer) //외부메세지 파싱 { pServer->StoreExternalBuffer(nAccountDBID, nMainCmd, nSubCmd, pData, nLen, EXTERNALTYPE_MASTER, m_cWorldSetID); return ERROR_NONE; } - // ⼭ ڸ Ÿ.. + // 여기서 만약 유저 자르라는 거면.. if( nMainCmd == MAGA_DETACHUSER ) { MADetachUser* pDetach = (MADetachUser*)pData; @@ -1686,7 +1686,7 @@ void CDNMasterConnection::SendChangeGuildMemberInfo(const TGuildUID pGuildUID, U MAChangeGuildMemberInfo Packet; memset(&Packet, 0, sizeof(MAChangeGuildMemberInfo)); - if(bReturn) //ڽ Ŷ ٽ ޾ƾϴ + if(bReturn) //자신이 패킷을 다시 받아야하는 경우 Packet.nManagedID = 0; else Packet.nManagedID = g_Config.nManagedID; @@ -1905,7 +1905,7 @@ void CDNMasterConnection::SendMasterSystemSyncGraduate( INT64 biCharacterDBID, W void CDNMasterConnection::SendMasterSystemSyncConnect( bool bIsConnect, WCHAR* pwszCharName, const TMasterSystemData* pMasterSystemData ) { - // ʿ䰡 . + // 사제 정보가 없으면 동기 맞출 필요가 없다. if( pMasterSystemData->SimpleInfo.cCharacterDBIDCount == 0 ) return; @@ -2043,7 +2043,7 @@ void CDNMasterConnection::SetGuildSecretMission(MASetGuildWarSecretMission* pSec { m_cSecretTeam = pSecret->cTeamCode; m_nSecretRandomSeed = pSecret->nRandomSeed; - if( m_nSecretRandomSeed == -1 ) // + if( m_nSecretRandomSeed == -1 ) // 해제 { memset (m_vSecretMissionID, 0x00, sizeof(m_vSecretMissionID)); return; @@ -2088,9 +2088,9 @@ void CDNMasterConnection::CalcTeamSecret() fSecretRate = 1.0f - fSecretRate; - // ũ θ Ǵ 츦 Ͽ ũ ǴѴ. + // 마스터 서버가 시크릿 여부를 판단 못할 경우를 대비하여 시크릿 중지여부 판단한다. if (fSecretRate < 0.02f) - m_cSecretTeam = 0; // + m_cSecretTeam = 0; // 해제 } void CDNMasterConnection::SetGuildWarSechdule(MASetGuildWarEventTime* SetGuildWarEventTime) diff --git a/Server/DNLogServer/DNLogServer.cpp b/Server/DNLogServer/DNLogServer.cpp index 98b8db8c..346eccbb 100644 --- a/Server/DNLogServer/DNLogServer.cpp +++ b/Server/DNLogServer/DNLogServer.cpp @@ -104,6 +104,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) swprintf(wszData, L"Log%dDBName", i + 1); g_IniFile.GetValue(L"LogDB", wszData, g_Config.LogDB[i].wszDBName); } + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } if (g_Config.nThreadMax > THREADMAX) g_Config.nThreadMax = THREADMAX; @@ -131,7 +136,7 @@ bool InitApp(int argc, TCHAR * argv[]) #if defined(_DEBUG) && defined(_WORK) if ( CheckWorkingFolder(L"out") == false ) { - wprintf(L"۾ 丮 ּ!!!! setworking folder error " ); + wprintf(L"累诀 叼泛配府甫 汲沥秦林技夸!!!! setworking folder error " ); } #endif @@ -211,7 +216,8 @@ bool InitApp(int argc, TCHAR * argv[]) } g_pIocpManager->CreateUpdateThread(); - if (argc > 1 && g_Config.nManagedID > 0) + // TODO(Cussrro): 优化配置项启动无法连接服务管理器 + if (g_Config.nManagedID > 0) { g_pIocpManager->CreateThread(); g_pServiceConnection = new CDNServiceConnection(g_Config.nManagedID); @@ -268,8 +274,8 @@ int _tmain(int argc, TCHAR* argv[]) setlocale(LC_ALL, "Korean"); #endif - // ó غ - DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE); // Release C4744 ߻Ͽ Singleton , CExceptionReport::GetInstancePtr() inline ȭ ( : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) + // 抗寇 贸府磊 霖厚 + DWORD dwRetVal = CExceptionReport::GetInstancePtr()->Open(_T(".\\"), TRUE, TRUE); // Release 葛靛 哪颇老 矫 C4744 版绊啊 惯积窍咯 Singleton 备泅 函版, CExceptionReport::GetInstancePtr() 阑 inline 拳 窍瘤 臼澜 (曼绊 : http://msdn.microsoft.com/ko-kr/library/a7za416f.aspx) if (NOERROR != dwRetVal) { DWORD dwErrNo = ::GetLastError(); DN_RETURN(dwErrNo); @@ -280,7 +286,7 @@ int _tmain(int argc, TCHAR* argv[]) return 0; } - wprintf(L"exit ġ \r\n"); + wprintf(L"exit 疙飞阑 摹搁 辆丰\r\n"); char szCmd[256] = {0}; while (1) diff --git a/Server/DNLoginServer/DNLoginServer.cpp b/Server/DNLoginServer/DNLoginServer.cpp index 272cfb5a..f82dbc13 100644 --- a/Server/DNLoginServer/DNLoginServer.cpp +++ b/Server/DNLoginServer/DNLoginServer.cpp @@ -372,6 +372,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) g_Config.szResourceNation += szResNation; } } + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } //나라마다 틀리고 고정 값은 공통으로 config에서 읽는다. diff --git a/Server/DNMasterServer/DNMasterServer.cpp b/Server/DNMasterServer/DNMasterServer.cpp index 0515d46d..33aa9777 100644 --- a/Server/DNMasterServer/DNMasterServer.cpp +++ b/Server/DNMasterServer/DNMasterServer.cpp @@ -332,6 +332,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) g_Config.szResourceNation += szResNation; } } + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } #if !defined(_FINAL_BUILD) diff --git a/Server/DNVillageServer/DNVillageServer.cpp b/Server/DNVillageServer/DNVillageServer.cpp index 0ee8a4d6..5a3b93e2 100644 --- a/Server/DNVillageServer/DNVillageServer.cpp +++ b/Server/DNVillageServer/DNVillageServer.cpp @@ -403,6 +403,11 @@ bool LoadConfig(int argc, TCHAR * argv[]) g_ConfigWork.AddCommand(wszBuf); } #endif // #if defined (_WORK) && defined (PRE_ADD_SERVER_LOAD_SHORTENING) + + g_IniFile.GetValue(L"ServerManagerEx", L"sid", &g_Config.nManagedID); + g_IniFile.GetValue(L"ServerManagerEx", L"ip", wszBuf); + WideCharToMultiByte(CP_ACP, NULL, wszBuf, -1, g_Config.ServiceInfo.szIP, sizeof(g_Config.ServiceInfo.szIP), NULL, NULL); + g_IniFile.GetValue(L"ServerManagerEx", L"port", &g_Config.ServiceInfo.nPort); } return true; @@ -831,7 +836,7 @@ bool InitApp(int argc, TCHAR * argv[]) _srand( timeGetTime() ); srand(timeGetTime()); - if ((g_Config.nManagedID > 0) && g_Config.bUseCmd) + if (g_Config.nManagedID > 0) { g_pServiceConnection = new CDNServiceConnection(g_Config.nManagedID); if (!g_pServiceConnection) return false; diff --git a/Server/ServiceMonitorEx/ServiceMonitorEx.sln b/Server/ServiceMonitorEx/ServiceMonitorEx.sln index fa2b2c20..6cc0ee6d 100644 --- a/Server/ServiceMonitorEx/ServiceMonitorEx.sln +++ b/Server/ServiceMonitorEx/ServiceMonitorEx.sln @@ -35,6 +35,8 @@ Global Debug_US|x64 = Debug_US|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + Release_TW|Win32 = Release_TW|Win32 + Release_TW|x64 = Release_TW|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Debug_CH|Win32.ActiveCfg = Debug_CH|Win32 @@ -70,6 +72,10 @@ Global {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Debug|Win32.ActiveCfg = Debug|Win32 {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Debug|Win32.Build.0 = Debug|Win32 {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Debug|x64.ActiveCfg = Debug|Win32 + {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Release_TW|Win32.ActiveCfg = Release_TW|Win32 + {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Release_TW|Win32.Build.0 = Release_TW|Win32 + {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Release_TW|x64.ActiveCfg = Release_TW|Win32 + {E4D84736-5D71-42D3-A5E7-56B5DAA1517A}.Release_TW|x64.Build.0 = Release_TW|Win32 {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug_CH|Win32.ActiveCfg = DebugMFCShared|Win32 {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug_CH|Win32.Build.0 = DebugMFCShared|Win32 {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug_CH|x64.ActiveCfg = Debug_TW|Win32 @@ -103,6 +109,10 @@ Global {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug|Win32.ActiveCfg = DebugMFCShared|Win32 {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug|Win32.Build.0 = DebugMFCShared|Win32 {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Debug|x64.ActiveCfg = DebugMFCShared|Win32 + {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Release_TW|Win32.ActiveCfg = Release_TW|Win32 + {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Release_TW|Win32.Build.0 = Release_TW|Win32 + {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Release_TW|x64.ActiveCfg = Release_TW|Win32 + {0946B82D-46C5-4EEE-8FC9-884CBDBC4EAB}.Release_TW|x64.Build.0 = Release_TW|Win32 {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug_CH|Win32.ActiveCfg = Debug|Win32 {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug_CH|Win32.Build.0 = Debug|Win32 {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug_CH|x64.ActiveCfg = Debug_TW|x64 @@ -147,6 +157,10 @@ Global {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug|Win32.Build.0 = Debug|Win32 {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug|x64.ActiveCfg = Debug|x64 {BE23CF77-921D-4747-A02A-038DB1E487E2}.Debug|x64.Build.0 = Debug|x64 + {BE23CF77-921D-4747-A02A-038DB1E487E2}.Release_TW|Win32.ActiveCfg = Release_TW|Win32 + {BE23CF77-921D-4747-A02A-038DB1E487E2}.Release_TW|Win32.Build.0 = Release_TW|Win32 + {BE23CF77-921D-4747-A02A-038DB1E487E2}.Release_TW|x64.ActiveCfg = Release_TW|x64 + {BE23CF77-921D-4747-A02A-038DB1E487E2}.Release_TW|x64.Build.0 = Release_TW|x64 {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug_CH|Win32.ActiveCfg = Debug|Win32 {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug_CH|Win32.Build.0 = Debug|Win32 {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug_CH|x64.ActiveCfg = Debug_TW|x64 @@ -191,6 +205,10 @@ Global {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug|Win32.Build.0 = Debug|Win32 {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug|x64.ActiveCfg = Debug|x64 {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Debug|x64.Build.0 = Debug|x64 + {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Release_TW|Win32.ActiveCfg = Release_TW|Win32 + {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Release_TW|Win32.Build.0 = Release_TW|Win32 + {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Release_TW|x64.ActiveCfg = Release_TW|x64 + {89343DCF-FB2E-4A86-83BF-9AD3DCA0062B}.Release_TW|x64.Build.0 = Release_TW|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Server/ServiceMonitorEx/Source/ConfigMngr.cpp b/Server/ServiceMonitorEx/Source/ConfigMngr.cpp index ad1435f5..538cdb2b 100644 --- a/Server/ServiceMonitorEx/Source/ConfigMngr.cpp +++ b/Server/ServiceMonitorEx/Source/ConfigMngr.cpp @@ -51,7 +51,9 @@ DWORD CConfigMngr::Open(LPCTSTR pFileName) { TCHAR aIpAddress[DF_IPADDR_SIZE] = { _T('\0'), }; aRetVal = m_IniFile.GetValue(_T("ServiceManager"), _T("IpAddress"), aIpAddress); - if (_T('') == aIpAddress[0]) + + // TODO(Cussrro): 修复空字符常量 + if (_T(' ') == aIpAddress[0]) _tcsncpy_s(aIpAddress, _countof(aIpAddress), _T("0.0.0.0"), _countof(aIpAddress)); { USES_CONVERSION; diff --git a/Server/ServiceMonitorEx/Source/ServiceMonitor.vcxproj b/Server/ServiceMonitorEx/Source/ServiceMonitor.vcxproj index 529808ab..cd126db9 100644 --- a/Server/ServiceMonitorEx/Source/ServiceMonitor.vcxproj +++ b/Server/ServiceMonitorEx/Source/ServiceMonitor.vcxproj @@ -45,6 +45,10 @@ Debug Win32 + + Release_TW + Win32 + Release Win32 @@ -83,6 +87,12 @@ Static Unicode + + Application + v143 + Static + Unicode + Application v143 @@ -147,6 +157,9 @@ + + + @@ -220,6 +233,12 @@ ..\..\build\release\temps\ServiceMonitorEx\ true + + ..\..\build\server\ + ..\..\build\release\temps\ServiceMonitorEx\ + true + $(IncludePath);$(SolutionDir)..\..\Third\dx9sdk\dx9sdk\dx9sdk\Include;$(IncludePath) + $(Configuration)\ $(Configuration)\ @@ -514,6 +533,37 @@ MachineX86 + + + _DEBUG;%(PreprocessorDefinitions) + false + false + + + Disabled + ..\External\UltimateToolbox\include;..\..\ServerCommon;..\..\..\Common;..\..\..\Common\Protocol;..\..\..\Common\Utility;..\..\..\Common\Tinyxml;..\..\..\Common\NetworkLib;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;_DEBUG;_TW;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreaded + Use + Level4 + EditAndContinue + 4819;4996;%(DisableSpecificWarnings) + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(IntDir);%(AdditionalIncludeDirectories) + + + D:\projects\cpp\DragonNest\Server\ServiceMonitorEx\External\UltimateToolbox\build\release\librarys\UTStaticLib.lib;%(AdditionalDependencies) + true + Windows + MachineX86 + + _DEBUG;%(PreprocessorDefinitions) @@ -760,6 +810,7 @@ Create Create Create + Create Create Create Create