sgdeleteguildokhandler.cpp

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

CPP
220
字号
//----------------------------------------------------------------------//// Filename    : SGDeleteGuildOKHandler.cpp// Written By  : Reiot// Description :////----------------------------------------------------------------------// include files#include "SGDeleteGuildOK.h"#ifdef __GAME_SERVER__	#include "Assert.h"	#include "DB.h"	#include "Guild.h"	#include "GuildManager.h"	#include "PCFinder.h"	#include "Player.h"	#include "PlayerCreature.h"	#include "Properties.h"	#include "Zone.h"	#include "ResurrectLocationManager.h"	#include "Gpackets/GCSystemMessage.h"	#include "Gpackets/GCModifyInformation.h"	#include "Gpackets/GCModifyGuildMemberInfo.h"	#include "Gpackets/GCOtherModifyInfo.h"#endif//----------------------------------------------------------------------// // SGDeleteGuildOKHandler::execute()// //----------------------------------------------------------------------void SGDeleteGuildOKHandler::execute ( SGDeleteGuildOK* pPacket )	 throw ( ProtocolException , Error ){	__BEGIN_TRY#ifdef __GAME_SERVER__	// 辨靛 酒瘤飘俊 乐绰 糕滚甫 warp 矫挪促.	// 辨靛 酒瘤飘甫 昏力茄促.	// 糕滚 warp客 辨靛 酒瘤飘 昏力 矫 促弗 静饭靛俊辑 ZoneGroup Thread 郴何俊辑 老绢唱霸 秦具 喊呕捞 绝阑 淀 窍促.	// 老窜篮 傲 敌促. Portal 捞 阜洒骨肺 促矫 甸绢哎 荐 绝阑 巴捞促.		Assert( pPacket != NULL );	// 辨靛甫 啊廉柯促.	Guild* pGuild = g_pGuildManager->getGuild( pPacket->getGuildID() );	try { Assert( pGuild != NULL ); } catch ( Throwable& ) { return; }	// 辨靛 劝悼 吝牢 惑怕俊辑狼 秦眉牢瘤 措扁 吝牢 惑怕俊辑狼 秦眉牢瘤 备喊茄促.	if ( pGuild->getState() == 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 );				// Slayer, Vampire 狼 辨靛 酒捞叼甫 官槽促.				if ( pPlayerCreature->isSlayer() )				{					pPlayerCreature->setGuildID( 99 );		// 浇饭捞绢 啊涝救茄 惑怕狼 辨靛 ID					// 努扼捞攫飘俊 辨靛 酒捞叼啊 官布澜阑 舅赴促.					GCModifyGuildMemberInfo gcModifyGuildMemberInfo;					gcModifyGuildMemberInfo.setGuildID( pPlayerCreature->getGuildID() );					gcModifyGuildMemberInfo.setGuildName( "" );					gcModifyGuildMemberInfo.setGuildMemberRank( GuildMember::GUILDMEMBER_RANK_DENY );					pPlayer->sendPacket( &gcModifyGuildMemberInfo );				}				else if ( pPlayerCreature->isVampire() )				{					pPlayerCreature->setGuildID( 0 );		// 轨颇捞绢 啊涝救茄 惑怕狼 辨靛 ID					// 努扼捞攫飘俊 辨靛 酒捞叼啊 官布澜阑 舅赴促.					GCModifyGuildMemberInfo gcModifyGuildMemberInfo;					gcModifyGuildMemberInfo.setGuildID( pPlayerCreature->getGuildID() );					gcModifyGuildMemberInfo.setGuildName( "" );					gcModifyGuildMemberInfo.setGuildMemberRank( GuildMember::GUILDMEMBER_RANK_DENY );					pPlayer->sendPacket( &gcModifyGuildMemberInfo );				}				else if ( pPlayerCreature->isOusters() )				{					pPlayerCreature->setGuildID( 66 );		// 酒快胶磐令 啊涝救茄 惑怕狼 辨靛 ID					// 努扼捞攫飘俊 辨靛 酒捞叼啊 官布澜阑 舅赴促.					GCModifyGuildMemberInfo gcModifyGuildMemberInfo;					gcModifyGuildMemberInfo.setGuildID( pPlayerCreature->getGuildID() );					gcModifyGuildMemberInfo.setGuildName( "" );					gcModifyGuildMemberInfo.setGuildMemberRank( GuildMember::GUILDMEMBER_RANK_DENY );					pPlayer->sendPacket( &gcModifyGuildMemberInfo );				}				// 林困俊 努扼捞攫飘俊 辨靛 酒捞叼啊 官布澜阑 舅赴促.				GCOtherModifyInfo gcOtherModifyInfo;				gcOtherModifyInfo.setObjectID( pCreature->getObjectID() );				gcOtherModifyInfo.addShortData( MODIFY_GUILDID, pPlayerCreature->getGuildID() );				Zone* pZone = pCreature->getZone();				Assert( pZone != NULL );				pZone->broadcastPacket( pCreature->getX(), pCreature->getY(), &gcOtherModifyInfo, pCreature );			}			__LEAVE_CRITICAL_SECTION((*g_pPCFinder))			// Guild Member 按眉甫 昏力茄促.			SAFE_DELETE( pGuildMember );		}		// 辨靛 糕滚 甘阑 昏力茄促.		Members.clear();		// 辨靛 概聪历俊辑 辨靛甫 昏力茄促.		g_pGuildManager->deleteGuild( pGuild->getID() );		// 辨靛 按眉甫 昏力茄促.		SAFE_DELETE( pGuild );	}	else if ( pGuild->getState() == Guild::GUILD_STATE_WAIT )	{		HashMapGuildMember& Members = pGuild->getMembers();		HashMapGuildMemberItor itr = Members.begin();		Statement* pStmt = NULL;		Result* pResult = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();						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 );					// 殿废厚甫 券阂茄促.					Gold_t Gold = pPlayerCreature->getGold();					if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )					{						Gold = min( Gold + (uint)RETURN_SLAYER_MASTER_GOLD, (long unsigned int)2000000000 );					}					else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )					{						Gold = min( Gold + (uint)RETURN_SLAYER_SUBMASTER_GOLD, (long unsigned int)2000000000 );					}					pPlayerCreature->setGoldEx( Gold );					GCModifyInformation gcModifyInformation;					gcModifyInformation.addLongData( MODIFY_GOLD, Gold );					pPlayer->sendPacket( &gcModifyInformation );					// 皋矫瘤甫 焊辰促.					pResult = pStmt->executeQuery( "SELECT Message FROM Messages WHERE Receiver = '%s'", pCreature->getName().c_str() );					while ( pResult->next() )					{						GCSystemMessage message;						message.setMessage( pResult->getString(1) );						pPlayer->sendPacket( &message );					}					pStmt->executeQuery( "DELETE FROM Messages WHERE Receiver = '%s'", pCreature->getName().c_str() );				}				__LEAVE_CRITICAL_SECTION((*g_pPCFinder))				// 辨靛 糕滚 按眉甫 昏力茄促.				SAFE_DELETE( pGuildMember );			}			// 辨靛 糕滚 秦浆 甘阑 瘤款促.			Members.clear();			// 辨靛 概聪历俊辑 辨靛甫 昏力茄促.			g_pGuildManager->deleteGuild( pGuild->getID() );			// 辨靛 按眉甫 昏力茄促.			SAFE_DELETE( pGuild );			SAFE_DELETE( pStmt );		}		END_DB(pStmt)	}#endif			__END_CATCH}

⌨️ 快捷键说明

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