sgmodifyguildmemberokhandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 279 行

CPP
279
字号
//----------------------------------------------------------------------//// Filename    : SGModifyGuildMemberOKHandler.cpp// Written By  : Reiot// Description :////----------------------------------------------------------------------// include files#include "SGModifyGuildMemberOK.h"#include "Properties.h"#ifdef __GAME_SERVER__	#include "DB.h"	#include "Guild.h"	#include "GuildManager.h"	#include "PCFinder.h"	#include "Player.h"	#include "PlayerCreature.h"	#include "Zone.h"	#include "StringPool.h"	#include "Gpackets/GCModifyGuildMemberInfo.h"	#include "Gpackets/GCOtherModifyInfo.h"	#include "Gpackets/GCSystemMessage.h"	#include <stdio.h>#endif//----------------------------------------------------------------------// // SGModifyGuildMemberOKHandler::execute()// //----------------------------------------------------------------------void SGModifyGuildMemberOKHandler::execute ( SGModifyGuildMemberOK* pPacket )	 throw ( ProtocolException , Error ){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	//cout << "SGModifyGuildMember received" << endl;	Assert( pPacket != NULL );	// 辨靛甫 啊廉柯促.	Guild* pGuild = g_pGuildManager->getGuild( pPacket->getGuildID() );	try { Assert( pGuild != NULL ); } catch ( Throwable& ) { return; }	// 辨靛 糕滚牢瘤 犬牢茄促.	GuildMember* pGuildMember = pGuild->getMember( pPacket->getName() );	try { Assert( pGuildMember != NULL ); } catch ( Throwable& ) { return; }	if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_WAIT &&		 pPacket->getGuildMemberRank() == GuildMember::GUILDMEMBER_RANK_NORMAL )	{		////////////////////////////////////////////////////////////////////////////		// 辨靛 啊涝 脚没阑 铰牢茄 版快捞促.		////////////////////////////////////////////////////////////////////////////		// 辨靛糕滚 沥焊甫 函版茄促.		pGuild->modifyMemberRank( pGuildMember->getName(), pPacket->getGuildMemberRank() );		// 立加秦 乐促搁 皋矫瘤甫 焊辰促.		__ENTER_CRITICAL_SECTION((*g_pPCFinder))		Creature* pCreature = g_pPCFinder->getCreature_LOCKED( pGuildMember->getName() );		if ( pCreature != NULL && pCreature->isPC() )		{			PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPlayerCreature != NULL );			// 角力 辨靛 ID甫 殿废茄促.			pPlayerCreature->setGuildID( pGuildMember->getGuildID() );			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );			Zone* pZone = pCreature->getZone();			Assert( pZone != NULL );			// 官诧 辨靛 ID 沥焊甫 焊郴霖促.			GCModifyGuildMemberInfo gcModifyGuildMemberInfo;			gcModifyGuildMemberInfo.setGuildID( pGuild->getID() );			gcModifyGuildMemberInfo.setGuildName( pGuild->getName() );			gcModifyGuildMemberInfo.setGuildMemberRank( pGuildMember->getRank() );			pPlayer->sendPacket( &gcModifyGuildMemberInfo );			// 辨靛 啊涝 铰牢 皋矫瘤甫 焊辰促.			Statement* pStmt = NULL;			Result* pResult = NULL;						BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();				pResult = pStmt->executeQuery( "SELECT Message FROM Messages WHERE Receiver = '%s'", pGuildMember->getName().c_str() );				while ( pResult->next() )				{					GCSystemMessage gcSystemMessage;					gcSystemMessage.setMessage( pResult->getString(1) );					pPlayer->sendPacket( &gcSystemMessage );				}				pStmt->executeQuery( "DELETE FROM Messages WHERE Receiver = '%s'", pGuildMember->getName().c_str() );				SAFE_DELETE( pStmt );			}			END_DB(pStmt)			// 林困俊 辨靛 啊涝阑 舅赴促.			GCOtherModifyInfo gcOtherModifyInfo;			gcOtherModifyInfo.setObjectID( pCreature->getObjectID() );			gcOtherModifyInfo.addShortData( MODIFY_GUILDID, pGuildMember->getGuildID() );			pZone->broadcastPacket( pCreature->getX(), pCreature->getY(), &gcOtherModifyInfo );		}		// 铰牢茄 荤恩俊霸 皋矫瘤甫 焊辰促.		pCreature = g_pPCFinder->getCreature_LOCKED( pPacket->getSender() );		if ( pCreature != NULL && pCreature->isPC() )		{			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );//			StringStream msg;//			msg << pGuildMember->getName() << "丛狼 辨靛 啊涝阑 铰牢窍看嚼聪促.";            char msg[100];            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                sprintf( msg, g_pStringPool->c_str( STRID_ACCEPT_TEAM_JOIN ), pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                sprintf( msg, g_pStringPool->c_str( STRID_ACCEPT_CLAN_JOIN ), pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                sprintf( msg, g_pStringPool->c_str( STRID_ACCEPT_CLAN_JOIN ), pGuildMember->getName().c_str() );			GCSystemMessage gcSystemMessage;			gcSystemMessage.setMessage( msg );			pPlayer->sendPacket( &gcSystemMessage );		}		__LEAVE_CRITICAL_SECTION((*g_pPCFinder))	}	else if ( pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_MASTER &&		 	pPacket->getGuildMemberRank() == GuildMember::GUILDMEMBER_RANK_MASTER )	{		///////////////////////////////////////////////////////////		// 辨靛 付胶磐甫 函版茄促.		///////////////////////////////////////////////////////////		string sMaster = pGuild->getMaster();		// 辨靛付胶磐狼 珐农甫 货肺 辨靛付胶磐啊 登绰 糕滚狼 盔贰 珐农肺 官层霖促.		pGuild->modifyMemberRank( sMaster, pGuildMember->getRank() );		// 货 辨靛付胶磐狼 珐农甫 技泼茄促.		pGuild->modifyMemberRank( pGuildMember->getName(), pPacket->getGuildMemberRank() );		// 辨靛 坷宏璃飘俊 货 辨靛 付胶飘肺 技泼茄促.		pGuild->setMaster( pGuildMember->getName() );		// 立加秦 乐促搁 皋矫瘤甫 焊辰促.		__ENTER_CRITICAL_SECTION((*g_pPCFinder))		// 货 辨靛付胶磐啊 霸烙辑滚俊 乐促搁 货 沥焊甫 焊郴霖促.		Creature* pCreature = g_pPCFinder->getCreature_LOCKED( pGuildMember->getName() );		if ( pCreature != NULL && pCreature->isPC() )		{			PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPlayerCreature != NULL );			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );			// 官诧 辨靛 ID 沥焊甫 焊郴霖促.			GCModifyGuildMemberInfo gcModifyGuildMemberInfo;			gcModifyGuildMemberInfo.setGuildID( pGuild->getID() );			gcModifyGuildMemberInfo.setGuildName( pGuild->getName() );			gcModifyGuildMemberInfo.setGuildMemberRank( pGuildMember->getRank() );			pPlayer->sendPacket( &gcModifyGuildMemberInfo );		}		// 盔贰狼 辨靛付胶磐啊 霸烙辑滚俊 乐促搁 货 沥焊甫 焊郴霖促.		pCreature = g_pPCFinder->getCreature_LOCKED( sMaster );		if ( pCreature != NULL && pCreature->isPC() )		{			PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPlayerCreature != NULL );			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );			// 官诧 辨靛 ID 沥焊甫 焊郴霖促.			GCModifyGuildMemberInfo gcModifyGuildMemberInfo;			gcModifyGuildMemberInfo.setGuildID( pGuild->getID() );			gcModifyGuildMemberInfo.setGuildName( pGuild->getName() );			gcModifyGuildMemberInfo.setGuildMemberRank( pGuildMember->getRank() );			pPlayer->sendPacket( &gcModifyGuildMemberInfo );		}		// 辨付甫 官槽 荤恩俊霸 皋矫瘤甫 焊辰促.		pCreature = g_pPCFinder->getCreature_LOCKED( pPacket->getSender() );		if ( pCreature != NULL && pCreature->isPC() )		{			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );//			StringStream msg;//			msg << pGuild->getName() << "狼 付胶磐甫 " << sMaster << " 俊辑 "//				<< pGuildMember->getName() << " 栏肺 函版窍看嚼聪促.";			char msg[200];			sprintf( msg, g_pStringPool->c_str( STRID_MODIFY_GUILD_MASTER ),							pGuild->getName().c_str(), sMaster.c_str(), pGuildMember->getName().c_str() );			GCSystemMessage gcSystemMessage;			gcSystemMessage.setMessage( msg );			pPlayer->sendPacket( &gcSystemMessage );		}		__LEAVE_CRITICAL_SECTION((*g_pPCFinder))	}	else	{		///////////////////////////////////////////////////////////		// 辨靛糕滚 沥焊甫 函版茄促.		///////////////////////////////////////////////////////////		pGuild->modifyMemberRank( pGuildMember->getName(), pPacket->getGuildMemberRank() );		// 立加秦 乐促搁 皋矫瘤甫 焊辰促.		__ENTER_CRITICAL_SECTION((*g_pPCFinder))		Creature* pCreature = g_pPCFinder->getCreature_LOCKED( pGuildMember->getName() );		if ( pCreature != NULL && pCreature->isPC() )		{			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );			GCSystemMessage gcSystemMessage;            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_TEAM_RIGHT_CHANGED ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_RIGHT_CHANGED ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_RIGHT_CHANGED ) );			pPlayer->sendPacket( &gcSystemMessage );		}		// 函版矫挪 荤恩俊霸 皋矫瘤甫 焊辰促.		pCreature = g_pPCFinder->getCreature_LOCKED( pPacket->getSender() );		if ( pCreature != NULL && pCreature->isPC() )		{			Player* pPlayer = pCreature->getPlayer();			Assert( pPlayer != NULL );//			StringStream msg;//			msg << pGuildMember->getName() << "丛狼 辨靛 鼻茄捞 函版登菌嚼聪促.";            char msg[100];            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                sprintf( msg, g_pStringPool->c_str( STRID_TEAM_RIGHT_CHANGED_2 ), pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_RIGHT_CHANGED_2 ), pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_RIGHT_CHANGED_2 ), pGuildMember->getName().c_str() );			GCSystemMessage gcSystemMessage;			gcSystemMessage.setMessage( msg );			pPlayer->sendPacket( &gcSystemMessage );		}		__LEAVE_CRITICAL_SECTION((*g_pPCFinder))	}#endif			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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