cgregistguildhandler.cpp

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

CPP
249
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGRegistGuildHandler.cpp// Written By  :// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRegistGuild.h"#ifdef __GAME_SERVER__	#include "SystemAvailabilitiesManager.h"	#include "DB.h"	#include "Properties.h"	#include "SharedServerManager.h"	#include "GamePlayer.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "Guild.h"	#include "Gpackets/GSAddGuild.h"	#include "Gpackets/GCNPCResponse.h"	#include <stdio.h>#endif	// __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRegistGuildHandler::execute (CGRegistGuild* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY __BEGIN_DEBUG_EX		#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	SYSTEM_ASSERT(SYSTEM_GUILD);	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Assert(pGamePlayer != NULL);	Creature* pCreature = pGamePlayer->getCreature();	Assert( pCreature != NULL );	string GuildName = pPacket->getGuildName();	if ( GuildName.find_first_of("'\\") < GuildName.size() )	{		// 捞固 荤侩 吝牢 辨靛 捞抚捞促		if ( pCreature->isSlayer() )		{			GCNPCResponse response;			response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_NAME );			pPlayer->sendPacket( &response );		}		else if ( pCreature->isVampire() )		{			GCNPCResponse response;			response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_NAME );			pPlayer->sendPacket( &response );		}		else if ( pCreature->isOusters() )		{			GCNPCResponse response;			response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_NAME );			pPlayer->sendPacket( &response );		}		return;	}		Statement* pStmt;	Result* pResult;	BEGIN_DB	{		// 鞍篮 辨靛 捞抚捞 乐绰瘤 眉农		pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();		pResult = pStmt->executeQuery( "SELECT GuildID FROM GuildInfo WHERE GuildName = '%s' AND GuildState IN ( 0, 1 )", pPacket->getGuildName().c_str() );		if ( pResult->getRowCount() != 0 )		{			SAFE_DELETE( pStmt );			// 捞固 荤侩 吝牢 辨靛 捞抚捞促			if ( pCreature->isSlayer() )			{				GCNPCResponse response;				response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_NAME );				pPlayer->sendPacket( &response );			}			else if ( pCreature->isVampire() )			{				GCNPCResponse response;				response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_NAME );				pPlayer->sendPacket( &response );			}			else if ( pCreature->isOusters() )			{				GCNPCResponse response;				response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_NAME );				pPlayer->sendPacket( &response );			}			return;		}				// 促弗 辨靛 家加牢瘤 眉农		pResult = pStmt->executeQuery( "SELECT Rank, ExpireDate FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() );		if ( pResult->next() )		{			int    Rank       = pResult->getInt(1);			string ExpireDate = pResult->getString(2);			// 促弗 辨靛俊辑 呕硼茄 版快绰 辨靛甫 积己且 荐 绝促.			if ( ExpireDate.size() == 7 				 && Rank==GuildMember::GUILDMEMBER_RANK_LEAVE)			{				time_t daytime = time(0);				tm Time;				Time.tm_year = atoi( ExpireDate.substr(0,3).c_str() );				Time.tm_mon = atoi( ExpireDate.substr(3,2).c_str() );				Time.tm_mday = atoi( ExpireDate.substr(5,2).c_str() );				if ( difftime( daytime, mktime(&Time) ) < 604800 )	// 角矫埃 7老捞 瘤车绰啊?				{					// 辨靛 积己且 荐 绝促绰 皋技瘤					GCNPCResponse response;					if (pCreature->isSlayer())						response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_DENY );					else if ( pCreature->isVampire() )						response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_DENY );					else if ( pCreature->isOusters() )						response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_DENY );					pPlayer->sendPacket( &response );					SAFE_DELETE( pStmt );					return;				}			}			// 扁粮狼 辨靛糕滚 沥焊甫 瘤况霖促.			pStmt->executeQuery(					"DELETE FROM GuildMember WHERE Name='%s'",					pCreature->getName().c_str() );			//SAFE_DELETE( pStmt );			//return;		}		SAFE_DELETE( pStmt );	}	END_DB(pStmt)		if ( pCreature->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);		Assert( pSlayer != NULL );		SkillDomainType_t highest = pSlayer->getHighestSkillDomain();		// 殿废 啊瓷 咯何 眉农		if ( ( pSlayer->getGold() >= REQUIRE_SLAYER_MASTER_GOLD ) &&			// 殿废厚 1撅			 ( pSlayer->getFame() >= REQUIRE_SLAYER_MASTER_FAME[highest]) &&	// 疙己摹			 ( pSlayer->getSkillDomainLevel(highest) >= REQUIRE_SLAYER_MASTER_SKILL_DOMAIN_LEVEL )	// 饭骇 50 捞惑		   )		{			GSAddGuild gsAddGuild;			gsAddGuild.setGuildName( pPacket->getGuildName() );			gsAddGuild.setGuildMaster( pSlayer->getName() );			gsAddGuild.setGuildIntro( pPacket->getGuildIntro() );			gsAddGuild.setGuildState( Guild::GUILD_STATE_WAIT );			gsAddGuild.setGuildRace( Guild::GUILD_RACE_SLAYER );			gsAddGuild.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );			g_pSharedServerManager->sendPacket( &gsAddGuild );			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );		}	}	else if ( pCreature->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);		Assert( pVampire != NULL );		// 殿废 啊瓷 咯何 眉农		if ( ( pVampire->getGold() >= REQUIRE_VAMPIRE_MASTER_GOLD ) &&		// 殿废厚 1撅			 ( pVampire->getLevel() >= REQUIRE_VAMPIRE_MASTER_LEVEL )		   )		{			GSAddGuild gsAddGuild;			gsAddGuild.setGuildName( pPacket->getGuildName() );			gsAddGuild.setGuildMaster( pVampire->getName() );			gsAddGuild.setGuildIntro( pPacket->getGuildIntro() );			gsAddGuild.setGuildState( Guild::GUILD_STATE_WAIT );			gsAddGuild.setGuildRace( Guild::GUILD_RACE_VAMPIRE );			gsAddGuild.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );			g_pSharedServerManager->sendPacket( &gsAddGuild );			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );		}	}	else if ( pCreature->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);		Assert( pOusters != NULL );		// 殿废 啊瓷 咯何 眉农		if ( ( pOusters->getGold() >= REQUIRE_OUSTERS_MASTER_GOLD ) &&		// 殿废厚 1撅			 ( pOusters->getLevel() >= REQUIRE_OUSTERS_MASTER_LEVEL )		   )		{			GSAddGuild gsAddGuild;			gsAddGuild.setGuildName( pPacket->getGuildName() );			gsAddGuild.setGuildMaster( pOusters->getName() );			gsAddGuild.setGuildIntro( pPacket->getGuildIntro() );			gsAddGuild.setGuildState( Guild::GUILD_STATE_WAIT );			gsAddGuild.setGuildRace( Guild::GUILD_RACE_OUSTERS );			gsAddGuild.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );			g_pSharedServerManager->sendPacket( &gsAddGuild );			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );		}	}#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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