cgconnecthandler.cpp

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

CPP
1,006
字号
		Assert( pPC != NULL );		if ( isCastleZone || isMasterLair || isPKZone || isMaze || isEventZone )		{			if ( g_pResurrectLocationManager->getPosition( pPC, zoneCoord ) )			{				pCreature->setZoneID( zoneCoord.id );				pCreature->setXY( zoneCoord.x, zoneCoord.y );			}		}	}	Zone* pZone = pCreature->getZone();	Assert(pZone != NULL);	#if defined(__PAY_SYSTEM_FREE_LIMIT__)	try {		ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo(pZone->getZoneID());		Assert( pZoneInfo != NULL );		Assert( pCreature->isPC() );		PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);		Assert( pPC != NULL );		// 蜡丰 粮捞唱 橇府固决 粮捞 酒匆 版快 30 饭骇 捞窍狼 辆樊力 荤侩磊俊霸绰 苞陛窍瘤 臼绰促.		if ( ( pGamePlayer->isPayPlaying() || pGamePlayer->isPremiumPlay() )			&& pGamePlayer->getPayType() == PAY_TYPE_TIME			&& pPC->canPlayFree()			&& ! ( pZoneInfo->isPayPlay() || pZone->isPremiumZone() )		)		{			pGamePlayer->logoutPayPlay( pGamePlayer->getID(), false, false );		}		// 蜡丰拳 粮捞绊 蜡丰荤侩吝捞 酒聪搁..		// ぬ.ば 2003.03.16 老馆 鞘靛档 橇府固决粮捞促. 公丰荤侩磊档 鞘靛肺绰 肺弊牢 登绢具 茄促.		if ( (pZoneInfo->isPayPlay()) //|| pZoneInfo->isPremiumZone())			&& !pGamePlayer->isPayPlaying() )		{			// 蜡丰 辑厚胶 荤侩 阂啊牢 版快			// 浇饭捞绢绰 俊浇巢悼俊辑 何劝窍绰 镑栏肺 埃促.			// 轨颇捞绢绰 覆焊巢悼俊辑 何劝窍绰 镑栏肺 埃促.			ZONE_COORD zoneCoord;			if ( g_pResurrectLocationManager->getRaceDefaultPosition( pPC->getRace(), zoneCoord ) )			{				pCreature->setZoneID( zoneCoord.id );				pCreature->setXY( zoneCoord.x, zoneCoord.y );			}		}	} catch (NoSuchElementException&) {		throw Error("ZoneInfo俊 zoneID啊 绝促.");	}#elif defined(__CONNECT_BILLING_SYSTEM__)	if ( pGamePlayer->isMetroFreePlayer() )	{		pGamePlayer->setBillingUserStatus( "MT" );		pGamePlayer->setPremiumPlay();	}	else	{		try {			ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo(pZone->getZoneID());			Assert( pZoneInfo != NULL );			Assert( pCreature->isPC() );			PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPC != NULL );			// 酒流 呼傅 辑滚俊辑 蜡丰 荤侩磊牢瘤 牢刘 犬牢阑 罐瘤 臼疽促.			// 蜡丰拳 粮捞扼搁 老窜 蜡丰 荤侩磊扼肺 积阿茄促.			// premium 阑 难 初酒具瘤 公丰 荤侩老锭 ZonePlayerManager 俊辑 公丰粮栏肺 颗败霖促.			if ( pZoneInfo->isPayPlay() )			{				pGamePlayer->setPremiumPlay();			}			} catch (NoSuchElementException&) {				throw Error("ZoneInfo俊 zoneID啊 绝促.");		}		// session 蔼阑 沥秦敌促. by sigi. 2002.11.18		pGamePlayer->setBillingSession();		// 呼傅辑滚俊 霸烙 矫累阑 舅赴促.		pGamePlayer->sendBillingLogin();	}#elif defined(__PAY_SYSTEM_ZONE__)	try {		ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo(pZone->getZoneID());		// 蜡丰拳 粮捞绊 蜡丰荤侩吝捞 酒聪搁..		if (pZoneInfo!=NULL			&& (pZoneInfo->isPayPlay() || pZoneInfo->isPremiumZone())			&& !pGamePlayer->isPayPlaying() )		{			bool bEnterZone = true;			string connectIP = pGamePlayer->getSocket()->getHost();			// 蜡丰 辑厚胶 荤侩捞 啊瓷茄啊?			// 蜡丰 辑厚胶 荤侩捞 救登绊 蜡丰 粮捞扼搁 甸绢哎 荐 绝促.			if ( !pGamePlayer->loginPayPlay(connectIP, pGamePlayer->getID())				&& pZoneInfo->isPayPlay() )			{				bEnterZone = false;			}			if ( !pGamePlayer->loginPayPlay(connectIP, pGamePlayer->getID())				&& ( pZone->getZoneID() == 1131 ||					 pZone->getZoneID() == 1132 ||					 pZone->getZoneID() == 1133 ||					 pZone->getZoneID() == 1134 ) )			{				bEnterZone = false;			}			Assert( pCreature->isPC() );			PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);			Assert( pPC != NULL );			if (!bEnterZone)			{				// 蜡丰 辑厚胶 荤侩 阂啊牢 版快				// 浇饭捞绢绰 俊浇巢悼俊辑 何劝窍绰 镑栏肺 埃促.				// 轨颇捞绢绰 覆焊巢悼俊辑 何劝窍绰 镑栏肺 埃促.				ZONE_COORD zoneCoord;//				bool bFindPos = false;				if ( g_pResurrectLocationManager->getRaceDefaultPosition( pPC->getRace(), zoneCoord ) )				{					pCreature->setZoneID( zoneCoord.id );					pCreature->setXY( zoneCoord.x, zoneCoord.y );				}			}		}	} catch (NoSuchElementException&) {		throw Error("ZoneInfo俊 zoneID啊 绝促.");	}#elif defined(__CONNECT_CBILLING_SYSTEM__)	// 呼傅 辑滚肺 林扁利栏肺 minus point/minute 菩哦阑 焊郴绰 捞亥飘甫 嘿牢促.	EventCBilling* pEvent = new EventCBilling( pGamePlayer );	pEvent->setDeadline( g_pCBillingPlayerManager->getMinusIntervalInt() * 600 );	pGamePlayer->addEvent( pEvent );	// 吝惫 呼傅篮 傈搁 蜡丰拳 捞骨肺 咯扁鳖瘤 吭促搁 蜡丰 荤侩磊捞促. 公丰 荤侩磊老 版快 肺弊牢 辑滚俊辑 阜腮促.	pGamePlayer->setPayPlayer( true );	pGamePlayer->setPremiumPlay();	// send Login	pGamePlayer->setCBillingVerified( g_pCBillingPlayerManager->sendLogin( pGamePlayer ) );#else	// 酒公巴档 汲沥登绢 乐瘤 臼栏搁	// 傲 蜡丰 荤侩磊扼绊 秦滚府磊	pGamePlayer->setPremiumPlay();#endif	// test code	/*	// 肺弊牢 窍绊.. 官肺 购啊 皋技瘤甫 谎妨林绰 何盒. by sigi. 2002.12.11	EventSystemMessage* pESM = new EventSystemMessage( pGamePlayer );	pESM->setDeadline( 0 );	pESM->addMessage("捞巴篮 抛胶飘 矫胶袍 皋矫瘤");	pESM->addMessage("力措肺 免仿登辨 官饿挥.. -_-;;");	pGamePlayer->addEvent( pESM );	*/	// 蜡丰粮俊辑父 利侩登绰 酒捞袍 锭巩俊 咯扁辑 眉农	// 2002.8.26. by sigi	if (pPacket->getPCType() == PC_SLAYER) 	{		Assert(pSlayer!=NULL);		pSlayer->loadItem( true );	}	else if ( pPacket->getPCType() == PC_VAMPIRE )	{		Assert(pVampire!=NULL);		pVampire->loadItem( true );	}	else if ( pPacket->getPCType() == PC_OUSTERS )	{		Assert(pOusters!=NULL);		pOusters->loadItem( true );	}	// 浇饭捞绢扼搁 辨靛 郴何, 轨颇捞绢扼搁 饭绢 郴何俊辑 	// 矫累窍绰 版快, HP甫 父顶栏肺 盲况霖促. 	if (pCreature->isSlayer())	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);		switch (pZone->getZoneID())		{			case 2000:			case 2001:			case 2002:			case 2003:			case 2004:			case 2010:			case 2011:			case 2012:			case 2013:			case 2014:			case 2020:			case 2021:			case 2022:			case 2023:			case 2024:				pSlayer->setHP(pSlayer->getHP(ATTR_MAX), ATTR_CURRENT);				break;			default:				break;		}	}	else if (pCreature->isVampire())	{		Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);		switch (pZone->getZoneID())		{			case 1003:			case 1007:				pVampire->setHP(pVampire->getHP(ATTR_MAX), ATTR_CURRENT);				break;			default:				break;		}	}	else if ( pCreature->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);		switch ( pZone->getZoneID() )		{			case 1311:				pOusters->setHP(pOusters->getHP(ATTR_MAX), ATTR_CURRENT);			default:				break;		}	}	// 涅胶飘 概聪历甫 肺靛茄促.	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);	pPC->getQuestManager()->load();	// 农府贸 磊脚苞 家蜡 酒捞袍甸狼 OID甫 且寸罐绰促.	// 捞固 Creature::load()俊辑 Zone 捞 瘤沥登绢 乐绢具 茄促.	pCreature->registerObject();	// 林扁 历厘 捞亥飘甫 敲饭捞绢 按眉俊 眠啊茄促.	// 捞锭 扁夯利栏肺 10盒 历厘阑 盔蘑栏肺 茄促.	// (setDeadline狼 颇扼固磐绰 0.1 檬扼绰 单 蜡狼且 巴)	//EventSave* pEventSave = new EventSave(pGamePlayer);	//pEventSave->setDeadline(600* 10);	//pGamePlayer->addEvent(pEventSave);#ifdef __USE_ENCRYPTER__	// 鞠龋拳 内靛 殿废. 瘤陛篮 objectID肺 窍扁 锭巩俊.. by sigi. 2002.11.27    pGamePlayer->setEncryptCode();#endif//	pGamePlayer->sendPacket( SystemAvailabilitiesManager::getInstance()->getAvailabilitiesPacket() );	SEND_SYSTEM_AVAILABILITIES(pGamePlayer);	//----------------------------------------------------------------------	// GCUpdateInfo 侩 PC 沥焊, SkillInfo 甫 备己茄促.	//----------------------------------------------------------------------	GCUpdateInfo gcUpdateInfo;	makeGCUpdateInfo(&gcUpdateInfo, pCreature);	pGamePlayer->sendPacket(&gcUpdateInfo);	sendPetInfo( pGamePlayer );	string host = pGamePlayer->getSocket()->getHost();	IP_t IP = pGamePlayer->getSocket()->getHostIP();	// 付瘤阜栏肺 IP狼 沥焊甫 DB俊 INSERT 茄促.	try 	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		/*		StringStream inputsql;		inputsql << "INSERT INTO UserIPInfo (Name, IP, ServerID) VALUES ('"			<< pCreature->getName().c_str() << "'," 			<< IP << "," << g_pConfig->getPropertyInt("ServerID") 			<< ")";				pStmt->executeQuery(inputsql.toString());		*/				pStmt->executeQuery( "INSERT IGNORE INTO UserIPInfo (Name, IP, ServerID) VALUES ( '%s', %lu, %d )", 								pCreature->getName().c_str(), IP, g_pConfig->getPropertyInt("ServerID") );		SAFE_DELETE(pStmt);		log(LOG_CGCONNECT, pPacket->getPCName(), "", host);	} 	catch (SQLQueryException & se) 	{		// 官操扁 矫档. by sigi. 2002.6.21		try {			pStmt->executeQuery( "UPDATE UserIPInfo Set IP=%ld, ServerID=%d WHERE Name='%s'",									IP, 									g_pConfig->getPropertyInt("ServerID"), 									pCreature->getName().c_str());			log(LOG_CGCONNECT, pPacket->getPCName(), "", host);			SAFE_DELETE(pStmt);		} catch (SQLQueryException & se) {			SAFE_DELETE(pStmt);			throw ProtocolException("Duplicated IPInfo");		}	}	//--------------------------------------------------	// change player status	//--------------------------------------------------	pGamePlayer->setPlayerStatus(GPS_WAITING_FOR_CG_READY);#endif			__END_DEBUG	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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