sgmodifyguildokhandler.cpp

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

CPP
172
字号
//----------------------------------------------------------------------//// Filename    : SGModifyGuildOKHandler.cpp// Written By  : Reiot// Description :////----------------------------------------------------------------------// include files#include "SGModifyGuildOK.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 "ZoneInfoManager.h"	#include "ZoneGroupManager.h"	#include "Properties.h"	#include "Gpackets/GCModifyGuildMemberInfo.h"	#include "Gpackets/GCOtherModifyInfo.h"	#include "Gpackets/GCSystemMessage.h"#endif//----------------------------------------------------------------------// // SGModifyGuildOKHandler::execute()// //----------------------------------------------------------------------void SGModifyGuildOKHandler::execute ( SGModifyGuildOK* pPacket )	 throw ( ProtocolException , Error ){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Guild* pGuild = g_pGuildManager->getGuild( pPacket->getGuildID() );	Assert( pGuild != NULL );	if ( pGuild->getState() == Guild::GUILD_STATE_WAIT && pPacket->getGuildState() == Guild::GUILD_STATE_ACTIVE )	{		/////////////////////////////////////////////////////////////		// 粮 眠啊		//////////////////////////////////////////////////////////////*		if ( pGuild->getServerGroupID() == g_pConfig->getPropertyInt( "ServerID" ) )		{			// 捞 霸烙 辑滚俊 辨靛 酒瘤飘甫 父电促.			//////////////			// Zone Info			//////////////			ZoneInfo* pZoneInfo = new ZoneInfo();			pZoneInfo->setZoneID( pGuild->getZoneID() );			pZoneInfo->setZoneGroupID( 2 );			pZoneInfo->setZoneType( "NPC_SHOP" );			pZoneInfo->setZoneLevel( 0 );			pZoneInfo->setZoneAccessMode( "PUBLIC" );			pZoneInfo->setZoneOwnerID( "" );			pZoneInfo->setPayPlay( "" );			if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )			{				pZoneInfo->setSMPFilename( "team_hdqrs.smp" );				pZoneInfo->setSSIFilename( "team_hdqrs.ssi" );				string Name = "team - " + pGuild->getName();				pZoneInfo->setFullName( Name );				pZoneInfo->setShortName( Name );			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )			{				pZoneInfo->setSMPFilename( "clan_hdqrs.smp" );				pZoneInfo->setSSIFilename( "clan_hdqrs.ssi" );				string Name = "clan - " + pGuild->getName();				pZoneInfo->setFullName( Name );				pZoneInfo->setShortName( Name );			}			g_pZoneInfoManager->addZoneInfo( pZoneInfo );						/////////			// Zone			/////////			Zone* pZone = new Zone( pGuild->getZoneID() );			Assert( pZone != NULL );			ZoneGroup* pZoneGroup = g_pZoneGroupManager->getZoneGroup(2);			Assert( pZoneGroup != NULL );			pZone->setZoneGroup( pZoneGroup );			pZoneGroup->addZone( pZone );			pZone->init();		}*/		// 沥侥 辨靛肺 函版		pGuild->setState( Guild::GUILD_STATE_ACTIVE );		HashMapGuildMember& Members = pGuild->getMembers();		HashMapGuildMemberItor itr = Members.begin();		for ( ; itr != Members.end(); itr++ )		{			GuildMember* pGuildMember = itr->second;			// 糕滚啊 立加秦 乐促搁			__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 );				PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);				Assert( pPlayerCreature != NULL );				// 辨靛 酒捞叼甫 官层霖促.				pPlayerCreature->setGuildID( pGuild->getID() );				// 努扼捞攫飘俊 辨靛 酒捞叼啊 官布澜阑 舅妨霖促.				GCModifyGuildMemberInfo gcModifyGuildMemberInfo;				gcModifyGuildMemberInfo.setGuildID( pGuild->getID() );				gcModifyGuildMemberInfo.setGuildName( pGuild->getName() );				gcModifyGuildMemberInfo.setGuildMemberRank( pGuildMember->getRank() );				pPlayer->sendPacket( &gcModifyGuildMemberInfo );				// 林困俊 舅赴促.				Zone* pZone = pCreature->getZone();				Assert( pZone != NULL );				GCOtherModifyInfo gcOtherModifyInfo;				gcOtherModifyInfo.setObjectID( pCreature->getObjectID() );				gcOtherModifyInfo.addShortData( MODIFY_GUILDID, pPlayerCreature->getGuildID() );				pZone->broadcastPacket( pCreature->getX(), pCreature->getY(), &gcOtherModifyInfo, pCreature );				// 沥侥 辨靛啊 登菌澜阑 舅覆				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)			}			__LEAVE_CRITICAL_SECTION((*g_pPCFinder))		}	}#endif			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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