📄 gsquitguildhandler.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 + -