clgetserverlisthandler.cpp

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