cgconnecthandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· 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 + -
显示快捷键?