#include "StdAfx.h" #include ".\handler_client.h" #include ".\Player.h" #include ".\PlayerManager.h" #include #include #include ".\GameRankingManager.h" #include ".\GameServerEx.h" #include ".\ItemManager.h" #include #include // _NA_0_20091118_GAMEROOM_BATTLE_RESULT #include "GameZone.h" #include "GameBattleResult.h" //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND #include #include #ifdef _NA_008012_20150204_SUN_RANKING_SYSTEM #include "SunRanking/SunRankingManager.h" #include "SunRankingParser.h" #endif // _NA_008012_20150204_SUN_RANKING_SYSTEM //-------------------------------------------------------------------------------------------------- // changes, f100819.1L const nsPacket::PacketHandlerInfo Handler_Client::GetPacketHandlerNodes() { #define HANDLER_NODE_INFO(c, p, phase) { MAKEWORD(c, p), phase, Handler_Client::On##p } #define HANDLER_NODE_INFO_EOR() { 0, static_cast(0), NULL } static const nsPacket::PacketHandlerNode handlers_static_[] = { #ifdef _NA_008012_20150130_RANKING_SYSTEM HANDLER_NODE_INFO(CG_MISSION, CG_MISSION_RANKING_INFO_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_MISSION, CG_MISSION_RANKING_MEMBER_INFO_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_MISSION, CG_MISSION_RANKING_REWARD_SYN, PHASE_SERVICE), #endif // _NA_008012_20150130_RANKING_SYSTEM // _NA_0_20091118_GAMEROOM_BATTLE_RESULT HANDLER_NODE_INFO(CG_ZONE, CG_ZONE_PLAYER_BATTLE_RESULT_SYN, PHASE_SERVICE), #if !defined _NA_0_20110613_GAME_SHOP_RENEWAL HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_CASH_REQ_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_ITEM_LIST_REQ_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_ITEM_REQ_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_ITEM_BUY_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_BUY_HISTORY_SYN, PHASE_SERVICE), //HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_PACKAGE_BUY_SYN, PHASE_SERVICE), //HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_CHECK_CHAR_NAME_SYN, PHASE_SERVICE), #ifdef __NA000000_SHOP_USERID_50_PASSING_PROC__ HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_SEND_GIFT_RELAY_SYN, PHASE_SERVICE), #else HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_SEND_GIFT_SYN, PHASE_SERVICE), #endif HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_ACTION_RECV_GIFT_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_IS_RECV_GIFT_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_SHOP, CG_SHOP_RECV_GIFT_LIST_SYN, PHASE_SERVICE), #endif //!defined _NA_0_20110613_GAME_SHOP_RENEWAL #ifdef _NA_003027_20111013_HONOR_SYSTEM HANDLER_NODE_INFO(CG_CHARINFO, CG_HONORSYSTEM_PACKET, PHASE_SERVICE), #endif //_NA_003027_20111013_HONOR_SYSTEM #ifdef _NA004034_20120102_POINT_WALLET_SYSTEM HANDLER_NODE_INFO(CG_CHARINFO, CG_POINTWALLET_PACKET, PHASE_SERVICE), #endif //_NA004034_20120102_POINT_WALLET_SYSTEM //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND HANDLER_NODE_INFO(CG_PARTY, CG_CHAOS_ZONE_PACKET, PHASE_SERVICE), #ifdef _NA_008012_20150130_RANKING_SYSTEM #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM HANDLER_NODE_INFO(CG_MISSION, CG_MISSION_RANKING_SETTLEDDATE_INFO_SYN, PHASE_SERVICE), #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM #endif // _NA_008012_20150130_RANKING_SYSTEM #ifdef _NA_000000_20140120_SMART_NPC_SYSTEM HANDLER_NODE_INFO(CG_CHARINFO, CG_CHARINFO_SMARTNPC_PACKET, PHASE_SERVICE), #endif //_NA_000000_20140120_SMART_NPC_SYSTEM #ifdef _NA_008012_20150204_SUN_RANKING_SYSTEM HANDLER_NODE_INFO(CG_ETC, CG_ETC_SUN_RANKING_SYN, PHASE_SERVICE), HANDLER_NODE_INFO(CG_ETC, CG_ETC_SUN_RANKING_SETTLE_INFO_SYN, PHASE_SERVICE), #endif // _NA_008012_20150204_SUN_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; }; //-------------------------------------------------------------------------------------------------- #ifdef _NA_008012_20150130_RANKING_SYSTEM Handler_Client_IMPL( CG_MISSION_RANKING_INFO_SYN ) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_MISSION_RANKING_INFO_SYN * pMsg = (MSG_CG_MISSION_RANKING_INFO_SYN *)pRecvMsg; Player * pPlayer = PlayerManager::Instance()->FindPlayerByUserKey( pMsg->m_dwKey ); ASSERT( pPlayer ); if( !pPlayer ) return ; if( !pPlayer->GetField() ) return; #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM RankingManager::LEVEL_AREA* level_base = g_GameRankingMgr.FindLVArea_ID(pMsg->m_RankingID); if ( level_base == NULL || g_GameRankingMgr.GetStatus() != eRANKING_STATUS_NORMAL ) { MSG_CG_MISSION_RANKING_INFO_NAK nmsg; nmsg.m_dwErrorCode = RC::RC_RANKING_NETWORK_ERROR_FOR_PORTAL; pPlayer->SendPacket( &nmsg, sizeof(nmsg) ); return; } #else if( g_GameRankingMgr.GetStatus() != eRANKING_STATUS_NORMAL) { MSG_CG_MISSION_RANKING_INFO_NAK nmsg; nmsg.m_dwErrorCode = RC::RC_RANKING_NETWORK_ERROR_FOR_PORTAL; pPlayer->SendPacket( &nmsg, sizeof(nmsg) ); return; } #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM //ACK Message MSG_CG_MISSION_RANKING_INFO_ACK msg; #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM msg.myranking = 0; #else //°á»êÀÏ ÆÐŶÀ» ºÐ¸®ÇßÀ¸¹Ç·Î ÁÖ¼®Ã³¸®ÇÑ´Ù. msg.m_SettledDate = g_GameRankingMgr.GetSettledDate(); #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM msg.m_Size = sizeof(msg.m_pBUFFER); #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM // ·©Å· Á¤º¸¸¦ °¡Á®¿È. switch(level_base->m_RankingType) { case eRANKING_TYPE_TIME_ATTACK: //¹Ì¼Ç ·©Å· if (pMsg->m_Type == eRANKING_MYRANKING) { g_GameRankingMgr.SerializeForClient_MyRanking(pPlayer->GetCharName(), pMsg->m_RankingID, msg.m_pBUFFER, msg.m_Size, msg.myranking); } else { g_GameRankingMgr.SerializeForClient( (eRANKING_TYPE)pMsg->m_Type, level_base->m_MissionNo, pMsg->m_Page, msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_CLIENT_LOAD ); } break; case eRANKING_TYPE_POINT: //Æ÷ÀÎÆ® ·©Å· if (pMsg->m_Type == eRANKING_MYRANKING) { g_GameRankingMgr.Serialize_MyRanking(pPlayer->GetCharName(), pMsg->m_RankingID, msg.m_pBUFFER, msg.m_Size, msg.myranking); } else { g_GameRankingMgr.Serialize( (eRANKING_TYPE)pMsg->m_Type, level_base->m_MissionNo, pMsg->m_Page, msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_LOAD ); } break; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR case eRANKING_TYPE_BATTLEGROUND_WIN: case eRANKING_TYPE_BATTLEGROUND_KILL: case eRANKING_TYPE_BATTLEGROUND_ASSIST: //ÀüÀå ½Â¸® //Æ÷ÀÎÆ® ·©Å· if (pMsg->m_Type == eRANKING_MYRANKING) { g_GameRankingMgr.Serialize_MyRanking(pPlayer->GetCharName(), pMsg->m_RankingID, msg.m_pBUFFER, msg.m_Size, msg.myranking); } else { RANKINGTYPE ranking_type = static_cast(level_base->m_RankingType); g_GameRankingMgr.Serialize( (eRANKING_TYPE)pMsg->m_Type, level_base->m_MissionNo, pMsg->m_Page, msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_LOAD, ranking_type); } break; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR default: ASSERT(FALSE); return; } #else //ŸÀÓ ¾îÅà if( g_GameRankingMgr.GetRankingType( pMsg->m_MissionNo ) == eRANKING_TYPE_TIME_ATTACK ) { g_GameRankingMgr.SerializeForClient( (eRANKING_TYPE)pMsg->m_Type, pMsg->m_MissionNo, pMsg->m_Page, msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_CLIENT_LOAD ); } //Æ÷ÀÎÆ® else if( g_GameRankingMgr.GetRankingType( pMsg->m_MissionNo ) == eRANKING_TYPE_POINT ) { g_GameRankingMgr.Serialize( (eRANKING_TYPE)pMsg->m_Type, pMsg->m_MissionNo, pMsg->m_Page, msg.m_pBUFFER, msg.m_Size, RANKING_SERIALIZE_LOAD ); } else { ASSERT(FALSE); return; } #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM pPlayer->SendPacket( &msg, msg.GetSize() ); } Handler_Client_IMPL( CG_MISSION_RANKING_MEMBER_INFO_SYN ) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_MISSION_RANKING_MEMBER_INFO_SYN * pMsg = (MSG_CG_MISSION_RANKING_MEMBER_INFO_SYN *)pRecvMsg; Player * pPlayer = PlayerManager::Instance()->FindPlayerByUserKey( pMsg->m_dwKey ); ASSERT( pPlayer ); if( !pPlayer ) return ; if( !pPlayer->GetField() ) return; if( g_GameRankingMgr.GetStatus() != eRANKING_STATUS_NORMAL ) { MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK nmsg; nmsg.m_dwErrorCode = RC::RC_RANKING_NETWORK_ERROR_FOR_PORTAL; pPlayer->SendPacket( &nmsg, sizeof(nmsg) ); return; } #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM //'³» ¼øÀ§'¿¡ ´ëÇÑ ¸â¹ö¿äûÀÏ °æ¿ìÀÇ ºÐ±â¹®À» Àû¿ë MissionRankingRecord* pRecord = NULL; if (pMsg->m_Type == eRANKING_MYRANKING) { RankingManager::LEVEL_AREA* level_base = g_GameRankingMgr.FindLVArea(pMsg->m_MissionNo); if (level_base == NULL) { MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK nak_msg; nak_msg.m_dwErrorCode = RC::RC_RANKING_INVALID_STATE; pPlayer->SendPacket( &nak_msg, sizeof(nak_msg) ); return; } pRecord = g_GameRankingMgr.FindMyBestRanking(pPlayer->GetCharName(), eRANKING_TODAYWEEK, pMsg->m_MissionNo,(eRANKING_SYSTEM_TYPE)level_base->m_RankingType); if (pRecord == NULL) { MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK nak_msg; nak_msg.m_dwErrorCode = RC::RC_RANKING_INVALID_STATE; pPlayer->SendPacket( &nak_msg, sizeof(nak_msg) ); return; } } else { pRecord = g_GameRankingMgr.FindMissionRecord( (eRANKING_TYPE)pMsg->m_Type, pMsg->m_MissionNo, pMsg->m_Key ); if ( pRecord == NULL ) { MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK nak_msg; nak_msg.m_dwErrorCode = RC::RC_RANKING_INVALID_STATE; pPlayer->SendPacket( &nak_msg, sizeof(nak_msg) ); return; } } #else MissionRankingRecord * pRecord = g_GameRankingMgr.FindMissionRecord( (eRANKING_TYPE)pMsg->m_Type, pMsg->m_MissionNo, pMsg->m_Key ); if( !pRecord ) { MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK nmsg; nmsg.m_dwErrorCode = RC::RC_RANKING_INVALID_STATE; pPlayer->SendPacket( &nmsg, sizeof(nmsg) ); return; } #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM MSG_CG_MISSION_RANKING_MEMBER_INFO_ACK msg; ArchiveOfStream lArchive(msg.m_pBUFFER, sizeof(msg.m_pBUFFER)); pRecord->SerializeMember( lArchive, RANKING_SERIALIZE_CLIENT_LOAD ); msg.m_Size = lArchive.GetSize(); pPlayer->SendPacket( &msg, msg.GetSize() ); } Handler_Client_IMPL( CG_MISSION_RANKING_REWARD_SYN ) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_MISSION_RANKING_REWARD_SYN * pMsg = (MSG_CG_MISSION_RANKING_REWARD_SYN *)pRecvMsg; Player * pPlayer = PlayerManager::Instance()->FindPlayerByUserKey( pMsg->m_dwKey ); ASSERT( pPlayer ); if( !pPlayer ) return ; if( !pPlayer->GetField() ) return; //ÇǷεµ ¶§¹®¿¡ ÇöÀç º¸»óÀ» ¹ÞÁö ¸øÇÏ´Â °Å¶ó¸é... if( pPlayer->GetFatigueManager()->GetItemReward() == FALSE ) { MSG_CG_MISSION_RANKING_REWARD_NAK msg; msg.m_dwErrorCode = RC::RC_RANKING_REWARD_FAIL_FATIGUE; pPlayer->SendPacket( &msg, sizeof(msg) ); return; } //============================================================================================ // Æ®·£Á§¼Ç üũ?-> OK // portal ¼­¹ö ¿¬°á ¿©ºÎ üũ // º¸»óÀ» ¹ÞÀ» ¼ö ÀÖ´Â »óÅ üũ // º¸»óÀ» ¹ÞÀ» ¼ö ÀÖ´Â °ø°£ üũ // º¸»ó ¼º°ø½Ã -> ¾ÆÀÌÅÛ º¸»ó + ·Î±× // º¸»ó ½ÇÆÐ½Ã -> ·Î±× // º¸»ó ½ÇÆÐ½Ã -> db¿¡´Â º¸»óÀ»¹Þ¾Ò´Ù°í ³ª¿ÔÁö¸¸, ½ÇÁ¦ º¸»óÀ» ¹ÞÁö ¸øÇѰæ¿ì°¡ »ý±æ ¼ö ÀÖ´Ù. RC::eRANKING_RESULT rt = RC::RC_RANKING_NETWORK_ERROR_FOR_PORTAL; if( g_pGameServer->IsConnected( RANKING_SERVER ) ) { #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM RankingManager::LEVEL_AREA* level_area = g_GameRankingMgr.FindLVArea_ID(pMsg->ranking_id); if (level_area != NULL) { rt = g_GameRankingMgr.DoReward( level_area->m_MissionNo, pMsg->m_Key, pPlayer->GetCharName(), level_area->m_RankingType ); } else // if (level_area == NULL) { rt = RC::RC_RANKING_FAILED; SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"] Error! RankingID[%d] Level_Area Not Exist!", pMsg->ranking_id); } #else rt = g_GameRankingMgr.DoReward( pMsg->m_MissionNo, pMsg->m_Key, pPlayer->GetCharName() ); #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM if( rt == RC::RC_RANKING_SUCCESS ) { if( pPlayer->GetItemManager()->GetItemSlotContainer(SI_INVENTORY)->GetEmptySlotNum() > 1 ) { MSG_GP_RANKING_MISSION_REWARD_SYN msg; msg.m_dwKey = pMsg->m_dwKey; msg.m_Key = pMsg->m_Key; #ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR msg.ranking_type = level_area->m_RankingType; #endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM msg.m_MissionNo = level_area->m_MissionNo; #else msg.m_MissionNo = pMsg->m_MissionNo; #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM _tcsncpy( msg.m_tszCharName, pPlayer->GetCharName(), MAX_CHARNAME_LENGTH ); msg.m_tszCharName[MAX_CHARNAME_LENGTH] = '\0'; g_pGameServer->SendToServer( RANKING_SERVER, &msg, msg.GetSize() ); return ; //------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------ } else { rt = RC::RC_RANKING_NOT_SPACE_FOR_REWARD; // TRANSACTION Ãë¼Ò #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM g_GameRankingMgr.OnReward( FALSE, level_area->m_MissionNo, pMsg->m_Key, pPlayer->GetCharName(), level_area->m_RankingType ); #else g_GameRankingMgr.OnReward( FALSE, pMsg->m_MissionNo, pMsg->m_Key, pPlayer->GetCharName() ); #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM } } } MSG_CG_MISSION_RANKING_REWARD_NAK msg; msg.m_dwErrorCode = rt; pPlayer->SendPacket( &msg, sizeof(msg) ); } #ifdef _NA_006801_20130705_RENEWAL_RANKINGSYSTEM Handler_Client_IMPL( CG_MISSION_RANKING_SETTLEDDATE_INFO_SYN ) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_MISSION_RANKING_SETTLEDDATE_INFO_SYN * pMsg = static_cast(pRecvMsg); Player* player = PlayerManager::Instance()->FindPlayerByUserKey( pMsg->m_dwKey ); ASSERT( player ); if( player == NULL) return ; if( player->GetField() == NULL ) return; if ( g_GameRankingMgr.GetStatus() != eRANKING_STATUS_NORMAL ) { MSG_CG_MISSION_RANKING_SETTLEDDATE_INFO_NAK nak_msg; nak_msg.error_code = RC::RC_RANKING_NETWORK_ERROR_FOR_PORTAL; player->SendPacket( &nak_msg, sizeof(nak_msg) ); return; } MSG_CG_MISSION_RANKING_SETTLEDDATE_INFO_ACK ack_msg; // °á»êÀÏ ack_msg.settled_date = g_GameRankingMgr.GetSettledDate(); //º¸»ó¹ÞÀ»¼öÀÖ´Â ¹Ì¼Ç¸®½ºÆ® g_GameRankingMgr.GetRewardableMissionList(player->GetCharName(), ack_msg.reward_mission_list); player->SendPacket( &ack_msg, sizeof(ack_msg) ); } #endif //_NA_006801_20130705_RENEWAL_RANKINGSYSTEM #endif // _NA_008012_20150130_RANKING_SYSTEM // _NA_0_20091118_GAMEROOM_BATTLE_RESULT Handler_Client_IMPL( CG_ZONE_PLAYER_BATTLE_RESULT_SYN ) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_ZONE_PLAYER_BATTLE_RESULT_SYN * pMsg = (MSG_CG_ZONE_PLAYER_BATTLE_RESULT_SYN *)pRecvMsg; Player * pPlayer = PlayerManager::Instance()->FindPlayerByUserKey( pMsg->m_dwKey ); ASSERT( pPlayer ); if( !pPlayer ) return; if( !pPlayer->GetField() ) { MSG_CG_ZONE_PLAYER_BATTLE_RESULT_NAK message_nak; pPlayer->SendPacket(&message_nak, sizeof(message_nak)); return; } GameZone* pZone = pPlayer->GetGameZonePtr(); if( !pZone ) { MSG_CG_ZONE_PLAYER_BATTLE_RESULT_NAK message_nak; pPlayer->SendPacket(&message_nak, sizeof(message_nak)); return; } GameBattleResult* pBattleResult = pZone->GetGameBattleResult(); if( !pBattleResult ) { MSG_CG_ZONE_PLAYER_BATTLE_RESULT_NAK message_nak; pPlayer->SendPacket(&message_nak, sizeof(message_nak)); return; } if( !pBattleResult->SendBattleResult(pPlayer, pMsg->m_OwnerGuild) ) { MSG_CG_ZONE_PLAYER_BATTLE_RESULT_NAK message_nak; pPlayer->SendPacket(&message_nak, sizeof(message_nak)); } } #ifdef _NA_003027_20111013_HONOR_SYSTEM #include "HonorSystem/HonorSystem.h" Handler_Client_IMPL(CG_HONORSYSTEM_PACKET) { __TOUCHED((pServerSession, pRecvMsg, wSize)); HonorSystem::Instance()->ParseCGPacket(pRecvMsg); } #endif //_NA_003027_20111013_HONOR_SYSTEM #ifdef _NA004034_20120102_POINT_WALLET_SYSTEM Handler_Client_IMPL(CG_POINTWALLET_PACKET) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_POINTWALLET_PACKET* packet = static_cast(pRecvMsg); Player* player = PlayerManager::Instance()->FindPlayerByUserKey( packet->m_dwKey ); if( !player ) return; PointWalletManager* const pointwallet_manager = player->GetPointWalletManager(); pointwallet_manager->ParseCGPacket(packet); } #endif //_NA004034_20120102_POINT_WALLET_SYSTEM //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND Handler_Client_IMPL(CG_CHAOS_ZONE_PACKET) { __TOUCHED((pServerSession, pRecvMsg, wSize)); GameChaosZoneManager::Instance()->ParseCGPacket(pServerSession, pRecvMsg, wSize); } #ifdef _NA_000000_20140120_SMART_NPC_SYSTEM Handler_Client_IMPL(CG_CHARINFO_SMARTNPC_PACKET) { __TOUCHED((pServerSession, pRecvMsg, wSize)); g_ExtraNPCManager.ParseCGPacket(pRecvMsg); } #endif //_NA_000000_20140120_SMART_NPC_SYSTEM #ifdef _NA_008012_20150204_SUN_RANKING_SYSTEM Handler_Client_IMPL(CG_ETC_SUN_RANKING_SYN) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_ETC_SUN_RANKING_SYN* packet = static_cast(pRecvMsg); Player* player = PlayerManager::Instance()->FindPlayerByUserKey( packet->m_dwKey ); if( !player ) return; MSG_CG_ETC_SUN_RANKING_ACK msg; RC::eSUN_RANKING_RESULT result = SunRankingManager::Instance()->GetSunRankingInfos( msg, packet->ranking_type, player->GetCharGuid(), MSG_CG_ETC_SUN_RANKING_ACK::MAX_INFO_COUNT, packet->is_guild_ranking, player->GetGuildGuid()); if (result != RC::RC_SUN_RANKING_SUCCESS) { MSG_CG_ETC_SUN_RANKING_NAK nak_msg; nak_msg.error_code = result; player->SendPacket(&nak_msg, sizeof(nak_msg)); return; } player->SendPacket(&msg, sizeof(msg)); } Handler_Client_IMPL(CG_ETC_SUN_RANKING_SETTLE_INFO_SYN) { __TOUCHED((pServerSession, pRecvMsg, wSize)); MSG_CG_ETC_SUN_RANKING_SETTLE_INFO_SYN* packet = static_cast(pRecvMsg); Player* player = PlayerManager::Instance()->FindPlayerByUserKey( packet->m_dwKey ); if( !player ) return; MSG_CG_ETC_SUN_RANKING_SETTLE_INFO_ACK msg; msg.type = SunRankingParser::Instance()->GetSettleDateType(); msg.day = SunRankingParser::Instance()->GetSettleDateDay(); msg.time = SunRankingParser::Instance()->GetSettleDateTime(); player->SendPacket(&msg, sizeof(msg)); } #endif // _NA_008012_20150204_SUN_RANKING_SYSTEM