cgwhisperhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 207 行
CPP
207 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGWhisperHandler.cc// Written By : reiot@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGWhisper.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Creature.h" #include "PCFinder.h" #include "LogNameManager.h" #include "Gpackets/GCWhisper.h" #include "Gpackets/GCWhisperFailed.h" #include "Gpackets/GGServerChat.h" #include "DB.h" #include "GameServerInfoManager.h" #include "LoginServerManager.h" #include "Properties.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGWhisperHandler::execute (CGWhisper* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); try { Player* pTargetPlayer = NULL; Creature* pCreature = pGamePlayer->getCreature(); bool Success = false; // 捞抚栏肺 荤侩磊甫 茫酒柯促. __ENTER_CRITICAL_SECTION((*g_pPCFinder)) Creature* pTargetCreature = g_pPCFinder->getCreature_LOCKED(pPacket->getName()); // NoSuch力芭. by sigi. 2002.5.2 if (pTargetCreature != NULL) { // 盲泼 肺弊甫 巢变促. by sigi. 2002.10.30 if (LogNameManager::getInstance().isExist( pCreature->getName() )) { filelog("chatLog.txt", "[Whisper] %s --> %s> %s", pCreature->getName().c_str(), pTargetCreature->getName().c_str(), pPacket->getMessage().c_str()); } pTargetPlayer = pTargetCreature->getPlayer(); Assert(pTargetPlayer != NULL); Success = true; if (pGamePlayer->isPenaltyFlag(PENALTY_TYPE_MUTE)) { Success = false; } // 荤侩磊甫 己傍利栏肺 茫疽栏搁 Message 傈价 if (Success) { if (((GamePlayer*)pTargetPlayer)->getPlayerStatus() == GPS_NORMAL) { if (pCreature != NULL && pTargetCreature != NULL) { // 辑滚俊辑 努扼捞攫飘肺 傈价窍骨肺 GC- 菩哦阑 荤侩秦具 茄促. GCWhisper gcWhisper; // 农府贸 捞抚苞 皋矫瘤甫 菩哦俊 措涝茄促. gcWhisper.setName(pCreature->getName()); gcWhisper.setColor( pPacket->getColor() ); gcWhisper.setMessage(pPacket->getMessage()); gcWhisper.setRace(pCreature->getRace()); pTargetPlayer->sendPacket(&gcWhisper); } else { GCWhisperFailed gcWhisperFailed; pGamePlayer->sendPacket(&gcWhisperFailed); } } } // 弊繁 荤侩磊啊 绝芭唱 捞抚阑 肋给 持菌阑锭 Failed } else { /*inthesky*/ /* DB甫 第廉辑 荤侩磊甫 茫绰促. DB俊辑 啊廉棵 沥焊绰 Player, Logon 沥焊客, ServerID 沥档啊 登佡促? * 茫栏搁 秦寸霸烙辑滚肺 GGServerChat 菩哦阑 傈价茄促 (sender, Color, Message, Race(辆练), * GGServerChat 菩哦阑 罐篮 辑滚绰 荤侩磊 捞抚栏肺 敲饭捞绢甫 茫酒辑 GCWhisper菩哦阑 父甸绢 金促. * 绝栏搁 富磊(Failed焊辰促). * 荤侩磊啊 乐促 绝促绰 DB俊辑父 魄窜窍磊. DB狼 脚汾档绰..?????? */ Statement* pStmt = NULL; Result* pResult = NULL; bool bServerFind = false; ServerGroupID_t CurrentServerGroupID; string LogOn; string PlayerID; try { BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); // 农府媚捞抚栏肺 Slayer抛捞喉俊辑 PlayerID 甫 茫绰促. pResult = pStmt->executeQuery("SELECT PlayerID FROM Slayer WHERE Name='%s'",pPacket->getName().c_str()); if ( pResult->next() ) { PlayerID = pResult->getString( 1 ); SAFE_DELETE(pStmt); // 茫篮 PlayerID肺 Player抛捞喉俊辑 ServerGroupID客 LogOn沥焊甫 茫绰促. pStmt = g_pDatabaseManager->getDistConnection("USERINFO")->createStatement(); pResult = pStmt->executeQuery("SELECT CurrentServerGroupID, LogOn FROM Player WHERE PlayerID='%s'",PlayerID.c_str()); // Player 沥焊甫 茫疽促. if ( pResult->next() ) { CurrentServerGroupID = pResult->getInt ( 1 ); LogOn = pResult->getString( 2 ); // 霸烙吝牢 惑怕老锭 bServerFind俊 true flag if ( LogOn == "GAME" ) { bServerFind = true; SAFE_DELETE(pStmt); } } else { SAFE_DELETE(pStmt); } } else { SAFE_DELETE(pStmt); } if(bServerFind) // 茫疽阑锭 { /* GGServerChat 菩哦阑 父甸绢辑 * 金促...霸烙辑滚肺.. * pCreature->getName() = 焊郴绰 农府媚 捞抚 * pPacket->getName() = 罐绰 农府媚 捞抚 * PlayerID = 罐绰 农府媚 拌沥 * pPacket->getColor() = 臂磊祸 * pPacket->getMessage() = 皋技瘤 * pCreature->getRace() = 焊郴绰 农府媚 辆练 * */ GameServerInfo* pGameServerInfo = g_pGameServerInfoManager->getGameServerInfo(1,CurrentServerGroupID,g_pConfig->getPropertyInt( "WorldID" )); if ( pGameServerInfo != NULL ) { GGServerChat ggServerChat; ggServerChat.setSender (pCreature->getName() ); ggServerChat.setReceiver(pPacket->getName() ); ggServerChat.setColor (pPacket->getColor() ); ggServerChat.setMessage (pPacket->getMessage() ); ggServerChat.setRace (pCreature->getRace() ); g_pLoginServerManager->sendPacket( pGameServerInfo->getIP(), pGameServerInfo->getUDPPort(), &ggServerChat ); } else { GCWhisperFailed gcWhisperFailed; pGamePlayer->sendPacket(&gcWhisperFailed); } } else { GCWhisperFailed gcWhisperFailed; pGamePlayer->sendPacket(&gcWhisperFailed); } } END_DB(pStmt) } catch(...) { /* write log plz */ } } __LEAVE_CRITICAL_SECTION((*g_pPCFinder)) } catch(Throwable & t) { //cout << t.toString() << endl; GCWhisperFailed gcWhisperFailed; pGamePlayer->sendPacket(&gcWhisperFailed); }#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?