Fix Debug build and script execution: Add _USE_32BIT_TIME_T, disable DEP for JIT script engine

This commit is contained in:
2025-11-30 19:12:08 +09:00
parent bd9cb3776e
commit 955e032217
7 changed files with 87 additions and 35 deletions

View File

@@ -75,12 +75,18 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Executable/$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Executable/$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<LocalDebuggerWorkingDirectory Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">F:\YouxiLand\ROW</LocalDebuggerWorkingDirectory>
<DebuggerFlavor Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WindowsLocalDebugger</DebuggerFlavor>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Executable/$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Executable/$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LocalDebuggerWorkingDirectory Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">F:\YouxiLand\ROW</LocalDebuggerWorkingDirectory>
<DebuggerFlavor Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WindowsLocalDebugger</DebuggerFlavor>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">../../Executable/$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">../../Executable/$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">false</LinkIncremental>
<LocalDebuggerWorkingDirectory Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">F:\YouxiLand\ROW</LocalDebuggerWorkingDirectory>
<DebuggerFlavor Condition="'$(Configuration)|$(Platform)'=='Release_NoGD|Win32'">WindowsLocalDebugger</DebuggerFlavor>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">../../Executable/$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">../../Executable/$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">../../Intermediate/$(ProjectName)/$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_MY|Win32'">false</LinkIncremental>
@@ -130,8 +136,8 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)Client.pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(OutDir)Client.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<StackReserveSize> <StackReserveSize>8388608</StackReserveSize>
</StackReserveSize> <DataExecutionPrevention>false</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<UACExecutionLevel>HighestAvailable</UACExecutionLevel> <UACExecutionLevel>HighestAvailable</UACExecutionLevel>

View File

@@ -5,7 +5,7 @@
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerCommand>$(OutDir)Client.exe</LocalDebuggerCommand> <LocalDebuggerCommand>F:\YouxiLand\ROW\Client.exe</LocalDebuggerCommand>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@@ -86,14 +86,14 @@ void File_XOR( const char * szSrcFilename, const char * szDstFilename, int keyVa
if( !infile.is_open() ) if( !infile.is_open() )
{ {
ErrorMessage2( "ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.(At File_XOR) : %s", szSrcFilename ); ErrorMessage2( "ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.(At File_XOR) : %s", szSrcFilename );
} }
fstream outfile( szDstFilename, ios_base::out | ios_base::binary ); fstream outfile( szDstFilename, ios_base::out | ios_base::binary );
if( !outfile.is_open() ) if( !outfile.is_open() )
{ {
ErrorMessage2( "ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.(At File_XOR) : %s", szDstFilename ); ErrorMessage2( "ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.(At File_XOR) : %s", szDstFilename );
} }
infile.seekg( 0, ios_base::end ); infile.seekg( 0, ios_base::end );
@@ -119,7 +119,7 @@ void CVirtualMachine::Create( const char * szFilename )
ifstream file( szFilename, ios::binary | ios::in ); ifstream file( szFilename, ios::binary | ios::in );
if( !file.is_open() ) if( !file.is_open() )
ErrorMessage2( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. (At CVirtualMachine::Create) : %s", szFilename ); ErrorMessage2( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. (At CVirtualMachine::Create) : %s", szFilename );
file.seekg( 0, ios_base::end ); file.seekg( 0, ios_base::end );
unsigned int filesize = (unsigned int)file.tellg(); unsigned int filesize = (unsigned int)file.tellg();
@@ -132,6 +132,16 @@ void CVirtualMachine::Create( const char * szFilename )
file.read( pBuf, filesize ); file.read( pBuf, filesize );
Data_XOR( pBuf, filesize, xor_key_valueT ); Data_XOR( pBuf, filesize, xor_key_valueT );
// 복호?<3F>된 ?<3F>이?<3F><>? 로그 ?<3F><EFBFBD>??<3F>??(?<3F>버깅용)
char szLogPath[MAX_PATH];
strcpy(szLogPath, szFilename);
strcat(szLogPath, ".decrypted.log");
FILE* fpLog = fopen(szLogPath, "wb");
if (fpLog) {
fwrite(pBuf, 1, filesize, fpLog);
fclose(fpLog);
}
Create( pBuf, filesize ); Create( pBuf, filesize );
delete [] pBuf; delete [] pBuf;
@@ -141,7 +151,7 @@ void CVirtualMachine::Create( const char * szFilename )
ifstream file( szFilename, ios::binary | ios::in ); ifstream file( szFilename, ios::binary | ios::in );
if( !file.is_open() ) if( !file.is_open() )
ErrorMessage2( "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. (At CVirtualMachine::Create) : %s", szFilename ); ErrorMessage2( "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. (At CVirtualMachine::Create) : %s", szFilename );
m_pRelocation->Create( file ); m_pRelocation->Create( file );
@@ -277,13 +287,13 @@ void CVirtualMachine::Create( CIntermediateCode & IMCode, CSymbolTable & Symbo
m_pCodeBuffer = (char*)m_pStringBuffer + StringBufferSize; m_pCodeBuffer = (char*)m_pStringBuffer + StringBufferSize;
if( IMCode.ToMachineCode( m_pCodeBuffer, m_pRelocation ) != m_iCodeSize ) if( IMCode.ToMachineCode( m_pCodeBuffer, m_pRelocation ) != m_iCodeSize )
ScriptSystemError( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20>ٸ<EFBFBD><D9B8>ϴ<EFBFBD>.( at CVirtualMachine::Create )" ); ScriptSystemError( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20>ٸ<EFBFBD><D9B8>ϴ<EFBFBD>.( at CVirtualMachine::Create )" );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>
m_pRelocation->Relocate( m_pGlobalVars, m_pStringBuffer, m_pCodeBuffer ); m_pRelocation->Relocate( m_pGlobalVars, m_pStringBuffer, m_pCodeBuffer );
m_bRelocated = true; m_bRelocated = true;
//<2F>Լ<EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //<2F>Լ<EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>?
typedef CIntermediateCode::FUNCTABLE FUNCTABLE; typedef CIntermediateCode::FUNCTABLE FUNCTABLE;
FUNCTABLE & funcTable = IMCode.GetFuncTable(); FUNCTABLE & funcTable = IMCode.GetFuncTable();
@@ -334,18 +344,18 @@ void CVirtualMachine::Destroy()
} }
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// ȭ<><C8AD> <20><><EFBFBD><EFBFBD> // ȭ<><C8AD> <20><><EFBFBD><EFBFBD>
// 1. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Relocation <20><><EFBFBD><EFBFBD>(int) // 1. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Relocation <20><><EFBFBD><EFBFBD>(int)
// 2. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> Relocation <20><><EFBFBD><EFBFBD>(int) // 2. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD>?Relocation <20><><EFBFBD><EFBFBD>(int)
// 3. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Relocation Table // 3. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Relocation Table
// 4. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> Relocation Table // 4. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD>?Relocation Table
// 5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int) // 5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int)
// 6. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int) // 6. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int)
// 7. <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int) // 7. <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>(int)
// 8. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> // 8. <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
// 9. <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> // 9. <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>
// 10. <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 10. <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 11. < <20><><EFBFBD>ڿ<EFBFBD>, <20>Լ<EFBFBD> Ÿ<><C5B8>(long), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(long) > * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 11. < <20><><EFBFBD>ڿ<EFBFBD>, <20>Լ<EFBFBD> Ÿ<><C5B8>(long), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(long) > * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
bool CVirtualMachine::Save( const char * szFilename ) bool CVirtualMachine::Save( const char * szFilename )
@@ -412,6 +422,31 @@ bool CVirtualMachine::Save( const char * szFilename )
void CVirtualMachine::Execute() void CVirtualMachine::Execute()
{ {
// 디버깅: 실행 전 상태 로그
FILE* fpLog = fopen("script_execute.log", "a");
if (fpLog) {
fprintf(fpLog, "=== Execute Start ===\n");
fprintf(fpLog, "m_pCodeBuffer: %p\n", m_pCodeBuffer);
fprintf(fpLog, "m_iCodeSize: %d\n", m_iCodeSize);
fprintf(fpLog, "m_pGlobalVars: %p\n", m_pGlobalVars);
fprintf(fpLog, "m_pStringBuffer: %p\n", m_pStringBuffer);
fprintf(fpLog, "m_bRelocated: %d\n", m_bRelocated);
// 코드 버퍼 첫 16바이트 덤프
if (m_pCodeBuffer && m_iCodeSize > 0) {
fprintf(fpLog, "Code buffer first 16 bytes: ");
unsigned char* p = (unsigned char*)m_pCodeBuffer;
int dumpSize = (m_iCodeSize < 16) ? m_iCodeSize : 16;
for (int i = 0; i < dumpSize; i++) {
fprintf(fpLog, "%02X ", p[i]);
}
fprintf(fpLog, "\n");
}
fprintf(fpLog, "===================\n");
fflush(fpLog);
fclose(fpLog);
}
void * pCodeBuffer = m_pCodeBuffer; void * pCodeBuffer = m_pCodeBuffer;
__asm call pCodeBuffer; __asm call pCodeBuffer;
} }
@@ -460,18 +495,18 @@ union long_byte
}; };
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
//Native<76>Լ<EFBFBD><D4BC><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ε<EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> //Native<76>Լ<EFBFBD><D4BC><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ε<EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD>?
// //
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>Լ<EFBFBD><D4BC><EFBFBD> <20><> <20><> <20><>ġ<EFBFBD><C4A1> <20>Ѵ<EFBFBD>. ( <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. ) //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>?: <20>Լ<EFBFBD><D4BC><EFBFBD> <20><> <20><> <20><>ġ<EFBFBD><C4A1> <20>Ѵ<EFBFBD>. ( <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. )
// 1-1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD>, <20><><EFBFBD>ǰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><20>Լ<EFBFBD> <20>ڵ忡<DAB5><E5BFA1> ó<><C3B3> <20>κп<CEBA> 5<><35><EFBFBD><EFBFBD>Ʈ <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD>(nop)<29><> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>. // 1-1. <20><><EFBFBD><EFBFBD> <20>ְ<EFBFBD>, <20><><EFBFBD>ǰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><20>Լ<EFBFBD> <20>ڵ忡<DAB5><E5BFA1> ó<><C3B3> <20>κп<CEBA> 5<><35><EFBFBD><EFBFBD>Ʈ <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD>(nop)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>.
// 1-2. RegisterFunction<6F><6E> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 1-1<><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κп<CEBA> call <native function><3E><> ret<65><74> <20><><EFBFBD><EFBFBD><EFBFBD>ִ´<EFBFBD>. // 1-2. RegisterFunction<6F><6E> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><EFBFBD> 1-1<><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κп<CEBA> call <native function><3E><> ret<65><74> <20><><EFBFBD><EFBFBD>ִ´<D6B4>?
// <09>󸶳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><><EFBFBD><EFBFBD> <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> nop<6F><70> 2<><32> <20>̻<EFBFBD> <20>߰<EFBFBD><DFB0>ǰ<EFBFBD>, native call<6C><6C> <20><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. // <09>󸶳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><><EFBFBD>?<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> nop<6F><70> 2<><32> <20>̻<EFBFBD> <20>߰<EFBFBD><DFB0>ǰ<EFBFBD>, native call<6C><6C> <20><><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>.
// Empty Function<6F><6E> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. // Empty Function<6F><6E> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
// //
//<2F>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20>ּҸ<D6BC> <20>ٲ۴<D9B2>.( <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. ) //<2F>ٸ<EFBFBD> <20><><EFBFBD>?: <20><><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>?<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>?<EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20>ּҸ<D6BC> <20>ٲ۴<D9B2>.( <20><><EFBFBD><EFBFBD> <20>ӵ<EFBFBD><D3B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. )
// 2-1. <20><><EFBFBD><EFBFBD> <EFBFBD>Լ<EFBFBD> ȣ<><C8A3> <20>κ<EFBFBD><CEBA><EFBFBD> Relocation Tableó<65><C3B3> call table<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>صд<D8B5>. // 2-1. <20><><EFBFBD>?<EFBFBD>Լ<EFBFBD> ȣ<><C8A3> <20>κ<EFBFBD><CEBA><EFBFBD> Relocation Tableó<65><C3B3> call table<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>صд<D8B5>.
// 2-2. RegisterFunction<6F><6E> ȣ<><C8A3><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> call table<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> call<6C>ϰ<EFBFBD> <20>ִ<EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٲ۴<D9B2>. // 2-2. RegisterFunction<6F><6E> ȣ<><C8A3>Ǿ<EFBFBD><C7BE><EFBFBD>?<EFBFBD><EFBFBD> call table<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> call<6C>ϰ<EFBFBD> <20>ִ<EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٲ۴<D9B2>.
// call table<6C><65>? map< string, pair< SFuncType, vector<int> > > // call table<6C><65>? map< string, pair< SFuncType, vector<int> > >
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
@@ -490,9 +525,9 @@ void CVirtualMachine::RegisterFunction( ANY_FUNCTION FuncPtr, eDataType return
byte * pFunc = (byte*)GetFuncPtr( *m_pFunctionMap, szFuncName, funcType ); byte * pFunc = (byte*)GetFuncPtr( *m_pFunctionMap, szFuncName, funcType );
if( pFunc == NULL ) if( pFunc == NULL )
ErrorMessage2( "<EFBFBD>Լ<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>Լ<EFBFBD><D4BC><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. : %s", funcType.ToString( szFuncName ) ); ErrorMessage2( "<EFBFBD>Լ<EFBFBD> <20><>Ͽ<EFBFBD>?<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>Լ<EFBFBD><D4BC><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. : %s", funcType.ToString( szFuncName ) );
if( pFunc[3] != 0x90 ) //nop<6F><70> <20>ƴ<EFBFBD> <20><> if( pFunc[3] != 0x90 ) //nop<6F><70> <20>ƴ<EFBFBD> <20><>
ScriptSystemError( "RegisterFunction Error!!( at CVirtualMachine::RegisterFunction )" ); ScriptSystemError( "RegisterFunction Error!!( at CVirtualMachine::RegisterFunction )" );
int nArg = funcType.GetArgCount(); int nArg = funcType.GetArgCount();
@@ -528,7 +563,7 @@ ScriptFunc CVirtualMachine::GetScriptFunction( eDataType returnType, const char
void * pFunc = GetFuncPtr( *m_pFunctionMap, szFuncName, funcType ); void * pFunc = GetFuncPtr( *m_pFunctionMap, szFuncName, funcType );
if( pFunc == NULL ) if( pFunc == NULL )
ErrorMessage2( "<EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>. <20>Լ<EFBFBD><D4BC><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. : %s", funcType.ToString( szFuncName ) ); ErrorMessage2( "<EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>. <20>Լ<EFBFBD><D4BC><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. : %s", funcType.ToString( szFuncName ) );
return ScriptFunc( pFunc, funcType.m_data ); return ScriptFunc( pFunc, funcType.m_data );
} }

View File

@@ -1,3 +1,4 @@
echo copy file echo copy file
copy *.* S:\YouxiLand\ROW copy *.* S:\YouxiLand\ROW
copy *.* F:\YouxiLand\ROW
pause pause

BIN
Game/Client.exe Normal file

Binary file not shown.

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>