📄 commonbillingpackethandler.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : CommonBillingPacketHandler.cc// Written By : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CommonBillingPacket.h"#include "BillingPlayer.h"#ifdef __GAME_SERVER__ #include "PlayerCreature.h" #include "GamePlayer.h" #include "PCFinder.h" #include "EventKick.h" #include "EventSystemMessage.h" #include "VSDateTime.h" #include "StringPool.h" #include "ResurrectLocationManager.h" #include "ZoneUtil.h" #include "BillingResultLoginErrorMessage.h"#elif defined(__LOGIN_SERVER__) #include "LoginPlayer.h" #include "LoginPlayerManager.h"#endif#include "Gpackets/GCSystemMessage.h"// packetUtil.h俊 眠啊秦具 茄促.extern void sendSystemMessage(GamePlayer* pGamePlayer, const string& msg) throw (Error);////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CommonBillingPacketHandler::execute (CommonBillingPacket* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX //#ifdef __GAME_SERVER__ // 促 肺弊甫 巢扁磊 filelog(LOGFILE_BILLING_PACKET, "%s", pPacket->toString().c_str()); int code = pPacket->Packet_Type; switch (code) { // 霸烙俊 甸绢棵锭 焊辰 packet俊 措茄 牢刘 沥焊 case BILLING_PACKET_LOGIN : executeBillingLoginVerify(pPacket, pPlayer); break; // 巢篮 矫埃阑 焊咯霖促. (B->G only) case BILLING_PACKET_REMAIN : executeBillingRemain(pPacket, pPlayer); break; // 立加 吝 眉农. BillingServer肺 立加 沥焊甫 焊郴霖促. case BILLING_PACKET_CHECK : executeBillingCheck(pPacket, pPlayer); break; // 蜡丰 荤侩 啊瓷茄瘤父 眉农茄促. case BILLING_PACKET_LOGIN_CHECK : executeBillingLoginCheckVerify(pPacket, pPlayer); break; default : break; }//#endif __END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 霸烙俊 甸绢棵锭 焊辰 packet俊 措茄 牢刘 沥焊//////////////////////////////////////////////////////////////////////////////void CommonBillingPacketHandler::executeBillingLoginVerify(CommonBillingPacket* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX #ifdef __GAME_SERVER__ int result = pPacket->Result; __ENTER_CRITICAL_SECTION((*g_pPCFinder)) Creature* pCreature = g_pPCFinder->getCreatureByID_LOCKED(pPacket->User_ID); if (pCreature!=NULL) { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pCreature->getPlayer()); // 八刘 登菌促绊 眉农茄促. pGamePlayer->setBillingLoginVerified(); if (result==BILLING_RESULT_LOGIN_OK) { char userStatus[10]; memcpy( userStatus, pPacket->User_Status, 2 ); userStatus[2] = '\0'; if ( strcmp( userStatus, "PM" ) != 0 ) { char billMethod[10], expireDate[20]; memcpy(billMethod, pPacket->Bill_Method, 2); billMethod[2]='\0'; memcpy(expireDate, pPacket->Expire_Date, 12); expireDate[12]='\0'; filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: PayPlay (%s, %s, %s, %d)", pPacket->User_ID, billMethod, expireDate, pPacket->Remain_Time);#ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: PayPlay ( " << pPacket->User_ID << ", " << billMethod << ", " << expireDate << ", " << pPacket->Remain_Time << " )" << endl;#endif } else { // PC 规 荤侩磊 filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: PayPlay (%s, PCRoom)", pPacket->User_ID);#ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: PayPlay ( " << pPacket->User_ID << ", PCRoom )" << endl;#endif } // 蜡丰 立加 啊瓷 pGamePlayer->setBillingUserStatus( pPacket->User_Status ); pGamePlayer->setPremiumPlay(); // 蜡丰 荤侩磊捞搁.. 公丰敲饭捞啊 鞘夸绝促. #ifdef __PAY_SYSTEM_FREE_LIMIT__ if (pGamePlayer->isPayPlaying()) { bool bClear = true; // Pay沥焊 力芭茄促. pGamePlayer->logoutPayPlay(pGamePlayer->getID(), bClear); } #endif // 立加 饶, 巢篮 矫埃阑 焊郴霖促. sendBillingRemainMessage(pPacket, pGamePlayer); } else if ( result==BILLING_RESULT_LOGIN_NO_ACCOUNT ) { // 公丰 荤侩磊. // 老窜 傲 敌促. // 公丰 荤侩磊档 霸烙且 荐 乐促. // by bezz 2003.04.22 filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: No Account(%s)", pPacket->User_ID ); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: No Account(" << pPacket->User_ID << ")" << endl; #endif // 蜡丰 荤侩 阂啊 // 老窜篮 麦麦窍瘤父.. 傲 楼弗促. //pGamePlayer->setPenaltyFlag( PENALTY_TYPE_KICKED ); //#ifdef __PAY_SYSTEM_FREE_LIMIT__ /* if (pGamePlayer->isPayPlaying()) { Creature* pCreature = pGamePlayer->getCreature(); PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); if (pPC->isPayPlayAvaiable()) { // 酒流 公丰 扁埃捞 巢酒乐绰 版快. filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: FreePlay (%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: FreePlay (" << pPacket->User_ID << ")" << endl; #endif } else { // 瓷仿摹 over等 版快 filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: Disconnect by ATTR (%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: Disconnect by ATTR (" << pPacket->User_ID << ")" << endl; #endif disconnectGamePlayer( pGamePlayer, 5*10 ); // 5檬 饶 楼弗促. } } else //#endif { filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: Disconnect (%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: Disconnect (" << pPacket->User_ID << ")" << endl; #endif disconnectGamePlayer( pGamePlayer, 5*10 ); // 5檬 饶 楼弗促. } */ } else { BillingResultLoginErrorMessage* pMessage = BillingResultLoginErrorMessage::Instance(); sendSystemMessage(pGamePlayer, pMessage->getMessage(result)); filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: Disconnect (%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: Disconnect (" << pPacket->User_ID << ")" << endl; #endif disconnectGamePlayer( pGamePlayer, 10*10 ); // 10 檬 饶 楼弗促. } } else { filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: No Such Player(%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: No Such Player(" << pPacket->User_ID << ")" << endl; #endif } __LEAVE_CRITICAL_SECTION((*g_pPCFinder))#else filelog(LOGFILE_BILLING_PLAYER, "[Error] BillingLoginVerify: Wrong Packet(%s)", pPacket->User_ID);#endif __END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 肺弊牢 辑滚俊辑 蜡丰 荤侩捞 啊瓷茄瘤 眉农父 窍绰 版快//////////////////////////////////////////////////////////////////////////////void CommonBillingPacketHandler::executeBillingLoginCheckVerify(CommonBillingPacket* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX #ifdef __LOGIN_SERVER__ int result = pPacket->Result; __ENTER_CRITICAL_SECTION((*g_pLoginPlayerManager)) LoginPlayer* pLoginPlayer = g_pLoginPlayerManager->getPlayer_NOLOCKED(pPacket->User_ID); if (pLoginPlayer!=NULL) { // 八刘 登菌促绊 眉农茄促. pLoginPlayer->setBillingLoginVerified(); if (result==BILLING_RESULT_LOGIN_OK) { char billMethod[10], expireDate[20]; memcpy(billMethod, pPacket->Bill_Method, 2); billMethod[2]='\0'; memcpy(expireDate, pPacket->Expire_Date, 12); expireDate[12]='\0'; filelog(LOGFILE_BILLING_PLAYER, "LoginVerify: PayPlayCheck (%s, %s, %s, %d)", pPacket->User_ID, billMethod, expireDate, pPacket->Remain_Time);#ifdef __COUT_BILLING_SYSTEM__ cout << "LoginVerify: PayPlayCheck ( " << pPacket->User_ID << ", " << billMethod << ", " << expireDate << ", " << pPacket->Remain_Time << " )" << endl;#endif // 蜡丰 立加 啊瓷 pLoginPlayer->setBillingUserStatus( pPacket->User_Status ); // 局靛呼俊辑 UserStatus甫 救 持绢霖 官恩俊 烙矫肺 荤侩沁带 内靛. by sigi. 2002.12.5 //if (pLoginPlayer->getBillingUserStatus().empty()) //{ // pLoginPlayer->setBillingUserStatus( "HO" ); //} // login辑滚俊辑绰 捞霸 狼固啊 绝摆瘤. // pLoginPlayer->setPremiumPlay(); // 蜡丰 荤侩磊捞搁.. 公丰敲饭捞啊 鞘夸绝促. #ifdef __PAY_SYSTEM_FREE_LIMIT__ if (pLoginPlayer->isPayPlaying()) { bool bClear = true; // Pay沥焊 力芭茄促. pLoginPlayer->logoutPayPlay(pLoginPlayer->getID(), bClear); } #endif } else { if (pLoginPlayer->isPayPlaying()) { // 赣 绢露电.. 霸烙 啊瓷茄 局促. // 某腐磐 瓷仿摹喊肺 楼福绰芭绰 CLSelectPCHandler.cpp俊辑 茄促. pLoginPlayer->setBillingUserStatus( "XX" ); filelog(LOGFILE_BILLING_PLAYER, "LoginCheckVerify: Can FreePlay (%s)", pPacket->User_ID); #ifdef __COUT_BILLING_SYSTEM__ cout << "LoginCheckVerify: Can FreePlay (" << pPacket->User_ID << ")" << endl; #endif } else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -