⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commonbillingpackethandler.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////// 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 + -