Fix Debug and Release_NoGD build configurations

- Add _USE_32BIT_TIME_T preprocessor definition to GlobalScript Debug build
  to resolve LNK2019 error (time_t size mismatch between projects)

- Update Release_NoGD configuration in RYLClient.vcxproj:
  * Add SSE2 instruction set support
  * Enable OpenMP support
  * Add warning suppressions (4996, 4819, 4482, 4566)
  * Add ManifestFile setting
  * Align with Release configuration settings

- Modify RYLClientMain.cpp:
  * Update _RYL_TEST macro to enable ADMIN_L3 mode automatically
  * Allow standalone execution without Login.exe in test mode

Issues resolved:
- Debug build: ParsePacket::HandleUserLogin linker error
- Release_NoGD build: Compilation failure due to configuration differences
This commit is contained in:
2025-11-30 18:34:17 +09:00
parent 1626f649c5
commit bd9cb3776e
4 changed files with 123 additions and 113 deletions

View File

@@ -100,7 +100,7 @@
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>./;../../MemoryManager;../RYLClient/RYLClient;../../Engine/Zalla3D Base Class;./GameGuardLib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./;../../MemoryManager;../RYLClient/RYLClient;../../Engine/Zalla3D Base Class;./GameGuardLib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_RYL_GAME_CLIENT_;NO_GAMEGUARD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_RYL_GAME_CLIENT_;NO_GAMEGUARD;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<PrecompiledHeader> <PrecompiledHeader>

View File

@@ -120,10 +120,11 @@
<TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
<RuntimeTypeInfo>true</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>Effect.lib;SoundLib.lib;Caldron.lib;Zalla3DBaseClass.lib;GlobalScript.lib;ScriptEngine.lib;CharacterActionControl.lib;ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static_d.lib;luad.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>Effect.lib;SoundLib.lib;Caldron.lib;Zalla3DBaseClass.lib;GlobalScript.lib;ScriptEngine.lib;CharacterActionControl.lib;ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static_d.lib;luad.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)Client.exe</OutputFile> <OutputFile>F:\YouxiLand\ROW\Client.exe</OutputFile>
<AdditionalLibraryDirectories>../../Engine/SoundLib/vorbis_sdk/lib;../../Library/$(Configuration)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../../Engine/SoundLib/vorbis_sdk/lib;../../Library/$(Configuration)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>LIBC;LIBCD;MSVCRT;MSVCRTD;LIBCMT;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;MSVCRT;MSVCRTD;LIBCMT;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -154,6 +155,7 @@
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<OpenMPSupport>true</OpenMPSupport> <OpenMPSupport>true</OpenMPSupport>
<DisableSpecificWarnings>4996;4819;4482;%(DisableSpecificWarnings);4566;4819</DisableSpecificWarnings> <DisableSpecificWarnings>4996;4819;4482;%(DisableSpecificWarnings);4566;4819</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;lua.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;lua.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -185,12 +187,14 @@
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<OpenMPSupport>true</OpenMPSupport>
<DisableSpecificWarnings>4996;4819;4482;%(DisableSpecificWarnings);4566;4819</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;lua.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;lua.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)Client.exe</OutputFile> <OutputFile>$(OutDir)Client.exe</OutputFile>
<AdditionalLibraryDirectories>../../Engine/SoundLib/vorbis_sdk/lib;../../Library/$(Configuration)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>../../Engine/SoundLib/vorbis_sdk/lib;../..\Library\$(Configuration)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>LIBC;LIBCD;MSVCRT;MSVCRTD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Client.pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(OutDir)Client.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
@@ -198,10 +202,14 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<ManifestFile>Client.exe.manifest</ManifestFile> <ManifestFile>Client.exe.manifest</ManifestFile>
<IgnoreSpecificDefaultLibraries>LIBC;LIBCD;MSVCRT;MSVCRTD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Link> </Link>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile> </ResourceCompile>
<ProjectReference>
<UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
</ProjectReference>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">
<ClCompile> <ClCompile>
@@ -212,6 +220,7 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxguid.lib;dxerr8.lib;dinput8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxguid.lib;dxerr8.lib;dinput8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static.lib;%(AdditionalDependencies)</AdditionalDependencies>
@@ -241,6 +250,7 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
<AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static_d.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>ws2_32.lib;dsound.lib;eaxguid.lib;d3d8.lib;d3dx8.lib;dxguid.lib;dinput8.lib;shlwapi.lib;ole32.lib;wbemuuid.lib;winmm.lib;dxerr8.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;ijl15.lib;imm32.lib;../../Engine/SoundLib/vorbis_sdk/lib/ogg_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbis_static_d.lib;../../Engine/SoundLib/vorbis_sdk/lib/vorbisfile_static_d.lib;%(AdditionalDependencies)</AdditionalDependencies>

View File

@@ -1,8 +1,8 @@
#include <process.h> #include <process.h>
// 아래 지정된 플랫폼보다 우선하는 플랫폼을 대상으로 하는 경우 다음 정의를 수정하십시오. // <EFBFBD>Ʒ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>ϴ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
#ifndef _WIN32_WINNT // Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다. #ifndef _WIN32_WINNT // Windows NT 4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINNT 0x0501 // Windows XP #define _WIN32_WINNT 0x0501 // Windows XP
#endif #endif
@@ -80,7 +80,7 @@ DECLARE_ANTIHACK();
#include "RYLSceneObject.h" #include "RYLSceneObject.h"
#include "RYLIntroScene.h" #include "RYLIntroScene.h"
#include "RYLLoginScene.h" #include "RYLLoginScene.h"
// WORK_LIST 2.2 NationSelectScene 이름 수정 // WORK_LIST 2.2 NationSelectScene <EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD>
#include "RYLRaceSelectScene.h" #include "RYLRaceSelectScene.h"
#include "RYLCharacterSelectScene.h" #include "RYLCharacterSelectScene.h"
#include "RYLLoadingScene.h" #include "RYLLoadingScene.h"
@@ -104,7 +104,7 @@ DECLARE_ANTIHACK();
#include "RYLGameTimeManager.h" #include "RYLGameTimeManager.h"
// 메인보드 인식을 위한 WMI API를 쓰기 위한 헤더 // <EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD><EFBFBD> <20><><EFBFBD><EFBFBD> WMI API<50><49> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
#include <Wbemidl.h> #include <Wbemidl.h>
#include <atlbase.h> #include <atlbase.h>
@@ -182,7 +182,7 @@ BOOL WINAPI AntiFunc(HINSTANCE hInstance)
return 0; return 0;
} }
/* /*
// dump 테스트 // dump <EFBFBD>׽<EFBFBD>Ʈ
int i = 0; int i = 0;
int a = 0; int a = 0;
a = 15; a = 15;
@@ -241,7 +241,7 @@ int WINAPI ExceptionUserFunc(TCHAR* szBuffer, const int nBufferSize)
if ( pData ) if ( pData )
zone = pData->m_dwPresentZone; zone = pData->m_dwPresentZone;
// 서버 타입 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8>
char szServerInfo[MAX_PATH] = ""; char szServerInfo[MAX_PATH] = "";
if ( CRYLNetworkData::Instance() ) if ( CRYLNetworkData::Instance() )
{ {
@@ -253,7 +253,7 @@ int WINAPI ExceptionUserFunc(TCHAR* szBuffer, const int nBufferSize)
} }
} }
// OS 정보 // OS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char szOSInfo[MAX_PATH] = ""; char szOSInfo[MAX_PATH] = "";
OSVERSIONINFOEX osvi; OSVERSIONINFOEX osvi;
@@ -342,19 +342,19 @@ int WINAPI ExceptionUserFunc(TCHAR* szBuffer, const int nBufferSize)
} }
} }
// 그래픽 카드 정보 // <EFBFBD>׷<EFBFBD><EFBFBD><EFBFBD> ī<><C4AB> <20><><EFBFBD><EFBFBD>
LogDisplay( szBuffer ); LogDisplay( szBuffer );
// 사운드 카드 정보 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ī<><C4AB> <20><><EFBFBD><EFBFBD>
LogSoundDrv( szBuffer ); LogSoundDrv( szBuffer );
// CPU 정보 // CPU <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LogCPU( szBuffer ); LogCPU( szBuffer );
// MainBoard 정보 // MainBoard <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ( osvi.dwMajorVersion == 4 ) if ( osvi.dwMajorVersion == 4 )
{ {
if ( osvi.dwMinorVersion == 90 ) // Me if ( osvi.dwMinorVersion == 90 ) // <EFBFBD><EFBFBD>Me
{ {
LogMainBoard( szBuffer ); LogMainBoard( szBuffer );
LogMemory( szBuffer ); LogMemory( szBuffer );
@@ -382,7 +382,7 @@ LONG __stdcall UserUnhandledExceptionFilterEx(PEXCEPTION_POINTERS pExceptionInfo
{ {
if(Exception::ExceptionSaveDump) if(Exception::ExceptionSaveDump)
{ {
// 예외를 호출하기 전에 미니 덤프파일을 생성한다. // <EFBFBD><EFBFBD><EFBFBD>ܸ<EFBFBD> ȣ<><C8A3><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
char dumpfile[512]; char dumpfile[512];
if(strlen(Exception::DefaultDumpFileName) == 0) if(strlen(Exception::DefaultDumpFileName) == 0)
@@ -396,8 +396,8 @@ LONG __stdcall UserUnhandledExceptionFilterEx(PEXCEPTION_POINTERS pExceptionInfo
else else
strcpy(dumpfile, Exception::DefaultDumpFileName); strcpy(dumpfile, Exception::DefaultDumpFileName);
// 이 덤프 생성루틴을 Execption 에서 옵션으로 변경할수 있도록 변경. // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><C6BE> Execption <20><><EFBFBD><EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD> <20>ֵ<EFBFBD><D6B5><EFBFBD> <20><><EFBFBD><EFBFBD>.
// 미니덤프 생성. // <EFBFBD>̴ϴ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
MiniDump(dumpfile, pExceptionInfo); MiniDump(dumpfile, pExceptionInfo);
} }
@@ -420,15 +420,15 @@ int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
// MessageBox(NULL, lpCmdLine, "aa", MB_OK); // MessageBox(NULL, lpCmdLine, "aa", MB_OK);
// 임시 // <EFBFBD>ӽ<EFBFBD>
// ::CopyFile(_T(".\\ROWYouxi.mcf"), _T(".\\GameGuard\\Splash.jpg"), FALSE); // ::CopyFile(_T(".\\ROWYouxi.mcf"), _T(".\\GameGuard\\Splash.jpg"), FALSE);
// 자체 함수 Exception 사용 // <EFBFBD><EFBFBD>ü <20>Լ<EFBFBD> Exception <EFBFBD><EFBFBD><EFBFBD>
Exception::EnableUnhandledExceptioinFilterEx(UserUnhandledExceptionFilterEx, true); Exception::EnableUnhandledExceptioinFilterEx(UserUnhandledExceptionFilterEx, true);
// 풀 사이즈 덤프 // Ǯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Exception::SetDumpType(Exception::NormalDump); Exception::SetDumpType(Exception::NormalDump);
// Dump 저장 // Dump <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Exception::EnableSaveDump(true); Exception::EnableSaveDump(true);
USE_ANTIHACK1(); USE_ANTIHACK1();
@@ -452,17 +452,17 @@ CClientMain::CClientMain()
m_hnProtectLib = NULL; m_hnProtectLib = NULL;
m_wClientLoginFlag = 0; m_wClientLoginFlag = 0;
#ifdef NDEBUG #if defined(NDEBUG) && !defined(_RYL_TEST)
m_wAdminMode = ADMIN_NONE; // 일반인 m_wAdminMode = ADMIN_NONE; // <EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD>
m_bUDPInfo = false; m_bUDPInfo = false;
#else #else
m_wAdminMode = ADMIN_L3; // 개발자 m_wAdminMode = ADMIN_L3; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_bUDPInfo = true; m_bUDPInfo = true;
#endif #endif
m_lpD3DDevice = NULL ; m_lpD3DDevice = NULL ;
// 조이스틱 사용 관련 초기화 (2006-05-15 by hackermz) // <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>ƽ <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ (2006-05-15 by hackermz)
m_dwUseJoystick = 0; m_dwUseJoystick = 0;
} }
@@ -522,7 +522,7 @@ bool CClientMain::InitCreateGameClass()
else else
{ {
//======================================================================== //========================================================================
// GameData NetWork Data 생성 // GameData<EFBFBD><EFBFBD> NetWork Data <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pRYLGameData = new CRYLGameData ; m_pRYLGameData = new CRYLGameData ;
m_pRYLNetworkData = new CRYLNetworkData( m_pRYLNetworkData = new CRYLNetworkData(
@@ -566,7 +566,7 @@ VOID CClientMain::GetJapanServerInfo()
char strGameCode[ MAX_PATH ]; char strGameCode[ MAX_PATH ];
char strArgText[ MAX_PATH ], strAccountArg[ MAX_PATH ] ; char strArgText[ MAX_PATH ], strAccountArg[ MAX_PATH ] ;
strcpy( strGameCode, "209551D1-DE8A-40CF-BF54-152D7C17A62F" ) ;//게임 코드 strcpy( strGameCode, "209551D1-DE8A-40CF-BF54-152D7C17A62F" ) ;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
char *pLast = strCommandLine ; char *pLast = strCommandLine ;
sscanf( pLast, "%s %d %s", CRYLNetworkData::m_strIP, &CRYLNetworkData::m_dwServerID, &strArgText ) ; sscanf( pLast, "%s %d %s", CRYLNetworkData::m_strIP, &CRYLNetworkData::m_dwServerID, &strArgText ) ;
@@ -584,7 +584,7 @@ USES_CONVERSION;
return FALSE ; return FALSE ;
} }
strcpy( m_pRYLNetworkData->m_strLoginID, OLE2T( bstrGameID ) ) ;//결과 -- Game에 사용할 ID strcpy( m_pRYLNetworkData->m_strLoginID, OLE2T( bstrGameID ) ) ;//<EFBFBD><EFBFBD><EFBFBD> -- Game<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ID
m_pRYLNetworkData->m_dwUserID = atoi( m_pRYLNetworkData->m_strLoginID ) ; m_pRYLNetworkData->m_dwUserID = atoi( m_pRYLNetworkData->m_strLoginID ) ;
SysAllocString( bstrGameID ) ; SysAllocString( bstrGameID ) ;
@@ -640,11 +640,11 @@ unsigned long CClientMain::ClientProc(HWND hWnd, unsigned int uMsg, WPARAM wPara
{ {
case WM_CLOSE: case WM_CLOSE:
{ {
// 강제종료 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned long dwCounter = 10000; unsigned long dwCounter = 10000;
if ( m_wAdminMode > SUPPORTER) if ( m_wAdminMode > SUPPORTER)
{ {
// 운영자는 빠르게 종료 가능 // <EFBFBD><EFBFBD>ڴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dwCounter = 3000; dwCounter = 3000;
} }
@@ -794,7 +794,7 @@ unsigned long CClientMain::ClientProc(HWND hWnd, unsigned int uMsg, WPARAM wPara
{ {
if (wParam == 255) if (wParam == 255)
{ {
// nProtect 검사 // nProtect <EFBFBD>˻<EFBFBD>
m_pRYLNetworkData->ChecknProtect( m_hWnd ) ; m_pRYLNetworkData->ChecknProtect( m_hWnd ) ;
} }
break; break;
@@ -897,10 +897,10 @@ unsigned long CClientMain::CheckOCTREE()
BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight ) BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
{ {
// edith 2009.12.26 핵쉴드 업데이트 기능 사용. // edith 2009.12.26 <EFBFBD>ٽ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD> <20><><EFBFBD>.
if(!CRYLNetworkData::UpdateHShield()) if(!CRYLNetworkData::UpdateHShield())
{ {
MessageBox(NULL, "핵쉴드 업데이트에 실패하였습니다.", "ERROR", MB_OK); MessageBox(NULL, "<EFBFBD>ٽ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.", "ERROR", MB_OK);
return FALSE; return FALSE;
} }
@@ -1018,7 +1018,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
return FALSE; return FALSE;
} }
// 조이스틱 관련 // <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>ƽ <20><><EFBFBD><EFBFBD>
if(ERROR_SUCCESS != RegQueryValueEx(hMPClientReg, "UseJoyStick", 0, NULL, (LPBYTE)&m_dwUseJoystick, &dwReadLens)) if(ERROR_SUCCESS != RegQueryValueEx(hMPClientReg, "UseJoyStick", 0, NULL, (LPBYTE)&m_dwUseJoystick, &dwReadLens))
{ {
m_dwUseJoystick = 0; m_dwUseJoystick = 0;
@@ -1034,13 +1034,13 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
if (m_pRYLNetworkData->m_eInternationalCode == GameRYL::KOREA) if (m_pRYLNetworkData->m_eInternationalCode == GameRYL::KOREA)
{ {
// myFirewall 초기화 // myFirewall <EFBFBD>ʱ<EFBFBD>ȭ
myfirewall::On(); myfirewall::On();
} }
// 시스템 정보 얻어오기 // <EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
using namespace SystemInfo; using namespace SystemInfo;
CSystemInfo* pSystemInfo; CSystemInfo* pSystemInfo;
@@ -1057,7 +1057,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
bool bSave = false; bool bSave = false;
// 최소 사양으로 돌린다. // // <EFBFBD>ּ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. //
if(CRenderOption::m_CharacterProjectShadowTerrain!=0) bSave = true; if(CRenderOption::m_CharacterProjectShadowTerrain!=0) bSave = true;
else if(CRenderOption::m_BuildingLightmap!=0) bSave = true; else if(CRenderOption::m_BuildingLightmap!=0) bSave = true;
else if(CRenderOption::m_ObjectLOD!=1) bSave = true; else if(CRenderOption::m_ObjectLOD!=1) bSave = true;
@@ -1097,8 +1097,8 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
delete pSystemInfo; delete pSystemInfo;
pSystemInfo = NULL; pSystemInfo = NULL;
// edith 2009.02.14 렌더옵션의 웨더 이팩트를 스킬웨더이팩트에 연결. // edith 2009.02.14 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>.
// 추후 스킬이팩트만 따로빠질수도 있어서 새로 변수를 작성했음. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>.
CSceneManager::m_SkillWeatherEffect = static_cast<bool>(CRenderOption::m_bWeather); CSceneManager::m_SkillWeatherEffect = static_cast<bool>(CRenderOption::m_bWeather);
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@@ -1148,7 +1148,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
return FALSE; return FALSE;
} }
// 옥트리 체크섬 검사 // <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20>˻<EFBFBD>
dwTemp = CheckOCTREE(); dwTemp = CheckOCTREE();
dwCrc[0] = dwCrc[0] ^ dwTemp; dwCrc[0] = dwCrc[0] ^ dwTemp;
@@ -1168,7 +1168,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
} }
dwCrc[1] = dwCrc[1]^dwTemp; dwCrc[1] = dwCrc[1]^dwTemp;
// 배틀 로한은 별개의 아이템 스크립트를 사용합니다. // <EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>մϴ<D5B4>.
if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType) if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType)
{ {
sprintf(strScriptPath, "%s\\Language\\%s\\BGItemScript.gsf", m_strClientPath, szLanguage[i]); sprintf(strScriptPath, "%s\\Language\\%s\\BGItemScript.gsf", m_strClientPath, szLanguage[i]);
@@ -1219,7 +1219,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
MessageBox(NULL, CRYLStringTable::m_strString[22], CRYLStringTable::m_strString[21], MB_OK); MessageBox(NULL, CRYLStringTable::m_strString[22], CRYLStringTable::m_strString[21], MB_OK);
return FALSE; return FALSE;
} }
// 배틀 로한은 별개의 아이템 스크립트를 사용합니다. // <EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>մϴ<D5B4>.
if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType) if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType)
{ {
sprintf(strScriptPath, "%s\\BGItemScript.gsf", m_strClientPath); sprintf(strScriptPath, "%s\\BGItemScript.gsf", m_strClientPath);
@@ -1279,7 +1279,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
return FALSE; return FALSE;
} }
// 존체크 // <EFBFBD><EFBFBD>üũ
sprintf(strScriptPath, "%s\\zone1.z3s", m_strClientPath); sprintf(strScriptPath, "%s\\zone1.z3s", m_strClientPath);
if (CCrc32Static::FileCrc32Assembly(strScriptPath, dwTemp) != NO_ERROR) if (CCrc32Static::FileCrc32Assembly(strScriptPath, dwTemp) != NO_ERROR)
{ {
@@ -1372,16 +1372,16 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
// m_dwVersion = m_dwVersion ^ dwCrc[12]; // m_dwVersion = m_dwVersion ^ dwCrc[12];
#ifdef _RYL_TEST #ifdef _RYL_TEST
// 디버그용 정섭 체크섬. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>׿<EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9>.
m_dwVersion = 0xfeef66b3; m_dwVersion = 0xfeef66b3;
#endif #endif
//#ifndef NDEBUG //#ifndef NDEBUG
// switch (m_pRYLNetworkData->m_eServerType) // switch (m_pRYLNetworkData->m_eServerType)
// { // {
// case GameRYL::SERVER_TEST: m_dwVersion = 0x2e07d9fa; break; // 테섭 // case GameRYL::SERVER_TEST: m_dwVersion = 0x2e07d9fa; break; // <EFBFBD>׼<EFBFBD>
// case GameRYL::SERVER_REGULAR: m_dwVersion = 0xb332c5fb; break; // 정섭 // case GameRYL::SERVER_REGULAR: m_dwVersion = 0xb332c5fb; break; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// case GameRYL::SERVER_BATTLE_LOHAN: m_dwVersion = 0x00000001; break; // 배섭 // case GameRYL::SERVER_BATTLE_LOHAN: m_dwVersion = 0x00000001; break; // <EFBFBD>
// } // }
//#endif //#endif
@@ -1394,18 +1394,18 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
g_pClientSocket = ClientSocket::CreateInstance(); g_pClientSocket = ClientSocket::CreateInstance();
/* /*
// 리밸런싱 작업 중 테스트용으로 사용되던 부분 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۾<EFBFBD> <20><> <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ǵ<EFBFBD> <20>κ<EFBFBD>
char strLogFilePath[MAX_PATH] ; char strLogFilePath[MAX_PATH] ;
sprintf(strLogFilePath, "%s\\NetworkLog.txt", m_strClientPath); sprintf(strLogFilePath, "%s\\NetworkLog.txt", m_strClientPath);
g_pSessionMgr->NetworkLog(strLogFilePath); g_pSessionMgr->NetworkLog(strLogFilePath);
*/ */
// 조이스틱 초기화 // // <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>ƽ <20>ʱ<EFBFBD>ȭ //
// 한국에서는 일단 사용하지 않기 때문에 막아둡니다. (2006-05-02 by hackermz) // <EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ƵӴϴ<D3B4>. (2006-05-02 by hackermz)
// 테스트 목적으로 레지스트리의 UseJoystick 항목을 참고합니다. (2006-05-15 by hackermz) // <EFBFBD>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> UseJoystick <20>׸<EFBFBD><D7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. (2006-05-15 by hackermz)
// if (GameRYL::KOREA != m_pRYLNetworkData->m_eInternationalCode) // if (GameRYL::KOREA != m_pRYLNetworkData->m_eInternationalCode)
// edith 조이스틱 수정. // edith <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>ƽ <20><><EFBFBD><EFBFBD>.
CInputDevice::GetInstance()->Initialize(m_hWnd, false, false, true); CInputDevice::GetInstance()->Initialize(m_hWnd, false, false, true);
/* /*
if (1 == GetUseJoystick()) if (1 == GetUseJoystick())
@@ -1422,9 +1422,9 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
CEnumD3D::m_nDevice = m_InitValue.m_nDevice; CEnumD3D::m_nDevice = m_InitValue.m_nDevice;
CEnumD3D::m_nMode = m_InitValue.m_nMode; CEnumD3D::m_nMode = m_InitValue.m_nMode;
// edith 2008.01.18 ShowState를 위해 false->true로 변경해줘야함. // edith 2008.01.18 ShowState<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> false->true<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// showState true 이면 스탠실 버퍼를 생성하기 때문에 그래픽카드의 특성을 사서 초기화에 // showState<EFBFBD><EFBFBD> true <EFBFBD≯<EFBFBD> <20><><EFBFBD>Ľ<EFBFBD> <20><><EFBFBD>۸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20><20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD>
// 실패할 수가 있다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD>.
m_BaseGraphicLayer.Create(m_hWnd, true, true, 0, 0, m_iScreenWidth, m_iScreenHeight ); m_BaseGraphicLayer.Create(m_hWnd, true, true, 0, 0, m_iScreenWidth, m_iScreenHeight );
m_pRYLGameData->m_lpSceneManager = new CSceneManager(); m_pRYLGameData->m_lpSceneManager = new CSceneManager();
@@ -1433,7 +1433,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
m_pRYLGameData->m_lpSceneManager->m_WeatherManager.SetClearColor(&m_BaseGraphicLayer.m_ClearColor); m_pRYLGameData->m_lpSceneManager->m_WeatherManager.SetClearColor(&m_BaseGraphicLayer.m_ClearColor);
m_pRYLGameData->m_lpSceneManager->Create(m_InitValue, (char *)m_strClientPath); m_pRYLGameData->m_lpSceneManager->Create(m_InitValue, (char *)m_strClientPath);
// scene manager에 화면해상도 설정 // scene manager<EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD>ػ<EFBFBD> <20><><EFBFBD><EFBFBD>
m_pRYLGameData->m_lpSceneManager->m_ScreenWidth = m_iScreenWidth; m_pRYLGameData->m_lpSceneManager->m_ScreenWidth = m_iScreenWidth;
m_pRYLGameData->m_lpSceneManager->m_ScreenHeight = m_iScreenHeight; m_pRYLGameData->m_lpSceneManager->m_ScreenHeight = m_iScreenHeight;
@@ -1469,7 +1469,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// 사운드 처리 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
// try // try
// { // {
@@ -1483,7 +1483,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
// } // }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// CharacterData의 함수포인터 Set // CharacterData<EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Set
m_pRYLNetworkData->LinkCharacterData() ; m_pRYLNetworkData->LinkCharacterData() ;
m_pRYLGameData->LinkCharacterData() ; m_pRYLGameData->LinkCharacterData() ;
@@ -1498,7 +1498,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
m_pRYLGameData->m_bShowInfo = FALSE; m_pRYLGameData->m_bShowInfo = FALSE;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// 타이머 초기화 // Ÿ<EFBFBD≯<EFBFBD> <20>ʱ<EFBFBD>ȭ
GRYLTimer.InitTimer() ; GRYLTimer.InitTimer() ;
@@ -1515,7 +1515,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
if(iLanguage >= iMaxLanguage) if(iLanguage >= iMaxLanguage)
iLanguage = 0; iLanguage = 0;
// 배틀 로한은 별개의 아이템 스크립트를 사용합니다. // <EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>մϴ<D5B4>.
if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType) if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType)
{ {
sprintf(strScriptPath, "%s\\Language\\%s\\BGItemScript.gsf", m_strClientPath, szLanguage[iLanguage]); sprintf(strScriptPath, "%s\\Language\\%s\\BGItemScript.gsf", m_strClientPath, szLanguage[iLanguage]);
@@ -1537,7 +1537,7 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
g_QuestList.Load(strQuestPath); g_QuestList.Load(strQuestPath);
#else #else
// 배틀 로한은 별개의 아이템 스크립트를 사용합니다. // <EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>մϴ<D5B4>.
if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType) if (GameRYL::SERVER_BATTLE_LOHAN == m_pRYLNetworkData->m_eServerType)
{ {
sprintf(strScriptPath, "%s\\BGItemScript.gsf", m_strClientPath); sprintf(strScriptPath, "%s\\BGItemScript.gsf", m_strClientPath);
@@ -1594,10 +1594,10 @@ BOOL CClientMain::Init(HINSTANCE hInstance, INT iWidth, INT iHeight )
HRESULT CClientMain::CreateScene() HRESULT CClientMain::CreateScene()
{ {
// TextSize초기화 // TextSize<EFBFBD>ʱ<EFBFBD>ȭ
CRYLStringTable::CreateTextSize() ; CRYLStringTable::CreateTextSize() ;
// GM Font 초기화 // GM Font <EFBFBD>ʱ<EFBFBD>ȭ
CGMFont::CreateInstance() ; CGMFont::CreateInstance() ;
if ( FAILED( CGMFont::Instance()->InitDeviceObjects() ) ) if ( FAILED( CGMFont::Instance()->InitDeviceObjects() ) )
{ {
@@ -1605,7 +1605,7 @@ HRESULT CClientMain::CreateScene()
return E_FAIL ; return E_FAIL ;
} }
// GM UI 초기화 // GM UI <EFBFBD>ʱ<EFBFBD>ȭ
if ( FAILED( GMUIInitialize( m_hWnd, m_iScreenWidth, m_iScreenHeight ) ) ) if ( FAILED( GMUIInitialize( m_hWnd, m_iScreenWidth, m_iScreenHeight ) ) )
{ {
return E_FAIL ; return E_FAIL ;
@@ -1614,7 +1614,7 @@ HRESULT CClientMain::CreateScene()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Init Scene // Init Scene
// Game Scene이외의 Scene들을 로드 // Game Scene<EFBFBD>̿<EFBFBD><EFBFBD><EFBFBD> Scene<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD>
m_pRYLSceneManager = new CRYLSceneManager() ; m_pRYLSceneManager = new CRYLSceneManager() ;
// Intro Scene // Intro Scene
@@ -1629,7 +1629,7 @@ HRESULT CClientMain::CreateScene()
// Loagin Scene // Loagin Scene
m_pRYLSceneManager->InsertScene( new CRYLLoginScene( LOGIN_SCENE ) ) ; m_pRYLSceneManager->InsertScene( new CRYLLoginScene( LOGIN_SCENE ) ) ;
// WORK_LIST 2.2 NationSelectScene 이름 수정 // WORK_LIST 2.2 NationSelectScene <EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD>
// RaceSelect Scene // RaceSelect Scene
m_pRYLSceneManager->InsertScene( new CRYLRaceSelectScene( RACESELECT_SCENE ) ) ; m_pRYLSceneManager->InsertScene( new CRYLRaceSelectScene( RACESELECT_SCENE ) ) ;
m_pRYLSceneManager->SetScene( RACESELECT_SCENE ) ; m_pRYLSceneManager->SetScene( RACESELECT_SCENE ) ;
@@ -1658,7 +1658,7 @@ HRESULT CClientMain::CreateScene()
m_pRYLSceneManager->SetScene( INTRO_SCENE ) ; m_pRYLSceneManager->SetScene( INTRO_SCENE ) ;
// 리소스 초기화 // <EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD> <20>ʱ<EFBFBD>ȭ
//InitResourceObject() ; //InitResourceObject() ;
return S_OK ; return S_OK ;
@@ -1797,7 +1797,7 @@ void CClientMain::Update(void)
m_pRYLGameData->UpdateTipBroadCounter( fUpdate ) ; m_pRYLGameData->UpdateTipBroadCounter( fUpdate ) ;
m_pRYLGameData->UpdatePartyAttackTimer( fUpdate ) ; m_pRYLGameData->UpdatePartyAttackTimer( fUpdate ) ;
// Shout, FameInfo.. etc Counter 처리 // Shout, FameInfo.. etc Counter ó<EFBFBD><EFBFBD>
CRYLNetworkData::ProcessCounter( fUpdate ) ; CRYLNetworkData::ProcessCounter( fUpdate ) ;
m_pRYLGameData->UpdateSkillUseCounter( fUpdate ) ; m_pRYLGameData->UpdateSkillUseCounter( fUpdate ) ;
@@ -2106,9 +2106,9 @@ void CClientMain::Update(void)
} }
// --------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------
// 길드 관련 메시지창 처리 // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD>â ó<><C3B3>
// 길드 멤버탭의 참여/불참 선언 // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if ( m_pRYLGameData->m_dwGuildWarJoinLeaveResult & MB_YES ) if ( m_pRYLGameData->m_dwGuildWarJoinLeaveResult & MB_YES )
{ {
SendPacket::WarOnOff( g_GameSession, CRYLNetworkData::Instance()->m_dwMyChrID, Creature::WAR_ON, GameTime::GUILD ) ; SendPacket::WarOnOff( g_GameSession, CRYLNetworkData::Instance()->m_dwMyChrID, Creature::WAR_ON, GameTime::GUILD ) ;
@@ -2191,7 +2191,7 @@ void CClientMain::Update(void)
if ( CRYLCommunityData::Instance()->m_dwResInvite & MB_YES ) if ( CRYLCommunityData::Instance()->m_dwResInvite & MB_YES )
{ {
// edith 2008.02.27 길드 가입 제한제외 // edith 2008.02.27 <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (Creature::LEVEL_ABLE_WAR > CRYLGameData::Instance()->m_csStatus.m_Info.Level) if (Creature::LEVEL_ABLE_WAR > CRYLGameData::Instance()->m_csStatus.m_Info.Level)
{ {
char szErrMsg[MAX_PATH]; char szErrMsg[MAX_PATH];
@@ -2202,7 +2202,7 @@ void CClientMain::Update(void)
} }
else else
{ {
// 초청에 의한 가입 허가 // <EFBFBD><EFBFBD>û<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>
SendPacket::CharGuildCmd( g_GameSession, CRYLCommunityData::Instance()->m_dwRefenceGID, m_pRYLNetworkData->m_dwMyChrID, SendPacket::CharGuildCmd( g_GameSession, CRYLCommunityData::Instance()->m_dwRefenceGID, m_pRYLNetworkData->m_dwMyChrID,
CRYLCommunityData::Instance()->m_dwRefenceCID, PktGuildCmd::GC_JOIN ) ; CRYLCommunityData::Instance()->m_dwRefenceCID, PktGuildCmd::GC_JOIN ) ;
} }
@@ -2211,7 +2211,7 @@ void CClientMain::Update(void)
} }
else if ( ( CRYLCommunityData::Instance()->m_dwResInvite & MB_NO ) || ( CRYLCommunityData::Instance()->m_dwResInvite & MB_EXIT ) ) else if ( ( CRYLCommunityData::Instance()->m_dwResInvite & MB_NO ) || ( CRYLCommunityData::Instance()->m_dwResInvite & MB_EXIT ) )
{ {
// 초청에 의한 가입 거절 // <EFBFBD><EFBFBD>û<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
SendPacket::CharGuildCmd( g_GameSession, CRYLCommunityData::Instance()->m_dwRefenceGID, m_pRYLNetworkData->m_dwMyChrID, SendPacket::CharGuildCmd( g_GameSession, CRYLCommunityData::Instance()->m_dwRefenceGID, m_pRYLNetworkData->m_dwMyChrID,
CRYLCommunityData::Instance()->m_dwRefenceCID, PktGuildCmd::GC_REFUSE ) ; CRYLCommunityData::Instance()->m_dwRefenceCID, PktGuildCmd::GC_REFUSE ) ;
CRYLCommunityData::Instance()->m_dwResInvite = 0 ; CRYLCommunityData::Instance()->m_dwResInvite = 0 ;
@@ -2247,7 +2247,7 @@ void CClientMain::Update(void)
} }
} }
// 위치 퀘스트를 받을 것이 있는가 체크 // <EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ°<D6B4> üũ
RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature(); RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature();
if ( pSelfCreature && g_pClientSocket->GetStatusFlag() != NS_REQUESTQUEST ) if ( pSelfCreature && g_pClientSocket->GetStatusFlag() != NS_REQUESTQUEST )
{ {
@@ -2314,7 +2314,7 @@ void CClientMain::Update(void)
{ {
CSceneManager::m_fLife = ( FLOAT )( m_pRYLGameData->m_csStatus.GetCurrentHP() ) / ( m_pRYLGameData->m_csStatus.GetMaxHP() ) ; CSceneManager::m_fLife = ( FLOAT )( m_pRYLGameData->m_csStatus.GetCurrentHP() ) / ( m_pRYLGameData->m_csStatus.GetMaxHP() ) ;
// 강제로 이팩트를 수정. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>.
RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature(); RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature();
if(pSelfCreature) if(pSelfCreature)
{ {
@@ -2326,7 +2326,7 @@ void CClientMain::Update(void)
} }
#ifndef NO_GAMEGUARD #ifndef NO_GAMEGUARD
// edith 2009.08.11 게임가드 2.5 업그레이드 // edith 2009.08.11 <EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD> 2.5 <20><><EFBFBD>׷<EFBFBD><D7B7>̵<EFBFBD>
// if (m_pRYLNetworkData->m_GGAuthCode.CheckFlag(GGAuthCode::GG_AUTH_CODE_1)) // if (m_pRYLNetworkData->m_GGAuthCode.CheckFlag(GGAuthCode::GG_AUTH_CODE_1))
// { // {
// SendPacket::CSAuthReturnCode( g_GameSession, m_pRYLNetworkData->m_dwMyChrID, 1, // SendPacket::CSAuthReturnCode( g_GameSession, m_pRYLNetworkData->m_dwMyChrID, 1,
@@ -2361,8 +2361,8 @@ void CClientMain::Render(void)
{ {
PROFILE("Status Check"); PROFILE("Status Check");
////////////////////////// 스테이터스 체크 ////////////////////////// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD> üũ
// edith 2008.03.13 클라이언트에서 해킹을 방지하기 위해 스테이터스의 수치를 체크하는 부분 // edith 2008.03.13 Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ŷ<EFBFBD><C5B7> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> üũ<C3BC>ϴ<EFBFBD> <20>κ<EFBFBD>
if (m_wAdminMode != ADMIN_L3) if (m_wAdminMode != ADMIN_L3)
{ {
float fUpdate = CFrameTimer::GetUpdateTimer( GRYLTimer.GetCheckStatusTimerID() ) ; float fUpdate = CFrameTimer::GetUpdateTimer( GRYLTimer.GetCheckStatusTimerID() ) ;
@@ -2387,7 +2387,7 @@ void CClientMain::Render(void)
unsigned long dwKindCursor = CURSOR_NORMAL ; unsigned long dwKindCursor = CURSOR_NORMAL ;
{ {
PROFILE("Select Cursor"); PROFILE("Select Cursor");
////////////////////////// 커서 선택 ////////////////////////// Ŀ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if (m_pRYLGameData->m_dwKindCursor == CURSOR_NORMAL) if (m_pRYLGameData->m_dwKindCursor == CURSOR_NORMAL)
{ {
if (g_TooltipManager.m_ttRenderTarget) if (g_TooltipManager.m_ttRenderTarget)
@@ -2432,7 +2432,7 @@ void CClientMain::Render(void)
} }
if (!m_pRYLGameData->m_bHardwareCursor && m_pRYLGameData->m_bShowCursor) if (!m_pRYLGameData->m_bHardwareCursor && m_pRYLGameData->m_bShowCursor)
{ // 소프트웨어 커서 { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF>
POINT *ptMousePos = g_DeviceInput.GetMouseLocal(); POINT *ptMousePos = g_DeviceInput.GetMouseLocal();
m_pRYLGameData->RenderCursor(m_BaseGraphicLayer.GetDevice(), ptMousePos->x, ptMousePos->y, m_pRYLGameData->m_dwKindCursor); m_pRYLGameData->RenderCursor(m_BaseGraphicLayer.GetDevice(), ptMousePos->x, ptMousePos->y, m_pRYLGameData->m_dwKindCursor);
} }
@@ -2447,7 +2447,7 @@ void CClientMain::Render(void)
{ {
PROFILE("Hardware Cursor"); PROFILE("Hardware Cursor");
if (m_pRYLGameData->m_bHardwareCursor) if (m_pRYLGameData->m_bHardwareCursor)
{ // 하드웨어 커서 { // <EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF>
switch (dwKindCursor) switch (dwKindCursor)
{ {
case CURSOR_NORMAL: case CURSOR_NORMAL:
@@ -2527,7 +2527,7 @@ void CClientMain::RenderMain()
{ {
PROFILE("Interface Effect"); PROFILE("Interface Effect");
/////////////// 인터페이스 이팩트 /////////////// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
DWORD effcullmode; DWORD effcullmode;
DWORD effzmode; DWORD effzmode;
DWORD effalphamode; DWORD effalphamode;
@@ -2559,7 +2559,7 @@ void CClientMain::RenderMain()
m_BaseGraphicLayer.GetDevice()->SetRenderState(D3DRS_ZENABLE,effzmode); m_BaseGraphicLayer.GetDevice()->SetRenderState(D3DRS_ZENABLE,effzmode);
m_BaseGraphicLayer.GetDevice()->SetRenderState(D3DRS_ALPHABLENDENABLE,effalphamode); m_BaseGraphicLayer.GetDevice()->SetRenderState(D3DRS_ALPHABLENDENABLE,effalphamode);
//전직시 같이 나오는 state 출력부 //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> state <EFBFBD><EFBFBD>º<EFBFBD>
m_pRYLGameData->RenderClassEffect() ; m_pRYLGameData->RenderClassEffect() ;
} }
@@ -2567,7 +2567,7 @@ void CClientMain::RenderMain()
{ {
PROFILE("Etc Render"); PROFILE("Etc Render");
/* /*
// edith 2008.01.18 ShowState 화면에 위치정보등의 출력 // edith 2008.01.18 ShowState ȭ<EFBFBD><20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
m_BaseGraphicLayer.ShowState(); m_BaseGraphicLayer.ShowState();
RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature(); RYLCreature* pSelfCreature = RYLCreatureManager::Instance()->GetSelfCreature();
@@ -2600,8 +2600,8 @@ void CClientMain::RenderMain()
void CClientMain::SetDayTimer() void CClientMain::SetDayTimer()
{ {
/* // 할로윈 이벤트 /* // <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ
// 존별로 시간을 지정한다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
if(CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE1 || if(CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE1 ||
CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE2 || CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE2 ||
CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE12 || CRYLNetworkData::Instance()->m_dwPresentZone == SERVER_ID::ZONE12 ||
@@ -2665,7 +2665,7 @@ void CClientMain::ProcessScreenshot()
dwNumScreenShot = dwNumJPGScreenShot; dwNumScreenShot = dwNumJPGScreenShot;
} }
// GMT타임구하기 // GMTŸ<EFBFBD>ӱ<EFBFBD><EFBFBD>ϱ<EFBFBD>
time_t rawtime; time_t rawtime;
tm * ptm; tm * ptm;
time ( &rawtime ); time ( &rawtime );
@@ -2793,7 +2793,7 @@ void CClientMain::SetDisplay(void)
long lResult = ChangeDisplaySettings(&dm, 0); long lResult = ChangeDisplaySettings(&dm, 0);
if (lResult != DISP_CHANGE_SUCCESSFUL) if (lResult != DISP_CHANGE_SUCCESSFUL)
{ {
// 지원하지 않는 모드입니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.
} }
} }
@@ -2841,24 +2841,24 @@ BOOL CALLBACK NPGameMonCallback(DWORD dwMsg, DWORD dwArg)
#ifndef NO_GAMEGUARD #ifndef NO_GAMEGUARD
switch (dwMsg) switch (dwMsg)
{ {
// GameMon과의 통신 채널이 끊어졌을 경우입니다. // GameMon<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 보통 GameMon이 비정상적으로 종료되었을 경우이므로 게임도 종료해줍니다 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> GameMon<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><><EFBFBD><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD>ӵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>
case NPGAMEMON_COMM_ERROR : // Communication error case NPGAMEMON_COMM_ERROR : // Communication error
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1302 ], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1302 ], CRYLStringTable::m_strString[21], MB_OK);
g_ClientMain.Destroy(); g_ClientMain.Destroy();
PostQuitMessage(WM_QUIT); PostQuitMessage(WM_QUIT);
return FALSE; // 반드시 종료 return FALSE; // <EFBFBD>ݵ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// GameMon이 정상적으로 종료되어 보내는 메시지입니다. // GameMon<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 게임도 종료해줍니다. // <EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
case NPGAMEMON_COMM_CLOSE : // Communication closing case NPGAMEMON_COMM_CLOSE : // Communication closing
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1303 ], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1303 ], CRYLStringTable::m_strString[21], MB_OK);
g_ClientMain.Destroy(); g_ClientMain.Destroy();
PostQuitMessage(WM_QUIT); PostQuitMessage(WM_QUIT);
return FALSE; // 반드시 종료 return FALSE; // <EFBFBD>ݵ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// GameMon 실행 에러입니다. // GameMon <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// 에러코드인 dwArg 값과 함께 적절한 메시지를 사용자에게 출력해주고 게임을 종료해 줍니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD> dwArg <20><><EFBFBD><EFBFBD> <20>Բ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݴϴ<DDB4>.
case NPGAMEMON_INIT_ERROR : // GameMon Init Error case NPGAMEMON_INIT_ERROR : // GameMon Init Error
{ {
char msg[1024]; char msg[1024];
@@ -2867,33 +2867,33 @@ BOOL CALLBACK NPGameMonCallback(DWORD dwMsg, DWORD dwArg)
g_ClientMain.Destroy(); g_ClientMain.Destroy();
PostQuitMessage(WM_QUIT); PostQuitMessage(WM_QUIT);
} }
return FALSE; // 반드시 종료 return FALSE; // <EFBFBD>ݵ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 스피드핵이 감지되었습니다. // <EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// 적절한 메시지와 함께 게임을 종료해줍니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20>Բ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
case NPGAMEMON_SPEEDHACK : // SpeedHack detected case NPGAMEMON_SPEEDHACK : // SpeedHack detected
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[911], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[911], CRYLStringTable::m_strString[21], MB_OK);
g_ClientMain.Destroy(); g_ClientMain.Destroy();
PostQuitMessage(WM_QUIT); PostQuitMessage(WM_QUIT);
return FALSE; // 종료 return FALSE; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 게임핵이 실행되었지만 성공적으로 강제 종료시켰습니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD><D7BD>ϴ<EFBFBD>.
// 게임을 계속 진행해도 무방하지만 종료하기를 권장합니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
case NPGAMEMON_GAMEHACK_KILLED : // GameHack killed case NPGAMEMON_GAMEHACK_KILLED : // GameHack killed
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1305 ], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1305 ], CRYLStringTable::m_strString[21], MB_OK);
return true; // 계속 진행 return true; // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 게임핵이 발견되었습니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰ߵǾ<DFB5><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// 강제 종료가 불가능한 경우이므로 적절한 메시지 출력 후 게임을 종료해줍니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
case NPGAMEMON_GAMEHACK_DETECT : // GameHack detected case NPGAMEMON_GAMEHACK_DETECT : // GameHack detected
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1306 ], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 1306 ], CRYLStringTable::m_strString[21], MB_OK);
g_ClientMain.Destroy(); g_ClientMain.Destroy();
PostQuitMessage(WM_QUIT); PostQuitMessage(WM_QUIT);
return FALSE; // 종료 return FALSE; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 게임핵으로 의심되는 프로그램이 실행 중 입니다. // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǽɵǴ<C9B5> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>Դϴ<D4B4>.
// 혹은 게임이나 게임가드가 변조되었습니다. // Ȥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD>Ӱ<EFBFBD><D3B0><20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// 불필요한 프로그램을 종료하고 다시 게임을 해보라는 메시지를 보여주고 게임을 종료해줍니다. // <EFBFBD><EFBFBD><EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>غ<EFBFBD><D8BA><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
case NPGAMEMON_GAMEHACK_DOUBT : // GameHack doubt case NPGAMEMON_GAMEHACK_DOUBT : // GameHack doubt
MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 2847 ], CRYLStringTable::m_strString[21], MB_OK); MessageBox(g_ClientMain.m_hWnd, CRYLStringTable::m_strString[ 2847 ], CRYLStringTable::m_strString[21], MB_OK);
g_ClientMain.Destroy(); g_ClientMain.Destroy();
@@ -2901,13 +2901,13 @@ BOOL CALLBACK NPGameMonCallback(DWORD dwMsg, DWORD dwArg)
return FALSE ; return FALSE ;
case NPGAMEMON_CHECK_CSAUTH : // CSAuth case NPGAMEMON_CHECK_CSAUTH : // CSAuth
// edith 2009.08.11 게임가드 2.5 업그레이드 // edith 2009.08.11 <EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD> 2.5 <20><><EFBFBD>׷<EFBFBD><D7B7>̵<EFBFBD>
// CRYLNetworkData::Instance()->m_GGAuthCode.m_dwAuthCode = dwArg; // CRYLNetworkData::Instance()->m_GGAuthCode.m_dwAuthCode = dwArg;
// CRYLNetworkData::Instance()->m_GGAuthCode.SetFlag(GGAuthCode::GG_AUTH_CODE_1); // CRYLNetworkData::Instance()->m_GGAuthCode.SetFlag(GGAuthCode::GG_AUTH_CODE_1);
return TRUE; return TRUE;
case NPGAMEMON_CHECK_CSAUTH2 : // CSAuth2 case NPGAMEMON_CHECK_CSAUTH2 : // CSAuth2
// edith 2009.08.11 게임가드 2.5 업그레이드 // edith 2009.08.11 <EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD> 2.5 <20><><EFBFBD>׷<EFBFBD><D7B7>̵<EFBFBD>
::memcpy(&CRYLNetworkData::Instance()->m_GGAuthCode.m_AuthCode2, (PVOID)dwArg, sizeof(GG_AUTH_DATA)); ::memcpy(&CRYLNetworkData::Instance()->m_GGAuthCode.m_AuthCode2, (PVOID)dwArg, sizeof(GG_AUTH_DATA));
CRYLNetworkData::Instance()->m_GGAuthCode.SetFlag(GGAuthCode::GG_AUTH_CODE_2); CRYLNetworkData::Instance()->m_GGAuthCode.SetFlag(GGAuthCode::GG_AUTH_CODE_2);
/* /*

Binary file not shown.