cglogouthandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 247 行
CPP
247 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGLogoutHandler.cc// Written By : Reiot// Description ://////////////////////////////////////////////////////////////////////////////#include "CGLogout.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "PlayerCreature.h" #include "Inventory.h" #include "Relic.h" #include "Creature.h" #include "LoginServerManager.h" #include "ZonePlayerManager.h" #include "Zone.h" #include "ZoneUtil.h" #include "RelicUtil.h" #include "ZoneInfoManager.h" #include "ZoneGroupManager.h" #include "IncomingPlayerManager.h" #include "Properties.h" #include "Slayer.h" #include "Vampire.h" #include "Ousters.h" #include "ResurrectLocationManager.h" #include "PKZoneInfoManager.h" #include <stdio.h> #include "Gpackets/GLIncomingConnection.h" #include "Gpackets/GCSystemMessage.h"#endif//////////////////////////////////////////////////////////////////////////////// 努扼捞攫飘啊 CGLogout 菩哦阑 焊郴搁, 霸烙 辑滚绰 农府贸甫 粮俊辑 昏力窍绊,// 农府贸客 酒捞袍 沥焊甫 DB俊 历厘茄 饶, 立加阑 辆丰茄促.//////////////////////////////////////////////////////////////////////////////void CGLogoutHandler::execute (CGLogout* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__// Assert(pPacket != NULL); Assert(pPlayer != NULL); // 货肺弊牢 备炼俊辑绰 Logout阑 窍搁 措扁 惑怕肺 唱啊具 茄促. // Logout 菩哦阑 罐栏搁 敲饭捞绢甫 IncomingPlayerManager肺 焊辰促. GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); //cout << "CGLogoutHandler: " << pGamePlayer->getID() << endl; Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature != NULL); Zone* pZone = pCreature->getZone(); Assert(pZone != NULL); try { // 肺弊酒眶且锭 己拱, 乔狼 己辑 炼阿阑 冻绢哆赴促.// bool bSendPacket = false;// dropRelicToZone( pCreature, bSendPacket ); if ( pCreature->isPLAYER() && g_pPKZoneInfoManager->isPKZone( pCreature->getZoneID() ) ) { g_pPKZoneInfoManager->leavePKZone( pCreature->getZoneID() ); } if ( g_pConfig->hasKey("Hardcore") && g_pConfig->getPropertyInt("Hardcore")!=0 && pPacket==NULL ) { } else { // 农府贸狼 沥焊甫 历厘茄促. pCreature->save(); ////////////////////////////////////////////////////////////// // 敲饭捞绢啊 COMA惑怕(泅犁 磷篮 惑怕)扼搁 肺弊酒眶矫 磊悼栏肺 // 何劝困摹肺 某腐磐甫 捞悼矫挪促. // Login/Logout狼 馆汗栏肺 何劝扁贱阑 荤侩窍瘤 给窍霸 窃 // // Creature狼 沥焊甫 刚历 DB俊 诀单捞飘茄 饶 货肺 诀单捞飘甫 茄促. ////////////////////////////////////////////////////////////// // 捞磐聪萍甫 茄锅 敬 惑怕肺 肺弊酒眶窍搁 何劝 困摹肺 朝扼埃促. if (pCreature->isFlag(Effect::EFFECT_CLASS_COMA) || pCreature->isFlag(Effect::EFFECT_CLASS_ETERNITY)) { //cout << "COMA 惑怕俊辑 肺弊酒眶沁澜" << endl; ZoneID_t ZoneID = 0; ZoneCoord_t ZoneX = 0; ZoneCoord_t ZoneY = 0; ZONE_COORD ResurrectCoord; if ( pCreature->isPC() ) { PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); g_pResurrectLocationManager->getPosition( pPC, ResurrectCoord ); ZoneID = ResurrectCoord.id; ZoneX = ResurrectCoord.x; ZoneY = ResurrectCoord.y; char pField[80]; sprintf(pField, "ZoneID=%d, XCoord=%d, YCoord=%d, CurrentHP=HP", ZoneID, ZoneX, ZoneY); if ( pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); pSlayer->tinysave(pField); } else if ( pPC->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); pVampire->tinysave(pField); } else if ( pPC->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pPC); pOusters->tinysave(pField); } } }/* if(pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); Assert(pSlayer != NULL); if (g_pResurrectLocationManager->getSlayerPosition(pSlayer->getResurrectZoneID(), ResurrectCoord)) { ZoneID = ResurrectCoord.id; ZoneX = ResurrectCoord.x; ZoneY = ResurrectCoord.y; } else { if (g_pResurrectLocationManager->getSlayerPosition(pSlayer->getZone()->getZoneID(), ResurrectCoord)) { ZoneID = ResurrectCoord.id; ZoneX = ResurrectCoord.x; ZoneY = ResurrectCoord.y; } else { throw Error("Critical Error: ResurrectInfo is not established"); } } char pField[80]; sprintf(pField, "ZoneID=%d, XCoord=%d, YCoord=%d, CurrentHP=HP", ZoneID, ZoneX, ZoneY); pSlayer->tinysave(pField); } else if(pCreature->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); Assert(pVampire != NULL); if (g_pResurrectLocationManager->getVampirePosition(pVampire->getResurrectZoneID(), ResurrectCoord)) { ZoneID = ResurrectCoord.id; ZoneX = ResurrectCoord.x; ZoneY = ResurrectCoord.y; } else { if (g_pResurrectLocationManager->getVampirePosition(pVampire->getZone()->getZoneID(), ResurrectCoord)) { ZoneID = ResurrectCoord.id; ZoneX = ResurrectCoord.x; ZoneY = ResurrectCoord.y; } else { throw Error("Critical Error: ResurrectInfo is not established"); } } // 捞力 沥焊甫 历厘茄促. char pField[80]; sprintf(pField, "ZoneID=%d, XCoord=%d, YCoord=%d, CurrentHP=HP", ZoneID, ZoneX, ZoneY); pVampire->tinysave(pField); }*/ } // // 捞力, 粮俊辑 PC甫 昏力茄促. // // *CAUTION* // // pCreature狼 谅钎啊 角力肺 pCreature啊 粮犁窍绰 鸥老狼 谅钎客 鞍酒具 茄促. // 蝶扼辑, 捞 皋筋靛甫 龋免窍扁 傈俊 谅钎甫 肋 官层出具 茄寸.. // pZone->deleteCreature(pCreature , pCreature->getX() , pCreature->getY()); ////cout << "PC deleted from Zone >> "; // 粮弊缝狼 ZPM俊辑 敲饭捞绢甫 昏力茄促. // ZonePlayerManager狼 ProcessCommand 救俊辑 瘤快绰 巴捞骨肺 馆靛矫 NoBlocked 栏肺 瘤况具 茄促. pZone->getZoneGroup()->getZonePlayerManager()->deletePlayer(pGamePlayer->getSocket()->getSOCKET()); // IPM栏肺 敲饭捞绢甫 颗变促. //g_pIncomingPlayerManager->pushPlayer(pGamePlayer); // Core狼 备炼甫 官操搁辑 静饭靛肺 何磐 刀赋利栏肺 青窍扁 困窍咯 第俊 茄波锅俊 贸府窍扁 困秦辑 // OutList肺 持绰促. pZone->getZoneGroup()->getZonePlayerManager()->pushOutPlayer(pGamePlayer); ////cout << "Move PC to IPM >> "; } catch (NoSuchElementException & nsee) { throw DisconnectException(); } // 肺弊牢 辑滚肺 GLIncomingConnection阑 焊辰促. // PlayerName苞 ClientIP甫 鞍捞 角绢辑 焊辰促. /* GLIncomingConnection glIncomingConnection; glIncomingConnection.setPlayerID(pGamePlayer->getID()); glIncomingConnection.setClientIP(pGamePlayer->getSocket()->getHost()); if (g_pConfig->getProperty("User") == "excel96") g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection); else if (g_pConfig->getProperty("User") == "elcastle") g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection); else if (g_pConfig->getProperty("User") == "elca") g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection); */ pGamePlayer->setPlayerStatus(GPS_AFTER_SENDING_GL_INCOMING_CONNECTION);#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?