clgetserverlisthandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 140 行
CPP
140 行
//////////////////////////////////////////////////////////////////////////////// Filename : CLGetServerListHandler.cpp// Written By : Reiot// Description ://////////////////////////////////////////////////////////////////////////////#include "CLGetServerList.h"#ifdef __LOGIN_SERVER__ #include "LoginPlayer.h" #include "Assert.h" #include "DB.h" #include "GameServerInfoManager.h" #include "GameServerGroupInfoManager.h" #include "ServerGroupInfo.h" #include "UserInfoManager.h" #include "Lpackets/LCServerList.h"#endif//////////////////////////////////////////////////////////////////////////////// 努扼捞攫飘啊 辑滚狼 府胶飘甫 崔扼绊 夸没秦坷搁, 肺弊牢 辑滚绰 DB肺何磐// 辑滚甸狼 沥焊甫 肺爹秦辑 LCServerList 菩哦俊 淬酒辑 傈价茄促.//////////////////////////////////////////////////////////////////////////////void CLGetServerListHandler::execute (CLGetServerList* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __LOGIN_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); cout << "Start execute" << endl; LoginPlayer* pLoginPlayer = dynamic_cast<LoginPlayer*>(pPlayer); WorldID_t WorldID = pLoginPlayer->getWorldID(); try { int GroupNum = g_pGameServerGroupInfoManager->getSize( WorldID ); //cout << "ServerNum : " << GroupNum << endl; ServerGroupInfo* aServerGroupInfo[GroupNum]; for(int i = 0 ; i < GroupNum; i++) { ServerGroupInfo* pServerGroupInfo = new ServerGroupInfo(); GameServerGroupInfo* pGameServerGroupInfo = g_pGameServerGroupInfoManager->getGameServerGroupInfo(i, WorldID); pServerGroupInfo->setGroupID(pGameServerGroupInfo->getGroupID()); pServerGroupInfo->setGroupName(pGameServerGroupInfo->getGroupName()); pServerGroupInfo->setStat(SERVER_FREE); UserInfo * pUserInfo = g_pUserInfoManager->getUserInfo( pGameServerGroupInfo->getGroupID(), WorldID ); WORD UserModify = 800; WORD UserMax = 1500; if (pUserInfo->getUserNum() < 100 + UserModify ) { pServerGroupInfo->setStat(SERVER_FREE); } else if (pUserInfo->getUserNum() < 250 + UserModify ) { pServerGroupInfo->setStat(SERVER_NORMAL); } else if (pUserInfo->getUserNum() < 400 + UserModify ) { pServerGroupInfo->setStat(SERVER_BUSY); } else if (pUserInfo->getUserNum() < 500 + UserModify ) { pServerGroupInfo->setStat(SERVER_VERY_BUSY); } else //if (pUserInfo->getUserNum() >= 500 + UserModify ) { pServerGroupInfo->setStat(SERVER_FULL); } //else { //pServerGroupInfo->setStat(SERVER_DOWN); } if (pUserInfo->getUserNum() >= UserMax) { pServerGroupInfo->setStat(SERVER_FULL); } if ( pGameServerGroupInfo->getStat() == SERVER_DOWN ) { pServerGroupInfo->setStat( SERVER_DOWN ); } aServerGroupInfo[i] = pServerGroupInfo; //cout << "AddServer : " << pServerGroupInfo->getGroupName() << endl; } LCServerList lcServerList; Statement * pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); Result * pResult = pStmt->executeQuery("SELECT CurrentWorldID, CurrentServerGroupID FROM Player where PlayerID='%s'" , pLoginPlayer->getID().c_str() ); if( pResult->next() ) { lcServerList.setCurrentServerGroupID( pResult->getInt(1) ); lcServerList.setCurrentServerGroupID( pResult->getInt(2) ); } SAFE_DELETE(pStmt); // by sigi } END_DB(pStmt) // by sigi for(int k = 0; k < GroupNum; k++) { lcServerList.addListElement(aServerGroupInfo[k]); } pLoginPlayer->sendPacket(&lcServerList); pLoginPlayer->setPlayerStatus(LPS_PC_MANAGEMENT); } catch (Throwable & t) { //cout << t.toString() << endl; } cout << "End execute" << endl;#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?