sgaddguildmemberokhandler.cpp

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

CPP
216
字号
//----------------------------------------------------------------------//// Filename    : SGAddGuildMemberOKHandler.cpp// Written By  : Reiot// Description :////----------------------------------------------------------------------// include files#include "SGAddGuildMemberOK.h"#include "Properties.h"#ifdef __GAME_SERVER__	#include "Guild.h"	#include "GuildManager.h"	#include "PCFinder.h"	#include "Player.h"	#include "PlayerCreature.h"	#include "Zone.h"	#include "StringPool.h"	#include "StringStream.h"	#include "DB.h"	#include "Properties.h"	#include "Gpackets/GCSystemMessage.h"	#include "Gpackets/GCModifyInformation.h"	#include "Gpackets/GCOtherModifyInfo.h"	#include <stdio.h>#endif//----------------------------------------------------------------------// // SGAddGuildMemberOKHandler::execute()// //----------------------------------------------------------------------void SGAddGuildMemberOKHandler::execute ( SGAddGuildMemberOK* pPacket )	 throw ( ProtocolException , Error ){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	// 辨靛 糕滚 object 甫 父电促.	GuildMember* pGuildMember = new GuildMember();	pGuildMember->setGuildID( pPacket->getGuildID() );	pGuildMember->setName( pPacket->getName() );	pGuildMember->setRank( pPacket->getGuildMemberRank() );	// 辨靛俊 眠啊茄促.	Guild* pGuild = g_pGuildManager->getGuild( pGuildMember->getGuildID() );	pGuild->addMember( pGuildMember );	// 糕滚俊霸 皋技瘤甫 焊辰促.	__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 );		if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER ||			 pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )		// 辨靛付胶磐唱 辑宏付胶磐老 版快		{			PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPlayerCreature != NULL );			Gold_t Fee;			if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )				Fee = REQUIRE_SLAYER_MASTER_GOLD;			else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )				Fee = REQUIRE_SLAYER_SUBMASTER_GOLD;			else				Fee = 0;						Gold_t CurMoney = pPlayerCreature->getGold();			if ( CurMoney < Fee )			{				// 奴老车焙				CurMoney = 0;			}			else				CurMoney -= Fee;			pPlayerCreature->setGoldEx( CurMoney );			if ( Fee != 0 )			{				GCModifyInformation gcModifyInformation;				gcModifyInformation.addLongData( MODIFY_GOLD, CurMoney );				// 官诧沥焊甫 努扼捞攫飘俊 焊郴霖促.				pPlayer->sendPacket( &gcModifyInformation );			}            // 辨靛 啊涝 皋矫瘤甫 焊咯霖促.            GCSystemMessage gcSystemMessage;            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_TEAM_JOIN_ACCEPTED ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_JOIN_ACCEPTED ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_JOIN_ACCEPTED ) );            pPlayer->sendPacket( &gcSystemMessage );		}		else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_WAIT )		{			// 辨靛 啊涝 脚没 皋矫瘤甫 焊辰促.			GCSystemMessage gcSystemMessage;            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_TEAM_JOIN_TRY ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_JOIN_TRY ) );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CLAN_JOIN_TRY ) );			pPlayer->sendPacket( &gcSystemMessage );		}	}	else	{		// 立加捞 救登绢 乐促.		// 付胶磐唱 辑宏付胶磐老 版快 		// DB 俊辑 捣阑 鳖档废 茄促.		if ( ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER ||			 	pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )		// 辨靛付胶磐唱 辑宏付胶磐老 版快			&& pPacket->getServerGroupID() == g_pConfig->getPropertyInt( "ServerID" ) )		// 捞 霸烙 辑滚俊辑 眠啊茄 辨靛盔牢啊?		{			Gold_t Fee;			if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER )				Fee = REQUIRE_SLAYER_MASTER_GOLD;			else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )				Fee = REQUIRE_SLAYER_SUBMASTER_GOLD;			else				Fee = 0;			string table = "";			if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )			{				table = "Slayer";			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )			{				table = "Vampire";			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )			{				table = "Ousters";			}			if ( table != "" && Fee != 0 )			{				Statement* pStmt = NULL;				BEGIN_DB				{					pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();					pStmt->executeQuery( "UPDATE %s SET Gold = IF ( %u > Gold , 0, Gold - %u ) WHERE Name = '%s'",											table.c_str(), Fee, Fee, pGuildMember->getName().c_str() );				}				END_DB(pStmt)			}		}	}	// 辨靛 付胶磐俊霸 皋矫瘤甫 焊辰促.	pCreature = g_pPCFinder->getCreature_LOCKED( pGuild->getMaster() );	if ( pCreature != NULL && pCreature->isPC() && pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_MASTER )	{		Player* pPlayer = pCreature->getPlayer();		Assert( pPlayer != NULL );        char msg[100];        if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )        {            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                sprintf( msg, g_pStringPool->c_str( STRID_TEAM_JOIN_ACCEPTED_2 ),                                pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_JOIN_ACCEPTED_2 ),                                pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_JOIN_ACCEPTED_2 ),                                pGuildMember->getName().c_str() );        }        else if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_WAIT )        {            if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )                sprintf( msg, g_pStringPool->c_str( STRID_TEAM_JOIN_TRY_2 ),                                pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_JOIN_TRY_2 ),                                pGuildMember->getName().c_str() );            else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS )                sprintf( msg, g_pStringPool->c_str( STRID_CLAN_JOIN_TRY_2 ),                                pGuildMember->getName().c_str() );        }        GCSystemMessage gcSystemMessage;        gcSystemMessage.setMessage( msg );        pPlayer->sendPacket( &gcSystemMessage );	}	__LEAVE_CRITICAL_SECTION((*g_pPCFinder))#endif			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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