cgsayhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 1,958 行 · 第 1/5 页

CPP
1,958
字号
		//cout << "==================Operator Order user Execute==================" << endl;		opuser(pGamePlayer, msg, i);	}	else if (msg.substr(i+1 , 6) == "notice" && (pCreature->isGOD() || pCreature->isDM())){		//cout << "==================Operator Order user Execute==================" << endl;		opnotice(pGamePlayer, msg, i);	}	// 阿辆 窃荐侩 蔼 技泼侩 窃荐	// set type value 屈怕肺 沥狼等促.	// 2002.5.8 喊 犬伏阑 磊啦利栏肺 炼例窍扁 困秦辑 父惦	else if (msg.substr(i+1, 3) == "set" && (pCreature->isGOD())) {		opset(pGamePlayer, msg, i);	}	else if (msg.substr(i+1, 4) == "load" && (pCreature->isGOD())) {		opload(pGamePlayer, msg, i);	}	else if (msg.substr(i+1, 4) == "view" && (pCreature->isGOD() || pCreature->isDM())) {		opview(pGamePlayer, msg, i);	}	else if (msg.substr(i+1, 6) == "combat" && (pCreature->isGOD() || pCreature->isDM())) {		opcombat(pGamePlayer, msg, i);	}		else if (msg.substr(i+1, 4) == "find" || msg.substr(i+1, 4) == "绢叼") {		opfind(pGamePlayer, msg, i);	}	else if (msg.substr(i+1, 6) == "credit") {		opcredit(pGamePlayer, msg, i);	}	else if (msg.substr(i+1, 9) == "soulchain" && ( !pCreature->isPLAYER() ) )	{		opsoulchain( pGamePlayer, msg, i );	}	else if ( msg.substr(i+1, 3) == "log" && (pCreature->isGOD() || pCreature->isDM()) )	{		oplog( pGamePlayer, msg, i );	}	else if ( msg.substr(i+1, 10) == "bug_report" )	{		uint j = msg.find_first_of(' ', i+1);		if ( j == string::npos )		{			filelog("bugreport.log", "%s", msg.c_str());			return;		}		string report = msg.substr(j+1, msg.size()-j-1);		if ( ( j = report.find_first_of('\'') ) != string::npos ) report[j] = '_';		if ( ( j = report.find_first_of('\\') ) != string::npos ) report[j] = '_';		Statement* pStmt = NULL;		try		{			BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();				pStmt->executeQuery("INSERT INTO BugReportLog(PlayerID, Name, ReportTime, ReportLog) VALUES "									"('%s', '%s', now(), '%s')", pGamePlayer->getID().c_str(), pCreature->getName().c_str(), report.c_str());				SAFE_DELETE(pStmt);			}			END_DB(pStmt)				// 穿啊 捞惑茄芭 朝府搁 公矫窍磊		} catch(...) { filelog("bugreport.log", "%s", msg.c_str()); }	}	else if ( msg.substr(i+1,11) == "CrashReport" )	{		uint j = msg.find_first_of(' ', i+1);		uint k = msg.find_first_of(' ', j+13);		uint l = msg.find_first_of(' ', k+1);		uint m = msg.find_first_of(' ', l+1);		if ( j == string::npos || k == string::npos || l == string::npos || m == string::npos )		{			filelog("CrashReport.log", "[%s] %s", pGamePlayer->getID().c_str(), msg.c_str() );			return;		}		string ExecutableTime = msg.substr(j+1, k-j-1);		string Version = msg.substr(k+1, l-k-1);		string Address = msg.substr(l+1, m-l-1);		string Message = msg.substr(m+1, msg.size()-m-1);		cout << ExecutableTime << endl;		cout << Version << endl;		cout << Address << endl;		cout << Message << endl;		Statement* pStmt = NULL;		try		{			BEGIN_DB			{				pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();				pStmt->executeQuery("INSERT INTO CrashLog (PlayerID, Name, ReportTime, ExecutableTime, Version, Address, Message) VALUES "									"('%s', '%s', now(), '%s', '%s', '%s', '%s')", pGamePlayer->getID().c_str(), pCreature->getName().c_str(),									ExecutableTime.c_str(), Version.c_str(), Address.c_str(), Message.c_str() );				SAFE_DELETE(pStmt);			}			END_DB(pStmt)				// 穿啊 捞惑茄芭 朝府搁 公矫窍磊		} catch(...) { filelog("CrashReport.log", "%s", msg.c_str()); }	}	__END_CATCH}void CGSayHandler::opcombat(GamePlayer* pGamePlayer, string msg, int i)	throw(ProtocolException, Error){	__BEGIN_TRY		if(pGamePlayer==NULL) return;	Creature* pCreature = pGamePlayer->getCreature();	if (pCreature==NULL) return;	filelog("change.txt", "[%s] %s", pCreature->getName().c_str(), msg.c_str());//	Creature* pCreature = pGamePlayer->getCreature();	GCSystemMessage gcSystemMessage;	// 烙矫肺 阜酒敌巴	{		gcSystemMessage.setMessage( g_pStringPool->getString( STRID_DO_NOT_SUPPORT_OLD_WAR ) );		pGamePlayer->sendPacket (&gcSystemMessage);		return;	}	StringStream message;	uint j = msg.find_first_of(' ', i+1);	uint z = msg.find_first_of(' ', j+1);	string set_type = msg.substr(j+1, z-j-1);	if(set_type == "start")	{		if(g_pCombatInfoManager->isCombat()			|| g_pCombatInfoManager->isSlayerBonus()			|| g_pCombatInfoManager->isVampireBonus())		{			cout << "捞固 傈里吝涝聪促" << endl;//			message << "捞固 傈里吝涝聪促";			gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_ALEADY_START ) );			pGamePlayer->sendPacket (&gcSystemMessage);		}		else		{			cout << "傈里捞 矫累登菌嚼聪促" << endl;//			message << "傈里捞 矫累登菌嚼聪促";			gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_START ) );			g_pZoneGroupManager->broadcast( &gcSystemMessage );			// by sigi. 2002.7.5			for (int i=0; i<maxRelic; i++)			{				const RelicInfo* pRelicInfo = dynamic_cast<RelicInfo*>(g_pRelicInfoManager->getItemInfo(i));				int ZoneNum = pRelicInfo->zoneID;				ZoneInfo* pZoneInfo = NULL;				try {					pZoneInfo = g_pZoneInfoManager->getZoneInfo(ZoneNum);				} catch (NoSuchElementException&) {					throw Error("傈里粮捞 绝促.");				}				ZoneGroup* pZoneGroup = NULL;				try {					pZoneGroup = g_pZoneGroupManager->getZoneGroup(pZoneInfo->getZoneGroupID());				} catch (NoSuchElementException&) {					throw Error("傈里粮捞 绝促.2");				}				Zone* pZone = pZoneGroup->getZone(ZoneNum);				pZone->addRelicItem( i );			}			g_pCombatInfoManager->setCombat( true );		}	}	else if(set_type == "end")	{		if(!g_pCombatInfoManager->isCombat()			&& (g_pCombatInfoManager->isSlayerBonus()				|| g_pCombatInfoManager->isVampireBonus()))		{			cout << "傈里阑 辆丰钦聪促." << endl;			gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_END ) );			g_pZoneGroupManager->broadcast( &gcSystemMessage );			// by sigi. 2002.7.5			for (int i=0; i<maxRelic; i++)			{				const RelicInfo* pRelicInfo = dynamic_cast<RelicInfo*>(g_pRelicInfoManager->getItemInfo(i));				int ZoneNum = pRelicInfo->zoneID;				ZoneInfo* pZoneInfo = NULL;				try {					pZoneInfo = g_pZoneInfoManager->getZoneInfo(ZoneNum);				} catch (NoSuchElementException&) {					throw Error("傈里粮捞 绝促.");				}				ZoneGroup* pZoneGroup = NULL;				try {					pZoneGroup = g_pZoneGroupManager->getZoneGroup(pZoneInfo->getZoneGroupID());				} catch (NoSuchElementException&) {					throw Error("傈里粮捞 绝促.2");				}				Zone* pZone = pZoneGroup->getZone(ZoneNum);				pZone->deleteRelicItem();				g_pCombatInfoManager->setRelicOwner(i, CombatInfoManager::RELIC_OWNER_NULL);			}			g_pCombatInfoManager->computeModify();			g_pCombatInfoManager->setCombat( false );		}		else		{			cout << "傈里吝捞 酒聪芭唱 辆丰且 荐 绝嚼聪促." << endl;			gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_END_COMBAT ) );						pGamePlayer->sendPacket (&gcSystemMessage);		}	}	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opview(GamePlayer* pGamePlayer, string msg, int i)	throw(ProtocolException, Error){	__BEGIN_TRY	if (pGamePlayer==NULL) return;		Creature* pCreature = pGamePlayer->getCreature();	GCSystemMessage gcSystemMessage;	StringStream message;	uint j = msg.find_first_of(' ' , i+1);	uint z = msg.find_first_of(' ' , j+1);		string set_type = msg.substr(j+1, z-j-1);	cout << "modifier : " << pCreature->getName() << " set type : " << set_type << endl;	if(set_type == "star")	{	    message << "喊 免泅 犬伏: 1/" << g_pVariableManager->getStar();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "evnet_activate")	{		if(g_pVariableManager->getEventActivate() == 1)			message << "捞亥飘 柳青吝" << endl;		else			message << "捞亥飘 沥瘤吝" << endl;		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "event_ratio")	{	    message << "捞亥飘 阁胶磐 免泅 犬伏 1/" << g_pVariableManager->getEventRatio();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "exp_ratio")	{	    message << "版氰摹 裙垫伏: " << g_pVariableManager->getExpRatio();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "item_prob_ratio")	{	    message << "酒捞袍 裙垫伏: " << g_pVariableManager->getItemProbRatio();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "combat_bonus_time")	{	    message << "傈里 铰府 蜡瘤矫埃: " << g_pVariableManager->getCombatBonusTime() << "盒";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "combat_bonus_slayer_hp_ratio")	{	    message << "浇饭捞绢 傈里 HP焊呈胶 刘啊摹: +" << g_pVariableManager->getCombatSlayerHPBonusRatio() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "combat_bonus_vampire_hp_ratio")	{	    message << "轨颇捞绢 傈里 HP焊呈胶 刘啊摹: +" << g_pVariableManager->getCombatVampireHPBonusRatio() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "combat_bonus_slayer_damage")	{	    message << "浇饭捞绢 傈里 Damage焊呈胶 刘啊摹: +" << g_pVariableManager->getCombatSlayerDamageBonus();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "combat_bonus_vampire_damage")	{	    message << "轨颇捞绢 傈里 Damage焊呈胶 刘啊摹: +" << g_pVariableManager->getCombatVampireDamageBonus();		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "premium_exp_bonus_percent")	{	    message << "橇府固决 荤侩磊 版氰摹 焊呈胶: " << g_pVariableManager->getPremiumExpBonusPercent() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "premium_item_probe_percent")	{	    message << "橇府固决 粮 酒捞袍 风泼 犬伏: " << g_pVariableManager->getPremiumItemProbePercent() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "zone_group_balancing_minute")	{	    message << "ZoneGroupBalancing 矫埃: " << g_pVariableManager->getZoneGroupBalancingMinute() << "盒";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "zone_group_next_balancing_time")	{ 		const Timeval& tv = g_pClientManager->getBalanceZoneGroupTime();		Timeval currentTime;		getCurrentTime(currentTime);	    message << "促澜 ZoneGroupBalancing 矫埃: " << (tv.tv_sec - currentTime.tv_sec)/60 << "盒 饶";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "gamble_item_type_ratio")	{	    message << "胺喉 ItemType犬伏: " << g_pVariableManager->getGambleItemTypeRatio() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "gamble_item_option_ratio")	{	    message << "胺喉 ItemOption犬伏: " << g_pVariableManager->getGambleItemOptionRatio() << "%";		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "summon_motorcycle")	{	    message << "坷配官捞 家券 扁瓷 : " << (g_pVariableManager->isSummonMotorcycle()? "ON":"OFF");		gcSystemMessage.setMessage(message.toString());	}	else if (set_type == "enemy_limit_time")	{		message << "阁胶磐 利 蜡瓤 矫埃: " << g_pVariableManager->getEnemyLimitTime() << "檬";		gcSystemMessage.setMessage(message.toString()); 	}					else if (set_type == "rare_item_ratio")	{		message << "饭绢 酒捞袍 风泼 犬伏: " << g_pVariableManager->getRareItemRatio() << "%";		gcSystemMessage.setMessage(message.toString()); 	}					else if (set_type == "unique_item_ratio")	{		message << "蜡聪农 酒捞袍 风泼 犬伏: " << g_pVariableManager->getUniqueItemRatio() << "/10000";		gcSystemMessage.setMessage(message.toString()); 	}					else if(set_type == "active_master_lair")	{	    message << "付胶磐 饭绢 捞亥飘 : " << (g_pVariableManager->isActiveMasterLair()? "ON":"OFF");		gcSystemMessage.setMessage(message.toString());	}	else if(set_type == "retry_master_lair")	{	    message << "付胶磐 饭绢俊 磷绊 促矫 甸绢啊扁 : " << (g_pVariableManager->isRetryMasterLair()? "ON":"OFF");		gcSystemMessage.setMessage(message.toString());	}	else if (set_type == "harvest_festival_item_ratio")	{		message << "眠籍 价祈 酒捞袍 风泼 犬伏: 1/" << g_pVariableManager->getHarvestFestivalItemRatio();

⌨️ 快捷键说明

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