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

📄 gsquitguildhandler.cpp

📁 dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 ,luascript v4.0 support
💻 CPP
字号:
//----------------------------------------------------------------------//// Filename    : GSQuitGuildHandler.cpp// Written By  : Reiot// Description :////----------------------------------------------------------------------// include files#include "GSQuitGuild.h"#include "Assert.h"#ifdef __SHARED_SERVER__		#include "Guild.h"	#include "GuildManager.h"	#include "GameServerManager.h"	#include "Properties.h"	#include "DB.h"	#include "StringPool.h"	#include "Spackets/SGQuitGuildOK.h"	#include "Spackets/SGDeleteGuildOK.h"#endif//----------------------------------------------------------------------// // GSQuitGuildHandler::execute()// //----------------------------------------------------------------------void GSQuitGuildHandler::execute ( GSQuitGuild* pPacket, Player* pPlayer )	 throw ( ProtocolException , Error ){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __SHARED_SERVER__	Assert( pPacket != NULL );	// 敲饭捞绢啊 加茄 辨靛甫 啊廉柯促.	Guild* pGuild = g_pGuildManager->getGuild( pPacket->getGuildID() );	//try { Assert( pGuild != NULL ); } catch ( Throwable& ) { return; }	if (pGuild==NULL) return;	// 敲饭捞绢啊 辨靛狼 糕滚牢瘤 犬牢茄促.	GuildMember* pGuildMember = pGuild->getMember( pPacket->getName() );	//try { Assert( pGuildMember != NULL ); } catch ( Throwable& ) { return; }	if (pGuildMember==NULL) return;	Statement* pStmt = NULL;	// 辨靛 呕硼 肺弊甫 巢变促.	GuildMemberRank_t rank = pGuildMember->getRank();	if ( rank == GuildMember::GUILDMEMBER_RANK_NORMAL ||		 rank == GuildMember::GUILDMEMBER_RANK_MASTER ||		 rank == GuildMember::GUILDMEMBER_RANK_SUBMASTER )		filelog( "GuildExit.log", "GuildID: %d, GuildName: %s, Quit: %s", pGuild->getID(), pGuild->getName().c_str(), pPacket->getName().c_str() );	//////////////////////////////////////////////////////////////////////////////	// 辨靛啊 active 扼搁 傲 呕硼窍绰 芭促	// wait 扼搁 捣档 倒妨林绊 呕硼窍绰 荤恩捞 付胶磐扼搁 辨靛甫 秒家矫挪促.	//////////////////////////////////////////////////////////////////////////////	if ( pGuild->getState() == Guild::GUILD_STATE_ACTIVE )	{		// 辨靛 付胶磐老 版快 公矫		if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )			return;		// DB 狼 Slayer, Vampire, Ousters 抛捞喉狼 辨靛 酒捞叼甫 官槽促.		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();						if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )			{				pStmt->executeQuery( "UPDATE Slayer SET GuildID = 99 WHERE Name = '%s'", pGuildMember->getName().c_str() );			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )			{				pStmt->executeQuery( "UPDATE Vampire SET GuildID = 0 WHERE Name = '%s'", pGuildMember->getName().c_str() );			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )			{				pStmt->executeQuery( "UPDATE Ousters SET GuildID = 66 WHERE Name = '%s'", pGuildMember->getName().c_str() );			}			SAFE_DELETE( pStmt );		}		END_DB(pStmt)		// Guild Member 甫 leave 矫挪促.		pGuildMember->leave();		// Guild 俊辑 昏力茄促.		pGuild->deleteMember( pGuildMember->getName() );		// 霸烙 辑滚肺 焊尘 菩哦阑 父电促.		SGQuitGuildOK sgQuitGuildOK;		sgQuitGuildOK.setGuildID( pGuild->getID() );		sgQuitGuildOK.setName( pPacket->getName() );		// 霸烙 辑滚肺 菩哦阑 焊辰促.		g_pGameServerManager->broadcast( &sgQuitGuildOK );		// 辨靛 牢盔捞 5疙 固父捞 瞪 版快		if ( pGuild->getState() == Guild::GUILD_STATE_ACTIVE && pGuild->getActiveMemberCount() < 5 )		{			// 扁废阑 巢变促.			filelog( "GuildBroken.log", "GuildID: %d, GuildName: %s, MemberCount: %d, Quit: %s", pGuild->getID(), pGuild->getName().c_str(), pGuild->getActiveMemberCount(), pPacket->getName().c_str() );			// 辨靛 糕滚 expire and delete			HashMapGuildMember& Members = pGuild->getMembers();			HashMapGuildMemberItor itr = Members.begin();			BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();				for ( ; itr != Members.end(); itr++ )				{					GuildMember* pGuildMember = itr->second;					if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )					{						pStmt->executeQuery( "UPDATE Slayer SET GuildID = 99 WHERE Name = '%s'", pGuildMember->getName().c_str() );						pStmt->executeQuery( "INSERT INTO Messages ( Receiver, Message ) VALUES ( '%s', '%s' )", pGuildMember->getName().c_str(), g_pStringPool->c_str( STRID_TEAM_BROKEN ) );					}					else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )					{						pStmt->executeQuery( "UPDATE Vampire SET GuildID = 0 WHERE Name = '%s'", pGuildMember->getName().c_str() );						pStmt->executeQuery( "INSERT INTO Messages ( Receiver, Message ) VALUES ( '%s', '%s' )", pGuildMember->getName().c_str(), g_pStringPool->c_str( STRID_CLAN_BROKEN ) );					}					else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )					{						pStmt->executeQuery( "UPDATE Ousters SET GuildID = 0 WHERE Name = '%s'", pGuildMember->getName().c_str() );						pStmt->executeQuery( "INSERT INTO Messages ( Receiver, Message ) VALUES ( '%s', '%s' )", pGuildMember->getName().c_str(), g_pStringPool->c_str( STRID_CLAN_BROKEN ) );					}					// 辨靛 糕滚甫 expire 矫挪促.					pGuildMember->expire();					// 辨靛 糕滚甫 昏力					SAFE_DELETE( pGuildMember );				}								SAFE_DELETE( pStmt );			}			END_DB(pStmt)			Members.clear();			// 辨靛甫 昏力茄促			pGuild->setState( Guild::GUILD_STATE_BROKEN );			pGuild->save();			SAFE_DELETE( pGuild );			g_pGuildManager->deleteGuild( pPacket->getGuildID() );			// 辨靛甫 昏力窍档废 菩哦阑 焊辰促.			SGDeleteGuildOK sgDeleteGuildOK;			sgDeleteGuildOK.setGuildID( pPacket->getGuildID() );			g_pGameServerManager->broadcast( &sgDeleteGuildOK );		}	}	else if ( pGuild->getState() == Guild::GUILD_STATE_WAIT )	{		if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )		{			////////////////////////////////////////////////////////////			// 辨靛甫 秒家 矫挪促.			// 辨靛 糕滚 expire and delete			////////////////////////////////////////////////////////////			HashMapGuildMember& Members = pGuild->getMembers();			HashMapGuildMemberItor itr = Members.begin();			BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();				for ( ; itr != Members.end(); itr++ )				{					GuildMember* pGuildMember = itr->second;					string Table = "";					string Message = "";					Gold_t Gold = 0;					if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )					{						Table = "Slayer";						Message = g_pStringPool->getString( STRID_TEAM_CANCEL );					}					else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )					{						Table = "Vampire";						Message = g_pStringPool->getString( STRID_CLAN_CANCEL );					}					else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )					{						Table = "Ousters";						Message = g_pStringPool->getString( STRID_CLAN_CANCEL );					}					if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )						Gold = RETURN_SLAYER_MASTER_GOLD;					else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )						Gold = RETURN_SLAYER_SUBMASTER_GOLD;					if ( !Table.empty() && !Message.empty() && Gold != 0 )					{						// 皋矫瘤甫 持绰促.						pStmt->executeQuery( "INSERT INTO Messages ( Receiver, Message ) VALUES ( '%s', '%s' )", pGuildMember->getName().c_str(), Message.c_str() );												// 殿废厚甫 券阂茄促. 霸烙 敲饭捞吝牢 某腐磐绰 DB 单捞鸥尔 gameserver俊 乐绰 单捞鸥尔 促甫荐档 乐扁锭巩俊 捞犯霸 窍搁 救登绰单, 促矫 霸烙 辑滚俊辑 货肺 诀单捞飘 茄促.						pStmt->executeQuery( "UPDATE %s SET Gold = Gold + %d WHERE Name = '%s'", Table.c_str(), (int)Gold, pGuildMember->getName().c_str() );					}					// 辨靛 糕滚甫 expire 矫挪促.					pGuildMember->expire();					// 辨靛 糕滚甫 昏力					SAFE_DELETE( pGuildMember );				}								SAFE_DELETE( pStmt );			}			END_DB(pStmt)			Members.clear();			// 辨靛甫 昏力茄促			pGuild->setState( Guild::GUILD_STATE_CANCEL );			pGuild->save();			SAFE_DELETE( pGuild );			g_pGuildManager->deleteGuild( pPacket->getGuildID() );			// 辨靛甫 昏力窍档废 菩哦阑 焊辰促.			SGDeleteGuildOK sgDeleteGuildOK;			sgDeleteGuildOK.setGuildID( pPacket->getGuildID() );			g_pGameServerManager->broadcast( &sgDeleteGuildOK );		}		else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )		{			//////////////////////////////////////////////////////////			// 胶鸥泼 糕滚 啊涝阑 秒家 矫挪促.			// Guild Member 甫 expire 矫挪促.			//////////////////////////////////////////////////////////			pGuildMember->expire();			// Guild 俊辑 昏力茄促.			pGuild->deleteMember( pGuildMember->getName() );			// 霸烙 辑滚肺 焊尘 菩哦阑 父电促.			SGQuitGuildOK sgQuitGuildOK;			sgQuitGuildOK.setGuildID( pGuild->getID() );			sgQuitGuildOK.setName( pPacket->getName() );			// 霸烙 辑滚肺 菩哦阑 焊辰促.			g_pGameServerManager->broadcast( &sgQuitGuildOK );		}	}#endif			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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