cgjoinguildhandler.cpp

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

CPP
223
字号
////////////////////////////////////////////////////////////////////////////// // Filename    : CGJoinGuildHandler.cpp// Written By  :// Description ://////////////////////////////////////////////////////////////////////////////#include "CGJoinGuild.h"#ifdef __GAME_SERVER__	#include "SystemAvailabilitiesManager.h"	#include "DB.h"	#include "SharedServerManager.h"	#include "GamePlayer.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "GuildManager.h"	#include "Guild.h"	#include "Properties.h"	#include "Gpackets/GSAddGuildMember.h"	#include "Gpackets/GCNPCResponse.h"	#include <stdio.h>#endif	// __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGJoinGuildHandler::execute (CGJoinGuild* 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 );	Player* pPlayer = pCreature->getPlayer();	Assert( pPlayer != NULL );		Statement* pStmt;	Result* pResult;	//cout << pPacket->toString() << endl;	BEGIN_DB	{		// 沥惑利牢 苞沥阑 芭闷促搁 咯扁辑 眉农且锭 吧府搁 救等促.		// 弊繁 捞蜡肺 俊矾皋矫瘤甫 努扼捞攫飘肺 焊郴瘤 臼绰促.		// 促弗 辨靛 家加牢瘤 眉农		pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();		pResult = pStmt->executeQuery( "SELECT GuildID, Rank, ExpireDate FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() );		if ( pResult->next() )		{						GuildID_t   GuildID    = pResult->getInt(1);			int    		Rank       = pResult->getInt(2);			string 		ExpireDate = pResult->getString(3);			if ( ExpireDate.size() == 7 )			{				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() );				Time.tm_hour = 0;				Time.tm_min = 0;				Time.tm_sec = 0;				if ( difftime( daytime, mktime(&Time) ) < 604800 )	// 角矫埃 7老捞 瘤车绰啊?				{/*					if (Rank==GuildMember::GUILDMEMBER_RANK_DENY						&& GuildID != pPacket->getGuildID())					{						// rank4==眠规/芭何..牢 局甸篮 促弗 辨靛俊绰 甸绢哎 荐 乐促.						// 扁粮俊 乐带 GuildMember俊辑 力芭茄促.						pStmt->executeQuery( "DELETE FROM GuildMember WHERE Name = '%s'",												pCreature->getName().c_str() );					}					else					{						SAFE_DELETE( pStmt );						return;					}*/					// 角矫埃 7老捞 瘤唱瘤 臼栏搁 啊涝且 荐 绝促. 公炼扒					// 2003. 6. 25 by bezz					SAFE_DELETE( pStmt );					return;				}			}			else			{				// 捞固 促弗 辨靛俊 家加登绢 乐澜				SAFE_DELETE( pStmt );				return;			}		}		SAFE_DELETE( pStmt );	}	END_DB(pStmt)	// 胶鸥泼 糕滚肺 啊涝且 版快	if ( pPacket->getGuildMemberRank() == GuildMember::GUILDMEMBER_RANK_SUBMASTER )	{		// 辨靛啊 捞固 沥侥 辨靛肺 殿废登菌绰瘤 犬牢茄促.		Guild* pGuild = g_pGuildManager->getGuild( pPacket->getGuildID() );		if ( pGuild == NULL ) return;		if ( pGuild->getState() != Guild::GUILD_STATE_WAIT )			return;		if ( pCreature->isSlayer() )		{			Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);			Assert( pSlayer != NULL );			SkillDomainType_t highest = pSlayer->getHighestSkillDomain();			// 殿废 啊瓷 咯何 眉农			if ( ( pSlayer->getGold() >= REQUIRE_SLAYER_SUBMASTER_GOLD ) &&				// 殿废厚 5玫父				 ( pSlayer->getFame() >= REQUIRE_SLAYER_SUBMASTER_FAME[highest]) &&		// 疙己摹				 ( pSlayer->getSkillDomainLevel(highest) >= REQUIRE_SLAYER_SUBMASTER_SKILL_DOMAIN_LEVEL )	// 饭骇 40 捞惑			   )			{				GSAddGuildMember gsAddGuildMember;				gsAddGuildMember.setGuildID( pPacket->getGuildID() );				gsAddGuildMember.setName( pSlayer->getName() );				gsAddGuildMember.setGuildMemberRank( pPacket->getGuildMemberRank() );				gsAddGuildMember.setGuildMemberIntro( pPacket->getGuildMemberIntro() );				gsAddGuildMember.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );				g_pSharedServerManager->sendPacket( &gsAddGuildMember );			}		}		else if ( pCreature->isVampire() )		{			Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);			Assert( pVampire != NULL );			// 殿废 啊瓷 咯何 眉农			if ( ( pVampire->getGold() >= REQUIRE_VAMPIRE_SUBMASTER_GOLD ) &&		// 殿废厚 5玫父				 ( pVampire->getLevel() >= REQUIRE_VAMPIRE_SUBMASTER_LEVEL )		// 饭骇 40 捞惑			   )			{				GSAddGuildMember gsAddGuildMember;				gsAddGuildMember.setGuildID( pPacket->getGuildID() );				gsAddGuildMember.setName( pVampire->getName() );				gsAddGuildMember.setGuildMemberRank( pPacket->getGuildMemberRank() );				gsAddGuildMember.setGuildMemberIntro( pPacket->getGuildMemberIntro() );				gsAddGuildMember.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );				g_pSharedServerManager->sendPacket( &gsAddGuildMember );			}		}		else if ( pCreature->isOusters() )		{			Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);			Assert( pOusters != NULL );			// 殿废 啊瓷 咯何 眉农			if ( ( pOusters->getGold() >= REQUIRE_OUSTERS_SUBMASTER_GOLD ) &&		// 殿废厚 5玫父				 ( pOusters->getLevel() >= REQUIRE_OUSTERS_SUBMASTER_LEVEL )		// 饭骇 40 捞惑			   )			{				GSAddGuildMember gsAddGuildMember;				gsAddGuildMember.setGuildID( pPacket->getGuildID() );				gsAddGuildMember.setName( pOusters->getName() );				gsAddGuildMember.setGuildMemberRank( pPacket->getGuildMemberRank() );				gsAddGuildMember.setGuildMemberIntro( pPacket->getGuildMemberIntro() );				gsAddGuildMember.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );				g_pSharedServerManager->sendPacket( &gsAddGuildMember );			}		}	}	else if ( pPacket->getGuildMemberRank() == GuildMember::GUILDMEMBER_RANK_WAIT )	{		// 辨靛 啊涝 脚没, 措扁 惑怕		GSAddGuildMember gsAddGuildMember;		gsAddGuildMember.setGuildID( pPacket->getGuildID() );		gsAddGuildMember.setName( pCreature->getName() );		gsAddGuildMember.setGuildMemberRank( pPacket->getGuildMemberRank() );		gsAddGuildMember.setGuildMemberIntro( pPacket->getGuildMemberIntro() );		gsAddGuildMember.setServerGroupID( g_pConfig->getPropertyInt( "ServerID" ) );		g_pSharedServerManager->sendPacket( &gsAddGuildMember );	}	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 + -
显示快捷键?