⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actionshowguilddialog.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionShowGuildDialog.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionShowGuildDialog.h"#include "DB.h"#include "Creature.h"#include "NPC.h"#include "GamePlayer.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Guild.h"#include "GuildManager.h"#include "GuildInfo.h"#include "SharedServerManager.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCWaitGuildList.h"#include "Gpackets/GCActiveGuildList.h"#include "Gpackets/GSQuitGuild.h"#include "SystemAvailabilitiesManager.h"////////////////////////////////////////////////////////////////////////////////// read from property buffer////////////////////////////////////////////////////////////////////////////////void ActionShowGuildDialog::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try	{		// 促捞倔肺弊狼 辆幅		m_Type = (GuildDialog_t)propertyBuffer.getPropertyInt("Type");	}	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionShowGuildDialog::execute (Creature * pCreature1, Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	SYSTEM_RETURN_IF_NOT(SYSTEM_GUILD);	Player* pPlayer = pCreature2->getPlayer();	Assert(pPlayer != NULL);	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Assert( pGamePlayer != NULL );	Creature* pCreature = pGamePlayer->getCreature();	Assert( pCreature != NULL );	if ( m_Type == GUILD_DIALOG_REGIST )	{		//cout << "辨靛 殿废" << endl;		////////////////////////////////////////////////////////////////////////////////		// 辨靛 殿废阑 急琶沁阑 版快		////////////////////////////////////////////////////////////////////////////////		Statement* pStmt;		Result* pResult;		BEGIN_DB		{			// 促弗 辨靛 家加牢瘤 眉农			pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();			pResult = pStmt->executeQuery( "SELECT Rank, ExpireDate FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() );			if ( pResult->next() )			{				// 辨靛 殿废 沥焊啊 乐促. expire date甫 焊绊 搬沥茄促.				int  	Rank 		= pResult->getInt(1);				string 	ExpireDate 	= pResult->getString(2);				if ( ExpireDate.size() == 7 )				{					// 促弗 辨靛俊辑 呕硼茄 版快俊绰 老林老 悼救 辨靛甫 父甸 荐 绝促.					if (Rank==GuildMember::GUILDMEMBER_RANK_LEAVE)					{						// 泅犁绰 辨靛 家加 惑怕啊 酒聪促. 窍瘤父 expire date 俊辑 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() );						if ( difftime( daytime, mktime(&Time) ) < 604800 ) // 角矫埃 7老捞 瘤车绰啊?						{							SAFE_DELETE( pStmt );							// 矫埃捞 老林老 ...绢录绊							if ( pCreature->isSlayer() )							{								GCNPCResponse response;								response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_QUIT_TIMEOUT );								pPlayer->sendPacket( &response );							}							else if ( pCreature->isVampire() )							{								GCNPCResponse response;								response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_QUIT_TIMEOUT );								pPlayer->sendPacket( &response );							}							else if ( pCreature->isOusters() )							{								GCNPCResponse response;								response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_QUIT_TIMEOUT );								pPlayer->sendPacket( &response );							}							return;						}					}				}				else				{					SAFE_DELETE( pStmt );					// 促弗 辨靛俊 啊涝登绢乐绰 版快					if ( pCreature->isSlayer() )					{						GCNPCResponse response;						response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_ALREADY_JOIN );						pPlayer->sendPacket( &response );					}					else if ( pCreature->isVampire() )					{						GCNPCResponse response;						response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_ALREADY_JOIN );						pPlayer->sendPacket( &response );					}					else if ( pCreature->isOusters() )					{						GCNPCResponse response;						response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_ALREADY_JOIN );						pPlayer->sendPacket( &response );					}										return;				}			}		}		END_DB(pStmt)		if ( pCreature->isSlayer() )		{			Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);			Assert( pSlayer != NULL );			SkillDomainType_t highest = pSlayer->getHighestSkillDomain();			if ( pSlayer->getSkillDomainLevel(highest) < REQUIRE_SLAYER_MASTER_SKILL_DOMAIN_LEVEL )	// 饭骇 50 捞惑			{				// 饭骇捞 撤澜				GCNPCResponse response;				response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_LEVEL );				pPlayer->sendPacket( &response );				return;			}			if ( pSlayer->getGold() < REQUIRE_SLAYER_MASTER_GOLD )				// 殿废厚 1撅			{				// 殿废厚啊 葛磊恩				GCNPCResponse response;				response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_MONEY );				pPlayer->sendPacket( &response );				return;			}			if ( pSlayer->getFame() < REQUIRE_SLAYER_MASTER_FAME[highest] )		// 疙己			{				// 疙己捞 葛磊恩				GCNPCResponse response;				response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_FAME );				pPlayer->sendPacket( &response );				return;			}			// 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促.			GCNPCResponse response;			response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST );			response.setParameter( REQUIRE_SLAYER_MASTER_GOLD );			pPlayer->sendPacket( &response );		}		else if ( pCreature->isVampire() )		{			Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);			Assert( pVampire != NULL );			// 殿废 啊瓷 咯何 眉农			if ( pVampire->getLevel() < REQUIRE_VAMPIRE_MASTER_LEVEL )				// 饭骇 50捞惑			{				// 饭骇捞 撤澜				GCNPCResponse response;				response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_LEVEL );				pPlayer->sendPacket( &response );				return;			}			if ( pVampire->getGold() < REQUIRE_VAMPIRE_MASTER_GOLD )			// 殿废厚 1撅			{				// 殿废厚啊 葛磊恩				GCNPCResponse response;				response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_MONEY );				pPlayer->sendPacket( &response );				return;			}//			if ( pVampire->getFame() < 500000 )				// 疙己 50父//			{//				// 疙己捞 葛磊恩//				GCNPCResponse response;//				response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_FAME );//				pPlayer->sendPacket( &response );////				return;//			}			// 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促.			GCNPCResponse response;			response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST );			//cout << "辨靛啊涝厚 : " << REQUIRE_VAMPIRE_MASTER_GOLD << endl;			response.setParameter( REQUIRE_VAMPIRE_MASTER_GOLD );			//cout << "辨靛啊涝厚(param) : " << response.getParameter() << endl;			pPlayer->sendPacket( &response );		}		else if ( pCreature->isOusters() )		{			Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);			Assert( pOusters != NULL );			// 殿废 啊瓷 咯何 眉农			if ( pOusters->getLevel() < REQUIRE_OUSTERS_MASTER_LEVEL )				// 饭骇 50捞惑			{				// 饭骇捞 撤澜				GCNPCResponse response;				response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_LEVEL );				pPlayer->sendPacket( &response );				return;			}			if ( pOusters->getGold() < REQUIRE_OUSTERS_MASTER_GOLD )			// 殿废厚 1撅			{				// 殿废厚啊 葛磊恩				GCNPCResponse response;				response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_MONEY );				pPlayer->sendPacket( &response );				return;			}			// 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促.			GCNPCResponse response;			response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST );			//cout << "辨靛啊涝厚 : " << REQUIRE_VAMPIRE_MASTER_GOLD << endl;			response.setParameter( REQUIRE_OUSTERS_MASTER_GOLD );			//cout << "辨靛啊涝厚(param) : " << response.getParameter() << endl;			pPlayer->sendPacket( &response );		}	}	else if ( m_Type == GUILD_DIALOG_WAIT_LIST )	{		//cout << "辨靛 措扁 府胶飘" << endl;		GCWaitGuildList gcWaitGuildList;//		const HashMapGuild& Guilds = g_pGuildManager->getGuilds_const();//		HashMapGuildConstItor itr = Guilds.begin();		GuildRace_t race;		if ( pCreature->isSlayer() )			race = Guild::GUILD_RACE_SLAYER;		else if ( pCreature->isVampire() )			race = Guild::GUILD_RACE_VAMPIRE;		else if ( pCreature->isOusters() )			race = Guild::GUILD_RACE_OUSTERS;		else			return;		g_pGuildManager->makeWaitGuildList( gcWaitGuildList, race );		pPlayer->sendPacket( &gcWaitGuildList );	}	else if ( m_Type == GUILD_DIALOG_LIST )	{		//cout << "辨靛 府胶飘" << endl;		GCActiveGuildList gcActiveGuildList;		GuildRace_t race;		if ( pCreature->isSlayer() )			race = Guild::GUILD_RACE_SLAYER;		else if ( pCreature->isVampire() )			race = Guild::GUILD_RACE_VAMPIRE;		else if ( pCreature->isOusters() )			race = Guild::GUILD_RACE_OUSTERS;		else			return;		g_pGuildManager->makeActiveGuildList( gcActiveGuildList, race );		pPlayer->sendPacket( &gcActiveGuildList );	}	else if ( m_Type == GUILD_DIALOG_QUIT )	{		// 辨靛 呕硼 芒阑 剁快瘤 臼绊 辨靛 呕硼甫 犬沥茄 巴栏肺 埃林茄促.		Guild* pGuild = NULL;		Statement* pStmt = NULL;		Result* pResult = NULL;				BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();			pResult = pStmt->executeQuery( "SELECT GuildID FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() );			if ( pResult->next() )			{				pGuild = g_pGuildManager->getGuild( pResult->getInt(1) );			}			SAFE_DELETE( pStmt );		}		END_DB(pStmt)						// 辨靛 惑怕啊 劝悼吝捞芭唱 措扁吝捞绢具 茄促.		if ( pGuild == NULL || 			 ( pGuild->getState() != Guild::GUILD_STATE_ACTIVE && pGuild->getState() != Guild::GUILD_STATE_WAIT ) )		{ 			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );			return; 		}		// 敲饭捞绢啊 辨靛狼 糕滚牢瘤 犬牢茄促.		GuildMember* pGuildMember = pGuild->getMember( pCreature->getName() );		if ( pGuildMember == NULL )		{ 			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );			return; 		}		// 劝悼 吝牢 辨靛狼 付胶磐扼搁 呕硼甫 公矫茄促.		if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER && pGuild->getState() == Guild::GUILD_STATE_ACTIVE )		{			GCNPCResponse response;			response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );			pPlayer->sendPacket( &response );			return;		}		GSQuitGuild gsQuitGuild;		gsQuitGuild.setGuildID( pGuild->getID() );		gsQuitGuild.setName( pCreature->getName() );		g_pSharedServerManager->sendPacket( &gsQuitGuild );		GCNPCResponse response;		response.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPlayer->sendPacket( &response );	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionShowGuildDialog::toString () const	throw (){	__BEGIN_TRY	string str = "ActionShowGuildDialog";	return str;	__END_CATCH}

⌨️ 快捷键说明

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