#include "stdafx.h" #include "./Handler_FromGameServer.Ranking.h" #ifdef _NA002635_GP_DP_PROTOCOL_UINIFICATION_IN_DBP //================================================================================================== #include #include #include #include #include #include #include "QueryObjects/PortalServerQuery.h" #include "Sessions/ChildServerSession.h" #include "Services/PortalRankingManager.h" //================================================================================================== // CHANGES: f110518.2L const nsPacket::PacketHandlerInfo Handler_GP::GetPacketHandlerNodes() { #define HANDLER_NODE_INFO(c, p, phase) { MAKEWORD(c, p), false, phase, Handler_GP::On##p } #define HANDLER_NODE_INFO_DBR(c, p, phase) { MAKEWORD(c, p), true, phase, Handler_GP::On##p } #define HANDLER_NODE_INFO_EOR() { 0, false, static_cast(0), NULL } static const nsPacket::PacketHandlerNode handlers_static_[] = { #ifdef _NA_008012_20150130_RANKING_SYSTEM // HANDLER_NODE_INFO(GP_RANKING, GP_RANKING_INFO_REQ_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GP_RANKING, GP_RANKING_MISSION_CLEAR_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GP_RANKING, GP_RANKING_MISSION_REWARD_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GP_RANKING, GP_RANKING_SETTLE_CMD, PHASE_UNLIMITED), HANDLER_NODE_INFO(GP_RANKING, GP_RANKING_REGISTER_MISSION_POINT_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GP_RANKING, GP_MISSION_RANKING_SETTLE_DATE_SYN, PHASE_UNLIMITED), // #endif // _NA_008012_20150130_RANKING_SYSTEM HANDLER_NODE_INFO_EOR() // end of records }; BOOST_STATIC_ASSERT(_countof(handlers_static_) >= 1); nsPacket::PacketHandlerInfo return_value = { handlers_static_, _countof(handlers_static_) - 1 }; // return return_value; #undef HANDLER_NODE_INFO #undef HANDLER_NODE_INFO_DBR #undef HANDLER_NODE_INFO_EOR }; //================================================================================================== // CHANGES: f110518.2L const nsPacket::PacketHandlerInfo Handler_P2D::GetPacketHandlerNodes() { #define HANDLER_NODE_INFO(c, p, phase) { MAKEWORD(c, p), false, phase, Handler_P2D::On##p } #define HANDLER_NODE_INFO_DBR(c, p, phase) { MAKEWORD(c, p), true, phase, Handler_P2D::On##p } #define HANDLER_NODE_INFO_EOR() { 0, false, static_cast(0), NULL } static const nsPacket::PacketHandlerNode handlers_static_[] = { // #ifdef _NA_008012_20150130_RANKING_SYSTEM HANDLER_NODE_INFO_DBR(DP_RANKING, DP_RANKING_INFO_REQ_DBR, PHASE_UNLIMITED), HANDLER_NODE_INFO_DBR(DP_RANKING, DP_RANKING_MISSION_CLEAR_DBR, PHASE_UNLIMITED), HANDLER_NODE_INFO_DBR(DP_RANKING, DP_RANKING_MISSION_REWARD_DBR, PHASE_UNLIMITED), HANDLER_NODE_INFO_DBR(DP_RANKING, DP_RANKING_REGISTER_MISSION_POINT_DBR, PHASE_UNLIMITED), #endif // _NA_008012_20150130_RANKING_SYSTEM // HANDLER_NODE_INFO_EOR() // end of records }; BOOST_STATIC_ASSERT(_countof(handlers_static_) >= 1); nsPacket::PacketHandlerInfo return_value = { handlers_static_, _countof(handlers_static_) - 1 }; // return return_value; #undef HANDLER_NODE_INFO #undef HANDLER_NODE_INFO_DBR #undef HANDLER_NODE_INFO_EOR }; //================================================================================================== //================================================================================================== //================================================================================================== #ifdef _NA_008012_20150130_RANKING_SYSTEM Handler_P2D_IMPL(DP_RANKING_INFO_REQ_SYN) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DP_RANKING_INFO_REQ_SYN * pRecvMsg = (MSG_DP_RANKING_INFO_REQ_SYN *)pMsg; static char buff[128]; #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM std::string strQuery = "{?=call S_Ranking_Select( ?, ?,"; #else std::string strQuery = "{?=call S_Ranking_Select( ?, ?, ?,"; #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM strQuery = strQuery + _ultoa( pRecvMsg->m_SettledStartDate, buff, 10 )+","; strQuery = strQuery + _ultoa( pRecvMsg->m_Period, buff, 10 )+") }"; SUNLOG( eDEV_LOG, "[Handler_FromPortalServer_IMPL( DP_RANKING_INFO_REQ_SYN )] %s", strQuery.c_str() ); Query_Ranking_Select * pQuery = Query_Ranking_Select::ALLOC(); pQuery->clear(); //pQuery->SetSessionIndex( pRecvMsg->m_dwSessionIndex ); pQuery->SetQuery( strQuery.c_str() ); pQuery->SetIndex( MAKEDWORD( (WORD)DP_RANKING, (WORD)DP_RANKING_INFO_REQ_DBR ) ); pQuery->SetVoidObject( pServerSession ); pServerSession->DBQuery( pQuery ); } Handler_P2D_IMPL(DP_RANKING_INFO_REQ_DBR) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DBPROXY_RESULT * pResult = (MSG_DBPROXY_RESULT *)pMsg; Query_Ranking_Select * pQResult = (Query_Ranking_Select *)pResult->m_pData; int total = 0; for( int type = 0 ; type < Query_Ranking_Select::MAX_ROWS ; ++type ) { total += pQResult->pParam[0].m_Rows[type]; } if( total < 0 || total > Query_Ranking_Select::RESULT_ROW_NUM ) { SUNLOG( eCRITICAL_LOG, _T("°³¼ö¸¦ ³Ñ¾ú½À´Ï´Ù.(%d>%u)"), total, Query_Ranking_Select::RESULT_ROW_NUM ); Query_Ranking_Select::FREE(pQResult); pQResult = NULL; return ; } //RankingManager g_RankingHelper; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// g_RankingMgr.ClearRanking(); SHORT PreRows = 0; ASSERT( Query_Ranking_Select::MAX_ROWS == eRANKING_MAX ); for( int type = 0 ; type < eRANKING_MAX ; ++type ) { SHORT MaxRows = pQResult->pParam[0].m_Rows[type]; Query_Ranking_Select::sQUERY * pData = &pQResult->pResult[PreRows]; for( SHORT row = 0 ; row < MaxRows ; ++row ) { #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR MissionRanking * pRanking = g_RankingMgr.CreateRanking( (eRANKING_TYPE)type, pData[row].m_MissionNo, pData[row].ranking_type ); if (pRanking == NULL) continue; #else MissionRanking * pRanking = g_RankingMgr.CreateRanking( (eRANKING_TYPE)type, pData[row].m_MissionNo ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR ASSERT(pRanking); MissionRankingRecord * pRecord = pRanking->AddRanking_Info( pData[row].m_Key, pData[row].m_ClearTime, pData[row].m_RegisterTime ); ASSERT( pRecord ); BYTE MaxMemberCount = 0; for( ; MaxMemberCount < MAX_PARTYMEMBER_NUM ; ++MaxMemberCount ) { if( 0 == pData[row].m_CharInfo[MaxMemberCount].m_UserGuid ) break; } Query_Ranking_Select::sQUERY::_MEMBER * pMemberInfo = pData[row].m_CharInfo; for( int count = 0 ; count < MaxMemberCount ; ++count ) { pRecord->AddMember_Info( pMemberInfo[count].m_Reward, pMemberInfo[count].m_Class, pMemberInfo[count].m_LV, pMemberInfo[count].m_CharName, pMemberInfo[count].m_GuildName ); SUNLOG( eDEV_LOG, "[Handler_FromPortalServer_IMPL( DP_RANKING_INFO_REQ_DBR )] Type = %d, MissionNo = %d, Name = %s, MemTotal = %d", type, pData[row].m_MissionNo, pMemberInfo[count].m_CharName, MaxMemberCount ); } } PreRows += MaxRows; } g_RankingMgr.SortAll(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// g_RankingMgr.Display(); #if SUN_CODE_BACKUP static const int MAX_PAGE = 5; static MSG_DP_RANKING_INFO_REQ_ACK msg; //msg.m_dwSessionIndex = pQResult->GetSessionIndex(); for( int type = 0 ; type < eRANKING_MAX ; ++type ) { for( int MissionNo = 0 ; MissionNo < MAX_MAPCODE_NUM ; ++MissionNo ) { MissionRanking * pRanking = g_RankingHelper.FindMissionRanking( (eRANKING_TYPE)type, MissionNo ); if( !pRanking ) continue; for( int page = 0 ; page < MAX_PAGE ; ++page ) { msg.m_Type = type; msg.m_MissionNo = MissionNo; msg.m_Page = page; msg.m_Size = msg.MAX_BUFFER_SIZE; ArchiveOfStream lArchive(msg.m_pBUFFER, msg.m_Size); pRanking->Serialize( msg.m_Page, lArchive, RANKING_SERIALIZE_LOAD ); msg.m_Size = lArchive.GetSize(); Handler_D2P::OnDP_RANKING_INFO_REQ_ACK(pServerSession, &msg, msg.GetSize()); } } } #endif MSG_DP_RANKING_INFO_REQ_END_NTF ntf; Handler_D2P::OnDP_RANKING_INFO_REQ_END_NTF(pServerSession, &ntf, sizeof(ntf)); Query_Ranking_Select::FREE(pQResult); pQResult = NULL; } Handler_P2D_IMPL(DP_RANKING_MISSION_CLEAR_SYN) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DP_RANKING_MISSION_CLEAR_SYN * pRecvMsg = (MSG_DP_RANKING_MISSION_CLEAR_SYN *)pMsg; _MISSION_RANKING_TOTAL_INFO & rTotalInfo = pRecvMsg->m_totalInfo; SHORT TotalLV = 0; for( int i = 0 ; i < rTotalInfo.m_Count ; ++i ) { TotalLV += rTotalInfo.m_Member[i].m_LV; } static char buff[128]; std::string query_string = "{?=call S_Ranking_Insert(?," ; query_string = query_string+_itoa(rTotalInfo.m_Info.m_MissionNo, buff, 10 )+","; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR //S_Ranking_Insert´Â ¹Ì¼Ç·©Å·°°Àº Áߺ¹Çü ·©Å·¿¡¸¸ Àû¿ëµÇ°í, ±×°ÍÀº 1¹øÅ¸ÀÔÀÇ ·©Å·»ÓÀÌ´Ù. 1¹øÀ» ³Ö¾îÁÖÀÚ. query_string = query_string+_itoa((BYTE)eRANKING_TYPE_TIME_ATTACK, buff, 10 )+","; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR query_string = query_string+_itoa(rTotalInfo.m_Info.m_ClearTime, buff, 10 )+","; query_string = query_string+_itoa(TotalLV, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Count, buff, 10 )+","; query_string = query_string+_i64toa(rTotalInfo.m_Info.m_RegisterTime, buff, 10 )+",'"; util::GetSQLDateTime_YYYYMMDDHHMMSSNNN( rTotalInfo.m_Info.m_RegisterTime, buff ); query_string = query_string+buff+"'"; for( int i = 0 ; i < rTotalInfo.m_Count ; ++i ) { query_string += ","; query_string = query_string+_itoa(rTotalInfo.m_Member[i].m_UserGuid, buff, 10 )+",'"; query_string = query_string+rTotalInfo.m_Member[i].m_tszCharName+"',"; query_string = query_string+_itoa(rTotalInfo.m_Member[i].m_LV, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Member[i].m_Class, buff, 10 )+",'"; query_string = query_string+rTotalInfo.m_Member[i].m_tszGuildName+"'"; } query_string += ")}"; //DISPMSG( query_string.c_str() ); if( query_string.size() >= Query::MAX_QUERY_LENGTH ) { MSG_DP_RANKING_MISSION_CLEAR_NAK msg; msg.m_MissionNo = rTotalInfo.m_Info.m_MissionNo; msg.m_byErrorCode = RC::RC_RANKING_DBPROXY_SP_LENGTH_OVERFLOW; Handler_D2P::OnDP_RANKING_MISSION_CLEAR_NAK(pServerSession, &msg, sizeof(msg)); return; } Query_Ranking_Insert * pQuery = Query_Ranking_Insert::ALLOC(); pQuery->SetUserKey( pRecvMsg->m_dwKey ); pQuery->SetSessionIndex( pRecvMsg->m_dwSessionIndex ); pQuery->SetOldRankingKey( pRecvMsg->m_Key ); pQuery->SetMissionNo( rTotalInfo.m_Info.m_MissionNo ); pQuery->SetQuery(query_string.c_str()); pQuery->SetIndex( MAKEDWORD( (WORD)DP_RANKING, (WORD)DP_RANKING_MISSION_CLEAR_DBR ) ); pQuery->SetVoidObject( pServerSession ); pServerSession->DBQuery( pQuery ); } Handler_P2D_IMPL(DP_RANKING_MISSION_CLEAR_DBR) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DBPROXY_RESULT * pResult = (MSG_DBPROXY_RESULT *)pMsg; Query_Ranking_Insert * pQResult = (Query_Ranking_Insert *)pResult->m_pData; if( !pQResult->ResultSuccess() ) { MSG_DP_RANKING_MISSION_CLEAR_NAK msg; msg.m_dwKey = pQResult->GetUserKey(); msg.m_dwSessionIndex = pQResult->GetSessionIndex(); msg.m_Key = pQResult->GetOldRankingKey(); msg.m_MissionNo = pQResult->GetMissionNo(); msg.m_byErrorCode = RC::RC_RANKING_DBPROXY_SP_TRANS_ERROR; Handler_D2P::OnDP_RANKING_MISSION_CLEAR_NAK(pServerSession, &msg, sizeof(msg)); SUNLOG( eCRITICAL_LOG, "[DP_RANKING_MISSION_CLEAR_DBR][¿À·ù]:%s", pQResult->GetQuery() ); Query_Ranking_Insert::FREE(pQResult); pQResult = NULL; return; } MSG_DP_RANKING_MISSION_CLEAR_ACK msg; msg.m_dwKey = pQResult->GetUserKey(); msg.m_dwSessionIndex = pQResult->GetSessionIndex(); msg.m_Key = pQResult->GetOldRankingKey(); msg.m_NewKey = pQResult->pParam[0].m_Key; msg.m_MissionNo = pQResult->GetMissionNo(); Handler_D2P::OnDP_RANKING_MISSION_CLEAR_ACK(pServerSession, &msg, sizeof(msg)); Query_Ranking_Insert::FREE(pQResult); pQResult = NULL; } Handler_P2D_IMPL(DP_RANKING_MISSION_REWARD_SYN) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DP_RANKING_MISSION_REWARD_SYN * pRecvMsg = (MSG_DP_RANKING_MISSION_REWARD_SYN *)pMsg; char buff[128]; std::string query_string = "{?=call S_Ranking_Reward_Update("; query_string = query_string+_itoa(pRecvMsg->m_Key, buff, 10 )+",'"; query_string = query_string+pRecvMsg->m_tszCharName+"')}"; Query_Ranking_Reward_Update * pQuery = Query_Ranking_Reward_Update::ALLOC(); pQuery->SetSessionIndex( pRecvMsg->m_dwSessionIndex ); pQuery->SetKey(pRecvMsg->m_Key); pQuery->SetUserKey(pRecvMsg->m_dwKey); pQuery->SetCharName(pRecvMsg->m_tszCharName); pQuery->SetMissionNo(pRecvMsg->m_MissionNo); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pQuery->SetRankingType(pRecvMsg->ranking_type); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pQuery->SetQuery(query_string.c_str()); pQuery->SetIndex( MAKEDWORD( (WORD)DP_RANKING, (WORD)DP_RANKING_MISSION_REWARD_DBR ) ); pQuery->SetVoidObject( pServerSession ); pServerSession->DBQuery( pQuery ); } Handler_P2D_IMPL(DP_RANKING_MISSION_REWARD_DBR) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DBPROXY_RESULT * pResult = (MSG_DBPROXY_RESULT *)pMsg; Query_Ranking_Reward_Update * pQResult = (Query_Ranking_Reward_Update *)pResult->m_pData; if( !pQResult->ResultSuccess() ) { MSG_DP_RANKING_MISSION_REWARD_NAK msg; msg.m_dwKey = pQResult->GetUserKey(); msg.m_dwSessionIndex = pQResult->GetSessionIndex(); msg.m_byErrorCode = 2; msg.m_Key = pQResult->GetKey(); _tcsncpy(msg.m_tszCharName, pQResult->GetCharName(), _countof(msg.m_tszCharName)); msg.m_tszCharName[_countof(msg.m_tszCharName) - 1] = _T('\0'); msg.m_MissionNo = pQResult->GetMissionNo(); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = pQResult->GetRankingType(); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR Handler_D2P::OnDP_RANKING_MISSION_REWARD_NAK(pServerSession, &msg, sizeof(msg)); SUNLOG( eCRITICAL_LOG, "[DP_RANKING_MISSION_REWARD_DBR][¿À·ù]:%s", pQResult->GetQuery() ); Query_Ranking_Reward_Update::FREE(pQResult); pQResult = NULL; return; } MSG_DP_RANKING_MISSION_REWARD_ACK msg; msg.m_dwKey = pQResult->GetUserKey(); msg.m_dwSessionIndex = pQResult->GetSessionIndex(); msg.m_Key = pQResult->GetKey(); _tcsncpy(msg.m_tszCharName, pQResult->GetCharName(), _countof(msg.m_tszCharName)); msg.m_tszCharName[_countof(msg.m_tszCharName) - 1] = _T('\0'); msg.m_MissionNo = pQResult->GetMissionNo(); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = pQResult->GetRankingType(); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR Handler_D2P::OnDP_RANKING_MISSION_REWARD_ACK(pServerSession, &msg, sizeof(msg)); Query_Ranking_Reward_Update::FREE(pQResult); pQResult = NULL; } Handler_P2D_IMPL(DP_RANKING_REGISTER_MISSION_POINT_SYN) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DP_RANKING_REGISTER_MISSION_POINT_SYN* pRecvMsg = (MSG_DP_RANKING_REGISTER_MISSION_POINT_SYN*)pMsg; static char buff[128]; _MISSION_RANKING_TOTAL_INFO & rTotalInfo = pRecvMsg->TotalInfo; std::string query_string = "{?=call S_Ranking_Update_MissionType2(" ; query_string = query_string+_itoa(pRecvMsg->DBKey, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Info.m_MissionNo, buff, 10 )+","; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR query_string = query_string+_itoa(rTotalInfo.m_Info.ranking_type, buff, 10 )+","; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR query_string = query_string+_itoa(rTotalInfo.m_Info.m_ClearTime, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Member[0].m_LV, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Count, buff, 10 )+","; query_string = query_string+_i64toa(rTotalInfo.m_Info.m_RegisterTime, buff, 10 )+",'"; util::GetSQLDateTime_YYYYMMDDHHMMSSNNN( rTotalInfo.m_Info.m_RegisterTime, buff ); query_string = query_string+buff+"',"; query_string = query_string + _ultoa( pRecvMsg->Period, buff, 10 )+","; query_string = query_string + _ultoa( pRecvMsg->SettledStartDate, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Member[0].m_UserGuid, buff, 10 )+",'"; query_string = query_string+rTotalInfo.m_Member[0].m_tszCharName+"',"; query_string = query_string+_itoa(rTotalInfo.m_Member[0].m_LV, buff, 10 )+","; query_string = query_string+_itoa(rTotalInfo.m_Member[0].m_Class, buff, 10 )+",'"; query_string = query_string+rTotalInfo.m_Member[0].m_tszGuildName+"'"; query_string += ")}"; SUNLOG( eDEV_LOG, "[Handler_FromPortalServer_IMPL( DP_RANKING_REGISTER_MISSION_POINT_SYN )] %s = ", query_string.c_str() ); if( query_string.size() >= Query::MAX_QUERY_LENGTH ) { SUNLOG(eFULL_LOG, "DP_RANKING_REGISTER_MISSION_POINT_SYN - DB LENGTH OVERFLOW" ); MSG_DP_RANKING_REGISTER_MISSION_POINT_NAK msg; msg.m_OldKey = pRecvMsg->TempKey; msg.m_MissionNo = rTotalInfo.m_Info.m_MissionNo; msg.m_byErrorCode = RC::RC_RANKING_DBPROXY_SP_LENGTH_OVERFLOW; Handler_D2P::OnDP_RANKING_REGISTER_MISSION_POINT_NAK(pServerSession, &msg, sizeof(msg)); return; } Query_Ranking_Register_Update * pQuery = Query_Ranking_Register_Update::ALLOC(); pQuery->SetUserKey( pRecvMsg->m_dwKey ); pQuery->SetSessionIndex( pRecvMsg->m_dwSessionIndex ); pQuery->SetTempKey( pRecvMsg->TempKey ); pQuery->SetDBKey( pRecvMsg->DBKey); pQuery->SetMissionNo( rTotalInfo.m_Info.m_MissionNo ); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pQuery->SetRanking_Type(rTotalInfo.m_Info.ranking_type); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pQuery->SetQuery(query_string.c_str()); pQuery->SetIndex( MAKEDWORD( (WORD)DP_RANKING, (WORD)DP_RANKING_REGISTER_MISSION_POINT_DBR ) ); pQuery->SetVoidObject( pServerSession ); pServerSession->DBQuery( pQuery ); } Handler_P2D_IMPL(DP_RANKING_REGISTER_MISSION_POINT_DBR) { WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); __TOUCHED((pServerSession, wSize)); MSG_DBPROXY_RESULT * pResult = (MSG_DBPROXY_RESULT *)pMsg; Query_Ranking_Register_Update * pQResult = (Query_Ranking_Register_Update *)pResult->m_pData; if( !pQResult->ResultSuccess() ) { MSG_DP_RANKING_REGISTER_MISSION_POINT_NAK msg; msg.m_dwKey = pQResult->GetUserKey(); msg.m_dwSessionIndex = pQResult->GetSessionIndex(); msg.m_OldKey = pQResult->GetTempKey(); msg.m_MissionNo = pQResult->GetMissionNo(); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = pQResult->GetRanking_Type(); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.m_byErrorCode = RC::RC_RANKING_NOT_REGIST_INVALID_PERIOD; Handler_D2P::OnDP_RANKING_REGISTER_MISSION_POINT_NAK(pServerSession, &msg, sizeof(msg)); SUNLOG( eCRITICAL_LOG, "[DP_RANKING_REGISTER_MISSION_POINT_DBR][¿À·ù]:%s", pQResult->GetQuery() ); Query_Ranking_Register_Update::FREE(pQResult); pQResult = NULL; return; } MSG_DP_RANKING_REGISTER_MISSION_POINT_ACK msg; msg.TempKey = pQResult->GetTempKey(); msg.DBKey = pQResult->GetDBKey(); msg.MissionNo = pQResult->GetMissionNo(); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = pQResult->GetRanking_Type(); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR Handler_D2P::OnDP_RANKING_REGISTER_MISSION_POINT_ACK(pServerSession, &msg, sizeof(msg)); Query_Ranking_Register_Update::FREE(pQResult); pQResult = NULL; } //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== Handler_D2P_IMPL(DP_RANKING_INFO_REQ_ACK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_INFO_REQ_ACK * recv_msg = (MSG_DP_RANKING_INFO_REQ_ACK*)pMsg; DISPMSG( "Ranking Stream Received(Type:%u,No:%u,Page:%u,Size:%u)\n", recv_msg->m_Type, recv_msg->m_MissionNo, recv_msg->m_Page, recv_msg->m_Size ); g_RankingMgr.Serialize( (eRANKING_TYPE)recv_msg->m_Type, recv_msg->m_MissionNo, recv_msg->m_Page, recv_msg->m_pBUFFER, recv_msg->m_Size, RANKING_SERIALIZE_SAVE ); } Handler_D2P_IMPL(DP_RANKING_INFO_REQ_END_NTF) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_INFO_REQ_END_NTF * recv_msg = (MSG_DP_RANKING_INFO_REQ_END_NTF*)pMsg; DISPMSG( "Ranking Stream Received Successfully....Status is Normal and ServerSide Listen\n" ); g_RankingMgr.SetStatus( eRANKING_STATUS_NORMAL ); g_RankingMgr.ChangeToRankingLoaded(); } Handler_D2P_IMPL(DP_RANKING_INFO_REQ_NAK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_INFO_REQ_NAK * recv_msg = (MSG_DP_RANKING_INFO_REQ_NAK*)pMsg; SUNLOG( eCRITICAL_LOG, _T("DP_RANKING_INFO_REQ_NAK Error[%u] can't receive Ranking Info from DBProxy"), recv_msg->m_byErrorCode ); } Handler_D2P_IMPL(DP_RANKING_MISSION_CLEAR_ACK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_MISSION_CLEAR_ACK * recv_msg = (MSG_DP_RANKING_MISSION_CLEAR_ACK *)pMsg; // µî¼ö¿¡ µé¾î°¡¸é ¸ðµç ¼­¹ö¿¡ SUCCESS BRD // µî¼ö¿¡ µé¾î°¡Áö ¸øÇÏ¸é ±× ¼­¹ö¿¡¸¸ FAILED BRD ServerSession * pGameServer = g_DBProxyServer.FindSession(recv_msg->m_dwSessionIndex); ASSERT( pGameServer && pGameServer->GetServerType() == GAME_SERVER ); WORD Ranking = (WORD)g_RankingMgr.OnRegisterMissionRecordOnTodayweek( TRUE, recv_msg->m_MissionNo, recv_msg->m_Key, recv_msg->m_NewKey ); if( 0 == Ranking ) { if( pGameServer ) { MSG_GP_RANKING_MISSION_FAILED_NAK msg; msg.m_dwKey = recv_msg->m_dwKey; msg.m_Key = recv_msg->m_Key; msg.m_MissionNo = recv_msg->m_MissionNo; msg.m_dwErrorCode = RC::RC_RANKING_DONT_INCLUDE_RANKING; pGameServer->SendPacket( &msg, sizeof(msg) ); } } else { if( pGameServer ) { MSG_GP_RANKING_MISSION_SUCCESS_ACK amsg; amsg.m_dwKey = recv_msg->m_dwKey; amsg.m_Key = recv_msg->m_Key; amsg.m_NewKey = recv_msg->m_NewKey; amsg.m_MissionNo = recv_msg->m_MissionNo; amsg.m_Ranking = Ranking; pGameServer->SendPacket( &amsg, sizeof(amsg) ); } MissionRankingRecord * pRecord = g_RankingMgr.FindMissionRecord( eRANKING_TODAYWEEK, recv_msg->m_MissionNo, recv_msg->m_NewKey ); ASSERT(pRecord); if( pRecord ) { MSG_GP_RANKING_MISSION_SUCCESS_BRD msg; msg.m_NewKey = recv_msg->m_NewKey; msg.m_RankingInfo.m_Info.m_MissionNo = recv_msg->m_MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.m_RankingInfo.m_Info.ranking_type = eRANKING_TYPE_TIME_ATTACK; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pRecord->Serialize( msg.m_RankingInfo, SERIALIZE_LOAD ); g_DBProxyServer.SendToSessionType( GAME_SERVER, &msg, sizeof(msg), recv_msg->m_dwSessionIndex ); } } } Handler_D2P_IMPL(DP_RANKING_MISSION_CLEAR_NAK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_MISSION_CLEAR_NAK * recv_msg = (MSG_DP_RANKING_MISSION_CLEAR_NAK *)pMsg; g_RankingMgr.OnRegisterMissionRecordOnTodayweek( FALSE, 0, recv_msg->m_Key, 0 ); // °ÔÀÓ¼­¹ö·Î Æ÷¿öµù ServerSession * pGameServer = g_DBProxyServer.FindSession(recv_msg->m_dwSessionIndex); ASSERT( pGameServer && pGameServer->GetServerType() == GAME_SERVER ); if( pGameServer ) { MSG_GP_RANKING_MISSION_FAILED_NAK msg; msg.m_dwKey = recv_msg->m_dwKey; msg.m_Key = recv_msg->m_Key; msg.m_MissionNo = recv_msg->m_MissionNo; msg.m_dwErrorCode = recv_msg->m_byErrorCode; pGameServer->SendPacket( &msg, sizeof(msg) ); } } Handler_D2P_IMPL(DP_RANKING_MISSION_REWARD_ACK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_MISSION_REWARD_ACK * recv_msg = (MSG_DP_RANKING_MISSION_REWARD_ACK *)pMsg; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR g_RankingMgr.OnReward( TRUE, recv_msg->m_MissionNo, recv_msg->m_Key, recv_msg->m_tszCharName, recv_msg->ranking_type); #else g_RankingMgr.OnReward( TRUE, recv_msg->m_MissionNo, recv_msg->m_Key, recv_msg->m_tszCharName); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR // °ÔÀÓ¼­¹ö·Î Æ÷¿öµù ServerSession * pGameServer = g_DBProxyServer.FindSession(recv_msg->m_dwSessionIndex); ASSERT( pGameServer && pGameServer->GetServerType() == GAME_SERVER ); if( pGameServer ) { MSG_GP_RANKING_MISSION_REWARD_ACK msg; msg.m_dwKey = recv_msg->m_dwKey; msg.m_Key = recv_msg->m_Key; msg.m_MissionNo = recv_msg->m_MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = recv_msg->ranking_type; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR _tcsncpy(msg.m_tszCharName, recv_msg->m_tszCharName, MAX_CHARNAME_LENGTH); msg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; pGameServer->SendPacket( &msg, msg.GetSize() ); MSG_GP_RANKING_MISSION_REWARD_BRD bmsg; bmsg.m_dwKey = recv_msg->m_dwKey; bmsg.m_Key = recv_msg->m_Key; bmsg.m_MissionNo = recv_msg->m_MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR bmsg.ranking_type = recv_msg->ranking_type; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR _tcsncpy(bmsg.m_tszCharName, recv_msg->m_tszCharName, MAX_CHARNAME_LENGTH); bmsg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; g_DBProxyServer.SendToSessionType( GAME_SERVER, &bmsg, bmsg.GetSize(), recv_msg->m_dwSessionIndex ); } } Handler_D2P_IMPL(DP_RANKING_MISSION_REWARD_NAK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_MISSION_REWARD_NAK * recv_msg = (MSG_DP_RANKING_MISSION_REWARD_NAK *)pMsg; SUNLOG( eCRITICAL_LOG, _T("DP_RANKING_MISSION_REWARD_NAK Error[%u] can't execute Ranking Reward Action from DBProxy"), recv_msg->m_byErrorCode ); #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR g_RankingMgr.OnReward( FALSE, recv_msg->m_MissionNo, recv_msg->m_Key, recv_msg->m_tszCharName, recv_msg->ranking_type ); #else g_RankingMgr.OnReward( FALSE, recv_msg->m_MissionNo, recv_msg->m_Key, recv_msg->m_tszCharName ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR // °ÔÀÓ¼­¹ö·Î Æ÷¿öµù ServerSession * pGameServer = g_DBProxyServer.FindSession(recv_msg->m_dwSessionIndex); ASSERT( pGameServer && pGameServer->GetServerType() == GAME_SERVER ); if( pGameServer ) { MSG_GP_RANKING_MISSION_REWARD_NAK nmsg; nmsg.m_byErrorCode = recv_msg->m_byErrorCode; nmsg.m_Key = recv_msg->m_Key; nmsg.m_MissionNo = recv_msg->m_MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR nmsg.ranking_type = recv_msg->ranking_type; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR _tcsncpy(nmsg.m_tszCharName, recv_msg->m_tszCharName, MAX_CHARNAME_LENGTH); nmsg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; pGameServer->SendPacket( &nmsg, nmsg.GetSize() ); } } Handler_D2P_IMPL(DP_RANKING_REGISTER_MISSION_POINT_ACK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_REGISTER_MISSION_POINT_ACK * recv_msg = (MSG_DP_RANKING_REGISTER_MISSION_POINT_ACK *)pMsg; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR WORD Ranking = (WORD)g_RankingMgr.OnRegisterMissionRecordOnTodayweek( TRUE, recv_msg->MissionNo, recv_msg->TempKey, recv_msg->DBKey, recv_msg->ranking_type ); #else WORD Ranking = (WORD)g_RankingMgr.OnRegisterMissionRecordOnTodayweek( TRUE, recv_msg->MissionNo, recv_msg->TempKey, recv_msg->DBKey ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR if( 0 == Ranking ) { //¼øÀ§±Ç¿¡ ¸øµé¸é ·©Å·µî·Ï ¾ÈÇÔ. //SUNLOG(eCRITICAL_LOG, "[DP_RANKING_REGISTER_MISSION_POINT_ACK] - OnRegisterMissionRecordOnTodayweek Fail."); } else { #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR MissionRankingRecord * pRecord = g_RankingMgr.FindMissionRecord( eRANKING_TODAYWEEK, recv_msg->MissionNo, recv_msg->DBKey, recv_msg->ranking_type ); #else MissionRankingRecord * pRecord = g_RankingMgr.FindMissionRecord( eRANKING_TODAYWEEK, recv_msg->MissionNo, recv_msg->DBKey ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR ASSERT(pRecord); if( pRecord ) { MSG_GP_RANKING_MISSION_SUCCESS_BRD msg; msg.m_NewKey = recv_msg->DBKey; msg.m_RankingInfo.m_Info.m_MissionNo = recv_msg->MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.m_RankingInfo.m_Info.ranking_type = recv_msg->ranking_type; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR pRecord->Serialize( msg.m_RankingInfo, SERIALIZE_LOAD ); g_DBProxyServer.SendToSessionType( GAME_SERVER, &msg, sizeof(msg) ); } } } Handler_D2P_IMPL(DP_RANKING_REGISTER_MISSION_POINT_NAK) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_DP_RANKING_REGISTER_MISSION_POINT_NAK * recv_msg = (MSG_DP_RANKING_REGISTER_MISSION_POINT_NAK *)pMsg; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR g_RankingMgr.OnRegisterMissionRecordOnTodayweek( FALSE, 0, recv_msg->m_OldKey, 0, recv_msg->ranking_type ); #else g_RankingMgr.OnRegisterMissionRecordOnTodayweek( FALSE, 0, recv_msg->m_OldKey, 0 ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR // °ÔÀÓ¼­¹ö·Î Æ÷¿öµù ÇÒÇÊ¿ä ¾øÀ½ // ½ÃÄö½º ´ÙÀ̾î±×·¥ Âü°í } //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== //================================================================================================== Handler_GP_IMPL(GP_RANKING_INFO_REQ_SYN) { __TOUCHED((pServerSession, pMsg, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_GP_RANKING_INFO_REQ_SYN * pRecvMsg = (MSG_GP_RANKING_INFO_REQ_SYN *)pMsg; // ÀÌÁ¤º¸¸¦ ¹ÞÀ» ½ÃÁ¡¿¡ ÀÌ¹Ì Ranking Á¤º¸°¡ EstablishµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. // EstablishÈÄ Listen static const int MAX_PAGE = 5; static MSG_GP_RANKING_INFO_REQ_ACK msg; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR for( int type = 0 ; type < eRANKING_MAX ; ++type ) { for( int MissionNo = 0 ; MissionNo < MAX_MAPCODE_NUM ; ++MissionNo ) { for( RANKINGTYPE ranking_type = 1; ranking_type < eRANKING_TYPE_MAX; ++ranking_type) { MissionRanking * pRanking = g_RankingMgr.FindMissionRanking( (eRANKING_TYPE)type, MissionNo, ranking_type ); if( !pRanking ) continue; for( int page = 0 ; page < MAX_PAGE ; ++page ) { msg.m_Type = type; msg.m_MissionNo = MissionNo; msg.ranking_type = ranking_type; msg.m_Page = page; msg.m_Size = msg.MAX_BUFFER_SIZE; ArchiveOfStream lArchive(msg.m_pBUFFER, msg.m_Size); pRanking->Serialize( msg.m_Page, lArchive, RANKING_SERIALIZE_LOAD ); msg.m_Size = lArchive.GetSize(); pServerSession->SendPacket( &msg, msg.GetSize() ); } } } } #else for( int type = 0 ; type < eRANKING_MAX ; ++type ) { for( int MissionNo = 0 ; MissionNo < MAX_MAPCODE_NUM ; ++MissionNo ) { MissionRanking * pRanking = g_RankingMgr.FindMissionRanking( (eRANKING_TYPE)type, MissionNo ); if( !pRanking ) continue; for( int page = 0 ; page < MAX_PAGE ; ++page ) { msg.m_Type = type; msg.m_MissionNo = MissionNo; msg.m_Page = page; msg.m_Size = msg.MAX_BUFFER_SIZE; ArchiveOfStream lArchive(msg.m_pBUFFER, msg.m_Size); pRanking->Serialize( msg.m_Page, lArchive, RANKING_SERIALIZE_LOAD ); msg.m_Size = lArchive.GetSize(); pServerSession->SendPacket( &msg, msg.GetSize() ); } } } #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR MSG_GP_RANKING_INFO_REQ_END_NTF ntf; ntf.m_SettledYear = g_RankingMgr.GetOldSettledDate_Year(); ntf.m_SettledMonth = g_RankingMgr.GetOldSettledDate_Month(); ntf.m_SettledDay = g_RankingMgr.GetOldSettledDate_Day(); ntf.m_PeriodDay = g_RankingMgr.GetPeriod(); ntf.m_SuspendTime = g_RankingMgr.GetSuspendTime(); pServerSession->SendPacket( &ntf, sizeof(ntf) ); //static MSG_GP_RANKING_INFO_REQ_ACK msg; //msg.m_Size = MSG_GP_RANKING_INFO_REQ_ACK::MAX_BUFFER_SIZE; //g_RankingMgr.Serialize( msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_LOAD ); //pServerSession->SendPacket( &msg, msg.GetSize() ); } Handler_GP_IMPL(GP_RANKING_MISSION_CLEAR_SYN) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_GP_RANKING_MISSION_CLEAR_SYN * pRecvMsg = (MSG_GP_RANKING_MISSION_CLEAR_SYN *)pMsg; RC::eRANKING_RESULT rt = g_RankingMgr.CanRegisterMissionRecord( pRecvMsg->m_totalInfo ); if( rt == RC::RC_RANKING_SUCCESS ) { MSG_DP_RANKING_MISSION_CLEAR_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_Key = pRecvMsg->m_Key; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); memcpy( &msg.m_totalInfo, &pRecvMsg->m_totalInfo, pRecvMsg->m_totalInfo.GetSize() ); Handler_P2D::OnDP_RANKING_MISSION_CLEAR_SYN(pServerSession, &msg, msg.GetSize()); g_RankingMgr.RegisterMissionRecordInTemp( pRecvMsg->m_totalInfo, pRecvMsg->m_Key ); return; } MSG_GP_RANKING_MISSION_FAILED_NAK nmsg; nmsg.m_dwKey = pRecvMsg->m_dwKey; nmsg.m_Key = pRecvMsg->m_Key; nmsg.m_MissionNo = pRecvMsg->m_totalInfo.m_Info.m_MissionNo; nmsg.m_dwErrorCode = rt; pServerSession->SendPacket( &nmsg, sizeof(nmsg) ); } Handler_GP_IMPL(GP_RANKING_MISSION_REWARD_SYN) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_GP_RANKING_MISSION_REWARD_SYN * pRecvMsg = (MSG_GP_RANKING_MISSION_REWARD_SYN *)pMsg; // º¸»ó ¿©ºÎ üũ // DoReward // DB·Î º¸»ó Äõ¸® RC::eRANKING_RESULT rt = RC::RC_RANKING_NETWORK_ERROR_FOR_DBPROXY; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR rt = g_RankingMgr.DoReward( pRecvMsg->m_MissionNo, pRecvMsg->m_Key, pRecvMsg->m_tszCharName, pRecvMsg->ranking_type ); #else rt = g_RankingMgr.DoReward( pRecvMsg->m_MissionNo, pRecvMsg->m_Key, pRecvMsg->m_tszCharName ); #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR if( rt == RC::RC_RANKING_SUCCESS ) { MSG_DP_RANKING_MISSION_REWARD_SYN msg; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_Key = pRecvMsg->m_Key; //< º¸»ó¹Þ±â¸¦ ¿øÇÏ´Â Áö³­ÁÖ·©Å·ÀÇ Å°(ÀϷùøÈ£) msg.m_MissionNo = pRecvMsg->m_MissionNo; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = pRecvMsg->ranking_type; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR _tcsncpy(msg.m_tszCharName, pRecvMsg->m_tszCharName, MAX_CHARNAME_LENGTH); msg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; Handler_P2D::OnDP_RANKING_MISSION_REWARD_SYN(pServerSession, &msg, msg.GetSize()); return; //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ } #if SUN_CODE_BACKUP MSG_GP_RANKING_MISSION_REWARD_NAK nmsg; nmsg.m_dwKey = pRecvMsg->m_dwKey; nmsg.m_byErrorCode = rt; nmsg.m_Key = pRecvMsg->m_Key; //< º¸»ó¹Þ±â¸¦ ¿øÇÏ´Â Áö³­ÁÖ·©Å·ÀÇ Å°(ÀϷùøÈ£) nmsg.m_MissionNo = pRecvMsg->m_MissionNo; _tcsncpy(nmsg.m_tszCharName, pRecvMsg->m_tszCharName, MAX_CHARNAME_LENGTH); nmsg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; pServerSession->SendPacket( &nmsg, nmsg.GetSize() ); #endif } Handler_GP_IMPL(GP_RANKING_SETTLE_CMD) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); // ÇöÀç½Ã°£À» Á¤»ê½Ã°£À¸·Î ¸ÂÃß°í g_RankingMgr.DoTestCurSettle(); // ÀÚµ¿ Á¤»êµÊ //g_RankingMgr.DoSettle(); // ÁßÁö±â°£À» ¿ø»óÅ·Πµ¹·Á³õ´Â´Ù? //g_RankingMgr.InitComputation( tmdate->tm_year+1900, tmdate->tm_mon+1, tmdate->tm_mday, // tmdate->tm_hour, tmdate->tm_min, tmdate->tm_sec, 1, 15 ); } Handler_GP_IMPL(GP_RANKING_REGISTER_MISSION_POINT_SYN) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_GP_RANKING_REGISTER_MISSION_POINT_SYN * pRecvMsg = (MSG_GP_RANKING_REGISTER_MISSION_POINT_SYN *)pMsg; //Á¤»êÁßÀÌ¸é µî·Ï ¾ÈÇÔ if( g_RankingMgr.GetStatus() != eRANKING_STATUS_NORMAL ) return; MSG_DP_RANKING_REGISTER_MISSION_POINT_SYN SynMsg; SynMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); SynMsg.TotalInfo.m_Count = 1; SynMsg.TotalInfo.m_Info = pRecvMsg->RecordInfo; SynMsg.TotalInfo.m_Member[0] = pRecvMsg->MemberInfo; SynMsg.SettledStartDate = g_RankingMgr.GetOldSettledDate(); SynMsg.Period = g_RankingMgr.GetPeriod(); SynMsg.DBKey = pRecvMsg->DBKey; SynMsg.TempKey = g_RankingMgr.RegisterMissionRecordInTemp( SynMsg.TotalInfo ); Handler_P2D::OnDP_RANKING_REGISTER_MISSION_POINT_SYN(pServerSession, &SynMsg, SynMsg.GetSize()); } Handler_GP_IMPL(GP_MISSION_RANKING_SETTLE_DATE_SYN) { __TOUCHED((pServerSession, wSize)); WAVERIX_WRAPPER((WAVERIX_LC_CALL1("waverix_log_trace_ranking", "|"__FUNCTION__"|{}="))); MSG_GP_MISSION_RANKING_SETTLE_DATE_SYN * pRecvMsg = (MSG_GP_MISSION_RANKING_SETTLE_DATE_SYN *)pMsg; MSG_GP_MISSION_RANKING_SETTLE_DATE_ACK Ack; Ack.RecordInfo = pRecvMsg->RecordInfo; Ack.MemberInfo = pRecvMsg->MemberInfo; Ack.SettledStartDate = g_RankingMgr.GetOldSettledDate(); Ack.Period = g_RankingMgr.GetPeriod(); pServerSession->SendPacket( &Ack, sizeof(Ack) ); } #endif // _NA_008012_20150130_RANKING_SYSTEM #endif //_NA002635_GP_DP_PROTOCOL_UINIFICATION_IN_DBP