cgsayhandler.cpp

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

CPP
1,958
字号
//			message << "摹橇 阁胶磐 扁瓷捞 OFF 登菌嚼聪促.";			gcSystemMessage.setMessage(msg);			filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		}	}	else if(set_type == "chief_monster_rare_item_percent")	{		int ratio = atoi(set_value.c_str());		if (ratio<0 || ratio>100)			return;		g_pVariableManager->setChiefMonsterRareItemPercent(ratio);        char msg[100];        sprintf( msg, g_pStringPool->c_str( STRID_SET_CHIEF_MONSTER_RARE_ITEM_RATIO ),                        set_value.c_str() );//		message << "摹橇 阁胶磐 饭绢 酒捞袍 风泼 犬伏捞 " << set_value << "%肺 荐沥登菌嚼聪促.";		gcSystemMessage.setMessage(msg);		filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());	}	else if(set_type == "newbie_transport_to_guild")	{		if (set_value=="on")		{			g_pVariableManager->setNewbieTransportToGuild(true);            char msg[100];            sprintf( msg, g_pStringPool->c_str( STRID_SET_NEWBIE_TRANSPORT_TO_GUILD ), "ON" );//			message << "瓷仿摹 40楼府, 辨靛肺 捞悼矫虐扁 扁瓷捞 ON 登菌嚼聪促.";			gcSystemMessage.setMessage(msg);			filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		}		else if (set_value=="off")		{			g_pVariableManager->setNewbieTransportToGuild(false);            char msg[100];            sprintf( msg, g_pStringPool->c_str( STRID_SET_NEWBIE_TRANSPORT_TO_GUILD ), "OFF" );//			message << "瓷仿摹 40楼府, 辨靛肺 捞悼矫虐扁 扁瓷捞 OFF 登菌嚼聪促.";			gcSystemMessage.setMessage(msg);			filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		}	}	else if ( set_type == "xmas_2002" )	{		uint l = set_value.find_first_of(' ' , 0);		uint m = set_value.find_first_of(' ' , l+1);				string value_firecracker	= set_value.substr( 0, l);		string value_treepart		= set_value.substr( l+1, m-l-1 );		string value_giftbox		= set_value.substr( m+1 );		g_pVariableManager->setVariable(CHRISTMAS_FIRE_CRACKER_RATIO, value_firecracker);		const string& msg1 = g_pVariableManager->toString(CHRISTMAS_FIRE_CRACKER_RATIO);		filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		gcSystemMessage.setMessage(msg1);				if (pGamePlayer!=NULL)			pGamePlayer->sendPacket (&gcSystemMessage);		g_pVariableManager->setVariable(CHRISTMAS_TREE_PART_RATIO, value_treepart);		const string& msg2 = g_pVariableManager->toString(CHRISTMAS_TREE_PART_RATIO);		filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		gcSystemMessage.setMessage(msg2);		if (pGamePlayer!=NULL)			pGamePlayer->sendPacket (&gcSystemMessage);		g_pVariableManager->setVariable(CHRISTMAS_GIFT_BOX_RATIO, value_giftbox);		const string& msg3 = g_pVariableManager->toString(CHRISTMAS_GIFT_BOX_RATIO);		filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());		gcSystemMessage.setMessage(msg3);	}	else if (set_type =="ItemTaxRatio")	{		if (pGamePlayer != NULL) 		{			Creature* pCreature = pGamePlayer->getCreature();			Zone* pZone = pCreature->getZone();			if (set_value.size() != 0)			{				int Tax = atoi(set_value.c_str());				g_pCastleInfoManager->setItemTaxRatio( pZone, Tax );			}			else 			{				gcSystemMessage.setMessage( g_pStringPool->getString( STRID_WRONG_ITEM_TAX_RATIO ) );			}		}	}	else	{		// by sigi. 2002.11.19		VariableType vt = g_pVariableManager->getVariableType( set_type );		if (vt!=VARIABLE_MAX)		{			g_pVariableManager->setVariable(vt, set_value);			const string& msg = g_pVariableManager->toString(vt);			gcSystemMessage.setMessage(msg);			filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str());			if ( vt == PREMIUM_HALF_EVENT )			{				GCNoticeEvent gcNoticeEvent;				if (g_pVariableManager->getVariable( vt ))				{					gcNoticeEvent.setCode( NOTICE_EVENT_PREMIUM_HALF_START );				}				else 				{					gcNoticeEvent.setCode( NOTICE_EVENT_PREMIUM_HALF_END );				}				// 蜡丰粮俊父 谎赴促.				getZoneByZoneID( 61 )->broadcastPacket( &gcNoticeEvent );		// 其肺唱合悼				getZoneByZoneID( 64 )->broadcastPacket( &gcNoticeEvent );		// 其肺唱巢辑				getZoneByZoneID( 1007 )->broadcastPacket( &gcNoticeEvent );		// 扼季己郴何(官配府付阑)			}			else if ( vt == TODAY_IS_HOLYDAY )			{				GCNoticeEvent gcNoticeEvent;				gcNoticeEvent.setCode( NOTICE_EVENT_HOLYDAY );				gcNoticeEvent.setParameter( g_pVariableManager->getVariable(vt) );				g_pZoneGroupManager->broadcast( &gcNoticeEvent );			}		}		else		{			gcSystemMessage.setMessage( g_pStringPool->getString( STRID_WRONG_VARIABLE_NAME ) );		}	}	// 磊脚俊霸父 矫胶袍 皋矫瘤 焊郴扁 (荐沥登菌阑矫)	if (pGamePlayer!=NULL)	{		pGamePlayer->sendPacket (&gcSystemMessage);	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opzone( string msg, int i )	throw( ProtocolException, Error ){	__BEGIN_TRY	//////////////	// Zone Info	///////////////*	ZoneInfo* pZoneInfo = new ZoneInfo();	pZoneInfo->setZoneID( 10001 );	pZoneInfo->setZoneGroupID( 6 );	pZoneInfo->setZoneType( "NORMAL_FIELD" );	pZoneInfo->setZoneLevel( 0 );	pZoneInfo->setZoneAccessMode( "PUBLIC" );	pZoneInfo->setZoneOwnerID( "" );	pZoneInfo->setPayPlay( "" );	pZoneInfo->setSMPFilename( "team_hdqrs.smp" );	pZoneInfo->setSSIFilename( "team_hdqrs.ssi" );	pZoneInfo->setFullName( "team" );	pZoneInfo->setShortName( "team" );	g_pZoneInfoManager->addZoneInfo( pZoneInfo );	/////////	// Zone	/////////	Zone* pZone = new Zone( 10001 );	Assert( pZone != NULL );	ZoneGroup* pZoneGroup = g_pZoneGroupManager->getZoneGroup(6);	Assert( pZoneGroup != NULL );	pZone->setZoneGroup( pZoneGroup );	pZoneGroup->addZone( pZone );	pZone->init();*/	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opguild( string msg, int i, Creature* pCreature )	throw( ProtocolException, Error ){	__BEGIN_TRY	i = i + 7;	uint j = msg.find_first_of( ' ', i );	string command = msg.substr( i, j - i );	string variable = trim( msg.substr( j+1 ) );	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pCreature->getPlayer());	if ( command == "changeGuildMaster" )	{		int a = variable.find_first_of( ' ', 0 );		GuildID_t guildID = atoi( variable.substr( 0, a ).c_str() );		string master = trim( variable.substr( a+1 ) );		Guild* pGuild = g_pGuildManager->getGuild( guildID );		if ( pGuild == NULL ) 		{			GCSystemMessage msg;			msg.setMessage( "No such Guild" );			pGamePlayer->sendPacket( &msg );			return;		}		GuildMember* pGuildMember = pGuild->getMember( master );		if ( pGuildMember == NULL )		{			GCSystemMessage msg;			msg.setMessage( "No such Guild Member" );			pGamePlayer->sendPacket( &msg );			return;		}		if ( pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_NORMAL		  && pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_SUBMASTER )		{			GCSystemMessage msg;			msg.setMessage( "New Guild Member must be submaster or normal member" );			pGamePlayer->sendPacket( &msg );			return;		}		Statement* pStmt = NULL;		Result* pResult = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement();						if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )			{				pResult = pStmt->executeQuery( "SELECT Fame, BladeLevel, SwordLevel, GunLevel, HealLevel, EnchantLevel FROM Slayer WHERE Name = '%s'", master.c_str() );				int i = 0;				if ( !pResult->next() )				{					SAFE_DELETE( pStmt );					return;				}				Fame_t			Fame			= pResult->getInt( ++i );				SkillLevel_t 	BladeLevel		= pResult->getInt( ++i );				SkillLevel_t 	SwordLevel		= pResult->getInt( ++i );				SkillLevel_t 	GunLevel		= pResult->getInt( ++i );				SkillLevel_t 	HealLevel		= pResult->getInt( ++i );				SkillLevel_t 	EnchantLevel	= pResult->getInt( ++i );				SkillDomainType_t	highestDomain;				SkillLevel_t		maxLevel;				if ( BladeLevel > SwordLevel )				{					maxLevel = BladeLevel;					highestDomain = SKILL_DOMAIN_BLADE;				}				else				{					maxLevel = SwordLevel;					highestDomain = SKILL_DOMAIN_SWORD;				}				if ( GunLevel > maxLevel )				{					maxLevel = GunLevel;					highestDomain = SKILL_DOMAIN_GUN;				}				if ( HealLevel > maxLevel )				{					maxLevel = HealLevel;					highestDomain = SKILL_DOMAIN_HEAL;				}				if ( EnchantLevel > maxLevel )				{					maxLevel = EnchantLevel;					highestDomain = SKILL_DOMAIN_ENCHANT;				}				if ( maxLevel < REQUIRE_SLAYER_MASTER_SKILL_DOMAIN_LEVEL )				{					SAFE_DELETE( pStmt );					GCSystemMessage msg;					msg.setMessage( "Master Level Limit Error" );					pGamePlayer->sendPacket( &msg );					return;				}				if ( Fame < REQUIRE_SLAYER_MASTER_FAME[highestDomain] )				{					SAFE_DELETE( pStmt );					GCSystemMessage msg;					msg.setMessage( "Master Fame Limit Error" );					pGamePlayer->sendPacket( &msg );					return;				}			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE ) 			{				pResult = pStmt->executeQuery( "SELECT Level FROM Vampire WHERE Name = '%s'", master.c_str() );				if ( !pResult->next() )				{					SAFE_DELETE( pStmt );					return;				}								Level_t Level = pResult->getInt( 1 );				if ( Level < REQUIRE_VAMPIRE_MASTER_LEVEL )				{					SAFE_DELETE( pStmt );					GCSystemMessage msg;					msg.setMessage( "Master Level Limit Error" );					pGamePlayer->sendPacket( &msg );					return;				}			}			else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS ) 			{				pResult = pStmt->executeQuery( "SELECT Level FROM Ousters WHERE Name = '%s'", master.c_str() );				if ( !pResult->next() )				{					SAFE_DELETE( pStmt );					return;				}				Level_t Level = pResult->getInt( 1 );				if ( Level < REQUIRE_OUSTERS_MASTER_LEVEL )				{					SAFE_DELETE( pStmt );					GCSystemMessage msg;					msg.setMessage( "Master Level Limit Error" );					pGamePlayer->sendPacket( &msg );					return;				}			}			else			{				SAFE_DELETE( pStmt );				return;			}			SAFE_DELETE( pStmt );		}		END_DB(pStmt)		GSModifyGuildMember gsPacket;		gsPacket.setGuildID( pGuild->getID() );		gsPacket.setName( master );		gsPacket.setGuildMemberRank( GuildMember::GUILDMEMBER_RANK_MASTER );		gsPacket.setSender( pCreature->getName() );		g_pSharedServerManager->sendPacket( &gsPacket );	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opsave(GamePlayer* pGamePlayer , string msg, int i)	throw(ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX	GCSystemMessage gcSystemMessage;	gcSystemMessage.s

⌨️ 快捷键说明

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