cgconnecthandler.cpp

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

CPP
1,006
字号
	}	catch (SQLQueryException & sqe)	{		SAFE_DELETE(pStmt);		throw Error(sqe.toString());	}	//----------------------------------------------------------------------	// 浇饭捞绢 肚绰 轨颇捞绢 某腐磐甫 肺爹茄促.	//----------------------------------------------------------------------	Slayer*  pSlayer  = NULL;	Vampire* pVampire = NULL;	Ousters* pOusters = NULL;	bool bAlreadyConnected = false;	//try	//{		if (pPacket->getPCType() == PC_SLAYER) 		{			pSlayer = new Slayer();			pSlayer->setName(pPacket->getPCName());			pSlayer->setPlayer(pGamePlayer);			if (!pSlayer->load())			{				filelog("connectDB_BUG.txt", "Failed to load SLAYER(%s) data from DB", pPacket->getPCName().c_str());				throw ProtocolException("Failed to load SLAYER data from DB");			}			// 蜡丰粮俊辑父 利侩登绰 酒捞袍 锭巩俊 关俊辑 眉农			//pSlayer->loadItem();			//Assert(pSlayer->getName() == pPacket->getPCName());			if (pSlayer->getName() != pPacket->getPCName())			{				cout << "Different Name : " << pSlayer->getName().c_str()						<< ", " << pPacket->getPCName().c_str() << endl;				Assert(pSlayer->getName() == pPacket->getPCName());			}			pGamePlayer->setCreature(pSlayer);			// Slayer甫 TelephoneCenter俊 殿废茄促.			//g_pTelephoneCenter->addSlayer(pSlayer);					// 林扁 雀汗 捞亥飘甫 敲饭捞绢 按眉俊 眠啊茄促.			// 捞锭 扁夯利栏肺 10檬 雀汗阑 盔蘑栏肺 茄促.			// (setDeadline狼 颇扼固磐绰 0.1 檬扼绰 单 蜡狼且 巴)			EventRegeneration* pEventRegeneration = new EventRegeneration(pGamePlayer);			pEventRegeneration->setDeadline(10* 10);			pGamePlayer->addEvent(pEventRegeneration);			// PCFinder俊 眠啊茄促.			// PCFinder狼 昏力绰 ~GamePlayer()俊辑父 茄促.			try {				g_pPCFinder->addCreature(pSlayer);			} catch (DuplicatedException& de) {				bAlreadyConnected = true;			}			// 捞固 立加吝牢 版快啊 酒聪扼搁.. by sigi. 2002.8.29			if (!bAlreadyConnected)			{				// 辨靛 泅犁 立加 糕滚 府胶飘俊 眠啊茄促.				if ( pSlayer->getGuildID() != 99 )				{					Guild* pGuild = g_pGuildManager->getGuild( pSlayer->getGuildID() );					if ( pGuild != NULL )					{						// sharedserver肺 立加阑 舅府绊 DB 档 update 茄促.						try {							pGuild->addCurrentMember( pSlayer->getName() );							GSGuildMemberLogOn gsGuildMemberLogOn;							gsGuildMemberLogOn.setGuildID( pGuild->getID() );							gsGuildMemberLogOn.setName( pSlayer->getName() );							gsGuildMemberLogOn.setLogOn( true );							g_pSharedServerManager->sendPacket( &gsGuildMemberLogOn );							// DB 诀单捞飘							BEGIN_DB							{								pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();								pStmt->executeQuery( "UPDATE GuildMember SET LogOn = 1 WHERE Name = '%s'", pSlayer->getName().c_str() );							}							END_DB( pStmt )						} catch (DuplicatedException& t) {							// 老窜 公矫茄促. by sigi. 2002.8.29							filelog( "guildBug.log", "%s", t.toString().c_str());						}					}					else						filelog( "GuildMissing.log", "[NoSuchGuild] GuildID : %d, Name : %s\n", (int)pSlayer->getGuildID(), pSlayer->getName().c_str() );				}			}		} 		else if (pPacket->getPCType() == PC_VAMPIRE) 		{			pVampire = new Vampire();			pVampire->setName(pPacket->getPCName());			pVampire->setPlayer(pGamePlayer);			if (!pVampire->load())			{				filelog("connectDB_BUG.txt", "Failed to load VAMPIRE(%s) data from DB", pPacket->getPCName().c_str());				throw ProtocolException("Failed to VAMPIRE data from DB");			}			// 蜡丰粮俊辑父 利侩登绰 酒捞袍 锭巩俊 关俊辑 眉农			//pVampire->loadItem();			Assert(pVampire->getName() == pPacket->getPCName());			pGamePlayer->setCreature(pVampire);			// 林扁 雀汗 捞亥飘甫 敲饭捞绢 按眉俊 眠啊茄促.			// 捞锭 扁夯利栏肺 10檬 雀汗阑 盔蘑栏肺 茄促.			// (setDeadline狼 颇扼固磐绰 0.1 檬扼绰 单 蜡狼且 巴)			EventRegeneration* pEventRegeneration = new EventRegeneration(pGamePlayer);			pEventRegeneration->setDeadline(10* 10);			pGamePlayer->addEvent(pEventRegeneration);			// PCFinder俊 眠啊茄促.			// PCFinder狼 昏力绰 ~GamePlayer()俊辑父 茄促.			try {				g_pPCFinder->addCreature(pVampire);			} catch (DuplicatedException& de) {				bAlreadyConnected = true;			}			// 捞固 立加吝牢 版快啊 酒聪扼搁.. by sigi. 2002.8.29			if (!bAlreadyConnected)			{				// 辨靛 泅犁 立加 糕滚 府胶飘俊 眠啊茄促.				if ( pVampire->getGuildID() != 0 )				{					Guild* pGuild = g_pGuildManager->getGuild( pVampire->getGuildID() );					if ( pGuild != NULL )					{						// sharedserver 俊 立加阑 舅府绊 DB 档 update 茄促.						try {							pGuild->addCurrentMember( pVampire->getName() );							GSGuildMemberLogOn gsGuildMemberLogOn;							gsGuildMemberLogOn.setGuildID( pGuild->getID() );							gsGuildMemberLogOn.setName( pVampire->getName() );							gsGuildMemberLogOn.setLogOn( true );							g_pSharedServerManager->sendPacket( &gsGuildMemberLogOn );							// DB 诀单捞飘							BEGIN_DB							{								pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();								pStmt->executeQuery( "UPDATE GuildMember SET LogOn = 1 WHERE Name = '%s'", pVampire->getName().c_str() );							}							END_DB( pStmt )						} catch (DuplicatedException& t) {							// 老窜 公矫茄促. by sigi. 2002.8.29							filelog( "guildBug.log", "%s", t.toString().c_str());						}					}					else						filelog( "GuildMissing.log", "[NoSuchGuild] GuildID : %d, Name : %s\n", (int)pVampire->getGuildID(), pVampire->getName().c_str() );				}			}		}		else if (pPacket->getPCType() == PC_OUSTERS) 		{			pOusters = new Ousters();			pOusters->setName(pPacket->getPCName());			pOusters->setPlayer(pGamePlayer);			if (!pOusters->load())			{				filelog("connectDB_BUG.txt", "Failed to load VAMPIRE(%s) data from DB", pPacket->getPCName().c_str());				throw ProtocolException("Failed to VAMPIRE data from DB");			}			// 蜡丰粮俊辑父 利侩登绰 酒捞袍 锭巩俊 关俊辑 眉农			//pVampire->loadItem();			Assert(pOusters->getName() == pPacket->getPCName());			pGamePlayer->setCreature(pOusters);			// 林扁 雀汗 捞亥飘甫 敲饭捞绢 按眉俊 眠啊茄促.			// 捞锭 扁夯利栏肺 10檬 雀汗阑 盔蘑栏肺 茄促.			// (setDeadline狼 颇扼固磐绰 0.1 檬扼绰 单 蜡狼且 巴)			EventRegeneration* pEventRegeneration = new EventRegeneration(pGamePlayer);			pEventRegeneration->setDeadline(10* 10);			pGamePlayer->addEvent(pEventRegeneration);			// PCFinder俊 眠啊茄促.			// PCFinder狼 昏力绰 ~GamePlayer()俊辑父 茄促.			try {				g_pPCFinder->addCreature(pOusters);			} catch (DuplicatedException& de) {				bAlreadyConnected = true;			}			// 捞固 立加吝牢 版快啊 酒聪扼搁.. by sigi. 2002.8.29			if (!bAlreadyConnected)			{				// 辨靛 泅犁 立加 糕滚 府胶飘俊 眠啊茄促.				if ( pOusters->getGuildID() != 66 )				{					Guild* pGuild = g_pGuildManager->getGuild( pOusters->getGuildID() );					if ( pGuild != NULL )					{						// sharedserver 俊 立加阑 舅府绊 DB 档 update 茄促.						try {							pGuild->addCurrentMember( pOusters->getName() );							GSGuildMemberLogOn gsGuildMemberLogOn;							gsGuildMemberLogOn.setGuildID( pGuild->getID() );							gsGuildMemberLogOn.setName( pOusters->getName() );							gsGuildMemberLogOn.setLogOn( true );							g_pSharedServerManager->sendPacket( &gsGuildMemberLogOn );							// DB 诀单捞飘							BEGIN_DB							{								pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();								pStmt->executeQuery( "UPDATE GuildMember SET LogOn = 1 WHERE Name = '%s'", pOusters->getName().c_str() );							}							END_DB( pStmt )						} catch (DuplicatedException& t) {							// 老窜 公矫茄促. by sigi. 2002.8.29							filelog( "guildBug.log", "%s", t.toString().c_str());						}					}					else						filelog( "GuildMissing.log", "[NoSuchGuild] GuildID : %d, Name : %s\n", (int)pOusters->getGuildID(), pOusters->getName().c_str() );				}			}		}	//}	/*	catch (DuplicatedException& de)	{		// PC finder俊辑 俊矾啊 磊操 哆绰单, 弊成 咯扁辑 棱酒林搁 登瘤 臼阑鳖?		// by 辫己刮		// 咯扁辑 农府媚 按眉甫 瘤况滚府搁, 霸烙 敲饭捞绢啊 啊瘤绊 乐绰 m_pCreature 器牢磐绰		// 啊厚瘤 蔼阑 啊福虐霸 等促. 弊贰辑 GamePlayer::~GamePlayer() 俊辑 磊脚狼 m_pCreature甫 昏力且 锭		// 肋给等 皋葛府 康开阑 曼炼窍搁辑 磷霸 等促. 弊矾骨肺 林籍阑 钱瘤 富 巴.		// GamePlayer甫 瘤快搁辑 		// m_pCreature啊 乐绰 版快俊绰 PCFinder瘤况林绰单..		// 捞巴锭巩俊 钢萍 肺弊牢捞 啊瓷窍霸 等促.		// 捞吧 阜扁 困秦辑 某腐磐甫 咯扁辑 瘤况霖促.		// by sigi. 2002.5.9		// 趣矫 PCFinder俊辑 救 瘤况林绊 按眉父 瘤快搁		// PCFinder俊辑 佬绢柯 pointer啊 delete等芭扼辑 巩力啊 积变促绊 积阿沁绰单		// 盒疙洒 GamePlayer啊 delete瞪锭绰 PCFinder俊辑 力芭秦林绊		// 咯扁辑 瘤快绰 某腐磐绰 捞固 立加等 某腐磐客绰 包拌绝绰 货肺款 按眉捞骨肺		// 惑包捞 绝促. 2002.8.29. by sigi		SAFE_DELETE(pSlayer);		SAFE_DELETE(pVampire);		pGamePlayer->setID( string("") );	// LogOn篮 'LOGOFF'啊 登绰吧 阜绰促.		pGamePlayer->setCreature( NULL );	// PCFinder俊辑 delete窍绰吧 阜绰促.		char str[80];		sprintf(str, "Already connected player ID3(Dup): %s", pPacket->getPCName().c_str());		throw ProtocolException(str);	}	*/	// 捞固 立加 吝牢 版快狼 贸府. 	// PCFinder俊辑狼 DuplicatedException阑 疙犬窍霸 贸府窍扁 困秦辑	// 函荐甫 抵辑 眉农茄促. 	// 酒付 辨靛狼 DuplicatedException锭巩俊 	// PCFinder俊辑 巩力啊 积变巴 鞍促.	// by sigi. 2002.8.29	if (bAlreadyConnected)	{		SAFE_DELETE(pSlayer);		SAFE_DELETE(pVampire);		SAFE_DELETE(pOusters);		pGamePlayer->setID( string("") );	// LogOn篮 'LOGOFF'啊 登绰吧 阜绰促.		pGamePlayer->setCreature( NULL );	// PCFinder俊辑 delete窍绰吧 阜绰促.		char str[80];		sprintf(str, "Already connected player ID3(Dup): %s", pPacket->getPCName().c_str());		throw ProtocolException(str);	}	//----------------------------------------------------------------------	// PC甫 PCFinder客 粮俊 殿废茄促.	//----------------------------------------------------------------------	Creature* pCreature = pGamePlayer->getCreature();	Assert(pCreature != NULL);	EventHeadCount* pEventHeadCount = new EventHeadCount(pGamePlayer);	pEventHeadCount->setDeadline(18000);	pGamePlayer->addEvent(pEventHeadCount);	if ( pCreature->isGOD() )	{		EffectGhost* pEffect = new EffectGhost(pCreature);		pCreature->getEffectManager()->addEffect( pEffect );		pCreature->setFlag(Effect::EFFECT_CLASS_GHOST);		pCreature->setMoveMode(Creature::MOVE_MODE_FLYING);	}	if ( pCreature->getCompetenceShape() == 0 )	{		EffectGnomesWhisper* pEffect = new EffectGnomesWhisper( pCreature );		pEffect->setLevel(30);		pCreature->addEffect( pEffect );		pCreature->setFlag( pEffect->getEffectClass() );	}	// 己捞唱 己 带傈 救栏肺 肺弊牢且 荐 绝促.	ZoneID_t castleZoneID;	ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo(pCreature->getZoneID());	bool isCastleZone = g_pCastleInfoManager->getCastleZoneID( pCreature->getZoneID(), castleZoneID );	bool isMasterLair = pZoneInfo->isMasterLair();	bool isPKZone = g_pPKZoneInfoManager->isPKZone( pCreature->getZoneID() );	bool isMaze = ( pCreature->getZoneID() == 3001 ) ||					( pCreature->getZoneID() == 3002 ) ||					( pCreature->getZoneID() == 3003 );	bool isEventZone = EventZoneInfoManager::Instance().getEventZoneInfo( pCreature->getZoneID() ) != NULL;	if ( pCreature->isPC() && pCreature->isPLAYER() )	{		ZONE_COORD zoneCoord;		PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);

⌨️ 快捷键说明

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