📄 cbillingplayer.cpp
字号:
if ( pCreature != NULL ) { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pCreature->getPlayer()); if ( pGamePlayer == NULL ) { g_pPCFinder->unlock(); Assert( false ); } // 沥樊力老 版快, 矫埃捞 倔付 巢疽促绊 焊咯霖促. if ( body.Player_Type == CBILLING_PLAYER_TYPE_POINT ) { int leftTime = body.Free_Left_Time + body.Rating_Left_Time; if ( leftTime <= pGamePlayer->getCBLastShowLeftTime() ) { char m[200]; sprintf( m, g_pStringPool->c_str( STRID_CB_LEFT_POINT ), leftTime / 10 ); GCSystemMessage msg; msg.setMessage( m ); pGamePlayer->sendPacket( &msg ); // 促澜俊 焊咯 临 矫埃 汲沥 pGamePlayer->setCBLastShowLeftTime( leftTime - 30 ); } } if ( pGamePlayer->getCBPlayerType() != body.Player_Type ) { if ( body.Player_Type == CBILLING_PLAYER_TYPE_POINT ) { int leftTime = body.Free_Left_Time + body.Rating_Left_Time; // point user 肺 官布促. char m[200]; sprintf( m, g_pStringPool->c_str( STRID_CB_CHANGE_TO_POINT_PLAYER ), leftTime / 10 ); GCSystemMessage msg; msg.setMessage( m ); pGamePlayer->sendPacket( &msg ); } else if ( body.Player_Type == CBILLING_PLAYER_TYPE_MONTHLY ) { // monthly user 肺 官布促. char m[200]; sprintf( m, g_pStringPool->c_str( STRID_CB_CHANGE_TO_MONTHLY_PLAYER ) ); GCSystemMessage msg; msg.setMessage( m ); pGamePlayer->sendPacket( &msg ); } pGamePlayer->setCBPlayerType( body.Player_Type ); } } __LEAVE_CRITICAL_SECTION( (*g_pPCFinder) )#ifdef __COUT_CBILLING_SYSTEM__ cout << "----------------------------------------------------------------" << endl; cout << "Response Minus Point : " << body.Login_Name << endl; cout << header.toString().c_str() << endl; cout << body.toString().c_str() << endl;#endif filelog( LOGFILE_CBILLING_PACKET, "Response Minus Point : %s\n%s\n%s", body.Login_Name, header.toString().c_str(), body.toString().c_str() ); logPacket( &header, NULL, &body, NULL, NULL ); __END_CATCH}void CBillingPlayer::executeMinusMinute( CBillingPacketHeader& header, CBillingPacketResponseMinusMinuteBody& body ) throw ( IOException, Error ){ __BEGIN_TRY#ifdef __COUT_CBILLING_SYSTEM__ cout << "----------------------------------------------------------------" << endl; cout << "Response Minus Minute : " << body.Login_Name << endl; cout << header.toString().c_str() << endl; cout << body.toString().c_str() << endl;#endif filelog( LOGFILE_CBILLING_PACKET, "Response Minus Minute : %s\n%s\n%s", body.Login_Name, header.toString().c_str(), body.toString().c_str() ); __END_CATCH}void CBillingPlayer::executeLogout( CBillingPacketHeader& header, CBillingPacketResponseLogoutBody& body ) throw ( IOException, Error ){ __BEGIN_TRY#ifdef __COUT_CBILLING_SYSTEM__ cout << "----------------------------------------------------------------" << endl; cout << "Response Logout OK : " << body.Login_Name << endl; cout << header.toString().c_str() << endl; cout << body.toString().c_str() << endl;#endif filelog( LOGFILE_CBILLING_PACKET, "Response Logout OK : %s\n%s\n%s", body.Login_Name, header.toString().c_str(), body.toString().c_str() ); logPacket( &header, NULL, NULL, &body, NULL ); __END_CATCH}#endif#ifdef __GAME_SERVER__void CBillingPlayer::checkSessionID( CBillingPacketHeader& header, GamePlayer* pGamePlayer ) throw ( IOException, Error ){ __BEGIN_TRY if ( pGamePlayer->increaseRecvID() != header.Session_ID ) {#ifdef __COUT_CBILLING_SYSTEM__ cerr << "******************************************************************" << endl; cerr << "Session Fail : Recv ID = " << header.Session_ID << ", Respect ID = " << pGamePlayer->getRecvID() << endl; cerr << header.toString().c_str() << endl;#endif filelog( LOGFILE_CBILLING_ERROR, "Session Fail : RecvID = %d, Respect ID = %d\n%s", header.Session_ID, pGamePlayer->getRecvID(), header.toString().c_str() ); } __END_CATCH}#endif#ifdef __GAME_SERVER__ // DB俊 packet 肺弊 巢扁扁void CBillingPlayer::logPacket( CBillingPacketHeader* header, CBillingPacketResponseLoginBody* login, CBillingPacketResponseMinusPointBody* point, CBillingPacketResponseLogoutBody* logout, CBillingPacketErrorBody* error ) throw ( Error ){ __BEGIN_TRY Statement* pStmt = NULL; BEGIN_DB { string playerID( "" ); string methodCode( "" ); string returnCode( "" ); string playerType( "NONE" ); string payType( "NONE" ); int freePayPoint = 0; int freeLeftTime = 0; int payPoint = 0; int leftPayTime = 0; VSDateTime endDateTime( "2004-01-01 00:00:00" ); switch ( header->Return_Code ) { case CBILLING_RETURN_CODE_SUCCESS: { returnCode = "SUCCESS"; break; } case CBILLING_RETURN_CODE_FAIL: { returnCode = "FAIL"; break; } case CBILLING_RETURN_CODE_DB_ERROR: { returnCode = "DB_ERROR"; break; } case CBILLING_RETURN_CODE_INVALID_LOGIN_NAME: { returnCode = "INVALID_LOGIN_NAME"; break; } case CBILLING_RETURN_CODE_FAIL_MINUS_POINT: { returnCode = "FAIL_MINUS_POINT"; break; } case CBILLING_RETURN_CODE_FAIL_MINUS_MINUTE: { returnCode = "FAIL_MINUS_MINUTE"; break; } default: { throw Error( "Return Code Error" ); break; } } switch ( header->Method_Code ) { case CBILLING_METHOD_CODE_LOGIN: { methodCode = "LOGIN"; if ( header->Return_Code != CBILLING_RETURN_CODE_SUCCESS ) { Assert( error != NULL ); playerID = error->Login_Name; break; } Assert( login != NULL ); playerID = login->Login_Name; endDateTime = VSDateTime::fromYYYYMMDDHHMMSS( login->End_Date_Time ); switch ( login->Player_Type ) { case CBILLING_PLAYER_TYPE_UNLIMITED: { playerType = "UNLIMITED"; break; } case CBILLING_PLAYER_TYPE_LIMITED: { playerType = "LIMITED"; break; } case CBILLING_PLAYER_TYPE_MONTHLY: { playerType = "MONTHLY"; break; } case CBILLING_PLAYER_TYPE_POINT: { playerType = "POINT"; break; } default: { throw Error( "Player Type Error" ); break; } } switch ( login->Pay_Type ) { case CBILLING_PAY_TYPE_PRE_PAID: { payType = "PRE_PAID"; break; } case CBILLING_PAY_TYPE_POST_PAID: { payType = "POST_PAID"; break; } default: { throw Error( "Pay Type Error" ); break; } } freeLeftTime = login->Free_Left_Time; leftPayTime = login->Rating_Left_Time; break; } case CBILLING_METHOD_CODE_MINUS_POINT: { methodCode = "MINUS_POINT"; if ( header->Return_Code != CBILLING_RETURN_CODE_SUCCESS ) { Assert( error != NULL ); playerID = error->Login_Name; break; } Assert( point != NULL ); playerID = point->Login_Name; switch ( point->Player_Type ) { case CBILLING_PLAYER_TYPE_UNLIMITED: { playerType = "UNLIMITED"; break; } case CBILLING_PLAYER_TYPE_LIMITED: { playerType = "LIMITED"; break; } case CBILLING_PLAYER_TYPE_MONTHLY: { playerType = "MONTHLY"; break; } case CBILLING_PLAYER_TYPE_POINT: { playerType = "POINT"; break; } default: { throw Error( "Player Type Error" ); break; } } switch ( point->Pay_Type ) { case CBILLING_PAY_TYPE_PRE_PAID: { payType = "PRE_PAID"; break; } case CBILLING_PAY_TYPE_POST_PAID: { payType = "POST_PAID"; break; } default: { throw Error( "Pay Type Error" ); break; } } freeLeftTime = point->Free_Left_Time; leftPayTime = point->Rating_Left_Time; freePayPoint = point->Minus_Free_Point; payPoint = point->Minus_Point; break; } case CBILLING_METHOD_CODE_LOGOUT: { methodCode = "LOGOUT"; if ( header->Return_Code != CBILLING_RETURN_CODE_SUCCESS ) { Assert( error != NULL ); playerID = error->Login_Name; break; } Assert( logout != NULL ); playerID = logout->Login_Name; freePayPoint = logout->Minus_Free_Point; payPoint = logout->Minus_Point; break; } default: { throw Error( "Method Code error" ); break; } } pStmt = g_pDatabaseManager->getCBillingConnection( "CBILLING" )->createStatement(); Assert( pStmt != NULL ); pStmt->executeQuery( "INSERT INTO TB_BillingLog( DateTime, PlayerID, PacketType, ReturnCode, PlayerType, PayType, FreePayPoint, FreeLeftTime, PayPoint, LeftPayTime, EndDateTime ) VALUES ( NOW(), '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, '%s' )", playerID.c_str(), methodCode.c_str(), returnCode.c_str(), playerType.c_str(), payType.c_str(), freePayPoint, freeLeftTime, payPoint, leftPayTime, endDateTime.toDateTime().c_str() ); SAFE_DELETE( pStmt ); } END_DB( pStmt ) __END_CATCH}#endif// get debug stringstring CBillingPlayer::toString() const throw ( Error ){ __BEGIN_TRY StringStream msg; msg << "CBillingPlayer(" << "SocketID:" << m_pSocket->getSOCKET() << ",Host:"<< m_pSocket->getHost() << ",ID:" << m_ID << ")"; return msg.toString(); __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -