cgwhisperhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 207 行

CPP
207
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGWhisperHandler.cc// Written By  : reiot@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGWhisper.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Creature.h"	#include "PCFinder.h"	#include "LogNameManager.h"	#include "Gpackets/GCWhisper.h"	#include "Gpackets/GCWhisperFailed.h"	#include "Gpackets/GGServerChat.h"	#include "DB.h"	#include "GameServerInfoManager.h"	#include "LoginServerManager.h"	#include "Properties.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGWhisperHandler::execute (CGWhisper* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	try 	{		Player* pTargetPlayer = NULL;				Creature* pCreature = pGamePlayer->getCreature();		bool Success = false;					// 捞抚栏肺 荤侩磊甫 茫酒柯促.		__ENTER_CRITICAL_SECTION((*g_pPCFinder))					Creature* pTargetCreature = g_pPCFinder->getCreature_LOCKED(pPacket->getName());		// NoSuch力芭. by sigi. 2002.5.2		if (pTargetCreature != NULL) 		{			// 盲泼 肺弊甫 巢变促. by sigi. 2002.10.30			if (LogNameManager::getInstance().isExist( pCreature->getName() ))			{				filelog("chatLog.txt", "[Whisper] %s --> %s> %s", 						pCreature->getName().c_str(), 						pTargetCreature->getName().c_str(), 						pPacket->getMessage().c_str());			}			pTargetPlayer = pTargetCreature->getPlayer();			Assert(pTargetPlayer != NULL);			Success = true;			if (pGamePlayer->isPenaltyFlag(PENALTY_TYPE_MUTE)) {				Success = false;			}			// 荤侩磊甫 己傍利栏肺 茫疽栏搁 Message 傈价			if (Success) {				if (((GamePlayer*)pTargetPlayer)->getPlayerStatus() == GPS_NORMAL) {					if (pCreature != NULL && pTargetCreature != NULL) {						// 辑滚俊辑 努扼捞攫飘肺 傈价窍骨肺 GC- 菩哦阑 荤侩秦具 茄促.						GCWhisper gcWhisper;											// 农府贸 捞抚苞 皋矫瘤甫 菩哦俊 措涝茄促.						gcWhisper.setName(pCreature->getName());							gcWhisper.setColor( pPacket->getColor() );						gcWhisper.setMessage(pPacket->getMessage());						gcWhisper.setRace(pCreature->getRace());						pTargetPlayer->sendPacket(&gcWhisper);					} else {						GCWhisperFailed gcWhisperFailed;						pGamePlayer->sendPacket(&gcWhisperFailed);					}				}			}			// 弊繁 荤侩磊啊 绝芭唱 捞抚阑 肋给 持菌阑锭 Failed		} 		else 		{			/*inthesky*/			/*	DB甫 第廉辑 荤侩磊甫 茫绰促. DB俊辑 啊廉棵 沥焊绰 Player, Logon 沥焊客, ServerID 沥档啊 登佡促?			 *	茫栏搁 秦寸霸烙辑滚肺 GGServerChat 菩哦阑 傈价茄促 (sender, Color, Message, Race(辆练), 			 *	GGServerChat 菩哦阑 罐篮 辑滚绰 荤侩磊 捞抚栏肺 敲饭捞绢甫 茫酒辑 GCWhisper菩哦阑 父甸绢 金促.			 *	绝栏搁 富磊(Failed焊辰促).			 *	荤侩磊啊 乐促 绝促绰 DB俊辑父 魄窜窍磊. DB狼 脚汾档绰..??????			 */			Statement* pStmt = NULL;			Result* pResult = NULL;						bool 				bServerFind	= false;			ServerGroupID_t		CurrentServerGroupID;		        	string				LogOn;					string				PlayerID;			try 			{    	        BEGIN_DB        	    {           	    	pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();					// 农府媚捞抚栏肺 Slayer抛捞喉俊辑 PlayerID 甫 茫绰促.					pResult = pStmt->executeQuery("SELECT PlayerID FROM Slayer WHERE Name='%s'",pPacket->getName().c_str());						if ( pResult->next() )							{						PlayerID				= pResult->getString( 1 );						SAFE_DELETE(pStmt);						// 茫篮 PlayerID肺 Player抛捞喉俊辑 ServerGroupID客 LogOn沥焊甫 茫绰促.						pStmt	= g_pDatabaseManager->getDistConnection("USERINFO")->createStatement();						pResult	= pStmt->executeQuery("SELECT CurrentServerGroupID, LogOn FROM Player WHERE PlayerID='%s'",PlayerID.c_str());											// Player 沥焊甫 茫疽促.						if ( pResult->next() )						{							CurrentServerGroupID	= pResult->getInt	( 1 );							LogOn					= pResult->getString( 2 );							// 霸烙吝牢 惑怕老锭 bServerFind俊 true flag							if ( LogOn == "GAME" )							{								bServerFind = true;								SAFE_DELETE(pStmt);							}						}						else { SAFE_DELETE(pStmt); }					}					else { SAFE_DELETE(pStmt); }										if(bServerFind)			// 茫疽阑锭					{						/*	GGServerChat 菩哦阑 父甸绢辑						 *	金促...霸烙辑滚肺..						 *  pCreature->getName() = 焊郴绰 农府媚 捞抚							 *	pPacket->getName() = 罐绰 农府媚 捞抚						 *	PlayerID	= 罐绰 农府媚 拌沥						 *	pPacket->getColor()	= 臂磊祸							 *	pPacket->getMessage() = 皋技瘤						 *  pCreature->getRace() = 焊郴绰 农府媚 辆练						 * */																GameServerInfo*	pGameServerInfo = g_pGameServerInfoManager->getGameServerInfo(1,CurrentServerGroupID,g_pConfig->getPropertyInt( "WorldID" ));						if ( pGameServerInfo != NULL )						{							GGServerChat ggServerChat;							ggServerChat.setSender	(pCreature->getName()		);							ggServerChat.setReceiver(pPacket->getName()	);							ggServerChat.setColor	(pPacket->getColor()		);							ggServerChat.setMessage	(pPacket->getMessage()		);							ggServerChat.setRace	(pCreature->getRace()		);														g_pLoginServerManager->sendPacket( pGameServerInfo->getIP(), pGameServerInfo->getUDPPort(), &ggServerChat );						}						else						{							GCWhisperFailed gcWhisperFailed;							pGamePlayer->sendPacket(&gcWhisperFailed);						}					}					else					{						GCWhisperFailed gcWhisperFailed;		                pGamePlayer->sendPacket(&gcWhisperFailed);					}	            }    	        END_DB(pStmt)        	} catch(...) { /* write log plz */ }					}		__LEAVE_CRITICAL_SECTION((*g_pPCFinder))	} 	catch(Throwable & t) 	{		//cout << t.toString() << endl;		GCWhisperFailed gcWhisperFailed;		pGamePlayer->sendPacket(&gcWhisperFailed);	}#endif			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?