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 + -
显示快捷键?