Advertisement
Dragoon

winMAIN.cpp

Jul 6th, 2014
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.07 KB | None | 0 0
  1. // Client.cpp : Defines the entry point for the application.
  2.  
  3.  
  4. //*-------------------------------------------------------------------------------------------------------------------*
  5. // 2005 / 06 / 20 : nAvy
  6. // サ鄙・レ チ、タヌ タ・ウクョア・シウク・:
  7. //  1. _TAIWAN  : TAIWAN, PHILIPHIN チ「シモステ キホアラタホシュケ。ーヤ アケー。 トレオ・ ヌ・950 )クヲ コクウセチヲ アクコミヌマア・タァヌム チ、タヌ
  8. //  2. _DE      : チ゚コケスヌヌ・ー。エノヌム ケッタホチ。 エ・ム チ、タヌ( KR )ソ。クク タ釤・テナイエル.
  9. //
  10. //  * アケー。コー シヨキ郛ヌ アクシコ
  11. //  1. ヌムアケ
  12. //      1) コサシキ   : Release_DE
  13. //      2) チヲエマニロ : Release
  14. //
  15. //  2. タマコサ, ケフアケ : Release
  16. //
  17. //  3. エ・ク, ヌハクョヌノ :Release_TAIWAN
  18. //*-------------------------------------------------------------------------------------------------------------------*
  19.  
  20. #include "stdafx.h"
  21. #define AROSE
  22.  
  23. #include "CApplication.h"
  24. #include "Game.h"
  25. //#include "CMouse.h"
  26. //#include "CKeyboard.h"
  27. #include "Network\\CNetwork.h"
  28. #include "Util\\VFSManager.h"
  29. #include "Util\\SystemInfo.h"
  30. #include "CClientStorage.h"
  31. #include "System/CGame.h"
  32. #include "Interface/ExternalUI/CLogin.h"
  33. #include "Debug.h"
  34. #include "TriggerInfo.h"
  35.  
  36. #include "Util/CheckHack.h"
  37. #include "Country.h"
  38. //#include "nProtect/nProtect.h"
  39.  
  40. #include "MiniDumper.h"
  41.  
  42. MiniDumper g_MiniDump;
  43.  
  44. ///#include "Util/JDebugNew.h"
  45. #define _CRTDBG_MAP_ALLOC
  46. #include <stdlib.h>
  47. #include <crtdbg.h>
  48.  
  49.  
  50.  
  51. //*--------------------------------------------------------------------------------------*/
  52. // 95,98, meソ。シュ Unicodeー・テ Api Wrapper dll Load
  53. //HMODULE LoadUnicowsProc(void);
  54. //HMODULE g_hUnicows = NULL;
  55. //#ifdef _cplusplus
  56. //extern "C" {
  57. //#endif
  58. //extern FARPROC _PfnLoadUnicows = (FARPROC) &LoadUnicowsProc;
  59. //#ifdef _cplusplus
  60. //}
  61. //#endif
  62. //
  63. //
  64. //// Unicode Load
  65. //HMODULE LoadUnicowsProc(void)
  66. //{
  67. //  g_hUnicows = LoadLibraryA("unicows.dll");
  68. //    return g_hUnicows;
  69. //}
  70. //*--------------------------------------------------------------------------------------*/
  71.  
  72.  
  73. //-------------------------------------------------------------------------------------------------
  74. bool Init_DEVICE (void)
  75. {
  76.     bool bRet = false;
  77.  
  78.     //--------------------------[ engine related ]-----------------------//
  79.     ::initZnzin(); 
  80.     ::openFileSystem("data.idx");
  81.  
  82.  
  83.     ::doScript("scripts/init.lua");
  84.  
  85.     t_OptionResolution Resolution = g_ClientStorage.GetResolution();
  86.     ::setDisplayQualityLevel( c_iPeformances[g_ClientStorage.GetVideoPerformance()] );
  87.     t_OptionVideo Video;
  88.     g_ClientStorage.GetVideoOption(Video);
  89.     setFullSceneAntiAliasing( Video.iAntiAlising );
  90.  
  91.  
  92.     if(!g_pCApp->IsFullScreenMode())
  93.     {
  94.         RECT ClientRt;
  95.         GetClientRect(g_pCApp->GetHWND(),&ClientRt);
  96.         ::setScreen(ClientRt.right, ClientRt.bottom, Resolution.iDepth, g_pCApp->IsFullScreenMode() );     
  97.     }
  98.     else
  99.         ::setScreen(g_pCApp->GetWIDTH(), g_pCApp->GetHEIGHT(), Resolution.iDepth, g_pCApp->IsFullScreenMode() );
  100.  
  101.  
  102.     bRet = ::attachWindow((const void*)g_pCApp->GetHWND());
  103.  
  104.  
  105.     CD3DUtil::Init( );
  106.  
  107.     g_pSoundLIST = new CSoundLIST( g_pCApp->GetHWND() );
  108.     g_pSoundLIST->Load ( "3DDATA\\STB\\FILE_SOUND.stb" );
  109.  
  110.     return bRet;
  111. }
  112.  
  113. //-------------------------------------------------------------------------------------------------
  114. void Free_DEVICE (void)
  115. {  
  116.     delete g_pSoundLIST;
  117.  
  118.     CD3DUtil::Free ();
  119.  
  120.     //--------------------------[ engine related ]-----------------------//
  121.     ::detachWindow();
  122.  
  123.     ::closeFileSystem();
  124.     ::destZnzin();  
  125. }
  126. //------------------------------------------------------------------------------------------------
  127. // 2005. 5. 6. チカネ」オソ
  128. // チ゚コケ スヌヌ・テシナゥソ・シメトマ ヌリチヲ
  129. SOCKET listener;
  130.  
  131. void CloseDuplicateAppSocket (void)
  132. {
  133.     closesocket(listener);
  134.     ::WSACleanup();
  135. }
  136.  
  137. // チ゚コケ スヌヌ・テシナゥ : ニッチ、 ニョー。 チ゚コケ サシコ セネオヌエツ チ。タサ タフソ・
  138. bool IsDuplicateApp (void)
  139. {
  140.     WSADATA wsadata;
  141.     ::WSAStartup( MAKEWORD( 2, 2 ), &wsadata );
  142.  
  143.     // socket サシコ
  144.     listener = ::socket(AF_INET, SOCK_STREAM, 0);
  145.     // listening
  146.     sockaddr_in addr;
  147.     memset(&addr, 0, sizeof(sockaddr_in));
  148.     addr.sin_family = AF_INET;
  149.     addr.sin_addr.S_un.S_addr = INADDR_ANY;
  150.     addr.sin_port = htons(7777);
  151.  
  152.     int result = ::bind(listener, (sockaddr*) &addr, sizeof(sockaddr_in));
  153.     result = ::listen(listener, 5);
  154.  
  155.     if( result == SOCKET_ERROR )
  156.     {
  157.         CloseDuplicateAppSocket();
  158.         MessageBox(NULL, "タフケフ ーヤタモタフ スヌヌ・チ゚タヤエマエル !", "ソ。キッ", MB_OK );
  159.         return TRUE;
  160.     }
  161.  
  162.     return FALSE;
  163. }
  164.  
  165. //-------------------------------------------------------------------------------------------------
  166. int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
  167. {
  168. #ifdef _USE_BG
  169.     SetExceptionReport();
  170. #endif
  171.  
  172. // #ifdef AROSE
  173. // #define initval 5465463
  174. //  if(!InitVFS(0x536577))
  175. //      MessageBox(NULL, "Init Error", "VFS Init Error", 0);
  176. // #endif // AROSE
  177.  
  178.     // *-------------------------------------------------------------------* //
  179.     // 2005. 5. 6. チカネ」オソ
  180. #if 0
  181.     //#ifndef _DE
  182.     if( IsDuplicateApp() )
  183.         return FALSE;
  184. #endif
  185.     // *-------------------------------------------------------------------* //
  186.  
  187.     //-------------------------------------------------------------------------------
  188.     /// Hack check..
  189.     //-------------------------------------------------------------------------------  
  190.     /// if( CCheckHack::GetSingleton().Check() == false )
  191.     ///     return 0;
  192.  
  193.  
  194.     /*
  195.     _CrtSetDbgFlag (
  196.     _CRTDBG_ALLOC_MEM_DF |
  197.     _CRTDBG_LEAK_CHECK_DF);
  198.     _CrtSetReportMode ( _CRT_ERROR,
  199.     _CRTDBG_MODE_DEBUG);
  200.     //*/
  201.  
  202.  
  203.     //-------------------------------------------------------------------------------
  204.     /// アケー。トレオ・タホスト
  205.     //-------------------------------------------------------------------------------
  206.     CCountry::GetSingleton().CheckCountry();
  207.  
  208.     //nProtect スヌヌ・
  209.     //ネォアル : オ・テ ーヤタモー。オ・スヌヌ・ステナーチ・セハエツエル.
  210.     /*#ifndef _DEBUG
  211.     if( !m_nProtectSys.InitProtect() )
  212.     return 0;
  213.     #endif*/
  214.  
  215.     //KeyCrypt スヌヌ・
  216.     //if( !m_npKeyCrypt.InitKeyCrypt() )
  217.     //  return 0;
  218.     ///m_npKeyCrypt.IsGetUse() = FALSE;
  219.  
  220.  
  221.     g_SystemInfo.CollectingSystemInfo();
  222.     int iWindowVersion = g_SystemInfo.GetWindowsVersion();
  223.  
  224.     //-------------------------------------------------------------------------------
  225.     /// Init Trigger VFS
  226.     //-------------------------------------------------------------------------------
  227.     VHANDLE hVFS = OpenVFS( "data.idx", (iWindowVersion == WINDOWS_98)?"r":"mr" ); 
  228.     (CVFSManager::GetSingleton()).SetVFS( hVFS );
  229.     (CVFSManager::GetSingleton()).InitVFS( VFS_TRIGGER_VFS );  
  230.  
  231.  
  232.     //-------------------------------------------------------------------------------
  233.     /// Get Time
  234.     //-------------------------------------------------------------------------------
  235.     GetLocalTime(   &g_GameDATA.m_SystemTime );
  236.  
  237.  
  238.     //-------------------------------------------------------------------------------
  239.     /// Init System object
  240.     //-------------------------------------------------------------------------------
  241.     g_pCApp     = CApplication::Instance ();
  242.     g_pNet      = CNetwork::Instance (hInstance);
  243.     g_pCRange   = CRangeTBL::Instance ();
  244.  
  245.  
  246.     //-------------------------------------------------------------------------------
  247.     /// Load Range table
  248.     //-------------------------------------------------------------------------------
  249.     if ( !g_pCRange->Load_TABLE ("3DDATA\\TERRAIN\\O_Range.TBL") ) {
  250.         g_pCApp->ErrorBOX ( "3DDATA\\TERRAIN\\O_Range.TBL file open error", CUtil::GetCurrentDir (), MB_OK);
  251.         return 0;
  252.     }  
  253.  
  254.  
  255.     //-------------------------------------------------------------------------------
  256.     /// IP/Port Setting
  257.     //-------------------------------------------------------------------------------
  258.     g_GameDATA.m_wServerPORT = TCP_LSV_PORT;
  259.     g_GameDATA.m_ServerIP.Set( TCP_LSV_IP );
  260.  
  261.     if ( !g_pCApp->ParseArgument( lpCmdLine ) )
  262.         return 0;
  263.  
  264.     //-------------------------------------------------------------------------------
  265.     /// タゥオオソ・サシコステ ヌリサオソ。 ー・ム Dataー。 ヌハソ萇マソゥ タフー。シュ キホオ衂ムエル.
  266.     //-------------------------------------------------------------------------------  
  267.     g_TblResolution.Load2( "3DDATA\\STB\\RESOLUTION.STB",   false, false );
  268.     g_TblCamera.Load2( "3DDATA\\STB\\LIST_CAMERA.STB" ,false, false );
  269.  
  270.     //-------------------------------------------------------------------------------
  271.     ///ナャカフセョソ。 タ惕蠏ネ Dataクヲ キホオ衂ムエル.
  272.     //-------------------------------------------------------------------------------
  273.     g_ClientStorage.Load();
  274.  
  275.     //-------------------------------------------------------------------------------
  276.     ///タフタ・ソノシヌソ。シュ チカチ、オネ ヌリサオタヌ タホオヲスコクヲ ー。チョソヘシュ g_TblResolutionタサ ツ・カヌマソゥ
  277.     ///ヌリサオクヲ チカチ、ヌムエル.
  278.     //-------------------------------------------------------------------------------  
  279. #pragma message("タ惕蠏ネ ヌリサオクヲ ナラスコニョヌリシュ ヌ・スヌヌ牴。エノヌムチ・ニヌエワヌマー・セネオヌク・グシシチ・ケレスコ カ鄙・・TriggerDetectクヲ スヌヌ狄テナイエル")
  280.     t_OptionResolution Resolution = g_ClientStorage.GetResolution();
  281.     /// ケ・ァーェ テシナゥ
  282.     UINT iFullScreen = g_ClientStorage.GetVideoFullScreen();
  283.  
  284.     g_pCApp->SetFullscreenMode( iFullScreen );
  285.     g_pCApp->CreateWND ("classCLIENT", "RoseOnline", Resolution.iWidth, Resolution.iHeight,Resolution.iDepth, hInstance);
  286.  
  287.  
  288.  
  289. #ifndef _DEBUG
  290.     // ステスコナロ チ、コククヲ クス
  291.     TI_ReadSysInfoFile ();
  292.  
  293. #endif
  294.  
  295.  
  296.     // *-------------------------------------------------------------------* //
  297.     g_pObjMGR = CObjectMANAGER::Instance ();
  298.     g_pCApp->ResetExitGame();
  299.  
  300.     bool bDeviceInitialized = Init_DEVICE();
  301.  
  302.     if ( bDeviceInitialized ) {
  303.  
  304.         ///nProtect             ケレ チ」
  305.         //m_nProtectSys.Set_hWnd(g_pCApp->GetHWND());
  306.  
  307.         ///チ゚コケスヌヌ牴。エノ ケッ 
  308. #ifndef singleclient
  309.         CGame::GetInstance().GameLoop();
  310. #else
  311.         ///チ゚コケスヌヌ犧キタコ ケッ
  312.         HANDLE  hMUTEX = NULL;
  313.         const char szMUTEX[] = "ROSEonline";
  314.  
  315.         /// チ゚コケスヌヌ・テシナゥ...     2004. 9. 30 by icarus
  316. #ifdef  _DEBUG
  317.         if ( !g_GameDATA.m_bCheckDupRUN )
  318.         {
  319.             CGame::GetInstance().GameLoop();
  320.         }
  321.         else
  322. #endif
  323.         {
  324.             hMUTEX = ::CreateMutex( NULL, true, szMUTEX );
  325.             switch( GetLastError() ) {
  326.                 case ERROR_SUCCESS  :
  327.                     CGame::GetInstance().GameLoop();
  328.  
  329.                     ::ReleaseMutex( hMUTEX );
  330.                     ::CloseHandle( hMUTEX );
  331.                     break;
  332.                 case ERROR_ALREADY_EXISTS :
  333.                     // タフケフ エルク・ ナャカフセョー。 スヌヌ狠゚タフエル..
  334.                 default :
  335.                     // ケケウト ???
  336.                     break;
  337.             }              
  338.             /* 
  339.             hMUTEX = ::OpenMutex( MUTEX_ALL_ACCESS, false, szMUTEX );
  340.             if ( NULL == hMUTEX ) {
  341.             hMUTEX = ::CreateMutex( NULL, true, szMUTEX );
  342.  
  343.             CGame::GetInstance().GameLoop();
  344.  
  345.             ::ReleaseMutex( hMUTEX );
  346.             ::CloseHandle( hMUTEX );
  347.             } /// else タフケフ エルク・ ナャカフセョー。 スヌヌ狠゚タフエル..
  348.             */
  349.         }
  350. #endif
  351.     }
  352.     else {
  353. #ifdef _USE_BG
  354.         ReportZnzinLog( "テハア篳ュソ。 スヌニミヌマソエスタエマエル. ソタキホタサ タ・ロヌマステーレスタエマア・", 10 );
  355. #endif
  356.     }
  357.  
  358.     // *-------------------------------------------------------------------* //
  359.     // 2005. 5. 6. チカネ」オソ
  360. #if !defined(_DE) && !defined(_TAIWAN)
  361.     //#ifndef _DE
  362.     CloseDuplicateAppSocket();
  363. #endif
  364.     // *-------------------------------------------------------------------* //
  365.  
  366.     Free_DEVICE ();
  367.  
  368.  
  369.     // *-------------------------------------------------------------------* //
  370.     g_TblCamera.Free();
  371.     g_TblResolution.Free();
  372.     // *-------------------------------------------------------------------* //
  373.  
  374.     g_pCApp->Destroy ();
  375.     g_pNet->Destroy ();
  376.  
  377.     //-------------------------------------------------------------------------------
  378.     ///2004/3/26/nAvy:Release アクシコソ。シュ Debug Mode(F5キホスヌヌ・キホ スヌヌ狄テ キホアラタホ ネュク鯀。シュ テ・メヌマク・
  379.     ///Errorウュエル. タフタッ クァ , ヌマチク アラウノ スヌヌ狄テソ。エツ (batニトタマキホ ネ、タコ ctrl+f5) Errorー。 セネウュエル.
  380.     //-------------------------------------------------------------------------------      
  381.     g_pCRange->Destroy (); 
  382.  
  383.     /*if( g_hUnicows )
  384.     {
  385.     FreeLibrary( g_hUnicows );
  386.     g_hUnicows = NULL;
  387.     }*/
  388.  
  389.     //CCheckHack::GetSingleton().Release();
  390.  
  391.     /*if( m_nProtectSys.IsGetUse() && m_nProtectSys.IsGameExit() )
  392.     MessageBox( NULL, m_nProtectSys.GetHacking_Msg(),"GameGuard Error",MB_OK );*/
  393.  
  394.     return 0;
  395. }
  396.  
  397. //-------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement