⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapserver.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		return false;
	}

#endif
	
	//	
	//	MAP Class积己
	//	
	g_pMap		= new Map;		

	if( !g_pMap )
	{
		ErrorMsg("(X) Create MAP ERROR" );
		return FALSE;	
	}

	//	--------------------------------------------------------------------------------
	//	DB俊辑 扁檬 沥焊甫 掘澜
	//	--------------------------------------------------------------------------------
	if( !g_Base.LoadDBData())	
	{
		ErrorMsg("(X) DB Load ERROR" );
		return FALSE;	
	}

	ErrorMsg("(O) DB Load Success");

	for(int i = 0 ; i < g_pMap->m_nMaxLayer ; ++i)
	{
		g_AIMsgList[i] = new SafeList ;
	}

	//	--------------------------------------------------------------------------------	
	//	Map Server Socket 积己
	//	--------------------------------------------------------------------------------
	g_pServer = new MapServerSocket;

	if( !g_pServer->Initialize() )
	{
		ErrorMsg("(X) Map Socket ERROR" );
		return FALSE;
	}	

	ErrorMsg("(O) Map Socket Sucess");

#ifdef DEF_AUTHCODE
	//Jason 2004-10-06
	g_pServer->Load_AuthCode();
#endif
	
	//	--------------------------------------------------------------------------------
	//	WORLD	SERVER - TCP	SOCKET积己 
	//	--------------------------------------------------------------------------------
	g_lpDBSock = new DBSocket ;

	if( !g_lpDBSock->bInit() )
	{
		ErrorMsg("(X) World TCP Socket Erro" );
		return FALSE;
	}	

	ErrorMsg("(O) World TCP Socket Sucess");

	//	--------------------------------------------------------------------------------
	//	WORLD	SERVER - UDP	SOCKET积己 
	//	--------------------------------------------------------------------------------
	g_lpUdpSock = new CUdpSocket;
	if (!g_lpUdpSock->bInit(_Module.m_szUdpIP ,_Module.m_nMapPORT) )
	{
		ErrorMsg("(X) World UDP Socket Error" );
		return FALSE ;
	}



	g_lpLog	= new CLogManager ;
	
	g_lpLog->Init() ;


	m_ServerStatus	=	SERVER_START;


	char lpszFileName[MAX_PATH];
	sprintf( lpszFileName, "%s%s%s.exe", _Module.m_szDrv, 	_Module.m_szPath, 	_Module.m_szFname );

	DWORD	dwHandle;
	DWORD	dwFileVersionInfoSize = GetFileVersionInfoSize((LPTSTR)lpszFileName, &dwHandle);
	if (dwFileVersionInfoSize)
	{
		LPVOID	lpData = (LPVOID)new BYTE[dwFileVersionInfoSize];
		if ( lpData )
		{
			if (GetFileVersionInfo((LPTSTR)lpszFileName, dwHandle, dwFileVersionInfoSize, lpData))
			{
				LPVOID	lpInfo;
				UINT	unInfoLen;
				VS_FIXEDFILEINFO	m_FileInfo;
				if (VerQueryValue(lpData, _T("\\"), &lpInfo, &unInfoLen))
				{										
					if (unInfoLen == sizeof(m_FileInfo))
					{
						memcpy(&m_FileInfo, lpInfo, unInfoLen);

						char szVer[64];
						sprintf (szVer, "Ver : %d.%d.%d.%d", 
										(WORD)((m_FileInfo.dwFileVersionMS & 0xFFFF0000) >> 16),
										(WORD)(m_FileInfo.dwFileVersionMS & 0x0000FFFF),
										(WORD)((m_FileInfo.dwFileVersionLS & 0xFFFF0000) >> 16),
										(WORD)(m_FileInfo.dwFileVersionLS & 0x0000FFFF) );											

						ErrorMsg( "Version: %s", szVer );
					}
				}
			}
		}	
	}


	return TRUE;
}



////////////////////////////////////////////////////////////////////////////////////////
//	Read Setup  Registry
//
//			Registery File俊辑 包访 Setting沥焊甫 Load矫糯
//		--------------------------------------------------------
//			IP Address Load 
//			Prot Load
//
//			Map Seq
//			PK Mode 
////////////////////////////////////////////////////////////////////////////////////////
BOOL CServiceModule::ReadRegisteryValue()
{

	//	--------------------------------------------------------------------------------
	//	角青 颇老 疙阑 掘澜
	//	--------------------------------------------------------------------------------
	GetModuleFileName(NULL, m_szFilename, sizeof( m_szFilename) );
	_splitpath( m_szFilename, m_szDrv, m_szPath, m_szFname, m_szExt);


	//	--------------------------------------------------------------------------------
	//	Registry沥焊甫 掘澜
	//	--------------------------------------------------------------------------------
	DWORD  pdwCount;

	char strRegName[512] = "SOFTWARE\\Zemi Interactive, Inc.\\";
	strcat( strRegName, m_szFname );


	//	--------------------------------------------------------------------------------
	//	滚傈 沥焊甫 啊廉棵 荐 绝促. 
	//	--------------------------------------------------------------------------------
	GetMapServerVersion() ;

	CRegKey keySetting;

	LONG lRes = keySetting.Open(HKEY_LOCAL_MACHINE, strRegName, KEY_READ);

	if (lRes != ERROR_SUCCESS)
	{

		#if defined(_DEBUG) || defined(DEF_BUGTRACE)
			MessageBox( NULL, "Map Server Registry Error", "Map Server", MB_OK );
		#else
			LogEvent(_T("Map Server Registry Error"));
		#endif

		return FALSE;
	}

	//	Get Map SEQ
	lRes	= keySetting.QueryValue( _Module.m_nMapSeq, _T("MapSeq") ); 
	if (lRes != ERROR_SUCCESS)
	{
		#if defined(_DEBUG) || defined(DEF_BUGTRACE)
			MessageBox( NULL, "Map Serial Registry Error", "Map Server", MB_OK );
		#else
			LogEvent(_T("Map Serial Registry Error"));
		#endif

		return FALSE;
	}		

	//	DB Server IP Address
	pdwCount = 50;

	lRes = keySetting.QueryValue( _Module.m_szDBIP, _T("DB_IP"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		#if defined(_DEBUG) || defined(DEF_BUGTRACE)
			MessageBox( NULL, "DB IP Registry Error", "Map Server", MB_OK );
		#else
			LogEvent(_T("DB IP Registry Error"));
		#endif

		return FALSE;
	}

	//	Map File #0	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[0], _T("MapFile0"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[0], 0x00, sizeof( m_strMapFile[0] ) );			
	}

	//	Map File #1	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[1], _T("MapFile1"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[1], 0x00, sizeof( m_strMapFile[1] ) );			
	}
	
	//	Map File #2	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[2], _T("MapFile2"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[2], 0x00, sizeof( m_strMapFile[2] ) );			
	}

	//	Map File #3	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[3], _T("MapFile3"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[3], 0x00, sizeof( m_strMapFile[3] ) );			
	}

	//	Map File #4	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[4], _T("MapFile4"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[4], 0x00, sizeof( m_strMapFile[4] ) );			
	}

	//	Map File #5	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[5], _T("MapFile5"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[5], 0x00, sizeof( m_strMapFile[5] ) );			
	}

	//	Map File #6	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[6], _T("MapFile6"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[6], 0x00, sizeof( m_strMapFile[6] ) );			
	}

	//	Map File #7	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[7], _T("MapFile7"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[7], 0x00, sizeof( m_strMapFile[7] ) );			
	}

	//	Map File #8	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[8], _T("MapFile8"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[8], 0x00, sizeof( m_strMapFile[8] ) );			
	}

	//	Map File #9	沥焊甫 Read
	pdwCount = 256;
	lRes = keySetting.QueryValue( m_strMapFile[9], _T("MapFile9"), &pdwCount );
	if (lRes != ERROR_SUCCESS)
	{
		memset( m_strMapFile[9], 0x00, sizeof( m_strMapFile[9] ) );			
	}

	//	眠啊 利牢 MAP SEQ沥焊甫 掘澜
	m_nWorldID	=	m_nMapSeq / 10000;			//	GAME WORLD ID盒府 
	
	m_nServerID	=	m_nMapSeq / 100;			//	Map ID

	m_nServerUniqNum	= ((m_nServerID%100)*10 + m_nMapSeq % 100 )*10000000 ;

	keySetting.Close();


	return TRUE;
}

////////////////////////////////////////////////////////////////////////////////////////
//	Clean Memory (Map Server)
//
////////////////////////////////////////////////////////////////////////////////////////
void CServiceModule::Clean_MapServer()
{
	_Module.m_bService	= FALSE;


#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("MapServerSocket stop Start") ;
#endif

	SAFE_DELETE< MapServerSocket> (&g_pServer);

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("DBSocket stop Start") ;
#endif

	SAFE_DELETE< DBSocket> (&g_lpDBSock);
#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("DBSocket stop End") ;
#endif
	
	SAFE_DELETE< CUdpSocket> (&g_lpUdpSock);

	SAFE_DELETE< CLogManager> (&g_lpLog);

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("g_AIMsgList stop Start") ;
#endif
	if(g_pMap )
	{
		for(int i = 0 ; i < g_pMap->m_nMaxLayer ; ++i)
		{
			SAFE_DELETE<SafeList > (&g_AIMsgList[i])  ;
		}
	}

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("Map stop Start") ;
#endif
	SAFE_DELETE< Map > (&g_pMap);

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("Map stop End") ;
#endif



#ifdef DEF_AZIT
	SAFE_DELETE< AzitManager	> (&m_pAzitManager	);		//	Delete Azit Manager
#endif
	
#ifdef DEF_UNIQUEITEM
	SAFE_DELETE< UniqueManager	> (&m_pUniqueManager);		//	Delete Unique Manager
#endif

	SAFE_DELETE< ServerMem		> (&g_pServerMem	);		//	Delete Server Memory
	SAFE_DELETE< CQuestEngine	> (&g_pQuestEngine	);		//	Delete Quest Engine
}


////////////////////////////////////////////////////////////////////////////////////////
//	Function : Zemi Map Server Main
//	
////////////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpCmdLine, int /*nShowCmd*/)
{
	g_hInstance = hInstance;

	//	--------------------------------------------------------------------------------
	//	Winsocekt 荤侩 檬扁拳 
	//	--------------------------------------------------------------------------------
	{
		WSACleanup();

		WORD wVersionRequested;
		WSADATA wsaData;
		int err;
 
		wVersionRequested = MAKEWORD( 2, 2 );
 
		err = WSAStartup( wVersionRequested, &wsaData );

		if ( err != 0 ) 
			return FALSE;

 
		if ( LOBYTE( wsaData.wVersion ) != 2 ||	HIBYTE( wsaData.wVersion ) != 2 ) 
		{
			WSACleanup( );
			return FALSE; 
		}
	}


#ifdef DEF_NEWREGISTRY
	////////////////////////////////////////////////////////////////////////
	//	角青 颇老 疙阑 掘澜
	////////////////////////////////////////////////////////////////////////
     TCHAR mfilename[MAX_PATH];
     TCHAR drv[MAX_PATH];
     TCHAR path[MAX_PATH];
     TCHAR fname[MAX_PATH];
     TCHAR ext[MAX_PATH];

     GetModuleFileName(NULL, mfilename, sizeof mfilename);
     _splitpath(mfilename, drv, path, fname, ext);
#endif
	 
	//	--------------------------------------------------------------------------------
	//	Debug Mode
#if defined(_DEBUG) || defined(DEF_BUGTRACE)

#ifdef DEF_NEWREGISTRY
	 if(lpCmdLine[0] != '\0')
	 {
		 SaveParam_MapServer(lpCmdLine, fname);
		 return 0;
	 }
#endif
	
	_Module.m_bService = TRUE;

	DialogBox( hInstance , MAKEINTRESOURCE( IDD_DIALOG_MAP ), HWND_DESKTOP, MainDlgProc);

	return 0;

	//	--------------------------------------------------------------------------------
	//	Relase Mode
	//	--------------------------------------------------------------------------------
#else

#ifdef DEF_NEWREGISTRY
	////////////////////////////////////////////////////////////////////////
	//	辑厚胶 矫累
	////////////////////////////////////////////////////////////////////////
    lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
#else
	//	角青 颇老 疙阑 掘澜
	TCHAR mfilename[MAX_PATH];
	TCHAR drv[MAX_PATH];
	TCHAR path[MAX_PATH];
	TCHAR fname[MAX_PATH];
	TCHAR ext[MAX_PATH];

	GetModuleFileName(NULL, mfilename, sizeof mfilename);
	_splitpath(mfilename, drv, path, fname, ext);

	//	辑厚胶 矫累
	lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
#endif

	_Module.Init(ObjectMap, hInstance, IDS_SERVICENAME, &LIBID_MAPSERVERLib);    

	_Module.m_bService = TRUE;

	//	颇扼固磐肺 涝仿等 蔼阑 掘澜
    TCHAR szTokens[] = _T(" ");
    LPCTSTR lpszToken = FindOneOf(lpCmdLine, szTokens);


	//	颇扼固磐 涝仿捞 等版快父 贸府 
	if( lpszToken != NULL  )
	{

		//	Service Install
		if(	!strcmpi( lpszToken , _T( "-I") ) )
		{
			strcpy( _Module.m_szServiceName, fname );
			

			// Register as Service
			return _Module.RegisterServer(TRUE, TRUE);
		}

		//	Service UnInstall
		else if(	!strcmpi( lpszToken , _T( "-U") ) )
		{
			strcpy( _Module.m_szServiceName, fname );

			return _Module.UnregisterServer();
		}
#ifdef DEF_NEWREGISTRY
		// 7.22 by kuma
		else
		{
			if ( SaveParam_MapServer( lpszToken, fname ) )
				return 0;
		}
#endif
    }

    _Module.Start();

    // When we get here, the service has been stopped
    return _Module.m_status.dwWin32ExitCode;

#endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -