sgdeleteguildokhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· 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 + -
显示快捷键?