Restructure repository to include all source folders

Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
// Arrangement2.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
//
#include "stdafx.h"
#include "Arrangement2.h"
#include "Arrangement2Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CArrangement2App
BEGIN_MESSAGE_MAP(CArrangement2App, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CArrangement2App <20><><EFBFBD><EFBFBD>
CArrangement2App::CArrangement2App()
{
// TODO: <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// InitInstance<63><65> <20><><EFBFBD><EFBFBD> <20>߿<EFBFBD><DFBF><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CArrangement2App <20><>ü<EFBFBD>Դϴ<D4B4>.
CArrangement2App theApp;
// CArrangement2App <20>ʱ<EFBFBD>ȭ
BOOL CArrangement2App::InitInstance()
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>Ŵ<EFBFBD><C5B4>佺Ʈ<E4BDBA><C6AE> ComCtl32.dll <20><><EFBFBD><EFBFBD> 6 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>־<EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>, Windows XP <20>󿡼<EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> InitCommonControls()<29><> <20>ʿ<EFBFBD><CABF>մϴ<D5B4>.
// InitCommonControls()<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
InitCommonControls();
CWinApp::InitInstance();
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
AfxEnableControlContainer();
CArrangement2Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
else if (nResponse == IDCANCEL)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
return FALSE;
}
int CArrangement2App::ExitInstance()
{
GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
}

View File

@@ -0,0 +1,33 @@
// Arrangement2.h : PROJECT_NAME <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#pragma once
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // <20><> <20><>ȣ
// CArrangement2App:
// <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> Arrangement2.cpp<70><70> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
//
class CArrangement2App : public CWinApp
{
public:
CArrangement2App();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
virtual BOOL InitInstance();
// <20><><EFBFBD><EFBFBD>
ULONG_PTR m_gdiplusToken;
DECLARE_MESSAGE_MAP()
virtual int ExitInstance();
};
extern CArrangement2App theApp;

View File

@@ -0,0 +1,306 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
"LANGUAGE 18, 1\r\n"
"#pragma code_page(949)\r\n"
"#include ""res\\Arrangement2.rc2"" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>\r\n"
"#include ""afxres.rc"" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON "res\\Arrangement2.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Arrangement2 <20><><EFBFBD><EFBFBD>"
FONT 9, "<22><><EFBFBD><EFBFBD>", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "Arrangement Tool - Ver 1.2",IDC_STATIC,40,10,119,8,
SS_NOPREFIX
LTEXT "Copyright (c) 2002",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "Ȯ<><C8AE>",IDOK,178,7,50,16,WS_GROUP
END
IDD_ARRANGEMENT2_DIALOG DIALOGEX 0, 0, 807, 667
STYLE DS_SETFONT | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_VSCROLL | WS_HSCROLL | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "Arrangement2"
FONT 9, "<22><><EFBFBD><EFBFBD>", 400, 0, 0x81
BEGIN
GROUPBOX "<22><>ġ",IDC_STATIC5,665,281,94,33
LTEXT "X : ",IDC_STATICX,673,297,13,11
LTEXT "Z : ",IDC_STATICZ,713,297,14,11
EDITTEXT IDC_POSITIONX,685,296,22,12,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
EDITTEXT IDC_POSITIONZ,725,295,22,12,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
LTEXT "KID :",IDC_STATICKID,661,109,21,12
PUSHBUTTON "<22><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>(&C)",IDC_CREATESCRIPT,665,7,114,18
GROUPBOX "<22><><EFBFBD><EFBFBD>",IDC_STATIC4,654,266,135,134
LTEXT "<22><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> : ",IDC_STATICMONTNUM,665,325,52,11
EDITTEXT IDC_NUMINWORLD,717,321,39,14,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
COMBOBOX IDC_KIDCOMBO,681,106,104,88,CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
EDITTEXT IDC_NUMOFKID,689,168,94,14,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
CONTROL "KID(&1)",IDC_VISUALKID,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,669,356,35,10
GROUPBOX "ǥ<>ñ<EFBFBD><C3B1><EFBFBD>",IDC_STATIC6,661,342,95,46
LTEXT "<22≯<EFBFBD> : ",IDC_STATICNAME,661,127,22,8
LTEXT "<22><><EFBFBD><EFBFBD> : ",IDC_STATICLEVEL,661,143,22,8
LTEXT "Ŭ<><C5AC><EFBFBD><EFBFBD> : ",IDC_STATICCLASS,657,157,28,8
LTEXT "<22><>ü<EFBFBD><C3BC> : ",IDC_STATICOBJNUM,661,172,28,8
EDITTEXT IDC_CLASS,689,153,94,14,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
EDITTEXT IDC_LEVEL,689,139,94,14,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
EDITTEXT IDC_NAME,689,125,94,14,ES_CENTER | ES_AUTOHSCROLL |
ES_READONLY
GROUPBOX "<22>۾<EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC1,654,35,135,43
CONTROL "<22><>ġ(&A)",IDC_ARRANGEMENT,"Button",BS_AUTORADIOBUTTON |
BS_PUSHLIKE | WS_GROUP,665,50,30,19
CONTROL "<22><><EFBFBD><EFBFBD>(&D)",IDC_ERASE,"Button",BS_AUTORADIOBUTTON |
BS_PUSHLIKE,697,50,30,19
CONTROL "<22>׷<EFBFBD>(&G)",IDC_GROUP,"Button",BS_AUTORADIOBUTTON |
BS_PUSHLIKE,729,50,30,19
GROUPBOX "<22>׷<EFBFBD>",IDC_STATIC3,654,223,135,34
CONTROL "PID(&2)",IDC_VISUALPID,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,669,371,36,10
LTEXT "PID : ",IDC_STATICPID,661,243,19,8
COMBOBOX IDC_PIDCOMBO,681,239,54,88,CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> :",IDC_STATICRESPAWN,661,195,42,8
EDITTEXT IDC_RESPAWNEDIT,705,192,48,14,ES_RIGHT | ES_AUTOHSCROLL |
ES_NUMBER
CONTROL "LEVEL(&3)",IDC_VISUALLEVEL,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,709,356,41,9
EDITTEXT IDC_PARTYMEM_NUM,737,238,45,14,ES_CENTER |
ES_AUTOHSCROLL | ES_READONLY | ES_NUMBER
GROUPBOX "<22><>ġ",IDC_STATIC2,653,89,136,124
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041203b5"
BEGIN
VALUE "CompanyName", "(c) Youxiland"
VALUE "FileDescription", "Arrangement Tool"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "Arrangement2.exe"
VALUE "LegalCopyright", "(c) Youxiland. All rights reserved."
VALUE "OriginalFilename", "Arrangement2.exe"
VALUE "ProductName", "Arrangement Tool"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x412, 949
END
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 48
END
IDD_ARRANGEMENT2_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 6
RIGHTMARGIN, 792
VERTGUIDE, 63
VERTGUIDE, 112
TOPMARGIN, 7
BOTTOMMARGIN, 645
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//
IDR_MANIFEST RT_MANIFEST "res\\Arrangement2.manifest"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU1 MENU
BEGIN
POPUP "<22><> <20>ε<EFBFBD>(&F)"
BEGIN
POPUP "<22><>(&Z)"
BEGIN
MENUITEM "<22><>1 (<28>׷<EFBFBD><D7B7><EFBFBD> <20>ڽ<EFBFBD>Ʈ)", ID__ZONE1
MENUITEM "<22><>2 (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)", ID__ZONE2
MENUITEM "<22><>3 (<28><>Ʋ <20>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD>)", ID__ZONE3
MENUITEM "<22><>4 (<28><><EFBFBD>̳<EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>)", ID__ZONE4
MENUITEM "<22><>5 (<28><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)", ID__ZONE5
MENUITEM "<22><>8 (ī<><C4AB><EFBFBD><EFBFBD>)", ID__ZONE8
MENUITEM "<22><>9(<28>ű<EFBFBD><C5B1><EFBFBD>)", ID__ZONE9
MENUITEM "<22><>12 (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)", ID__ZONE12
MENUITEM "<22><>16 (<28><>ũ ī<><C4AB><EFBFBD><EFBFBD>)", ID__ZONE16
MENUITEM "<22><>100 (<28>Ʒ<EFBFBD><C6B7><EFBFBD>)", ID__ZONE100
END
MENUITEM SEPARATOR
MENUITEM "<22><><EFBFBD><EFBFBD>(&X)", ID_APP_EXIT
END
POPUP "<22><><EFBFBD><EFBFBD>(&V)"
BEGIN
POPUP "<22><>(&Z)"
BEGIN
MENUITEM "50% (<28>׸<EFBFBD><D7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> -_-)", ID__50
MENUITEM "100%", ID__100
MENUITEM "200%", ID__200
MENUITEM "400%", ID__400
MENUITEM "800%", ID__800
END
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, IDC_ERASE, VIRTKEY, CONTROL, NOINVERT
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_ABOUTBOX "Arrangement2 <20><><EFBFBD><EFBFBD>(&A)..."
END
#endif // <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
LANGUAGE 18, 1
#pragma code_page(949)
#include "res\Arrangement2.rc2" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
#include "afxres.rc" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,223 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="Arrangement2"
ProjectGUID="{8DB7D818-437F-47B5-8DAF-DF284B32A737}"
Keyword="MFCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../RylServerProject/BaseLibrary;"
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gdiplus.lib ijl15.lib"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
AdditionalIncludeDirectories="../../RylServerProject/BaseLibrary;"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
StringPooling="TRUE"
MinimalRebuild="FALSE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gdiplus.lib ijl15.lib"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath="Arrangement2.cpp">
</File>
<File
RelativePath="Arrangement2Dlg.cpp">
</File>
<File
RelativePath="DelimitedFile.cpp">
</File>
<File
RelativePath="stdafx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath="Arrangement2.h">
</File>
<File
RelativePath="Arrangement2Dlg.h">
</File>
<File
RelativePath="DelimitedFile.h">
</File>
<File
RelativePath="ijl.h">
</File>
<File
RelativePath="MemUtils.h">
</File>
<File
RelativePath="Resource.h">
</File>
<File
RelativePath="stdafx.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;jpg;jpeg;jpe;manifest">
<File
RelativePath="res\Arrangement2.ico">
</File>
<File
RelativePath="res\Arrangement2.manifest">
</File>
<File
RelativePath="Arrangement2.rc">
</File>
<File
RelativePath="res\Arrangement2.rc2">
</File>
</Filter>
<Filter
Name="Misc"
Filter="">
<File
RelativePath="ijl15.dll">
</File>
<File
RelativePath="ijl15.lib">
</File>
<File
RelativePath="MonsterProtoType.txt">
</File>
<File
RelativePath="Zone01.jpg">
</File>
</Filter>
</Files>
<Globals>
<Global
Name="RESOURCE_FILE"
Value="Arrangement2.rc"/>
</Globals>
</VisualStudioProject>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,311 @@
// Arrangement2Dlg.h : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#pragma once
#include "afxwin.h"
#include <map>
#include <vector>
using namespace std;
// CArrangement2Dlg <20><>ȭ <20><><EFBFBD><EFBFBD>
class CArrangement2Dlg : public CDialog
{
// <20><><EFBFBD><EFBFBD>
public:
CArrangement2Dlg(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum { IDD = IDD_ARRANGEMENT2_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>
protected:
HICON m_hIcon;
// <20>޽<EFBFBD><DEBD><EFBFBD> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnZoom(UINT nID);
afx_msg void OnUpdateZoom(CCmdUI *pCmdUI);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnBnClickedCreatescript();
afx_msg void OnBnClickedVisualkid();
afx_msg void OnCbnSelchangeKidcombo();
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnZone(UINT nID);
afx_msg void OnUpdateZone(CCmdUI* pCmdUI);
afx_msg void OnBnClickedVisualpid();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnAppExit();
afx_msg void OnCbnSelchangePidcombo();
protected:
virtual BOOL DestroyWindow();
public:
int m_nPositionX;
int m_nPositionY;
int m_nPositionZ;
int m_nProcess;
int m_nPID;
BOOL m_bVisualKID;
BOOL m_bVisualPID;
BOOL m_bVisualLevel;
CString m_strName;
CString m_strLevel;
CString m_strClass;
int m_nNumOfKID;
int m_nNumOfWorld;
CComboBox m_ctrKIDCombo;
BOOL m_bErase;
short m_wRespawnArea;
CComboBox m_ctrPIDCombo;
int m_nPartyMemNum;
// ------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
private:
enum _Const
{
MAP_PAGE_X = 1100,
MAP_PAGE_Z = 900,
SECTOR_SIZE = 315,
MAX_NUM = 0xffff,
ID_LENGTH = 8,
MONSTER_BIT = 0x80000000,
MONSTER_PARTY_BIT = 0x80000000,
MAX_STRING_LENGTH = 32,
MAX_PARTY_MEMBER_NUM = 10
};
enum Process
{
ARRANGEMENT = 0,
ERASE,
PARTY
};
enum MovingPattern
{
PATTERN_AREA = 0,
PATTERN_FIX,
PATTERN_ROUTE,
PATTERN_NONAREA
};
enum RespawnArea
{
DEFAULT_DISTANCE = 32
};
enum SpeacialKindID
{
// <20><>ȯ<EFBFBD><C8AF>
SUMMON_KINDLING = 3500,
SUMMON_FLAMEWALKER = 3506,
SUMMON_BURNINGSHIELD = 3513,
SUMMON_FIREWING = 3520,
SUMMON_DEATHBURN = 3527,
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
STATUE_NEUTRALITY = 4001,
STATUE_HUMAN_LOADING = 4002,
STATUE_HUMAN_COMPLETE = 4003,
STATUE_AKHAN_LOADING = 4004,
STATUE_AKHAN_COMPLETE = 4005,
// BattleGround Server <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
BG_STATUE_NEUTRALITY = 4006,
BG_STATUE_HUMAN_LOADING = 4007,
BG_STATUE_HUMAN_COMPLETE = 4008,
BG_STATUE_AKHAN_LOADING = 4009,
BG_STATUE_AKHAN_COMPLETE = 4010,
// <20><>ũ ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POWER_STATUE_NEUTRALITY = 4011, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POWER_STATUE_HUMAN_LOADING = 4012,
POWER_STATUE_HUMAN_COMPLETE = 4013,
POWER_STATUE_AKHAN_LOADING = 4014,
POWER_STATUE_AKHAN_COMPLETE = 4015,
INT_STATUE_NEUTRALITY = 4016, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
INT_STATUE_HUMAN_LOADING = 4017,
INT_STATUE_HUMAN_COMPLETE = 4018,
INT_STATUE_AKHAN_LOADING = 4019,
INT_STATUE_AKHAN_COMPLETE = 4020,
EXP_STATUE_NEUTRALITY = 4021, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
EXP_STATUE_HUMAN_LOADING = 4022,
EXP_STATUE_HUMAN_COMPLETE = 4023,
EXP_STATUE_AKHAN_LOADING = 4024,
EXP_STATUE_AKHAN_COMPLETE = 4025,
WEALTH_STATUE_NEUTRALITY = 4026, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
WEALTH_STATUE_HUMAN_LOADING = 4027,
WEALTH_STATUE_HUMAN_COMPLETE = 4028,
WEALTH_STATUE_AKHAN_LOADING = 4029,
WEALTH_STATUE_AKHAN_COMPLETE = 4030,
LIFE_EXTRACT_NEUTRALITY = 4031, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LIFE_EXTRACT_HUMAN_LOADING = 4032,
LIFE_EXTRACT_HUMAN_COMPLETE = 4033,
LIFE_EXTRACT_AKHAN_LOADING = 4034,
LIFE_EXTRACT_AKHAN_COMPLETE = 4035,
// <20><><EFBFBD><EFBFBD> KID (CreatureStructure.h <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ǵǾ<C7B5> <20><><EFBFBD><EFBFBD>)
MIN_STATUE_KID = 4001,
MAX_STATUE_KID = 4035
};
struct Monster
{
unsigned long m_dwCID;
int m_nKID;
int m_nPID;
int m_nLevel;
BOOL m_bScout;
int m_nMovingPattern;
short m_wRespawnArea;
int m_nPosX;
int m_nPosY;
int m_nPosZ;
Monster()
: m_dwCID(0), m_nKID(0), m_nPID(0), m_bScout(FALSE), m_nMovingPattern(0),
m_nPosX(0), m_nPosY(0), m_nPosZ(0), m_wRespawnArea(DEFAULT_DISTANCE), m_nLevel(0)
{ }
};
typedef struct _MonsterInfo
{
int m_nKID;
char m_strName[MAX_STRING_LENGTH];
char m_strLevel[MAX_STRING_LENGTH];
char m_strClass[MAX_STRING_LENGTH];
} MonsterInfo, *LPMonsterInfo;
int m_nMapStartX;
int m_nMapStartZ;
UINT_PTR m_nTimer;
bool m_bBlink;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
struct sStatueKey
{
sStatueKey(unsigned short wPosX, unsigned short wPosZ)
{
m_dwValue = static_cast<unsigned long>( (wPosX << 16) | wPosZ ) ;
}
operator unsigned long() const
{
return m_dwValue ;
}
unsigned long m_dwValue ;
} ;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
typedef vector<Monster *> MonsterList;
typedef std::map<int, MonsterInfo> MonsterInfoList;
typedef std::map<unsigned long, unsigned long> StatueIDMap; // <sStatueKey::m_dwValue, StatueCID>
MonsterList m_lstMonster;
MonsterInfoList m_lstMonsterInfo;
StatueIDMap m_mapStatueID;
// <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD> ũ<><C5A9>
unsigned long m_dwPageX;
unsigned long m_dwPageZ;
// <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD> <20><><EFBFBD>ſ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9> <20><> <20><><EFBFBD><EFBFBD>
int m_nPrevX;
int m_nPrevY;
int m_nNextX;
int m_nNextY;
int m_nGapX;
int m_nGapY;
// <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD> <20><>ġ
RECT m_rectWindow;
// <20>̹<EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD> <20><EFBFBD><E0BCAE> <20>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
bool m_bDragObject;
int m_DragObjectIndex;
CPoint DragScreenStartPoint;
bool m_bDragScreen;
// <20><>
UINT m_nSelectedZoom;
float m_fMagnification;
// <20><><EFBFBD>õ<EFBFBD>(<28>ε<EFBFBD><CEB5><EFBFBD> <20><>)
UINT m_nLoadedZone;
// <20>̹<EFBFBD><CCB9><EFBFBD>
BYTE* m_imageData;
SIZE m_imageDims;
int m_imageChannels;
BITMAPINFO m_bmi;
BYTE* m_bmp;
void CalculateNumOfKID(int nKID);
void CalculateNumOfPID();
void ClearBitmap();
void ClearData();
BOOL OpenJPGFile(LPCTSTR lpszPathName);
void RGBA_FPX_to_BGRA(BYTE* data,int width,int height);
void InitialUpdate();
void LoadScript(void);
void DrawOutLineText(Graphics& graphics, Font& font, PointF pointF, wchar_t* strText);
BOOL IsStatue(unsigned short wKID) CONST;
template <class T>
void SetObjectPos(T* pObject);
public:
afx_msg void OnSize(UINT nType, int cx, int cy);
};

View File

@@ -0,0 +1,327 @@
#ifdef _BASE_LIBRARY_
#include "../stdafx.h"
#endif
#include "DelimitedFile.h"
// TODO: CDelimitedFile::Write <20><20><><EFBFBD><EFBFBD>
CDelimitedFile::CDelimitedFile(const char* pszDelimiter)
: m_fpFile( NULL ), m_dwColumn( 0 ), m_dwColumnCount( 0 )
{
strncpy(m_szDelimiter, pszDelimiter, MAX_DELIMITER_NUM);
}
CDelimitedFile::~CDelimitedFile()
{
Close();
}
BOOL CDelimitedFile::Open( LPCSTR szFilename, int nHeadLine, UINT nOpenFlags )
{
m_fpFile = ::fopen( szFilename, (nOpenFlags & modeCreate) ? "wt" : "rt" );
if (NULL == m_fpFile)
{
#ifdef _BASE_LIBRARY_
g_Log.ErrLog(__FUNCTION__, __FILE__, __LINE__, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> %s<><73> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.", szFilename);
#endif
return FALSE;
}
if (nHeadLine > -1) {
for (int i=0; i<nHeadLine; ++i) {
ReadLine();
}
CHAR szColumnName[256];
for( m_dwColumnCount = 0; ReadString( szColumnName, 255 ); m_dwColumnCount++ ) {
// TODO: szColumnName<6D><65> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>߰<EFBFBD>
m_ColumnNames.push_back(szColumnName);
}
}
return TRUE;
}
void CDelimitedFile::Close( void )
{
if( m_fpFile ) {
::fclose( m_fpFile );
m_fpFile = NULL;
}
}
BOOL CDelimitedFile::ReadLine( void )
{
while( ::fgets( m_szLine, MAX_LINE_LENGTH, m_fpFile ) ) {
if( (m_szLine[0]) && (m_szLine[0] != ';') ) {
m_dwColumn = 0;
memcpy(m_szBackupLine, m_szLine, MAX_LINE_LENGTH);
return TRUE;
}
}
return FALSE;
}
BOOL CDelimitedFile::ReadData( double &dNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
dNumber = atof( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( float &fNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
fNumber = (float) atof( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( unsigned long &fNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
fNumber = (unsigned long) atol( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( int &iNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
iNumber = atoi( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( unsigned short &iNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
iNumber = (unsigned short)atoi( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( short &iNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
iNumber = (short)atoi( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( unsigned char &iNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
iNumber = (unsigned char)atoi( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( char &iNumber )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
iNumber = (char)atoi( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( __int64 &i64Number )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
i64Number = _atoi64( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadData( DWORD64 &i64Number )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
i64Number = (DWORD)_atoi64( pszData );
return TRUE;
}
BOOL CDelimitedFile::ReadString( char *szString, DWORD dwSize )
{
CHAR *pszData = ::strtok( (m_dwColumn++) ? NULL : m_szLine, m_szDelimiter );
if( !pszData || !(*pszData) )
return FALSE;
strncpy( szString, pszData, dwSize );
return TRUE;
}
BOOL CDelimitedFile::ReadData(const char *szField, double &dNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( dNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, float &fNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( fNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, unsigned long &fNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( fNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, int &iNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( iNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, unsigned short &iNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( iNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, short &iNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( iNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, unsigned char &iNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( iNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, char &iNumber )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( iNumber );
}
BOOL CDelimitedFile::ReadData(const char *szField, __int64 &i64Number )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( i64Number );
}
BOOL CDelimitedFile::ReadData(const char *szField, DWORD64 &i64Number )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadData( i64Number );
}
BOOL CDelimitedFile::ReadString(const char *szField, char *szString, DWORD dwSize )
{
int nSearch;
if( ((nSearch = FindColumn( szField )) == -1) )
return FALSE;
GotoColumn( nSearch );
return ReadString( szString, dwSize );
}
BOOL CDelimitedFile::GotoColumn( int nColumn )
{
CHAR* pszPos = 0;
if(nColumn < 0 || (DWORD)nColumn > m_dwColumnCount)
return FALSE;
if( (m_dwColumn == (DWORD) nColumn) )
return TRUE;
if( nColumn == 0 ) {
m_dwColumn = 0;
strtok(m_szLine, m_szDelimiter);
}
else {
for(;m_dwColumn < m_dwColumnCount && nColumn != m_dwColumn; ++m_dwColumn )
pszPos = strtok(0, m_szDelimiter);
if(m_dwColumn == m_dwColumnCount) {
memcpy(m_szLine, m_szBackupLine, MAX_LINE_LENGTH);
pszPos = strtok(m_szLine, m_szDelimiter);
for(m_dwColumn = 1; m_dwColumn < (DWORD)nColumn && nColumn != m_dwColumn; ++m_dwColumn )
pszPos = strtok(NULL, m_szDelimiter );
}
}
return TRUE;
}
int CDelimitedFile::FindColumn(const char *szField )
{
// list<73><74><EFBFBD><EFBFBD> ã<><C3A3>
const std::basic_string<char>::size_type npos = -1;
for(std::basic_string<char>::size_type nCount = 0; nCount < m_ColumnNames.size(); ++nCount) {
if(npos != m_ColumnNames[nCount].find(szField)) {
return (int)nCount;
}
}
return npos;
}

View File

@@ -0,0 +1,82 @@
#pragma once
#include <winsock2.h>
#include <windows.h>
#include <vector>
#include <string>
class CDelimitedFile
{
public:
// MAX Delimiter num is 32;
CDelimitedFile(const char* pszDelimiter = "\t");
~CDelimitedFile();
enum {
MAX_LINE_LENGTH = 8192,
MAX_DELIMITER_NUM = 32
};
enum OpenFlags {
modeRead = (int) 0x00000,
modeCreate = (int) 0x01000
};
private:
FILE *m_fpFile;
DWORD m_dwColumn;
DWORD m_dwColumnCount;
CHAR m_szLine[MAX_LINE_LENGTH];
CHAR m_szBackupLine[MAX_LINE_LENGTH];
char m_szDelimiter[MAX_DELIMITER_NUM];
std::vector<std::string> m_ColumnNames;
private:
int FindColumn(const char *szField );
BOOL GotoColumn( int nColumn );
public:
BOOL Open(LPCSTR szFilename, int nHeadLine = -1, UINT nOpenFlags = modeRead );
BOOL ReadLine();
BOOL ReadData(double &dNumber);
BOOL ReadData(float &fNumber);
BOOL ReadData(unsigned long &fNumber);
BOOL ReadData(int &iNumber);
BOOL ReadData(unsigned short &iNumber);
BOOL ReadData(short &iNumber);
BOOL ReadData(unsigned char &iNumber);
BOOL ReadData(char &iNumber);
BOOL ReadData(__int64 &i64Number);
BOOL ReadData(DWORD64 &i64Number);
BOOL ReadString(char *szString, DWORD dwSize);
BOOL ReadData(const char *szField, double &dNumber);
BOOL ReadData(const char *szField, float &fNumber);
BOOL ReadData(const char *szField, unsigned long &fNumber);
BOOL ReadData(const char *szField, int &iNumber);
BOOL ReadData(const char *szField, unsigned short &iNumber);
BOOL ReadData(const char *szField, short &iNumber);
BOOL ReadData(const char *szField, unsigned char &iNumber);
BOOL ReadData(const char *szField, char &iNumber);
BOOL ReadData(const char *szField, __int64 &i64Number);
BOOL ReadData(const char *szField, DWORD64 &i64Number);
BOOL ReadString(const char *szField, char *szString, DWORD dwSize);
void Close() ;
};

View File

@@ -0,0 +1,92 @@
#ifndef _MEMUTILS_H_
#define _MEMUTILS_H_
#include <winsock2.h>
#include <windows.h>
#define SAFE_FREE(p) { if (p) { free(p); (p) = NULL; } }
#define SAFE_DELETE(p) { if (p) { delete (p); (p) = NULL; } }
#define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p) = NULL; } }
#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p) = NULL; } }
#define SAFE_CLOSESOCK(p) { if (INVALID_SOCKET != (p)) { closesocket(p); (p) = INVALID_SOCKET; } }
#define SAFE_CLOSEHANDLE(p) { if (INVALID_HANDLE_VALUE != (p)) { CloseHandle(p); (p) = INVALID_HANDLE_VALUE; } }
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC>ڿ<EFBFBD>, <20>˰<EFBFBD><CBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
namespace MemUtils
{
// <20><>ü <20><><EFBFBD><EFBFBD>
template<typename Object>
struct fnCreate {
Object* operator() () {
return new Object;
}
};
// <20><>ü <20><><EFBFBD><EFBFBD>
struct fnDelete {
template<typename Object>
void operator() (Object* pObject) {
delete pObject;
}
};
// Map<61><70> Pair<69><72> <20>ִ<EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD>
struct fnDelete2nd {
template<typename Pair>
void operator() (Pair& pair) {
delete pair.second;
}
};
// <20><20><><EFBFBD><EFBFBD>
struct fnDeleteArray {
template<typename Object>
void operator() (Object* pObject) {
delete [] pObject;
}
};
// Release <20><>.
struct fnRelease {
template<typename Object>
void operator() (Object* pObject) {
pObject->Release();
}
};
// Map<61><70> Pair<69><72> <20>ִ<EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD>.
struct fnRelease2nd {
template<typename Pair>
void operator() (Pair& pair) {
pair.second->Release();
}
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true<75≯<EFBFBD> <20><><EFBFBD><20>ϴ<EFBFBD> iterator.
template<typename InputIterator, typename OutputIterator, typename Predicate>
inline OutputIterator copy_if(InputIterator begin, InputIterator end, OutputIterator destBegin, Predicate Pred) {
while(begin != end) {
if(Pred(*begin)) *destBegin++ = *begin;
++begin;
}
return destBegin;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>̳ʸ<CCB3> <20>޾<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> delete<74><65> <20><><EFBFBD><EFBFBD>. DestructType <20><> fnDelete<74><65> fnRelease<73><65> <20>ϳ<EFBFBD>
template<typename ContainerType, typename DesturctType, typename LockType>
inline void ClearContainer(ContainerType& Container, DesturctType fnDestructor, LockType& Lock) {
LockType::Syncronize sync(Lock);
std::for_each(Container.begin(), Container.end(), fnDestructor);
Container.clear();
}
// <20><><EFBFBD><EFBFBD><EFBFBD>̳ʸ<CCB3> <20>޾<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> delete<74><65> <20><><EFBFBD><EFBFBD>. DestructType <20><> fnDelete<74><65> fnRelease<73><65> <20>ϳ<EFBFBD>
template<typename ContainerType, typename DestructType>
inline void ClearContainer(ContainerType& Container, DestructType fnDestructor) {
std::for_each(Container.begin(), Container.end(), fnDestructor);
Container.clear();
}
};
#endif

View File

@@ -0,0 +1,290 @@
1 <09><> <20><><EFBFBD><EFBFBD> MON_Seaman.GCMDS 2 Defender 24 44 24 216 35 1 30 -30 40 -40 660 0.191804878 15 1 17 22 2 3 0 0 0.7 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 200 340 5 8.5 1 0 X O X O 15000 2352 0 0 0 1000 80 80 80 140 159 2 20
2 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Seaman.GCMDS 2 Defender 24 48.4 24 230.4 35 1 36 -36 48 -48 148 0.18154083 17 2 21 26 6 5 2 0 0.7 4 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 245 9000 6.125 10.775 1.2 0 X X X O 15000 2353 0 0 0 1000 80 80 80 140 158 2 20
3 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Seaman_warrior.GCMDS 2 Warrior 24 48.4 24 230.4 35 1 36 -36 48 -48 148 0.18154083 23 3 25 30 9 6 3 0 0.8 4 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 306 521 7.65 13.025 1.2 1 X X X O 15000 2354 0 0 0 1000 80 80 80 140 157 2 20
4 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Daramji.GCMDS 2 Defender 12 37.8 12 100.8 40 1 12 -16 56 -44 144 0.186532492 15 1 17 22 2 3 0 0 0.8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 186 340 4.65 8.5 0.8 0 X X X O 15000 2355 0 0 0 1000 80 80 80 140 159 2 20
5 <09>׷<EFBFBD><D7B7>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Bronji.GCMDS 2 Defender 24 75.6 24 201.6 40 1 12 -16 56 -44 144 0.186532492 17 2 21 26 6 5 2 0 0.8 4 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 245 431 6.125 10.775 0.8 0 X X X O 15000 2356 0 0 0 1000 80 80 80 140 158 2 20
6 <09><> MON_Bat.GCMDS 2 Warrior 15 52 15 135 24 1 30 -30 0 -80 180 0.149502979 23 3 25 30 9 6 3 0 0.5 4 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 306 521 7.65 13.025 1 1 X X X O 15000 2357 0 0 0 1000 80 80 80 140 157 2 20
7 <09><><EFBFBD><EFBFBD> <20>׷<EFBFBD> MON_Bulte.GCMDS 2 Defender 16 72 16 72 35 1 20 -20 25 -25 125 0.214525312 34 4 25 32 11 8 4 0 0.8 4 0 3 1 0 0 0 0 0 0 0 0 0 0 1 1 374 614 9.35 15.35 1 1 X X X O 15000 2358 0 0 0 1000 80 80 80 140 156 2 20
8 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> MON_Lizardman.GCMDS 2 Warrior 30 99.75 30 261 60 1 49.5 -40.5 148.5 -72 172 0.156407418 49 5 28 35 13 8 5 0 1.6 4 0 3 2 0 0 0 0 0 0 0 0 0 0 1 1 414 655 10.35 16.375 0.9 1 X X X O 15000 2359 0 0 0 1000 80 80 80 140 155 2 20
9 <09><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD> MON_Spider.GCMDS 2 Warrior 32 95.2 32 100.8 30 1 56 -56 52.5 -63 163 0.164975731 49 5 28 35 13 8 5 0 0.8 4 0 3 2 0 0 0 0 0 0 0 0 0 0 1 1 414 655 10.35 16.375 0.7 1 X X X O 15000 2360 0 0 0 1000 80 80 80 140 155 2 20
10 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ MON_Seaman_warrior.GCMDS 2 Warrior 24 52.8 24 244.8 35 1 42 -42 56 -56 156 0.172314908 69 6 31 38 14 10 6 0 1 4 0 4 2 0 0 0 0 0 0 0 0 0 0 1 1 486 746 12.15 18.65 1.4 2 X X X O 15000 2361 0 0 0 1000 80 80 80 140 154 2 20
11 <09>׷<EFBFBD> MON_Bulte.GCMDS 2 Defender 16 108 16 96 35 1 40 -40 50 -50 150 0.179143389 95 7 34 41 17 11 8 0 1 4 0 5 2 0 0 0 0 0 0 0 0 0 0 1 1 568 840 14.2 21 2 2 X X X O 15000 2362 0 0 0 1000 80 80 80 140 153 2 20
12 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Daramji.GCMDS 2 Defender 12 42 12 108 40 1 15 -20 70 -55 155 0.173416769 69 6 31 38 14 10 6 0 1 4 0 4 2 0 0 0 0 0 0 0 0 0 0 1 1 490 746 12.25 18.65 1 2 X X X O 15000 2363 0 0 0 1000 80 80 80 140 154 2 20
13 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD>̼<EFBFBD> MON_Goblin.GCMDS 2 Warrior 32 112 24 216 30 1 35 -35 15 -40 140 0.191804878 128 8 36 45 18 13 9 0 1 4 0 5 3 0 0 0 0 0 0 0 0 0 0 1 1 650 932 16.25 23.3 1 2 X X X O 15000 2364 0 0 0 1000 80 80 80 140 152 2 20
14 <09><><EFBFBD><EFBFBD> MON_Chulpawn.GCMDS 2 Defender 32 112 32 112 40 1 50 -50 25 -150 250 0.107813954 168 9 37 46 19 13 9 0 1.3 4 0 6 3 0 0 0 0 0 0 0 0 0 0 1 1 709 973 17.725 24.325 1 3 X X X O 15000 2365 0 0 0 1000 80 80 80 140 151 2 20
15 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD> MON_Spider.GCMDS 2 Warrior 32 112 32 112 30 1 80 -80 75 -90 190 0.141682403 168 9 37 46 19 13 9 0 1.1 4 0 6 3 0 0 0 0 0 0 0 0 0 0 1 1 709 973 17.725 24.325 1 3 X X X O 15000 2366 0 0 0 1000 80 80 80 140 151 2 20
16 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Goblin.GCMDS 2 Warrior 32 112 24 216 30 1 35 -35 15 -40 190 0.141682403 263 10 49 58 25 14 13 0 1.2 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 793 1070 19.825 26.75 1 3 X X X O 15000 2367 0 0 0 1000 80 80 80 140 150 2 20
17 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Goblin_warrior.GCMDS 2 Defender 32 112 24 216 50 1 35 -35 15 -40 190 0.141682403 319 11 48 57 25 17 14 0 1.9 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 917 1162 22.925 29.05 1 3 X X X O 20000 2368 0 0 0 1000 80 80 80 140 149 2 20
18 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_ZombieDog.GCMDS 2 Warrior 40 120 40 120 40 1 30 -30 15 -145 295 0.091412092 319 11 52 61 27 16 15 0 1.6 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 887 1162 22.175 29.05 1 3 X X X O 20000 2369 0 0 0 1000 80 80 80 140 149 2 20
19 <09><><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD> MON_Spider.GCMDS 2 Warrior 32 123.2 32 119.4666667 30 1 96 -96 90 -108 258 0.104481861 382 12 55 66 30 17 17 0 1.2 4 0 8 5 0 0 0 0 0 0 0 0 0 0 1 1 994 1254 24.85 31.35 1.2 4 X O X O 20000 2370 0 0 0 1000 80 80 80 140 148 2 20
20 <09><><EFBFBD><EFBFBD> MON_Zombie.GCMDS 2 Defender 60 160 60 160 60 1 25 -25 20 -35 185 0.145487999 382 12 48 59 26 19 15 0 2.3 4 0 8 5 0 0 0 0 0 0 0 0 0 0 1 1 1035 1254 25.875 31.35 1 4 X O X O 20000 2371 0 0 0 1000 80 80 80 140 148 2 20
21 <09><><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Skeleton.GCMDS 2 Warrior 29 85.85 30 243 36 1 24.5 -35 17.5 -45.5 196 0.137369775 456 13 57 68 30 18 17 0 1.5 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1062 1302 26.55 32.55 0.7 4 X X X O 20000 2372 0 0 0 1000 80 80 80 140 147 2 20
22 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Wolf_attacker.GCMDS 2 Warrior 32 100.8 24 201.6 40 1 16 -16 36 -112 262 0.102891755 456 13 57 68 30 18 17 0 1.6 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1062 1302 26.55 32.55 0.8 4 X X X O 20000 2373 0 0 0 1000 80 80 80 140 147 2 20
23 <09><> <20>׷<EFBFBD> MON_Bulte.GCMDS 2 Defender 16 126 16 108 35 1 50 -50 62.5 -62.5 213 0.126460099 456 13 50 61 27 19 16 0 1.3 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1108 1302 27.7 32.55 2.5 4 X X X O 20000 2374 0 0 0 1000 80 80 80 140 147 2 20
24 <09><><EFBFBD><EFBFBD> MON_Pawnpawn.GCMDS 2 Defender 24 84 24 216 35 1 75 -60 10 -60 210 0.128257941 540 14 53 64 29 21 17 0 1.3 4 0 9 6 0 0 0 0 0 0 0 0 0 0 1 1 1231 1395 30.775 34.875 1 4 X O X O 20000 2375 0 0 0 1000 80 80 80 140 146 2 20
25 <09><><EFBFBD><EFBFBD><E5B8B6>ũ MON_Skullbat.GCMDS 2 Warrior 33 126.5 33 316.8 42 1 102 -162 108 -42 192 0.140215172 540 14 62 73 33 19 19 0 1.7 4 0 9 6 0 0 0 0 0 0 0 0 0 0 1 1 1170 1395 29.25 34.875 1.2 4 X O X O 20000 2376 0 0 0 1000 80 80 80 140 146 2 20
26 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Chulpawn.GCMDS 2 Defender 32 117.6 32 115.7333333 40 1 55 -55 27.5 -165 315 0.085621174 540 14 53 64 29 21 17 0 1.5 4 0 9 6 0 0 0 0 0 0 0 0 0 0 1 1 1231 1395 30.775 34.875 1.1 4 X O X O 20000 2377 0 0 0 1000 80 80 80 140 146 2 20
27 Ÿ<><C5B8>ƼŬ MON_Titug.GCMDS 2 Defender 32 100.8 32 268.8 30 1 76 -76 64 -80 230 0.117152517 634 15 57 68 32 22 20 0 1.1 5 0 10 6 0 0 0 0 0 0 0 0 0 0 1 1 1349 1487 33.725 37.175 0.8 5 X X X O 20000 2378 0 0 0 1000 80 80 80 140 145 2 20
28 <09><><EFBFBD>̾<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Bronji.GCMDS 2 Defender 24 84 24 216 40 1 15 -20 70 -55 205 0.1313704 739 16 59 72 33 24 21 0 1.5 5 0 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1496 1588 37.4 39.7 1 5 X O X O 20000 2379 0 0 0 1000 80 80 80 140 144 2 20
29 <09><><EFBFBD><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD> MON_ZombieDog.GCMDS 2 Warrior 40 138 40 132 40 1 39 -39 19.5 -188.5 339 0.079571295 739 16 68 81 37 22 23 0 1.6 5 0 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1412 1588 35.3 39.7 1.3 5 X O X O 20000 2380 0 0 0 1000 80 80 80 140 144 2 20
30 <09><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><> MON_Zombie.GCMDS 2 Defender 60 160 60 160 60 1 25 -25 20 -35 185 0.145487999 739 16 59 72 33 24 21 0 2.3 5 0 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1496 1588 37.4 39.7 1 5 X O X O 20000 2381 0 0 0 1000 80 80 80 140 144 2 20
31 Ÿ<><C5B8>ƽ MON_Titug.GCMDS 2 Defender 32 112 32 288 30 1 95 -95 80 -100 250 0.107813954 855 17 61 74 34 25 23 0 1.1 5 0 11 7 0 0 0 0 0 0 0 0 0 0 1 1 1588 1631 39.7 40.775 1 5 X X X O 20000 2382 0 0 0 1000 80 80 80 140 143 2 20
32 <09><><EFBFBD>̷<EFBFBD><CCB7><EFBFBD> MON_Skeleton.GCMDS 2 Warrior 29 101 30 270 36 1 35 -50 25 -65 215 0.125289215 984 18 74 87 41 24 25 0 1.5 5 0 12 7 0 0 0 0 0 0 0 0 0 0 1 1 1625 1724 40.625 43.1 1 6 X O X O 20000 2383 0 0 0 1000 80 80 80 140 142 2 20
33 <09><><EFBFBD><EFBFBD> <20><> MON_Wolf.GCMDS 2 Defender 32 100.8 24 201.6 40 1 16 -16 36 -116 266 0.101349251 984 18 64 77 36 26 24 0 1.5 5 0 12 7 0 0 0 0 0 0 0 0 0 0 1 1 1736 1724 43.4 43.1 0.8 6 X O X O 20000 2384 0 0 0 1000 80 80 80 140 142 2 20
34 <09><><EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD> MON_Amphibian.GCMDS 2 Warrior 42 139.65 42 365.4 42 1 40.5 -49.5 180 -54 204 0.13201106 984 18 74 87 41 24 25 0 1.7 5 0 12 7 0 0 0 0 0 0 0 0 0 0 1 1 1625 1724 40.625 43.1 0.9 6 X O X O 20000 2385 0 0 0 1000 80 80 80 140 142 2 20
35 <09><><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Zombie.GCMDS 2 Defender 60 192 60 181.3333333 60 1 35 -35 28 -49 199 0.135310175 1125 19 68 81 39 28 26 0 2.3 5 0 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1877 1826 46.925 45.65 1.4 6 X X X O 20000 2386 0 0 0 1000 80 80 80 140 141 2 20
36 <09>ƽ <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD> MON_Spider.GCMDS 2 Warrior 32 134.4 32 126.9333333 30 1 112 -112 105 -126 276 0.097687745 1125 19 77 90 43 25 27 0 1.2 5 0 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1758 1826 43.95 45.65 1.4 6 X X X O 20000 2387 0 0 0 1000 80 80 80 140 141 2 20
37 <09><><EFBFBD>̾<EFBFBD>Ʈ <20>׷<EFBFBD> MON_Bulte.GCMDS 2 Defender 16 144 16 120 35 1 60 -60 75 -75 225 0.119744979 1125 19 68 81 39 28 26 0 1.3 5 0 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1877 1826 46.925 45.65 3 6 X X X O 20000 2388 0 0 0 1000 80 80 80 140 141 2 20
38 <09><><EFBFBD>̷<EFBFBD>Ż <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Skeleton_warrior.GCMDS 2 Defender 40 140 24 216 40 1 50 -65 60 -65 215 0.125289215 1280 20 68 83 40 30 27 0 1.5 5 0 13 8 0 0 0 0 0 0 0 0 0 0 1 1 2056 1920 51.4 48 1 6 X O X O 20000 2389 0 0 0 1000 80 80 80 140 140 2 20
39 <09>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Beholder.GCMDS 2 Defender 32 95.2 24 194.4 40 1 66.5 -84 80.5 -84 234 0.115157837 1449 21 70 85 40 30 27 0 1.5 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 0.7 7 X X X O 20000 2390 0 0 0 1000 80 80 80 140 139 2 20
40 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ŀ MON_Wolf_attacker.GCMDS 2 Warrior 32 112 24 216 40 1 20 -20 45 -140 290 0.092984162 1280 20 79 94 45 27 28 0 1.6 5 0 13 8 0 0 0 0 0 0 0 0 0 0 1 1 1912 1920 47.8 48 1 6 X O X O 20000 2391 0 0 0 1000 80 80 80 140 140 2 20
41 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Wolf.GCMDS 2 Defender 32 112 24 216 40 1 20 -20 45 -145 295 0.091412092 1449 21 70 85 40 30 27 0 1.5 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 1 7 X X X O 20000 2392 0 0 0 1000 80 80 80 140 139 2 20
42 <09><><EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Amphibian.GCMDS 2 Warrior 42 154.35 42 390.6 42 1 49.5 -60.5 220 -66 216 0.124711848 1280 20 79 94 45 27 28 0 1.7 5 0 13 8 0 0 0 0 0 0 0 0 0 0 1 1 1912 1920 47.8 48 1.1 6 X O X O 20000 2393 0 0 0 1000 80 80 80 140 140 2 20
43 <09><><EFBFBD>Ǻ<EFBFBD><C7BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Amphibian_sorcerer.GCMDS 2 Warrior 42 147 42 378 40 120 45 -55 200 -60 210 0.128257941 1449 21 81 96 46 27 29 0 1.6 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2015 1963 50.375 49.075 1 7 X X X O 20000 2394 0 0 0 1000 80 80 80 140 139 2 20
44 ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Carrion.GCMDS 2 Defender 24 75.6 24 201.6 32 1 36 -36 84 -204 354 0.076205556 1449 21 70 85 40 30 27 0 1.2 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 0.8 7 X X X O 20000 2395 0 0 0 1000 80 80 80 140 139 2 20
45 <09>ؼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Skeleton_warrior.GCMDS 2 Defender 40 140 24 216 40 1 50 -65 60 -65 215 0.125289215 1632 22 73 88 43 32 29 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2346 2068 58.65 51.7 1 7 X O X O 20000 2396 0 0 0 1000 80 80 80 140 138 2 20
46 <09>ؼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Skeleton_warrior.GCMDS 2 Defender 40 140 24 216 40 1 50 -65 60 -65 215 0.125289215 1830 23 77 92 45 33 30 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2511 2162 62.775 54.05 1 7 X X X O 20000 2397 0 0 0 1000 80 80 80 140 137 2 20
47 <09><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><>Ŀ<EFBFBD>̼<EFBFBD> MON_Lizardman.GCMDS 2 Warrior 30 99.75 30 261 60 1 49.5 -40.5 148.5 -72 222 0.121356149 1449 21 81 96 46 27 29 0 2.5 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2015 1963 50.375 49.075 0.9 7 X X X O 20000 2398 0 0 0 1000 80 80 80 140 139 2 20
48 <09><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Lizardman.GCMDS 2 Warrior 30 110.25 30 279 60 1 60.5 -49.5 181.5 -88 238 0.113229817 1632 22 87 102 49 28 31 0 2.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2164 2068 54.1 51.7 1.1 7 X O X O 20000 2399 0 0 0 1000 80 80 80 140 138 2 20
49 <09><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Lizardman_warrior.GCMDS 2 Defender 32 117.6 24 223.2 45 1 99 -99 132 -88 238 0.113229817 1830 23 77 92 45 33 30 0 1.7 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2511 2162 62.775 54.05 1.1 7 X X X O 20000 2400 0 0 0 1000 80 80 80 140 137 2 20
50 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> mon_scorpion.GCMDS 2 Defender 32 84 32 240 35 1 75 -75 65 -90 240 0.112289772 1449 21 70 85 40 30 27 0 1.3 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 0.5 7 X X X O 20000 2401 0 0 0 1000 80 80 80 140 139 2 20
51 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Eloyee.GCMDS 2 Warrior 30 105 30 270 61 1 70 -70 20 -70 220 0.122454513 1632 22 87 102 49 28 31 0 2.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2164 2068 54.1 51.7 1 7 X O X O 20000 2402 0 0 0 1000 80 80 80 140 138 2 20
52 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Eloyee.GCMDS 2 Warrior 30 115.5 30 288 61 1 84 -84 24 -84 234 0.115157837 1830 23 90 105 51 30 33 0 2.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2318 2162 57.95 54.05 1.2 7 X X X O 20000 2403 0 0 0 1000 80 80 80 140 137 2 20
53 <09><>Ʋ<EFBFBD><C6B2> MON_Labstar.GCMDS 2 Defender 32 100.8 24 201.6 32 1 96 -52 32 -128 278 0.09698692 1449 21 70 85 40 30 27 0 1.2 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 0.8 7 X X X O 20000 2404 0 0 0 1000 80 80 80 140 139 2 20
54 <09><><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Daramji.GCMDS 2 Defender 12 48.3 12 118.8 40 1 19.5 -26 91 -71.5 222 0.121356149 1632 22 73 88 43 32 29 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2346 2068 58.65 51.7 1.3 7 X O X O 20000 2405 0 0 0 1000 80 80 80 140 138 2 20
55 <09><EFBFBD><E5B7B9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Bronji.GCMDS 2 Defender 24 96.6 24 237.6 40 1 19.5 -26 91 -71.5 222 0.121356149 1830 23 77 92 45 33 30 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2511 2162 62.775 54.05 1.3 7 X X X O 20000 2406 0 0 0 1000 80 80 80 140 137 2 20
56 <09>ں<EFBFBD><DABA><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Field.GCMDS 2 Defender 32 112 24 216 40 1 60 -75 110 -90 240 0.112289772 2044 24 79 96 47 35 32 0 1.5 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2723 2256 68.075 56.4 1 8 X O X O 20000 2407 0 0 0 1000 80 80 80 140 136 2 20
57 <09>ں<EFBFBD><DABA><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Field.GCMDS 2 Defender 32 123.2 24 230.4 40 1 72 -90 132 -108 258 0.104481861 2274 25 81 98 47 35 32 0 1.5 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 1.2 8 X X X O 20000 2408 0 0 0 1000 80 80 80 140 135 2 20
58 ų<><C5B3><EFBFBD><EFBFBD>Ʋ MON_Labstar.GCMDS 2 Defender 32 112 24 216 32 1 120 -65 40 -160 310 0.08699909 2044 24 79 96 47 35 32 0 1.2 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2723 2256 68.075 56.4 1 8 X O X O 20000 2409 0 0 0 1000 80 80 80 140 136 2 20
59 ų<><C5B3><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD> MON_Labstar.GCMDS 2 Defender 32 117.6 24 223.2 32 1 132 -71.5 44 -176 326 0.082738074 2274 25 81 98 47 35 32 0 1.2 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 1.1 8 X X X O 20000 2410 0 0 0 1000 80 80 80 140 135 2 20
60 <09><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20>ξ<EFBFBD> <20><><EFBFBD><EFBFBD> MON_Lizardman_warrior.GCMDS 2 Defender 32 112 24 216 45 1 90 -90 120 -80 230 0.117152517 2044 24 79 96 47 35 32 0 1.7 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2723 2256 68.075 56.4 1 8 X O X O 20000 2411 0 0 0 1000 80 80 80 140 136 2 20
61 <09><>ũ <20><>ī<EFBFBD><C4AB>Ʈ MON_Orc.GCMDS 2 Warrior 32 106.4 24 208.8 40 1 40.5 -45 18 -36 186 0.144710663 2044 24 92 109 53 31 35 0 1.6 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2498 2256 62.45 56.4 0.9 8 X O X O 20000 2412 0 0 0 1000 80 80 80 140 136 2 20
62 <09><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_NightWolf_attacker.GCMDS 2 Warrior 32 112 24 216 40 1 25 -25 35 -150 300 0.089892233 2274 25 95 112 54 32 35 0 1.6 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2621 2312 65.525 57.8 1 8 X X X O 20000 2413 0 0 0 1000 80 80 80 140 135 2 20
63 <09><>Ƽ<EFBFBD><C6BC> MON_Skeleton.GCMDS 2 Warrior 29 116.15 30 297 36 1 45.5 -65 32.5 -84.5 235 0.114669715 2274 25 95 112 54 32 35 0 1.5 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2621 2312 65.525 57.8 1.3 8 X X X O 20000 2414 0 0 0 1000 80 80 80 140 135 2 20
64 ij<><C4B3><EFBFBD><EFBFBD> ũ<>ѷ<EFBFBD> MON_Carrion.GCMDS 2 Defender 24 84 24 216 32 1 45 -45 105 -255 405 0.066622823 2520 26 84 101 50 37 35 0 1.2 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 3067 2407 76.675 60.175 1 8 X O X O 20000 2415 0 0 0 1000 80 80 80 140 134 2 20
65 <09>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Beholder.GCMDS 2 Defender 32 112 24 216 40 1 95 -120 115 -120 270 0.099852246 2784 27 88 105 52 38 36 0 1.5 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1 9 X X X O 20000 2416 0 0 0 1000 80 80 80 140 133 2 20
66 <09>ں<EFBFBD><DABA><EFBFBD> <20>Ӽųʸ<C5B3> MON_Field.GCMDS 2 Defender 32 117.6 24 223.2 40 1 66 -82.5 121 -99 249 0.108245443 2520 26 84 101 50 37 35 0 1.5 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 3067 2407 76.675 60.175 1.1 8 X O X O 20000 2417 0 0 0 1000 80 80 80 140 134 2 20
67 ų<><C5B3><EFBFBD><EFBFBD>Ʋ <20>ε<EFBFBD> MON_Labstar.GCMDS 2 Defender 32 128.8 24 237.6 32 1 156 -84.5 52 -208 358 0.075355537 2784 27 88 105 52 38 36 0 1.2 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1.3 9 X X X O 20000 2418 0 0 0 1000 80 80 80 140 133 2 20
68 <09>̹<EFBFBD> mon_mimic.GCMDS 2 Defender 12 42 12 108 35 1 25 -25 15 -10 160 0.168043444 2784 27 88 105 52 38 36 0 1.3 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1 9 X X X O 20000 2419 0 0 0 1000 80 80 80 140 133 2 20
69 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD> MON_SsangNom.GCMDS 2 Defender 32 100.8 24 201.6 40 1 84 -120 52 -128 278 0.09698692 2274 25 81 98 47 35 32 0 1.5 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 0.8 8 X X X O 20000 2420 0 0 0 1000 80 80 80 140 135 2 20
70 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD> MON_Tribal_warrior.GCMDS 2 Warrior 32 112 24 216 42 1 80 -130 55 -130 280 0.096296065 2520 26 98 115 57 33 37 0 1.7 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 2793 2407 69.825 60.175 1 8 X O X O 20000 2421 0 0 0 1000 80 80 80 140 134 2 20
71 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD> MON_SsangNom.GCMDS 2 Defender 32 112 24 216 40 1 105 -150 65 -160 310 0.08699909 2784 27 88 105 52 38 36 0 1.5 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1 9 X X X O 20000 2422 0 0 0 1000 80 80 80 140 133 2 20
72 <09><>ũ <20><><EFBFBD><EFBFBD> MON_Orc_defender.GCMDS 2 Defender 32 112 24 216 40 1 60 -50 25 -130 280 0.096296065 2784 27 88 105 52 38 36 0 1.5 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1 9 X X X O 20000 2423 0 0 0 1000 80 80 80 140 133 2 20
73 <09><>ŷ <20><><EFBFBD><EFBFBD> MON_Skeleton.GCMDS 2 Warrior 29 106.05 30 279 36 1 38.5 -55 27.5 -71.5 222 0.121356149 3065 28 104 123 61 36 40 0 1.5 5 0 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3178 2610 79.45 65.25 1.1 9 X O X O 20000 2424 0 0 0 1000 80 80 80 140 132 2 20
74 <09>ؼ<EFBFBD>Ʈ <20>ξ<EFBFBD> <20><><EFBFBD><EFBFBD> MON_Skeleton_warrior.GCMDS 2 Defender 40 147 24 223.2 40 1 55 -71.5 66 -71.5 222 0.121356149 3365 29 90 109 54 41 38 0 1.5 5 0 19 12 0 0 0 0 0 0 0 0 0 0 1 1 3669 2655 91.725 66.375 1.1 9 X X X O 20000 2425 0 0 0 1000 80 80 80 140 131 2 20
75 <09>ں<EFBFBD><DABA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Field.GCMDS 2 Defender 32 128.8 24 237.6 40 1 78 -97.5 143 -117 267 0.100970814 3065 28 88 107 53 40 37 0 1.5 5 0 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3508 2610 87.7 65.25 1.3 9 X O X O 20000 2426 0 0 0 1000 80 80 80 140 132 2 20
76 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Gorgon_Female.GCMDS 2 Warrior 33 103.5 15 126 30 1 68 -68 88 -184 334 0.080760198 3365 29 106 125 61 36 40 0 1.2 5 0 19 12 0 0 0 0 0 0 0 0 0 0 1 1 3323 2655 83.075 66.375 0.8 9 X X X O 20000 2427 0 0 0 1000 80 80 80 140 131 2 20
77 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Tribal_warrior.GCMDS 2 Warrior 32 112 24 216 42 1 80 -130 55 -130 280 0.096296065 3065 28 104 123 61 36 40 0 1.7 5 0 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3178 2610 79.45 65.25 1 9 X O X O 20000 2428 0 0 0 1000 80 80 80 140 132 2 20
78 Ʈ<><C6AE><EFBFBD>̹<EFBFBD> è<>ǿ<EFBFBD> MON_SsangNom.GCMDS 2 Defender 32 112 24 216 40 1 105 -150 65 -160 310 0.08699909 3365 29 90 109 54 41 38 0 1.5 5 0 19 12 0 0 0 0 0 0 0 0 0 0 1 1 3669 2655 91.725 66.375 1 9 X X X O 20000 2429 0 0 0 1000 80 80 80 140 131 2 20
79 <09><>ũ <20><><EFBFBD><EFBFBD> MON_Orc.GCMDS 2 Warrior 32 117.6 24 223.2 40 1 49.5 -55 22 -44 194 0.138777932 3065 28 104 123 61 36 40 0 1.6 5 0 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3178 2610 79.45 65.25 1.1 9 X O X O 20000 2430 0 0 0 1000 80 80 80 140 132 2 20
80 <09><>ũ <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Orc_defender.GCMDS 2 Defender 32 117.6 24 223.2 40 1 66 -55 27.5 -143 293 0.092034505 3365 29 90 109 54 41 38 0 1.5 5 0 19 12 0 0 0 0 0 0 0 0 0 0 1 1 3669 2655 91.725 66.375 1.1 9 X X X O 20000 2431 0 0 0 1000 80 80 80 140 131 2 20
81 <09><><EFBFBD><EFBFBD> MON_Golem.GCMDS 2 Defender 30 99.75 30 261 30 1 85.5 -85.5 0 -148.5 299 0.090192153 3685 30 93 112 56 42 40 0 1.1 6 0 20 12 0 0 0 0 0 0 0 0 0 0 1 1 3910 2750 97.75 68.75 0.9 10 X O X O 20000 2432 0 0 0 1000 80 80 80 140 130 2 20
82 <09><><EFBFBD><EFBFBD> mon_sloter.GCMDS 2 Defender 32 100.8 24 201.6 35 1 56 -56 20 -100 250 0.107813954 4024 31 97 116 59 44 42 0 1.3 6 0 21 12 0 0 0 0 0 0 0 0 0 0 1 1 4131 2860 103.275 71.5 0.8 10 X O X O 20000 2433 0 0 0 1000 80 80 80 140 129 2 20
83 Ʈ<><C6AE> <20>Ӽųʸ<C5B3> MON_Troll.GCMDS 2 Defender 40 126 40 336 40 1 60 -52 40 -60 210 0.128257941 3685 30 93 112 56 42 40 0 1.5 6 0 20 12 0 0 0 0 0 0 0 0 0 0 1 1 3910 2750 97.75 68.75 0.8 10 X O X O 20000 2434 0 0 0 1000 80 80 80 140 130 2 20
84 <09><>ũ <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Orc.GCMDS 2 Warrior 32 123.2 24 230.4 40 1 54 -60 24 -48 198 0.135989831 4024 31 115 134 67 39 45 0 1.6 6 0 21 12 0 0 0 0 0 0 0 0 0 0 1 1 3720 2860 93 71.5 1.2 10 X O X O 20000 2435 0 0 0 1000 80 80 80 140 129 2 20
85 Ʈ<><C6AE><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_NightWolf.GCMDS 2 Defender 32 112 24 216 40 1 25 -25 35 -150 300 0.089892233 4382 32 99 120 60 46 43 0 1.5 6 0 21 13 0 0 0 0 0 0 0 0 0 0 1 1 4419 2956 110.475 73.9 1 10 X O X O 20000 2436 0 0 0 1000 80 80 80 140 128 2 20
86 <09><>ũ <20><>ġ<EFBFBD><C4A1> MON_Orc_defender.GCMDS 2 Defender 32 123.2 24 230.4 40 1 72 -60 30 -156 306 0.088133734 4698 33 101 122 61 46 44 0 1.5 6 0 22 13 0 0 0 0 0 0 0 0 0 0 1 1 4607 3001 115.175 75.025 1.2 11 X X X O 20000 2437 0 0 0 1000 80 80 80 140 127 2 20
87 <09>ؼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD> MON_Skeleton.GCMDS 2 Warrior 29 111.1 30 288 36 1 42 -60 30 -78 228 0.118175941 4024 31 115 134 67 39 45 0 1.5 6 0 21 12 0 0 0 0 0 0 0 0 0 0 1 1 3720 2860 93 71.5 1.2 10 X O X O 20000 2438 0 0 0 1000 80 80 80 140 129 2 20
88 <09>ؼ<EFBFBD>Ʈ <20><><EFBFBD>ʷ<EFBFBD> MON_Skeleton_warrior.GCMDS 2 Defender 40 154 24 230.4 40 1 60 -78 72 -78 228 0.118175941 4382 32 99 120 60 46 43 0 1.5 6 0 21 13 0 0 0 0 0 0 0 0 0 0 1 1 4419 2956 110.475 73.9 1.2 10 X O X O 20000 2439 0 0 0 1000 80 80 80 140 128 2 20
89 <09><><EFBFBD><EFBFBD> <20>ݷ<EFBFBD> MON_Beholder.GCMDS 2 Defender 32 112 24 216 40 1 95 -120 115 -120 270 0.099852246 4698 33 101 122 61 46 44 0 1.5 6 0 22 13 0 0 0 0 0 0 0 0 0 0 1 1 4607 3001 115.175 75.025 1 11 X X X O 20000 2440 0 0 0 1000 80 80 80 140 127 2 20
90 Ʈ<><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Troll.GCMDS 2 Defender 40 140 40 360 40 1 75 -65 50 -75 225 0.119744979 4935 34 104 125 63 48 46 0 1.5 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 4884 3114 122.1 77.85 1 11 X O X O 20000 2441 0 0 0 1000 80 80 80 140 126 2 20
91 Ʈ<><C6AE> <20><><EFBFBD><EFBFBD> MON_Troll_warrior.GCMDS 2 Warrior 40 140 40 360 40 1 100 -80 65 -85 235 0.114669715 5177 35 126 147 74 44 51 0 1.6 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 4575 3210 114.375 80.25 1 11 X O X O 20000 2442 0 0 0 1000 80 80 80 140 125 2 20
92 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Golem.GCMDS 2 Defender 30 110.25 30 279 30 1 104.5 -104.5 0 -181.5 332 0.081245757 4935 34 104 125 63 48 46 0 1.1 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 4884 3114 122.1 77.85 1.1 11 X O X O 20000 2443 0 0 0 1000 80 80 80 140 126 2 20
93 <09><><EFBFBD><EFBFBD> <20><><EFBFBD>̾<EFBFBD>Ʈ MON_Golem.GCMDS 2 Defender 30 126 30 306 30 1 133 -133 0 -231 381 0.070813488 5177 35 108 129 66 49 48 0 1.1 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 5135 3210 128.375 80.25 1.4 11 X O X O 20000 2444 0 0 0 1000 80 80 80 140 125 2 20
94 <09><><EFBFBD>̾<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ŀ MON_Wolf_attacker.GCMDS 2 Warrior 32 140 24 252 40 1 30 -30 67.5 -210 360 0.074937594 5425 36 128 151 76 45 52 0 1.6 6 0 24 15 0 0 0 0 0 0 0 0 0 0 1 1 4845 3306 121.125 82.65 1.5 12 X X X O 20000 2445 0 0 0 1000 80 80 80 140 124 2 20
95 <09><><EFBFBD>̾<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Wolf.GCMDS 2 Defender 32 140 24 252 40 1 30 -30 67.5 -217.5 368 0.073311137 5679 37 110 133 67 51 49 0 1.5 6 0 25 15 0 0 0 0 0 0 0 0 0 0 1 1 5682 3370 142.05 84.25 1.5 12 X O X O 20000 2446 0 0 0 1000 80 80 80 140 123 2 20
96 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_sloter.GCMDS 2 Defender 32 106.4 24 208.8 35 1 63 -63 22.5 -112.5 263 0.102501751 5679 37 110 133 67 51 49 0 1.3 6 0 25 15 0 0 0 0 0 0 0 0 0 0 1 1 5682 3370 142.05 84.25 0.9 12 X O X O 20000 2447 0 0 0 1000 80 80 80 140 123 2 20
97 <09><><EFBFBD>̾<EFBFBD>Ʈ Ʈ<><C6AE> MON_Troll.GCMDS 2 Defender 40 161 40 396 40 1 97.5 -84.5 65 -97.5 248 0.108680394 5938 38 113 136 70 53 51 0 1.5 6 0 25 16 0 0 0 0 0 0 0 0 0 0 1 1 5996 3467 149.9 86.675 1.3 12 X O X O 20000 2448 0 0 0 1000 80 80 80 140 122 2 20
98 <09><><EFBFBD>̾<EFBFBD>Ʈ Ʈ<><C6AE> ġ<><C4A1> MON_Troll_warrior.GCMDS 2 Warrior 40 161 40 396 40 1 130 -104 84.5 -110.5 261 0.103284734 6203 39 139 162 82 48 56 0 1.6 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 5540 3563 138.5 89.075 1.3 13 X X X O 20000 2449 0 0 0 1000 80 80 80 140 121 2 20
99 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> MON_Gorgon.GCMDS 2 Defender 33 115 15 135 30 1 85 -85 110 -230 380 0.070999561 6203 39 117 140 72 54 52 0 1.1 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 6279 3563 156.975 89.075 1 13 X X X O 20000 2450 0 0 0 1000 80 80 80 140 121 2 20
100 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD><C7B8><EFBFBD> MON_Gorgon_Female.GCMDS 2 Warrior 33 126.5 15 144 30 1 102 -102 132 -276 426 0.063342603 6474 40 142 167 85 50 58 0 1.2 6 0 27 16 0 0 0 0 0 0 0 0 0 0 1 1 5845 3680 146.125 92 1.2 13 X O X O 20000 2451 0 0 0 1000 80 80 80 140 120 2 20
101 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MON_Gorgon.GCMDS 2 Defender 33 126.5 15 144 30 1 102 -102 132 -276 426 0.063342603 6750 41 121 146 74 57 54 0 1.1 6 0 27 17 0 0 0 0 0 0 0 0 0 0 1 1 6903 3727 172.575 93.175 1.2 13 X O X O 30000 2452 0 0 0 1000 80 80 80 140 119 2 20
102 <09><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD> MON_Skeleton.GCMDS 2 Warrior 29 116.15 30 297 36 1 45.5 -65 32.5 -84.5 235 0.114669715 6203 39 139 162 82 48 56 0 1.5 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 5540 3563 138.5 89.075 1.3 13 X X X O 20000 2453 0 0 0 1000 80 80 80 140 121 2 20
103 <09><><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> MON_Skeleton_warrior.GCMDS 2 Defender 40 161 24 237.6 40 1 65 -84.5 78 -84.5 235 0.114669715 6474 40 119 144 74 56 54 0 1.5 6 0 27 16 0 0 0 0 0 0 0 0 0 0 1 1 6656 3680 166.4 92 1.3 13 X O X O 20000 2454 0 0 0 1000 80 80 80 140 120 2 20
104 <09><>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Yang.GCMDS 2 Defender 56 215.9 56 228.6 50 1 189 -112 122.5 -105 255 0.105707017 6750 41 121 146 74 57 54 0 1.9 6 0 27 17 0 0 0 0 0 0 0 0 0 0 1 1 6903 3727 172.575 93.175 0.7 13 X O X O 30000 2455 0 0 0 1000 80 80 80 140 119 2 20
105 <09><><EFBFBD><EFBFBD> <20><> MON_Bat.GCMDS 2 Warrior 15 46.8 15 126 24 1 24 -24 0 -64 164 0.163977801 15 1 17 22 2 3 0 0 0.5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 186 340 4.65 8.5 0.8 0 X X X O 15000 2456 0 0 0 1000 80 80 80 140 159 2 20
106 <09><><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2> mon_rockturtle.GCMDS 2 Defender 40 112 24 187.2 40 1 78 -78 54 -42 142 0.189132143 17 2 21 26 6 5 2 0 0.8 4 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 245 431 6.125 10.775 0.6 0 X X X O 15000 2457 0 0 0 1000 80 80 80 140 158 2 20
107 <09><> <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> mon_scorpion.GCMDS 2 Defender 32 89.6 32 249.6 35 1 90 -90 78 -108 208 0.129485101 34 4 25 32 11 8 4 0 0.8 4 0 3 1 0 0 0 0 0 0 0 0 0 0 1 1 374 614 9.35 15.35 0.6 1 X X X O 15000 2458 0 0 0 1000 80 80 80 140 156 2 20
108 <09><><EFBFBD><EFBFBD> <20><> MON_Skullbat.GCMDS 2 Warrior 33 115 33 297 42 1 85 -135 90 -35 135 0.198827298 49 5 28 35 13 8 5 0 1.1 4 0 3 2 0 0 0 0 0 0 0 0 0 0 1 1 414 655 10.35 16.375 1 1 X X X O 15000 2459 0 0 0 1000 80 80 80 140 155 2 20
109 <09><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD>ũ mon_fungus.GCMDS 2 Warrior 30 105 30 270 30 1 40 -50 30 -30 130 0.206380105 69 6 31 38 14 10 6 0 0.9 4 0 4 2 0 0 0 0 0 0 0 0 0 0 1 1 486 746 12.15 18.65 1 2 X X X O 15000 2460 0 0 0 1000 80 80 80 140 154 2 20
110 ƼŬ<C6BC><C5AC> MON_Titug.GCMDS 2 Defender 32 89.6 32 249.6 30 1 57 -57 48 -60 160 0.168043444 95 7 34 41 17 11 8 0 0.8 4 0 5 2 0 0 0 0 0 0 0 0 0 0 1 1 568 840 14.2 21 0.6 2 X X X O 15000 2461 0 0 0 1000 80 80 80 140 153 2 20
111 <09><> <20><>Ʋ mon_rockturtle.GCMDS 2 Defender 40 126 24 201.6 40 1 104 -104 72 -56 156 0.172314908 128 8 34 43 18 13 9 0 1.2 4 0 5 3 0 0 0 0 0 0 0 0 0 0 1 1 655 932 16.375 23.3 0.8 2 X X X O 15000 2462 0 0 0 1000 80 80 80 140 152 2 20
112 <09><>Ʈ<EFBFBD><C6AE><EFBFBD>̵鸵 mon_unmon.GCMDS 2 Warrior 20 70 20 180 24 1 25 -25 40 -40 140 0.191804878 168 9 37 46 19 13 9 0 0.9 4 0 6 3 0 0 0 0 0 0 0 0 0 0 1 1 709 973 17.725 24.325 1 3 X X X O 15000 2463 0 0 0 1000 80 80 80 140 151 2 20
113 <09><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD>̴<EFBFBD> mon_unmon.GCMDS 2 Warrior 20 105 20 240 24 1 50 -50 80 -80 230 0.117152517 263 10 49 58 25 14 13 0 1 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 793 1070 19.825 26.75 2 3 X X X O 15000 2464 0 0 0 1000 80 80 80 140 150 2 20
114 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_curumin.GCMDS 2 Warrior 32 106.4 24 208.8 30 1 54 -45 67.5 -81 231 0.116647409 319 11 52 61 27 16 15 0 1.2 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 887 1162 22.175 29.05 0.9 3 X X X O 20000 2465 0 0 0 1000 80 80 80 140 149 2 20
115 <09><>Ű<EFBFBD><C5B0> mon_rockturtle.GCMDS 2 Defender 40 140 24 216 40 1 130 -130 90 -70 220 0.122454513 319 11 48 57 25 17 14 0 1.5 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 917 1162 22.925 29.05 1 3 X X X O 20000 2466 0 0 0 1000 80 80 80 140 149 2 20
116 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD> mon_venom.GCMDS 2 Defender 32 112 24 216 40 1 40 -40 170 -80 230 0.117152517 382 12 48 59 26 19 15 0 1.5 4 0 8 5 0 0 0 0 0 0 0 0 0 0 1 1 1035 1254 25.875 31.35 1 4 X O X O 20000 2467 0 0 0 1000 80 80 80 140 148 2 20
117 <09><><EFBFBD><EFBFBD><EFBFBD>ٿ<EFBFBD><D9BF> mon_unmon.GCMDS 2 Warrior 20 122.5 20 270 24 1 62.5 -62.5 100 -100 250 0.107813954 456 13 57 68 30 18 17 0 1 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1062 1302 26.55 32.55 2.5 4 X X X O 20000 2468 0 0 0 1000 80 80 80 140 147 2 20
118 <09><> <20><>Ŭ<EFBFBD><C5AC> mon_un.GCMDS 2 Defender 32 100.8 16 134.4 30 1 48 -48 72 -56 156 0.172314908 168 9 37 46 19 13 9 0 1 4 0 6 3 0 0 0 0 0 0 0 0 0 0 1 1 709 973 17.725 24.325 0.8 3 X X X O 15000 2469 0 0 0 1000 80 80 80 140 151 2 20
119 <09><> <20><>Ŭ mon_un.GCMDS 2 Defender 32 112 16 144 30 1 60 -60 90 -70 220 0.122454513 263 10 44 53 23 16 13 0 1.1 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 820 1070 20.5 26.75 1 3 X X X O 15000 2470 0 0 0 1000 80 80 80 140 150 2 20
120 <09><><EFBFBD><EFBFBD> <20><>Ŭ<EFBFBD><C5AC> mon_un.GCMDS 2 Defender 32 100.8 16 134.4 30 1 48 -48 72 -56 156 0.172314908 168 9 37 46 19 13 9 0 1 4 0 6 3 0 0 0 0 0 0 0 0 0 0 1 1 709 973 17.725 24.325 0.8 3 X X X O 15000 2471 0 0 0 1000 80 80 80 140 151 2 20
121 <09><><EFBFBD><EFBFBD> <20><>Ŭ mon_un.GCMDS 2 Defender 32 112 16 144 30 1 60 -60 90 -70 220 0.122454513 263 10 44 53 23 16 13 0 1.1 4 0 7 4 0 0 0 0 0 0 0 0 0 0 1 1 820 1070 20.5 26.75 1 3 X X X O 15000 2472 0 0 0 1000 80 80 80 140 150 2 20
122 <09><>ī<EFBFBD><C4AB>Ʈ mon_rockturtle.GCMDS 2 Defender 40 147 24 223.2 40 1 143 -143 99 -77 227 0.118694375 456 13 50 61 27 19 16 0 1.5 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1108 1302 27.7 32.55 1.1 4 X X X O 20000 2473 0 0 0 1000 80 80 80 140 147 2 20
123 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_fungus.GCMDS 2 Warrior 30 120.75 30 297 30 1 52 -65 39 -39 189 0.14242756 456 13 57 68 30 18 17 0 1.2 4 0 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1062 1302 26.55 32.55 1.3 4 X X X O 20000 2474 0 0 0 1000 80 80 80 140 147 2 20
124 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ر۷<D8B1> mon_curumin.GCMDS 2 Warrior 32 112 24 216 30 1 60 -50 75 -90 240 0.112289772 540 14 62 73 33 19 19 0 1.2 4 0 9 6 0 0 0 0 0 0 0 0 0 0 1 1 1170 1395 29.25 34.875 1 4 X O X O 20000 2475 0 0 0 1000 80 80 80 140 146 2 20
125 <09><><EFBFBD><EFBFBD> <20><>ī<EFBFBD><C4AB>Ʈ mon_querf.GCMDS 2 Defender 32 106.4 24 208.8 35 1 81 -99 31.5 -81 231 0.116647409 634 15 57 68 32 22 20 0 1.3 5 0 10 6 0 0 0 0 0 0 0 0 0 0 1 1 1349 1487 33.725 37.175 0.9 5 X X X O 20000 2476 0 0 0 1000 80 80 80 140 145 2 20
126 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_specter.GCMDS 2 Warrior 24 84 24 216 40 1 90 -90 100 -130 280 0.096296065 739 16 68 81 37 22 23 0 1.6 5 0 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1412 1588 35.3 39.7 1 5 X O X O 20000 2477 0 0 0 1000 80 80 80 140 144 2 20
127 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_querf.GCMDS 2 Defender 32 112 24 216 35 1 90 -110 35 -90 240 0.112289772 739 16 59 72 33 24 21 0 1.3 5 0 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1496 1588 37.4 39.7 1 5 X O X O 20000 2478 0 0 0 1000 80 80 80 140 144 2 20
128 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_agu.gcmds 2 Warrior 32 112 24 216 30 1 85 -85 75 -40 190 0.141682403 855 17 70 83 39 22 24 0 1.2 5 0 11 7 0 0 0 0 0 0 0 0 0 0 1 1 1497 1631 37.425 40.775 1 5 X X X O 20000 2479 0 0 0 1000 80 80 80 140 143 2 20
129 <09><><EFBFBD><EFBFBD> ġ<><C4A1> mon_querf.GCMDS 2 Defender 32 117.6 24 223.2 35 1 99 -121 38.5 -99 249 0.108245443 855 17 61 74 34 25 23 0 1.3 5 0 11 7 0 0 0 0 0 0 0 0 0 0 1 1 1588 1631 39.7 40.775 1.1 5 X X X O 20000 2480 0 0 0 1000 80 80 80 140 143 2 20
130 <09>ޱ۷<DEB1> mon_agu.gcmds 2 Warrior 32 168 24 288 30 1 170 -170 150 -80 230 0.117152517 1125 19 77 90 43 25 27 0 1.2 5 0 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1758 1826 43.95 45.65 2 6 X X X O 20000 2481 0 0 0 1000 80 80 80 140 141 2 20
131 <09><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB8A3> mon_ostrisaur.GCMDS 2 Defender 32 112 24 216 30 1 35 -35 140 -80 230 0.117152517 984 18 64 77 36 26 24 0 1.1 5 0 12 7 0 0 0 0 0 0 0 0 0 0 1 1 1736 1724 43.4 43.1 1 6 X O X O 20000 2482 0 0 0 1000 80 80 80 140 142 2 20
132 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĭ mon_a_zombie.gcmds 2 Defender 48 168 48 432 40 1 50 -45 50 -25 175 0.153745049 1280 20 68 83 40 30 27 0 1.5 5 0 13 8 0 0 0 0 0 0 0 0 0 0 1 1 2056 1920 51.4 48 1 6 X O X O 20000 2483 0 0 0 1000 80 80 80 140 140 2 20
133 <09><><EFBFBD>ǽ<EFBFBD> mon_spis.gcmds 2 Defender 15 52 15 135 30 1 140 -140 180 -100 250 0.107813954 1280 20 68 83 40 30 27 0 1.1 5 0 13 8 0 0 0 0 0 0 0 0 0 0 1 1 2056 1920 51.4 48 1 6 X O X O 20000 2484 0 0 0 1000 80 80 80 140 140 2 20
134 <09><><EFBFBD><EFBFBD> <20><> mon_venom.GCMDS 2 Defender 32 112 24 216 40 1 40 -40 170 -80 230 0.117152517 1449 21 70 85 40 30 27 0 1.5 5 0 14 8 0 0 0 0 0 0 0 0 0 0 1 1 2169 1963 54.225 49.075 1 7 X X X O 20000 2485 0 0 0 1000 80 80 80 140 139 2 20
135 <09><><EFBFBD><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ö<EFBFBD><C3B6><EFBFBD> MON_Pawnpawn.GCMDS 2 Defender 24 84 24 216 35 1 75 -60 10 -60 210 0.128257941 1632 22 73 88 43 32 29 0 1.3 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2346 2068 58.65 51.7 1 7 X O X O 20000 2486 0 0 0 1000 80 80 80 140 138 2 20
136 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_a_zombie.gcmds 2 Defender 48 184.8 48 460.8 40 1 60 -54 60 -30 180 0.149502979 1632 22 73 88 43 32 29 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2346 2068 58.65 51.7 1.2 7 X O X O 20000 2487 0 0 0 1000 80 80 80 140 138 2 20
137 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_specter.GCMDS 2 Warrior 24 84 24 216 40 1 90 -90 100 -130 280 0.096296065 1830 23 90 105 51 30 33 0 1.6 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2318 2162 57.95 54.05 1 7 X X X O 20000 2488 0 0 0 1000 80 80 80 140 137 2 20
138 <09><><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD>Ž<EFBFBD> mon_fungus.GCMDS 2 Warrior 30 131.25 30 315 30 1 60 -75 45 -45 195 0.138070273 1632 22 87 102 49 28 31 0 1.2 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2164 2068 54.1 51.7 1.5 7 X O X O 20000 2489 0 0 0 1000 80 80 80 140 138 2 20
139 <09>۷κ<DBB7> mon_globus.GCMDS 2 Defender 40 105 20 150 32 1 70 -60 175 -110 260 0.103680721 1830 23 77 92 45 33 30 0 1.2 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2511 2162 62.775 54.05 0.5 7 X X X O 20000 2490 0 0 0 1000 80 80 80 140 137 2 20
140 <09>ڸ<EFBFBD><DAB8>ɹ<EFBFBD><C9B9><EFBFBD> <20><>Ŀ<EFBFBD>̼<EFBFBD> mon_korkebine.GCMDS 2 Defender 32 112 24 216 40 1 55 -75 20 -100 250 0.107813954 2274 25 81 98 47 35 32 0 1.5 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 1 8 X X X O 20000 2491 0 0 0 1000 80 80 80 140 135 2 20
141 <09><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD> mon_spis.gcmds 2 Defender 15 57.2 15 144 30 1 168 -168 216 -120 270 0.099852246 2044 24 79 96 47 35 32 0 1.1 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2723 2256 68.075 56.4 1.2 8 X O X O 20000 2492 0 0 0 1000 80 80 80 140 136 2 20
142 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_wolfgirl.GCMDS 2 Warrior 32 112 12 156 24 1 60 -80 80 -70 220 0.122454513 2044 24 92 109 53 31 35 0 1 5 0 16 10 0 0 0 0 0 0 0 0 0 0 1 1 2498 2256 62.45 56.4 1 8 X O X O 20000 2493 0 0 0 1000 80 80 80 140 136 2 20
143 <09><>Ű<EFBFBD>齺 mon_ceratops.GCMDS 2 Defender 40 105 32 240 40 1 57.5 -57.5 160 -135 285 0.094611177 2274 25 81 98 47 35 32 0 1.5 5 0 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 0.5 8 X X X O 20000 2494 0 0 0 1000 80 80 80 140 135 2 20
144 <09><><EFBFBD><EFBFBD> mon_venom.GCMDS 2 Defender 32 123.2 24 230.4 40 1 48 -48 204 -96 246 0.109560848 1830 23 77 92 45 33 30 0 1.5 5 0 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2511 2162 62.775 54.05 1.2 7 X X X O 20000 2495 0 0 0 1000 80 80 80 140 137 2 20
145 <09>ڸ<EFBFBD><DAB8>ɹ<EFBFBD><C9B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_korkebine.GCMDS 2 Defender 32 117.6 24 223.2 40 1 60.5 -82.5 22 -110 260 0.103680721 2520 26 84 101 50 37 35 0 1.5 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 3067 2407 76.675 60.175 1.1 8 X O X O 20000 2496 0 0 0 1000 80 80 80 140 134 2 20
146 <09><><EFBFBD>θ<EFBFBD><CEB8>ڵ<EFBFBD> mon_iguanodon.GCMDS 2 Defender 32 95.2 24 194.4 35 1 59.5 -105 189 -126 276 0.097687745 2520 26 84 101 50 37 35 0 1.3 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 3067 2407 76.675 60.175 0.7 8 X O X O 20000 2497 0 0 0 1000 80 80 80 140 134 2 20
147 <09>ڹ<EFBFBD> <20><>Ŭ mon_un.GCMDS 2 Defender 32 140 16 168 30 1 90 -90 135 -105 255 0.105707017 2784 27 88 105 52 38 36 0 1.1 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 3259 2501 81.475 62.525 1.5 9 X X X O 20000 2498 0 0 0 1000 80 80 80 140 133 2 20
148 <09><>ƽ <20>ں<EFBFBD><DABA><EFBFBD> MON_Field.GCMDS 2 Defender 32 117.6 24 223.2 40 1 66 -82.5 121 -99 249 0.108245443 2520 26 84 101 50 37 35 0 1.5 5 0 17 11 0 0 0 0 0 0 0 0 0 0 1 1 3067 2407 76.675 60.175 1.1 8 X O X O 20000 2499 0 0 0 1000 80 80 80 140 134 2 20
149 <09><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_wolfgirl.GCMDS 2 Warrior 32 128.8 12 171.6 24 1 78 -104 104 -91 241 0.111825567 2784 27 101 118 58 34 38 0 1 5 0 18 11 0 0 0 0 0 0 0 0 0 0 1 1 2970 2501 74.25 62.525 1.3 9 X X X O 20000 2500 0 0 0 1000 80 80 80 140 133 2 20
150 <09><> <20>ɶ<EFBFBD><C9B6>齺 mon_ceratops.GCMDS 2 Defender 40 126 32 268.8 40 1 92 -92 256 -216 366 0.073711102 3065 28 88 107 53 40 37 0 1.5 5 0 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3508 2610 87.7 65.25 0.8 9 X O X O 20000 2501 0 0 0 1000 80 80 80 140 132 2 20
151 <09>̱<EFBFBD><CCB1>Ƴ<EFBFBD><C6B3><EFBFBD> mon_iguanodon.GCMDS 2 Defender 32 112 24 216 35 1 85 -150 270 -180 330 0.081737184 3365 29 90 109 54 41 38 0 1.3 5 0 19 12 0 0 0 0 0 0 0 0 0 0 1 1 3669 2655 91.725 66.375 1 9 X X X O 20000 2502 0 0 0 1000 80 80 80 140 131 2 20
152 <09>ɶ<EFBFBD><C9B6>齺 mon_ceratops.GCMDS 2 Defender 40 140 32 288 40 1 115 -115 320 -270 420 0.064246399 3685 30 93 112 56 42 40 0 1.5 6 0 20 12 0 0 0 0 0 0 0 0 0 0 1 1 3910 2750 97.75 68.75 1 10 X O X O 20000 2503 0 0 0 1000 80 80 80 140 130 2 20
153 <09><>ü<EFBFBD><C3BC> mon_head.GCMDS 2 Defender 30 105 30 270 35 1 60 60 45 -55 205 0.1313704 4024 31 97 116 59 44 42 0 1.3 6 0 21 12 0 0 0 0 0 0 0 0 0 0 1 1 4131 2860 103.275 71.5 1 10 X O X O 20000 2504 0 0 0 1000 80 80 80 140 129 2 20
154 <09>޸<EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_Nightwolf.GCMDS 2 Defender 32 140 24 252 40 1 37.5 -37.5 52.5 -225 375 0.07194478 3685 30 93 112 56 42 40 0 1.5 6 0 20 12 0 0 0 0 0 0 0 0 0 0 1 1 3910 2750 97.75 68.75 1.5 10 X O X O 20000 2505 0 0 0 1000 80 80 80 140 130 2 20
155 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_wolfgirl.GCMDS 2 Warrior 32 134.4 12 176.8 24 1 84 -112 112 -98 248 0.108680394 4024 31 115 134 67 39 45 0 1 6 0 21 12 0 0 0 0 0 0 0 0 0 0 1 1 3720 2860 93 71.5 1.4 10 X O X O 20000 2506 0 0 0 1000 80 80 80 140 129 2 20
156 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> mon_scorpion.GCMDS 2 Defender 32 112 32 288 35 1 150 -150 130 -180 330 0.081737184 4698 33 101 122 61 46 44 0 1.3 6 0 22 13 0 0 0 0 0 0 0 0 0 0 1 1 4607 3001 115.175 75.025 1 11 X X X O 20000 2507 0 0 0 1000 80 80 80 140 127 2 20
157 <09><><EFBFBD><EFBFBD> mon_gorep.gcmds 2 Defender 32 171.2 20 276 40 1 91 -88.9 59.5 -142.8 293 0.092034505 4935 34 104 125 63 48 46 0 1.5 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 4884 3114 122.1 77.85 0.07 11 X O X O 20000 2508 0 0 0 1000 80 80 80 140 126 2 20
158 <09>ҷ<EFBFBD>Ʈ mon_bullent.GCMDS 2 Defender 32 112 16 144 35 1 95 -95 250 -140 290 0.092984162 5177 35 108 129 66 49 48 0 1.3 6 0 23 14 0 0 0 0 0 0 0 0 0 0 1 1 5135 3210 128.375 80.25 1 11 X O X O 20000 2509 0 0 0 1000 80 80 80 140 125 2 20
159 <09>θ<EFBFBD>Ʈ mon_gorep.gcmds 2 Defender 32 174.4 20 278.6666667 40 1 117 -114.3 76.5 -183.6 334 0.080760198 5679 37 110 133 67 51 49 0 1.5 6 0 25 15 0 0 0 0 0 0 0 0 0 0 1 1 5682 3370 142.05 84.25 0.09 12 X O X O 20000 2510 0 0 0 1000 80 80 80 140 123 2 20
160 <09>޸<EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> mon_scorpion.GCMDS 2 Defender 32 134.4 32 326.4 35 1 210 -210 182 -252 402 0.067119347 5425 36 108 131 67 51 49 0 1.3 6 0 24 15 0 0 0 0 0 0 0 0 0 0 1 1 5465 3306 136.625 82.65 1.4 12 X X X O 20000 2511 0 0 0 1000 80 80 80 140 124 2 20
161 <09><><EFBFBD><EFBFBD> mon_dante.gcmds 2 Defender 32 112 24 216 40 1 160 -180 195 -210 360 0.074937594 5938 38 113 136 70 53 51 0 1.5 6 0 25 16 0 0 0 0 0 0 0 0 0 0 1 1 5996 3467 149.9 86.675 1 12 X O X O 20000 2512 0 0 0 1000 80 80 80 140 122 2 20
162 <09>򸶿콺 mon_bullent.GCMDS 2 Defender 32 112 16 144 35 1 95 -95 250 -140 290 0.092984162 6203 39 117 140 72 54 52 0 1.3 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 6279 3563 156.975 89.075 1 13 X X X O 20000 2513 0 0 0 1000 80 80 80 140 121 2 20
163 <09>ؼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> MON_Golem.GCMDS 2 Defender 30 131.25 30 315 30 1 142.5 -142.5 0 -247.5 398 0.067793 6474 40 119 144 74 56 54 0 1.1 6 0 27 16 0 0 0 0 0 0 0 0 0 0 1 1 6656 3680 166.4 92 1.5 13 X O X O 20000 2514 0 0 0 1000 80 80 80 140 120 2 20
164 Ÿ<><C5B8>Ÿ<EFBFBD><C5B8> mon_titano.GCMDS 2 BG 80 560 80 560 1 1 270 -270 730 -410 560 0.048197692 1294 40 119 144 74 76 54 0 0 6 0 66 56 0 0 0 0 0 0 0 0 0 0 1 1 13312 3680 332.8 92 1 13 X O X O 20000 2515 0 0 0 1000 80 80 80 140 120 2 20
165 Ʈ<><C6AE> Ʈ<><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Troll.GCMDS 2 Defender 40 175 40 420 40 1 112.5 -97.5 75 -112.5 263 0.102501751 4382 32 99 120 60 46 43 0 1.5 6 0 21 13 0 0 0 0 0 0 0 0 0 0 1 1 4419 2956 110.475 73.9 1.5 10 X O X O 20000 2516 0 0 0 1000 80 80 80 140 128 2 20
166 <09><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><>ġ<EFBFBD><C4A1> MON_LizardmanLeader.GCMDS 2 Boss 32 173.6 24 295.2 40 1 115.5 -220.5 241.5 -252 804 0.067152961 79130 45 130 157 81 84 57 0 3.8 7 0 74 62 0 0 0 0 0 0 0 0 0 0 1 1 14610 4087 365.25 102.175 2.1 15 X X X O 1800000 2517 0 0 0 0 80 80 80 140 115 2 20
167 <09><><EFBFBD>̷<EFBFBD>Ż <20>ε<EFBFBD> MON_AncientGuard_warrior.GCMDS 2 Boss 35 183 24 288 50 1 210 -140 130 -200 700 0.077125861 190710 74 204 245 131 138 94 0 4.8 8 0 121 103 0 0 0 0 0 0 0 0 0 0 1 1 31260 6935 781.5 173.375 2 24 X O X O 1800000 2518 0 0 0 0 80 80 80 140 86 2 20
168 <09>Թ<EFBFBD><D4B9><EFBFBD> mon_nymbus.gcmds 2 Boss 40 175 40 420 40 1 232.5 -232.5 187.5 -255 810 0.066655696 79130 45 130 157 81 84 57 0 3.8 7 0 74 62 0 0 0 0 0 0 0 0 0 0 1 1 14610 4087 365.25 102.175 1.5 15 X X X O 1800000 2519 0 0 0 0 80 80 80 140 115 2 20
169 <09><><EFBFBD><EFBFBD>ư MON_Omurten.GCMDS 2 Boss 56 317.5 56 296.3333333 55 1 202.5 -217.5 420 -345 990 0.054539445 190710 74 204 245 131 138 94 0 5.2 8 0 121 103 0 0 0 0 0 0 0 0 0 0 1 1 31260 6935 781.5 173.375 1.5 24 X O X O 1800000 2520 0 0 0 0 80 80 80 140 86 2 20
170 <09><><EFBFBD>̳<EFBFBD> <20><><EFBFBD><EFBFBD> MON_Wolf_attacker.GCMDS 2 Warrior 32 128.8 24 237.6 40 1 26 -26 58.5 -182 332 0.081245757 6203 39 139 162 82 48 56 0 1.6 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 5540 3563 138.5 89.075 1.3 13 X X X O 20000 2521 0 0 0 1000 80 80 80 140 121 2 20
171 <09><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>ũ mon_tren.GCMDS 2 Defender 56 147 56 420 40 1 150 -125 175 -95 245 0.110006437 6474 40 119 144 74 56 54 0 1.5 6 0 27 16 0 0 0 0 0 0 0 0 0 0 1 1 6656 3680 166.4 92 0.5 13 X O X O 20000 2522 0 0 0 1000 80 80 80 140 120 2 20
172 <09><><EFBFBD>̳<EFBFBD> Ÿ<>̰<EFBFBD> mon_tizer.GCMDS 2 Warrior 36 119.7 24 208.8 24 1 72 -72 117 -198 348 0.077517127 6750 41 144 169 85 50 58 0 1 6 0 27 17 0 0 0 0 0 0 0 0 0 0 1 1 6062 3727 151.55 93.175 0.9 13 X O X O 30000 2523 0 0 0 1000 80 80 80 140 119 2 20
173 <09><>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Dark_warrior.GCMDS 2 Warrior 32 112 24 216 30 1 60 -80 55 -115 265 0.101730532 7032 42 147 172 88 52 60 0 1.2 6 0 28 17 0 0 0 0 0 0 0 0 0 0 1 1 6339 3824 158.475 95.6 1 14 X X X O 30000 2524 0 0 0 1000 80 80 80 140 118 2 20
174 <09><>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Dark_defender.GCMDS 2 Defender 32 112 24 216 40 1 70 -80 70 -145 295 0.091412092 7320 43 128 153 79 60 58 0 1.5 6 0 29 17 0 0 0 0 0 0 0 0 0 0 1 1 7575 3942 189.375 98.55 1 14 X O X O 30000 2525 0 0 0 1000 80 80 80 140 117 2 20
175 <09><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> Ÿ<>̰<EFBFBD> mon_tizer.GCMDS 2 Warrior 36 132.3 24 223.2 24 1 88 -88 143 -242 392 0.068829203 7614 44 153 180 92 55 63 0 1 6 0 29 18 0 0 0 0 0 0 0 0 0 0 1 1 6964 4040 174.1 101 1.1 14 X O X O 30000 2526 0 0 0 1000 80 80 80 140 116 2 20
176 Ʈ<><C6AE> mon_tren.GCMDS 2 Defender 56 196 56 504 40 1 300 -250 350 -190 340 0.079337698 7913 45 130 157 81 62 61 0 1.5 7 0 30 18 0 0 0 0 0 0 0 0 0 0 1 1 8279 4087 206.975 102.175 1 15 X X X O 30000 2527 0 0 0 1000 80 80 80 140 115 2 20
177 Ÿ<>̰Ŷ<CCB0><C5B6>̴<EFBFBD> mon_tirider.GCMDS 2 Defender 36 126 20 180 24 1 50 -50 65 -220 370 0.072915486 8218 46 133 160 83 64 62 0 0.9 7 0 31 19 0 0 0 0 0 0 0 0 0 0 1 1 8675 4208 216.875 105.2 1 15 X O X O 30000 2528 0 0 0 1000 80 80 80 140 114 2 20
178 <09><>ĭ <20><>Ŀ<EFBFBD>̼<EFBFBD> mon_pulkhan.GCMDS 2 Warrior 32 100.8 24 201.6 32 1 60 -60 36 -68 218 0.123572896 8529 47 164 191 98 58 69 0 1.3 7 0 31 19 0 0 0 0 0 0 0 0 0 0 1 1 7830 4306 195.75 107.65 0.8 15 X O X O 30000 2529 0 0 0 1000 80 80 80 140 113 2 20
179 <09><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD> mon_tirider.GCMDS 2 Defender 36 132.3 20 186 24 1 55 -55 71.5 -242 392 0.068829203 8845 48 139 168 87 67 65 0 0.9 7 0 32 20 0 0 0 0 0 0 0 0 0 0 1 1 9504 4404 237.6 110.1 1.1 16 X X X O 30000 2530 0 0 0 1000 80 80 80 140 112 2 20
180 <09><>ĭ <20><>ī<EFBFBD><C4AB>Ʈ mon_pulkhan.GCMDS 2 Warrior 32 106.4 24 208.8 32 1 67.5 -67.5 40.5 -76.5 227 0.118694375 9167 49 168 197 101 60 71 0 1.3 7 0 33 20 0 0 0 0 0 0 0 0 0 0 1 1 8481 4476 212.025 111.9 0.9 16 X O X O 30000 2531 0 0 0 1000 80 80 80 140 111 2 20
181 <09><>ĭ <20><><EFBFBD><EFBFBD> mon_pulkhan02.GCMDS 2 Defender 32 112 24 216 32 1 75 -75 45 -85 235 0.114669715 9495 50 144 173 90 69 67 0 1.2 7 0 33 21 0 0 0 0 0 0 0 0 0 0 1 1 10260 4575 256.5 114.375 1 16 X O X O 30000 2532 0 0 0 1000 80 80 80 140 110 2 20
182 <09>ҿ︮<D2BF><EFB8AE> <20>Ӽųʸ<C5B3> mon_tirider.GCMDS 2 Defender 36 132.3 20 186 24 1 55 -55 71.5 -242 392 0.068829203 9828 51 148 177 93 70 69 0 0.9 7 0 34 21 0 0 0 0 0 0 0 0 0 0 1 1 10651 4673 266.275 116.825 1.1 17 X O X O 30000 2533 0 0 0 1000 80 80 80 140 109 2 20
183 <09><>ĭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_pulkhan.GCMDS 2 Warrior 32 112 24 216 32 1 75 -75 45 -85 235 0.114669715 10167 52 177 208 107 64 75 0 1.3 7 0 35 21 0 0 0 0 0 0 0 0 0 0 1 1 9585 4798 239.625 119.95 1 17 X O X O 30000 2534 0 0 0 1000 80 80 80 140 108 2 20
184 <09><>ĭ <20><><EFBFBD><EFBFBD>Ʈ mon_pulkhan02.GCMDS 2 Defender 32 112 24 216 32 1 75 -75 45 -85 235 0.114669715 10512 53 150 181 94 73 71 0 1.2 7 0 35 22 0 0 0 0 0 0 0 0 0 0 1 1 11530 4847 288.25 121.175 1 17 X O X O 30000 2535 0 0 0 1000 80 80 80 140 107 2 20
185 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>и<EFBFBD><D0B8><EFBFBD> mon_gavial.GCMDS 2 Defender 32 100.8 24 201.6 40 1 80 -80 144 -104 254 0.106121802 10863 54 153 184 97 74 73 0 1.5 7 0 36 22 0 0 0 0 0 0 0 0 0 0 1 1 12019 4946 300.475 123.65 0.8 18 X O X O 30000 2536 0 0 0 1000 80 80 80 140 106 2 20
186 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_shogen_master_red.GCMDS 2 Defender 32 112 20 180 32 1 110 -110 85 -75 225 0.119744979 11219 55 157 188 99 76 74 0 1.2 7 0 37 22 0 0 0 0 0 0 0 0 0 0 1 1 12451 5072 311.275 126.8 1 18 X O X O 30000 2537 0 0 0 1000 80 80 80 140 105 2 20
187 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_gavial.GCMDS 2 Defender 32 106.4 24 208.8 40 1 90 -90 162 -117 267 0.100970814 11581 56 159 192 101 78 76 0 1.5 7 0 37 23 0 0 0 0 0 0 0 0 0 0 1 1 13035 5172 325.875 129.3 0.9 18 X O X O 30000 2538 0 0 0 1000 80 80 80 140 104 2 20
188 <09><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_shogen_master_black.GCMDS 2 Warrior 32 112 20 180 40 1 95 -50 50 -170 320 0.084286179 11949 57 193 226 116 69 81 0 1.6 7 0 38 23 0 0 0 0 0 0 0 0 0 0 1 1 11434 5221 285.85 130.525 1 19 X O X O 30000 2539 0 0 0 1000 80 80 80 140 103 2 20
189 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_gavial.GCMDS 2 Defender 32 112 24 216 40 1 100 -100 180 -130 280 0.096296065 12322 58 164 197 104 80 78 0 1.5 7 0 39 24 0 0 0 0 0 0 0 0 0 0 1 1 13963 5350 349.075 133.75 1 19 X O X O 30000 2540 0 0 0 1000 80 80 80 140 102 2 20
190 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_vicrocodile.GCMDS 2 Defender 32 106.4 24 208.8 40 1 148.5 -148.5 180 -180 330 0.081737184 12701 59 168 201 106 81 79 0 1.5 7 0 39 24 0 0 0 0 0 0 0 0 0 0 1 1 14436 5450 360.9 136.25 0.9 19 X O X O 30000 2541 0 0 0 1000 80 80 80 140 101 2 20
191 <09><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD> mon_shogen_master_red.GCMDS 2 Defender 32 112 20 180 32 1 110 -110 85 -75 225 0.119744979 13086 60 168 203 107 83 82 0 1.2 8 0 40 25 0 0 0 0 0 0 0 0 0 0 1 1 15080 5550 377 138.75 1 20 X O X O 30000 2542 0 0 0 1000 80 80 80 140 100 2 20
192 <09><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD> mon_shogen_master_black.GCMDS 2 Warrior 32 112 20 180 40 1 95 -50 50 -170 320 0.084286179 13476 61 204 239 124 74 88 0 1.6 8 0 41 25 0 0 0 0 0 0 0 0 0 0 1 1 13127 5630 328.175 140.75 1 20 X O X O 30000 2543 0 0 0 1000 80 80 80 140 99 2 20
193 <09><><EFBFBD><EFBFBD> mon_slephi.GCMDS 2 Warrior 40 140 40 360 32 1 95 -95 200 -120 270 0.099852246 13872 62 210 245 127 75 90 0 1.3 8 0 41 26 0 0 0 0 0 0 0 0 0 0 1 1 13570 5731 339.25 143.275 1 20 X O X O 30000 2544 0 0 0 1000 80 80 80 140 98 2 20
194 <09><><EFBFBD>̳<EFBFBD><CCB3><EFBFBD> mon_rhinoman.GCMDS 2 Defender 36 126 24 216 32 1 110 -110 95 -180 330 0.081737184 14274 63 177 212 113 86 86 0 1.2 8 0 42 26 0 0 0 0 0 0 0 0 0 0 1 1 16617 5831 415.425 145.775 1 21 X O X O 30000 2545 0 0 0 1000 80 80 80 140 97 2 20
195 <09><> <20><><EFBFBD>̳<EFBFBD><CCB3><EFBFBD> mon_rhinoman.GCMDS 2 Defender 36 126 24 216 32 1 110 -110 95 -180 330 0.081737184 14682 64 179 216 114 88 87 0 1.2 8 0 43 26 0 0 0 0 0 0 0 0 0 0 1 1 17322 5964 433.05 149.1 1 21 X O X O 30000 2546 0 0 0 1000 80 80 80 140 96 2 20
196 <09><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> mon_vicrocodile.GCMDS 2 Defender 32 117.6 24 223.2 40 1 181.5 -181.5 220 -220 370 0.072915486 15095 65 181 218 115 89 88 0 1.5 8 0 43 27 0 0 0 0 0 0 0 0 0 0 1 1 17794 6015 444.85 150.375 1.1 21 X O X O 30000 2547 0 0 0 1000 80 80 80 140 95 2 20
197 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> mon_scorpion.GCMDS 2 Defender 32 128.8 32 316.8 35 1 195 -195 169 -234 384 0.070261069 6203 39 117 140 72 54 52 0 1.3 6 0 26 16 0 0 0 0 0 0 0 0 0 0 1 1 6279 3563 156.975 89.075 1.3 13 X X X O 20000 2548 0 0 0 1000 80 80 80 140 121 2 20
198 <09><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>ũ mon_trenber.GCMDS 2 Defender 56 147 56 420 40 1 150 -125 175 -95 245 0.110006437 6474 40 119 144 74 56 54 0 1.5 6 0 27 16 0 0 0 0 0 0 0 0 0 0 1 1 6656 3680 166.4 92 0.5 13 X O X O 20000 2549 0 0 0 1000 80 80 80 140 120 2 20
199 <09>ι<EFBFBD> <20><><EFBFBD>Ž<EFBFBD> mon_fungus01.GCMDS 2 Defender 32 112 32 288 32 1 90 -90 90 -90 240 0.112289772 6750 41 121 146 74 57 54 0 1.2 6 0 27 17 0 0 0 0 0 0 0 0 0 0 1 1 6903 3727 172.575 93.175 1 13 X O X O 30000 2550 0 0 0 1000 80 80 80 140 119 2 20
200 <09><><EFBFBD><EFBFBD> <20><><EFBFBD>Ž<EFBFBD> mon_fungus02.GCMDS 2 Warrior 32 112 32 288 32 1 90 -90 90 -90 240 0.112289772 7614 44 153 180 92 55 63 0 1.3 6 0 29 18 0 0 0 0 0 0 0 0 0 0 1 1 6964 4040 174.1 101 1 14 X O X O 30000 2551 0 0 0 1000 80 80 80 140 116 2 20
201 Ʈ<><C6AE><EFBFBD><EFBFBD> mon_trenber.GCMDS 2 Defender 56 166.6 56 453.6 40 1 210 -175 245 -133 283 0.095278016 7913 45 130 157 81 62 61 0 1.5 7 0 30 18 0 0 0 0 0 0 0 0 0 0 1 1 8279 4087 206.975 102.175 0.7 15 X X X O 30000 2552 0 0 0 1000 80 80 80 140 115 2 20
202 <09><><EFBFBD>̰<EFBFBD> <20>ι<EFBFBD> <20><><EFBFBD>Ž<EFBFBD> mon_fungus01.GCMDS 2 Defender 32 134.4 32 326.4 32 1 126 -126 126 -126 276 0.097687745 8218 46 133 160 83 64 62 0 1.2 7 0 31 19 0 0 0 0 0 0 0 0 0 0 1 1 8675 4208 216.875 105.2 1.4 15 X O X O 30000 2553 0 0 0 1000 80 80 80 140 114 2 20
203 <09><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ž<EFBFBD> mon_fungus02.GCMDS 2 Warrior 32 134.4 32 326.4 32 1 126 -126 126 -126 276 0.097687745 8529 47 164 191 98 58 69 0 1.3 7 0 31 19 0 0 0 0 0 0 0 0 0 0 1 1 7830 4306 195.75 107.65 1.4 15 X O X O 30000 2554 0 0 0 1000 80 80 80 140 113 2 20
204 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_prebic.GCMDS 2 Defender 32 106.4 32 278.4 32 1 144 -144 64.8 -117 267 0.100970814 8845 48 139 168 87 67 65 0 1.2 7 0 32 20 0 0 0 0 0 0 0 0 0 0 1 1 9504 4404 237.6 110.1 0.9 16 X X X O 30000 2555 0 0 0 1000 80 80 80 140 112 2 20
205 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_prebic02.GCMDS 2 Warrior 32 106.4 32 278.4 32 1 144 -144 63 -117 267 0.100970814 9167 49 168 197 101 60 71 0 1.3 7 0 33 20 0 0 0 0 0 0 0 0 0 0 1 1 8481 4476 212.025 111.9 0.9 16 X O X O 30000 2556 0 0 0 1000 80 80 80 140 111 2 20
206 <09><20>Ӽųʸ<C5B3> mon_barick.GCMDS 2 Defender 32 112 24 216 32 1 55 -50 60 -90 240 0.112289772 9495 50 144 173 90 69 67 0 1.2 7 0 33 21 0 0 0 0 0 0 0 0 0 0 1 1 10260 4575 256.5 114.375 1 16 X O X O 30000 2557 0 0 0 1000 80 80 80 140 110 2 20
207 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_prebic.GCMDS 2 Defender 32 117.6 32 297.6 32 1 176 -176 79.2 -143 293 0.092034505 9828 51 148 177 93 70 69 0 1.2 7 0 34 21 0 0 0 0 0 0 0 0 0 0 1 1 10651 4673 266.275 116.825 1.1 17 X O X O 30000 2558 0 0 0 1000 80 80 80 140 109 2 20
208 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ mon_prebic02.GCMDS 2 Warrior 32 117.6 32 297.6 32 1 176 -176 77 -143 293 0.092034505 10167 52 177 208 107 64 75 0 1.3 7 0 35 21 0 0 0 0 0 0 0 0 0 0 1 1 9585 4798 239.625 119.95 1.1 17 X O X O 30000 2559 0 0 0 1000 80 80 80 140 108 2 20
209 <09><20><><EFBFBD><EFBFBD> mon_barick.GCMDS 2 Defender 32 112 24 216 32 1 55 -50 60 -90 240 0.112289772 10512 53 150 181 94 73 71 0 1.2 7 0 35 22 0 0 0 0 0 0 0 0 0 0 1 1 11530 4847 288.25 121.175 1 17 X O X O 30000 2560 0 0 0 1000 80 80 80 140 107 2 20
210 <09><>Ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_makin.GCMDS 2 Warrior 32 112 24 216 32 1 90 -90 50 -90 240 0.112289772 10863 54 185 216 112 66 78 0 1.3 7 0 36 22 0 0 0 0 0 0 0 0 0 0 1 1 10259 4946 256.475 123.65 1 18 X O X O 30000 2561 0 0 0 1000 80 80 80 140 106 2 20
211 <09><>Ų <20><><EFBFBD><EFBFBD> mon_makin02.GCMDS 2 Defender 32 112 24 216 32 1 90 -90 50 -90 240 0.112289772 11219 55 157 188 99 76 74 0 1.2 7 0 37 22 0 0 0 0 0 0 0 0 0 0 1 1 12451 5072 311.275 126.8 1 18 X O X O 30000 2562 0 0 0 1000 80 80 80 140 105 2 20
212 <09><><EFBFBD><EFBFBD>Ʈ <20><20>Ӽųʸ<C5B3> mon_barick.GCMDS 2 Defender 32 117.6 24 223.2 32 1 60.5 -55 66 -99 249 0.108245443 11581 56 159 192 101 78 76 0 1.2 7 0 37 23 0 0 0 0 0 0 0 0 0 0 1 1 13035 5172 325.875 129.3 1.1 18 X O X O 30000 2563 0 0 0 1000 80 80 80 140 104 2 20
213 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>볪Ʈ mon_nonut.GCMDS 2 Defender 32 112 24 216 32 1 85 -85 60 -100 250 0.107813954 11949 57 161 194 101 78 76 0 1.2 7 0 38 23 0 0 0 0 0 0 0 0 0 0 1 1 13424 5221 335.6 130.525 1 19 X O X O 30000 2564 0 0 0 1000 80 80 80 140 103 2 20
214 <09><><EFBFBD><EFBFBD> <20><>Ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_makin.GCMDS 2 Warrior 32 112 24 216 32 1 90 -90 50 -90 240 0.112289772 12322 58 196 229 119 70 83 0 1.3 7 0 39 24 0 0 0 0 0 0 0 0 0 0 1 1 11841 5350 296.025 133.75 1 19 X O X O 30000 2565 0 0 0 1000 80 80 80 140 102 2 20
215 <09><><EFBFBD><EFBFBD> <20><>Ų <20><><EFBFBD><EFBFBD> mon_makin02.GCMDS 2 Defender 32 112 24 216 32 1 90 -90 50 -90 240 0.112289772 12701 59 168 201 106 81 79 0 1.2 7 0 39 24 0 0 0 0 0 0 0 0 0 0 1 1 14436 5450 360.9 136.25 1 19 X O X O 30000 2566 0 0 0 1000 80 80 80 140 101 2 20
216 <09>볪Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_nonut.GCMDS 2 Defender 32 112 24 216 32 1 85 -85 60 -100 250 0.107813954 13086 60 168 203 107 83 82 0 1.2 8 0 40 25 0 0 0 0 0 0 0 0 0 0 1 1 15080 5550 377 138.75 1 20 X O X O 30000 2567 0 0 0 1000 80 80 80 140 100 2 20
217 <09><><EFBFBD>ε鸮<CEB5><E9B8AE> mon_clinzer.GCMDS 2 Defender 32 106.4 24 208.8 40 1 49.5 -49.5 90 -90 240 0.112289772 13476 61 170 205 108 83 83 0 1.5 8 0 41 25 0 0 0 0 0 0 0 0 0 0 1 1 15509 5630 387.725 140.75 0.9 20 X O X O 30000 2568 0 0 0 1000 80 80 80 140 99 2 20
218 <09><><EFBFBD><EFBFBD> <20>볪Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_nonut.GCMDS 2 Defender 32 123.2 24 230.4 32 1 102 -102 72 -120 270 0.099852246 13872 62 173 208 110 85 84 0 1.2 8 0 41 26 0 0 0 0 0 0 0 0 0 0 1 1 16099 5731 402.475 143.275 1.2 20 X O X O 30000 2569 0 0 0 1000 80 80 80 140 98 2 20
219 Ŭ<><C5AC><EFBFBD><EFBFBD> mon_clinzer.GCMDS 2 Defender 32 112 24 216 40 1 55 -55 100 -100 250 0.107813954 14274 63 177 212 113 86 86 0 1.5 8 0 42 26 0 0 0 0 0 0 0 0 0 0 1 1 16617 5831 415.425 145.775 1 21 X O X O 30000 2570 0 0 0 1000 80 80 80 140 97 2 20
220 Ÿ<><C5B8><EFBFBD><EFBFBD> mon_tower.GCMDS 2 Defender 32 112 24 216 34 1 130 -130 90 -100 250 0.107813954 14682 64 179 216 114 88 87 0 1.3 8 0 43 26 0 0 0 0 0 0 0 0 0 0 1 1 17322 5964 433.05 149.1 1 21 X O X O 30000 2571 0 0 0 1000 80 80 80 140 96 2 20
221 <09><>ƽ <20><><EFBFBD><EFBFBD> mon_rich.GCMDS 2 Warrior 30 105 30 270 40 1 320 -160 310 -160 310 0.08699909 15095 65 218 255 133 78 94 0 1.6 8 0 43 27 0 0 0 0 0 0 0 0 0 0 1 1 14973 6015 374.325 150.375 1 21 X O X O 30000 2572 0 0 0 1000 80 80 80 140 95 2 20
222 ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_cramos.GCMDS 2 Defender 32 112 32 320 40 1 120 -120 75 -155 305 0.088422029 15095 65 181 218 115 89 88 0 1.5 8 0 43 27 0 0 0 0 0 0 0 0 0 0 1 1 17794 6015 444.85 150.375 1 21 X O X O 30000 2572 0 0 0 1000 80 80 80 140 95 2 20
223 <09><> <20><>Ʈ<EFBFBD><C6AE> mon_gnoll_king.GCMDS 2 Defender 40 140 24 240 36 1 85 -85 130 -85 235 0.114669715 15514 66 184 221 117 90 89 0 1.3 8 0 44 27 0 0 0 0 0 0 0 0 0 0 1 1 18438 6116 460.95 152.9 1 22 X O X O 30000 2572 0 0 0 1000 80 80 80 140 94 2 20
224 <09><EFBFBD><E5B7B9> <20><><EFBFBD><EFBFBD> MON_NightWolf.GCMDS 2 Defender 32 151.2 24 266.4 40 1 42.5 -42.5 59.5 -255 405 0.066622823 15939 67 188 225 120 92 91 0 1.5 8 0 45 27 0 0 0 0 0 0 0 0 0 0 1 1 19001 6250 475.025 156.25 1.7 22 X O X O 30000 2572 0 0 0 1000 80 80 80 140 93 2 20
225 <09><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_gnoll_warrior.GCMDS 2 Defender 32 112 24 240 36 1 70 -70 120 -75 225 0.119744979 16369 68 188 227 121 94 93 0 1.3 8 0 45 28 0 0 0 0 0 0 0 0 0 0 1 1 19771 6352 494.275 158.8 1 22 X O X O 30000 2572 0 0 0 1000 80 80 80 140 92 2 20
226 <09><><EFBFBD>̰<EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_cramos.GCMDS 2 Defender 32 117.6 32 330.6666667 40 1 132 -132 82.5 -170.5 321 0.084024155 16805 69 190 229 121 94 93 0 1.5 8 0 46 28 0 0 0 0 0 0 0 0 0 0 1 1 20287 6403 507.175 160.075 1.1 23 X O X O 30000 2572 0 0 0 1000 80 80 80 140 91 2 20
227 <09><> <20><><EFBFBD><EFBFBD> mon_gnoll_king.GCMDS 2 Defender 40 147 24 248 36 1 93.5 -93.5 143 -93.5 244 0.110455658 17247 70 193 232 124 96 95 0 1.3 8 0 47 29 0 0 0 0 0 0 0 0 0 0 1 1 20988 6540 524.7 163.5 1.1 23 X O X O 30000 2572 0 0 0 1000 80 80 80 140 90 2 20
228 <09><>Ŀ <20><><EFBFBD>̴<EFBFBD> mon_york.GCMDS 2 Defender 32 112 24 240 36 1 80 -80 240 -210 360 0.074937594 17694 71 197 236 126 97 96 0 1.3 8 0 47 29 0 0 0 0 0 0 0 0 0 0 1 1 21599 6642 539.975 166.05 1 23 X O X O 30000 2572 0 0 0 1000 80 80 80 140 89 2 20
229 <09><> <20><><EFBFBD><EFBFBD>Ʈ mon_gnoll_tanker.GCMDS 2 Defender 32 117.6 24 248 36 1 77 -77 132 -82.5 233 0.115650124 18147 72 199 240 128 99 98 0 1.3 8 0 48 30 0 0 0 0 0 0 0 0 0 0 1 1 22435 6744 560.875 168.6 1.1 24 X O X O 30000 2572 0 0 0 1000 80 80 80 140 88 2 20
230 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ؼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MON_Golem.GCMDS 2 Defender 30 131.25 30 315 30 1 142.5 -142.5 0 -247.5 398 0.067793 18606 73 201 242 128 99 98 0 1.1 8 0 49 30 0 0 0 0 0 0 0 0 0 0 1 1 22997 6832 574.925 170.8 1.5 24 X O X O 30000 2572 0 0 0 1000 80 80 80 140 87 2 20
231 <09>ι<EFBFBD> <20><>Ŭ<EFBFBD><C5AC> mon_backlyn.GCMDS 2 Defender 32 112 24 240 36 1 100 -100 110 -110 260 0.103680721 19071 74 204 245 131 101 100 0 1.3 8 0 49 31 0 0 0 0 0 0 0 0 0 0 1 1 23757 6935 593.925 173.375 1 24 X O X O 30000 2572 0 0 0 1000 80 80 80 140 86 2 20
232 <09><><EFBFBD><EFBFBD>ư <20><><EFBFBD><EFBFBD>Ʈ mon_knight.GCMDS 2 Defender 32 112 24 240 36 1 70 -70 120 -75 225 0.119744979 19541 75 208 249 133 102 102 0 1.3 9 0 50 31 0 0 0 0 0 0 0 0 0 0 1 1 24418 7037 610.45 175.925 1 25 X O X O 30000 2572 0 0 0 1000 80 80 80 140 85 2 20
233 <09><>Ŭ<EFBFBD><C5AC> <20><><EFBFBD><EFBFBD> mon_backlyn.GCMDS 2 Defender 32 117.6 24 248 36 1 110 -110 121 -121 271 0.099484869 20017 76 208 251 134 104 103 0 1.3 9 0 51 31 0 0 0 0 0 0 0 0 0 0 1 1 25325 7178 633.125 179.45 1.1 25 X O X O 30000 2572 0 0 0 1000 80 80 80 140 84 2 20
234 <09>̳<EFBFBD>Ÿ<EFBFBD><C5B8>Ʈ mon_bulls.GCMDS 2 Defender 36 113.4 28 261.3333333 32 1 136 -136 112 -176 326 0.082738074 20499 77 210 253 135 105 105 0 1.2 9 0 51 32 0 0 0 0 0 0 0 0 0 0 1 1 25935 7231 648.375 180.775 0.8 25 X O X O 30000 2572 0 0 0 1000 80 80 80 140 83 2 20
235 <09>̳<EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC> mon_minatami.GCMDS 2 Defender 32 112 20 200 28 1 65 -65 80 -120 270 0.099852246 20986 78 213 256 137 106 106 0 1 9 0 52 32 0 0 0 0 0 0 0 0 0 0 1 1 26756 7334 668.9 183.35 1 26 X O X O 30000 2572 0 0 0 1000 80 80 80 140 82 2 20
236 <09>̳<EFBFBD>Ÿ<EFBFBD><C5B8> <20><>ũ mon_minatami.GCMDS 2 Defender 32 112 20 200 28 1 65 -65 80 -120 270 0.099852246 21479 79 217 260 140 108 108 0 1 9 0 53 32 0 0 0 0 0 0 0 0 0 0 1 1 27468 7476 686.7 186.9 1 26 X O X O 30000 2572 0 0 0 1000 80 80 80 140 81 2 20
237 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> mon_elepan_troll.GCMDS 2 Defender 32 112 24 240 36 1 100 -170 50 -110 260 0.103680721 21978 80 219 264 141 110 109 0 1.3 9 0 53 33 0 0 0 0 0 0 0 0 0 0 1 1 28448 7580 711.2 189.5 1 26 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
238 <09><> mon_queen.GCMDS 2 Defender 30 105 30 300 30 1 225 -225 350 -180 330 0.081737184 22482 81 221 266 142 110 110 0 1.1 9 0 54 33 0 0 0 0 0 0 0 0 0 0 1 1 29107 7633 727.675 190.825 1 27 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
239 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_dullahan.GCMDS 2 Defender 32 112 24 240 40 1 95 -95 100 -100 250 0.107813954 22992 82 224 269 144 112 111 0 1.5 9 0 55 34 0 0 0 0 0 0 0 0 0 0 1 1 29992 7778 749.8 194.45 1 27 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
240 <09>ֵ<EFBFBD> <20><><EFBFBD>ε<EFBFBD> mon_york.GCMDS 2 Defender 32 117.6 24 248 36 1 88 -88 264 -231 381 0.070813488 23508 83 228 273 147 113 113 0 1.3 9 0 55 34 0 0 0 0 0 0 0 0 0 0 1 1 30758 7882 768.95 197.05 1.1 27 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
241 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> mon_queen02.GCMDS 2 Defender 30 105 30 300 30 1 225 -225 350 -180 330 0.081737184 24030 84 228 275 148 115 114 0 1.1 9 0 56 35 0 0 0 0 0 0 0 0 0 0 1 1 31813 7986 795.325 199.65 1 28 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
242 <09>ŵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ mon_knight.GCMDS 2 Defender 32 117.6 24 248 36 1 77 -77 132 -82.5 233 0.115650124 24557 85 230 277 148 115 114 0 1.3 9 0 57 35 0 0 0 0 0 0 0 0 0 0 1 1 32525 8082 813.125 202.05 1.1 28 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
243 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_elepan_troll.GCMDS 2 Defender 32 117.6 24 248 36 1 110 -187 55 -121 271 0.099484869 25090 86 233 280 151 117 117 0 1.3 9 0 57 36 0 0 0 0 0 0 0 0 0 0 1 1 33475 8187 836.875 204.675 1.1 28 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
244 ų<><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_queen.GCMDS 2 Defender 30 110.25 30 310 30 1 247.5 -247.5 385 -198 348 0.077517127 25629 87 237 284 153 118 118 0 1.1 9 0 58 36 0 0 0 0 0 0 0 0 0 0 1 1 34296 8291 857.4 207.275 1.1 29 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
245 <09><><EFBFBD><EFBFBD><E9B8AE> <20>Ƹ<EFBFBD> mon_dullahan02.GCMDS 2 Defender 32 117.6 24 248 40 1 104.5 -104.5 110 -110 260 0.103680721 26173 88 239 288 155 120 120 0 1.5 9 0 59 36 0 0 0 0 0 0 0 0 0 0 1 1 35430 8440 885.75 211 1.1 29 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
246 <09><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> mon_queen02.GCMDS 2 Defender 30 110.25 30 310 30 1 247.5 -247.5 385 -198 348 0.077517127 26723 89 241 290 155 121 120 0 1.1 9 0 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 1.1 29 X O X O 30000 2572 0 0 0 1000 80 80 80 140 80 2 20
247 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_seaman_mage.GCMDS 2 Defender 24 44 24 216 35 120 30 -30 40 -40 140 0.191804878 49 5 28 35 13 8 6 0 0.8 5 0 7 2 0 0 0 0 0 0 0 0 0 0 1 1 396 3000 9.9 17.375 1 7 X X X O 15000 2572 0 0 0 1000 80 80 80 140 132 2 20
248 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_seaman_mage.GCMDS 2 Warriro 24 44 24 216 35 120 30 -30 40 -40 140 0.191804878 49 5 28 35 13 8 6 0 0.8 5 0 7 2 0 0 0 0 0 0 0 0 0 0 1 1 396 3000 9.9 17.375 1 7 X X X O 15000 2572 0 0 0 1000 80 80 80 140 132 2 20
249 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>Ʈ mon_seaman_mage.GCMDS 2 Acolyte 24 44 24 216 35 120 30 -30 40 -40 140 0.191804878 49 5 28 35 13 8 6 0 0.8 5 0 7 2 0 0 0 0 0 0 0 0 0 0 1 1 396 3000 9.9 17.375 1 7 X X X O 15000 2572 0 0 0 1000 80 80 80 140 132 2 20
250 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mon_seaman_mage.GCMDS 2 Mage 24 44 24 216 35 120 30 -30 40 -40 140 0.191804878 49 5 28 35 13 8 6 0 0.8 5 0 7 2 0 0 0 0 0 0 0 0 0 0 1 1 396 3000 9.9 17.375 1 7 X X X O 15000 2572 0 0 0 1000 80 80 80 140 132 2 20
251 <09><><EFBFBD><EFBFBD><E0BAB8> mon_seaman_mage.GCMDS 2 Boss 24 44 24 216 35 120 30 -30 40 -40 140 0.191804878 49 5 28 35 13 8 6 0 0.8 5 0 7 2 0 0 0 0 0 0 0 0 0 0 1 1 396 3000 9.9 17.375 1 7 X X X O 15000 2572 0 0 0 1000 80 80 80 140 132 2 20
1000 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 116.55 36 342 36 1 68 -68 25.5 -25.5 126 0.212845582 0 4 25 32 11 8 4 0 0.8 4 0 3 1 0 0 0 0 0 0 0 0 0 0 1 1 374 614 9.35 15.35 0.85 1 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1001 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 119.7 36 348 36 1 72 -72 27 -27 127 0.211191779 0 7 34 41 17 11 8 0 1 4 0 5 2 0 0 0 0 0 0 0 0 0 0 1 1 568 840 14.2 21 0.9 2 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1002 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 122.85 36 354 36 1 76 -76 28.5 -28.5 179 0.150332625 0 10 44 53 23 16 13 1 1.3 4 1 7 4 0 0 0 0 0 0 0 0 0 0 1 1 820 1070 20.5 26.75 0.95 3 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1003 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 126 36 360 36 1 80 -80 30 -30 180 0.149502979 0 13 50 61 27 19 16 2 1.3 4 2 9 5 0 0 0 0 0 0 0 0 0 0 1 1 1108 1302 27.7 32.55 1 4 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1004 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 129.15 36 366 36 1 84 -84 31.5 -31.5 182 0.14787077 0 16 59 72 33 24 21 3 1.3 5 3 11 6 0 0 0 0 0 0 0 0 0 0 1 1 1496 1588 37.4 39.7 1.05 5 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1005 Ų<>鸵 summon_kindling.GCMDS 1 Summon 36 132.3 36 372 36 1 88 -88 33 -33 183 0.147067916 0 19 68 81 39 28 26 4 1.3 5 4 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1877 1826 46.925 45.65 1.1 6 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1006 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 100.8 32 298.6666667 36 1 80 -80 80 -80 230 0.117152517 0 19 68 81 39 28 26 5 1.3 5 5 13 7 0 0 0 0 0 0 0 0 0 0 1 1 1877 1826 46.925 45.65 0.8 6 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1007 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 103.6 32 304 36 1 85 -85 85 -85 235 0.114669715 0 22 73 88 43 32 29 6 1.3 5 6 15 9 0 0 0 0 0 0 0 0 0 0 1 1 2346 2068 58.65 51.7 0.85 7 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1008 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 106.4 32 309.3333333 36 1 90 -90 90 -90 240 0.112289772 0 25 81 98 47 35 32 7 1.3 5 7 17 10 0 0 0 0 0 0 0 0 0 0 1 1 2860 2312 71.5 57.8 0.9 8 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1009 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 109.2 32 314.6666667 36 1 95 -95 95 -95 245 0.110006437 0 28 88 107 53 40 37 8 1.3 5 8 19 11 0 0 0 0 0 0 0 0 0 0 1 1 3508 2610 87.7 65.25 0.95 9 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1010 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 112 32 320 36 1 100 -100 100 -100 250 0.107813954 0 31 97 116 59 44 42 9 1.3 6 9 21 12 0 0 0 0 0 0 0 0 0 0 1 1 4131 2860 103.275 71.5 1 10 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1011 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 114.8 32 325.3333333 36 1 105 -105 105 -105 255 0.105707017 0 34 104 125 63 48 46 10 1.3 6 10 23 14 0 0 0 0 0 0 0 0 0 0 1 1 4884 3114 122.1 77.85 1.05 11 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1012 <09>÷<EFBFBD><C3B7>ӿ<EFBFBD>Ŀ summon_flamewalker.GCMDS 1 Summon 32 117.6 32 330.6666667 36 1 110 -110 110 -110 260 0.103680721 0 37 110 133 67 51 49 11 1.3 6 11 25 15 0 0 0 0 0 0 0 0 0 0 1 1 5682 3370 142.05 84.25 1.1 12 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1013 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 100.8 32 298.6666667 36 1 112 -112 120 -120 270 0.099852246 0 37 110 133 67 51 49 12 1.3 6 12 25 15 0 0 0 0 0 0 0 0 0 0 1 1 5682 3370 142.05 84.25 0.8 12 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1014 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 103.6 32 304 36 1 119 -119 127.5 -127.5 278 0.09698692 0 40 119 144 74 56 54 13 1.3 6 13 27 16 0 0 0 0 0 0 0 0 0 0 1 1 6656 3680 166.4 92 0.85 13 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1015 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 106.4 32 309.3333333 36 1 126 -126 135 -135 285 0.094611177 0 43 128 153 79 60 58 14 1.3 6 14 29 17 0 0 0 0 0 0 0 0 0 0 1 1 7575 3942 189.375 98.55 0.9 14 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1016 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 109.2 32 314.6666667 36 1 133 -133 142.5 -142.5 293 0.092034505 0 46 133 160 83 64 62 15 1.3 7 15 31 19 0 0 0 0 0 0 0 0 0 0 1 1 8675 4208 216.875 105.2 0.95 15 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1017 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 112 32 320 36 1 140 -140 150 -150 300 0.089892233 0 49 141 170 88 67 66 16 1.3 7 16 33 20 0 0 0 0 0 0 0 0 0 0 1 1 9818 4476 245.45 111.9 1 16 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1018 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 114.8 32 325.3333333 36 1 147 -147 157.5 -157.5 308 0.087562741 0 52 148 179 94 72 71 17 1.3 7 17 35 21 0 0 0 0 0 0 0 0 0 0 1 1 11179 4798 279.475 119.95 1.05 17 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1019 <09><><EFBFBD>׽<EFBFBD><D7BD><EFBFBD> summon_burningshield.GCMDS 1 Summon 32 117.6 32 330.6666667 36 1 154 -154 165 -165 315 0.085621174 0 55 157 188 99 76 74 18 1.3 7 18 37 22 0 0 0 0 0 0 0 0 0 0 1 1 12451 5072 311.275 126.8 1.1 18 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1020 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 113.4 36 336 40 1 240 -240 240 -160 310 0.08699909 0 55 157 188 99 76 74 19 1.5 7 19 37 22 0 0 0 0 0 0 0 0 0 0 1 1 12451 5072 311.275 126.8 0.8 18 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1021 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 116.55 36 342 40 1 255 -255 255 -170 320 0.084286179 0 58 164 197 104 80 78 20 1.5 7 20 39 24 0 0 0 0 0 0 0 0 0 0 1 1 13963 5350 349.075 133.75 0.85 19 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1022 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 119.7 36 348 40 1 270 -270 270 -180 330 0.081737184 0 61 170 205 108 83 83 21 1.5 8 21 41 25 0 0 0 0 0 0 0 0 0 0 1 1 15509 5630 387.725 140.75 0.9 20 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1023 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 122.85 36 354 40 1 285 -285 285 -190 340 0.079337698 0 64 179 216 114 88 87 22 1.5 8 22 43 26 0 0 0 0 0 0 0 0 0 0 1 1 17322 5964 433.05 149.1 0.95 21 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1024 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 126 36 360 40 1 300 -300 300 -200 350 0.077074953 0 67 188 225 120 92 91 23 1.5 8 23 45 27 0 0 0 0 0 0 0 0 0 0 1 1 19001 6250 475.025 156.25 1 22 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1025 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 129.15 36 366 40 1 315 -315 315 -210 360 0.074937594 0 70 193 232 124 96 95 24 1.5 8 24 47 29 0 0 0 0 0 0 0 0 0 0 1 1 20988 6540 524.7 163.5 1.05 23 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1026 <09><><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> summon_firewing.GCMDS 1 Summon 36 132.3 36 372 40 1 330 -330 330 -220 370 0.072915486 0 73 201 242 128 99 98 25 1.5 8 25 49 30 0 0 0 0 0 0 0 0 0 0 1 1 22997 6832 574.925 170.8 1.1 24 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1027 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 113.4 36 336 40 1 240 -240 240 -160 310 0.08699909 0 73 201 242 128 99 98 26 1.5 8 26 49 30 0 0 0 0 0 0 0 0 0 0 1 1 22997 6832 574.925 170.8 0.8 24 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1028 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 116.55 36 342 40 1 255 -255 255 -170 320 0.084286179 0 76 208 251 134 104 103 27 1.5 9 27 51 31 0 0 0 0 0 0 0 0 0 0 1 1 25325 7178 633.125 179.45 0.85 25 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1029 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 119.7 36 348 40 1 270 -270 270 -180 330 0.081737184 0 79 217 260 140 108 108 28 1.5 9 28 53 32 0 0 0 0 0 0 0 0 0 0 1 1 27468 7476 686.7 186.9 0.9 26 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1030 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 122.85 36 354 40 1 285 -285 285 -190 340 0.079337698 0 82 224 269 144 112 111 29 1.5 9 29 55 34 0 0 0 0 0 0 0 0 0 0 1 1 29992 7778 749.8 194.45 0.95 27 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1031 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 126 36 360 40 1 300 -300 300 -200 350 0.077074953 0 85 230 277 148 115 114 30 1.5 9 30 57 35 0 0 0 0 0 0 0 0 0 0 1 1 32525 8082 813.125 202.05 1 28 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1032 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 129.15 36 366 40 1 315 -315 315 -210 360 0.074937594 0 88 239 288 155 120 120 31 1.5 9 31 59 36 0 0 0 0 0 0 0 0 0 0 1 1 35430 8440 885.75 211 1.05 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1033 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> summon_firewing.GCMDS 1 Summon 36 132.3 36 372 40 1 330 -330 330 -220 370 0.072915486 0 91 248 297 160 124 124 32 1.5 10 32 61 37 0 0 0 0 0 0 0 0 0 0 1 1 38093 8750 952.325 218.75 1.1 30 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1034 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>߸<EFBFBD>) stone_n.GCMDS 2 Structure 0 0 0 0 1 1 125 -125 125 -125 275 0.098041964 0 89 241 290 155 121 120 32 0 9 32 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 5 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1035 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>ΰ<EFBFBD>)<29><>ȯ<EFBFBD><C8AF> stone_h_re.GCMDS 0 Structure 0 0 0 0 1 1 125 -125 125 -125 275 0.098041964 0 89 241 290 155 121 120 32 0 9 32 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 5 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1036 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>ΰ<EFBFBD>) stone_h.GCMDS 0 Structure 0 0 0 0 1 1 125 -125 125 -125 275 0.098041964 0 89 241 290 155 121 120 32 0 9 32 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 5 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1037 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><>ĭ)<29><>ȯ<EFBFBD><C8AF> stone_a_re.GCMDS 1 Structure 0 0 0 0 1 1 125 -125 125 -125 275 0.098041964 0 89 241 290 155 121 120 32 0 9 32 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 5 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
1038 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><>ĭ) stone_a.GCMDS 1 Structure 0 0 0 0 1 1 125 -125 125 -125 275 0.098041964 0 89 241 290 155 121 120 32 0 9 32 59 37 0 0 0 0 0 0 0 0 0 0 1 1 36195 8495 904.875 212.375 5 29 X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0

View File

@@ -0,0 +1,91 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Arrangement2.rc
//
#define IDR_MANIFEST 1
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_ARRANGEMENT2_DIALOG 102
#define IDR_MAINFRAME 128
#define IDR_MENU1 129
#define ID_130 130
#define ID__50 131
#define ID__100 132
#define ID__200 133
#define ID__400 134
#define ID__800 135
#define IDR_ACCELERATOR1 136
#define IDC_POSITIONX 1002
#define IDC_POSITIONZ 1004
#define IDC_SCOUT 1006
#define IDC_AREA 1007
#define IDC_FIX 1008
#define IDC_ROUTE 1009
#define IDC_NONAREA 1010
#define IDC_CREATESCRIPT 1011
#define IDC_NUMINWORLD 1012
#define IDC_KIDCOMBO 1013
#define IDC_VISUALKID 1014
#define IDC_ERASE 1015
#define IDC_NUMOFKID 1016
#define IDC_NUMOFKID2 1017
#define IDC_CLASS 1017
#define IDC_LEVEL 1018
#define IDC_NAME 1019
#define IDC_ARRANGEMENT 1020
#define IDC_GROUP 1022
#define IDC_VISUALPID 1023
#define IDC_COMBO1 1024
#define IDC_PIDCOMBO 1024
#define IDC_EDIT2 1026
#define IDC_RESPAWNEDIT 1026
#define IDC_CHECK1 1027
#define IDC_VISUALLEVEL 1027
#define IDC_EDIT1 1028
#define IDC_PARTYMEM_NUM 1028
#define IDC_CHECK2 1029
#define IDC_CHK_STATUE 1029
#define IDC_STATIC4 1033
#define IDC_STATIC1 1034
#define IDC_STATIC2 1035
#define IDC_STATIC3 1036
#define IDC_STATICKID 1037
#define IDC_STATICNAME 1038
#define IDC_STATICLEVEL 1039
#define IDC_STATICCLASS 1040
#define IDC_STATICOBJNUM 1041
#define IDC_STATICRESPAWN 1042
#define IDC_STATICPID 1043
#define IDC_STATIC5 1044
#define IDC_STATIC6 1045
#define IDC_STATICX 1046
#define IDC_STATICZ 1047
#define IDC_STATICMONTNUM 1048
#define ID_32774 32774
#define ID_Menu 32775
#define ID__32779 32779
#define ID__32780 32780
#define ID__32781 32781
#define ID__32782 32782
#define ID__ZONE1 32789
#define ID__ZONE2 32790
#define ID__ZONE3 32791
#define ID__ZONE4 32792
#define ID__ZONE5 32793
#define ID__ZONE8 32794
#define ID__ZONE9 32795
#define ID__ZONE12 32796
#define ID__ZONE100 32797
#define ID__ZONE16 32799
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 137
#define _APS_NEXT_COMMAND_VALUE 32801
#define _APS_NEXT_CONTROL_VALUE 1049
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.Arrangement2"
type="win32"
/>
<description>여기에 응용 프로그램 설명을 추가합니다.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

View File

@@ -0,0 +1,13 @@
//
// Arrangement2.RC2 - resources Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>....
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,7 @@
// stdafx.cpp : ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// Arrangement2.pch<63><68> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.
// stdafx.obj<62><6A> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#include "stdafx.h"

View File

@@ -0,0 +1,45 @@
// stdafx.h : <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
// ǥ<><C7A5> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Windows <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ܽ<EFBFBD>ŵ<EFBFBD>ϴ<EFBFBD>.
#endif
// <20>Ʒ<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><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
// <20>ٸ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MSDN<44><4E> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
#ifndef WINVER // Windows 95 <20><> Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define WINVER 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINNT // Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINNT 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINDOWS // Windows 98 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINDOWS 0x0410 // Windows Me <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_IE // IE 4.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_IE 0x0400 // IE 5.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // <20>Ϻ<EFBFBD> CString <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// MFC<46><43> <20><><EFBFBD><EFBFBD> <20>κа<CEBA> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC <20>ٽ<EFBFBD> <20><> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#include <afxext.h> // MFC <20>ͽ<EFBFBD><CDBD>ټ<EFBFBD>
#include <afxdisp.h> // MFC <20>ڵ<EFBFBD>ȭ Ŭ<><C5AC><EFBFBD><EFBFBD>
#include <afxdtctl.h> // Internet Explorer 4 <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // Windows <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <gdiplus.h>
using namespace Gdiplus;

View File

@@ -0,0 +1,88 @@
// AuthDBManager.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "AuthDBManager.h"
#include "AuthDBManagerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerApp
BEGIN_MESSAGE_MAP(CAuthDBManagerApp, CWinApp)
//{{AFX_MSG_MAP(CAuthDBManagerApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerApp construction
CAuthDBManagerApp::CAuthDBManagerApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CAuthDBManagerApp object
CAuthDBManagerApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerApp initialization
BOOL CAuthDBManagerApp::InitInstance()
{
// <20><><EFBFBD><EFBFBD> DLL
GET_PLUGIN_INFO hGet_PlugIn_Info;
if((m_Language = LoadLibrary("language.dll")) != NULL)
{
AfxSetResourceHandle(m_Language);
hGet_PlugIn_Info = (GET_PLUGIN_INFO)GetProcAddress(m_Language, "Get_PlugIn_Info");
if(hGet_PlugIn_Info != NULL)
{
m_PlugInInfo = hGet_PlugIn_Info();
}
}
else
{
m_Language = m_hInstance;
ZeroMemory(&m_PlugInInfo, sizeof(PLUGININFO));
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
CAuthDBManagerDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

View File

@@ -0,0 +1,56 @@
// AuthDBManager.h : main header file for the AuthDBManager application
//
#if !defined(AFX_AuthDBManager_H__EA33128C_6CFB_48FD_9E36_85366557E0D2__INCLUDED_)
#define AFX_AuthDBManager_H__EA33128C_6CFB_48FD_9E36_85366557E0D2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
#include "plugin.h"
#include <RylServerLibrary/DB/DBComponent.h>
#include "AuthDef.h"
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerApp:
// See AuthDBManager.cpp for the implementation of this class
//
class CAuthDBManagerApp : public CWinApp
{
public:
CAuthDBManagerApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAuthDBManagerApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
PLUGININFO m_PlugInInfo;
HINSTANCE m_Language;
//{{AFX_MSG(CAuthDBManagerApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_AuthDBManager_H__EA33128C_6CFB_48FD_9E36_85366557E0D2__INCLUDED_)

View File

@@ -0,0 +1,432 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Korean resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 18, 1\r\n"
"#pragma code_page(949)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\AuthDBManager.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""l.kor\\afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOGEX 0, 0, 121, 166
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "<22><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD>"
FONT 10, "<22><><EFBFBD><EFBFBD>"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,13,22,20,20,0,WS_EX_STATICEDGE
LTEXT "<22><><EFBFBD><EFBFBD> DB <20>Ŵ<EFBFBD><C5B4><EFBFBD> <20><><EFBFBD><EFBFBD> 1.0",IDC_STATIC,35,29,77,8,
SS_NOPREFIX
DEFPUSHBUTTON "Ȯ<><C8AE>",IDOK,35,132,50,14,BS_FLAT | WS_GROUP
GROUPBOX "",IDC_STATIC,5,4,110,154
CTEXT "<22>÷<EFBFBD><C3B7><EFBFBD> <20><>",IDC_STATIC,13,50,36,12,SS_NOPREFIX |
SS_CENTERIMAGE | SS_SUNKEN
LISTBOX ID_PLUGIN_LIST,13,63,94,30,LBS_SORT |
LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL |
WS_TABSTOP,WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ",IDC_STATIC,13,94,36,12,SS_NOPREFIX |
SS_CENTERIMAGE | SS_SUNKEN
CTEXT "",ID_LASTUPDATE,49,94,58,12,SS_NOPREFIX |
SS_CENTERIMAGE | SS_SUNKEN
CTEXT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",IDC_STATIC,13,107,36,12,SS_NOPREFIX |
SS_CENTERIMAGE | SS_SUNKEN
CTEXT "",ID_CREATER,49,107,58,12,SS_NOPREFIX | SS_CENTERIMAGE |
SS_SUNKEN
END
IDD_AuthDBManager_DIALOG DIALOGEX 0, 0, 418, 398
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "<22><><EFBFBD><EFBFBD> DB <20>Ŵ<EFBFBD><C5B4><EFBFBD>"
MENU IDR_MENU
FONT 10, "<22><><EFBFBD><EFBFBD>"
BEGIN
CONTROL "List1",ID_USER_LIST,"SysListView32",LVS_REPORT |
LVS_EDITLABELS | WS_TABSTOP,7,21,403,218,
WS_EX_STATICEDGE
LTEXT "",ID_ERROR_LOG,7,350,243,35,0,WS_EX_STATICEDGE
GROUPBOX "",IDC_STATIC,0,0,418,397,BS_FLAT
CTEXT "",ID_SELECTED_ROW,54,6,28,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",ID_SELECTED_COUNT,82,6,29,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD>̵<EFBFBD>",IDC_STATIC,13,258,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
GROUPBOX "<22><><EFBFBD><EFBFBD> <20>߰<EFBFBD>",IDC_STATIC,7,245,243,97,BS_FLAT
CTEXT "<22>н<EFBFBD>",IDC_STATIC,13,270,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "<22≯<EFBFBD>",IDC_STATIC,13,283,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_ID,43,258,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
EDITTEXT ID_PASSWORD,43,270,50,12,ES_PASSWORD | ES_AUTOHSCROLL |
NOT WS_BORDER,WS_EX_STATICEDGE
EDITTEXT ID_NAME,43,283,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><>",IDC_STATIC,13,296,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
COMBOBOX ID_SEX,43,296,50,54,CBS_DROPDOWN | WS_VSCROLL |
WS_TABSTOP
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,13,309,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_BIRTH,43,309,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22>ֹε<D6B9><CEB5><EFBFBD>",IDC_STATIC,13,322,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_IDNUMBER,43,322,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ",IDC_STATIC,103,270,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_ZIPCODE,133,270,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22>ּ<EFBFBD>",IDC_STATIC,103,283,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_ADDRESS,133,283,109,12,ES_AUTOHSCROLL | ES_OEMCONVERT |
ES_WANTRETURN | NOT WS_BORDER,WS_EX_STATICEDGE
CTEXT "<22>ڵ<EFBFBD><DAB5><EFBFBD>",IDC_STATIC,103,296,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_MOBILE,133,296,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><>ȭ<EFBFBD><C8AD>ȣ",IDC_STATIC,103,309,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_PHONE,133,309,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,103,258,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_JOB,133,258,50,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,103,322,30,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_EMAIL,133,322,109,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD> <20><> / <20><><EFBFBD><EFBFBD>",IDC_STATIC,7,6,47,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "ID / <20><><EFBFBD>̵<EFBFBD>",IDC_STATIC,196,6,41,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",ID_SELECTED_UID,237,6,29,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",ID_SELECTED_ID,266,6,68,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "<22><> <20><>",IDC_STATIC,345,6,27,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",ID_TOTAL_ROW,372,6,38,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "*",ID_CONNECTION_LED,161,7,10,9,SS_CENTERIMAGE
CTEXT "*",ID_QEURY_LED,173,7,10,9,SS_CENTERIMAGE
CTEXT "<22><><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD>",IDC_STATIC,120,6,37,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CONTROL 133,IDC_STATIC,"Static",SS_BITMAP,272,269,127,86
DEFPUSHBUTTON "@.@",IDC_DEFAULT,327,319,26,14,BS_FLAT | NOT WS_VISIBLE
END
IDD_CONNECT DIALOGEX 0, 0, 143, 169
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "DB <20><><EFBFBD><EFBFBD>"
FONT 10, "<22><><EFBFBD><EFBFBD>ü"
BEGIN
COMBOBOX ID_SELECT_TYPE,74,7,58,70,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP
CTEXT "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC,9,7,65,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
GROUPBOX "ODBC",IDC_STATIC,8,29,124,32,BS_FLAT
CTEXT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҽ<EFBFBD>",IDC_STATIC,15,40,51,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_DATASOURCE_NAME,66,40,58,13,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
GROUPBOX "OLE DB",IDC_STATIC,8,66,124,73,BS_FLAT
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,15,78,51,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_SERVER_NAME,66,78,58,13,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA>̽<EFBFBD>",IDC_STATIC,15,91,51,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_DATABASE_NAME,66,91,58,13,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
CTEXT "<22>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>",IDC_STATIC,15,117,51,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_AUTHUSER_NAME,66,104,58,13,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,15,104,51,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT ID_AUTHUSER_PASS,66,117,58,13,ES_PASSWORD |
ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE
PUSHBUTTON "Ȯ<><C8AE>",IDOK,45,145,50,14,BS_FLAT
END
IDD_SEARCH DIALOGEX 0, 0, 138, 146
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "<22>˻<EFBFBD> <20><><EFBFBD><EFBFBD>"
FONT 10, "<22><><EFBFBD><EFBFBD>ü", 0, 0, 0x1
BEGIN
PUSHBUTTON "Ȯ<><C8AE>",IDOK,37,115,50,14,BS_FLAT
GROUPBOX "<22>˻<EFBFBD>",IDC_STATIC,6,7,123,46,BS_FLAT
EDITTEXT ID_SEARCH_TEXT,54,32,66,12,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
CTEXT "<22>˻<EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC,15,32,39,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
COMBOBOX ID_SELECT_SEARCH,54,19,67,95,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP
CTEXT "<22>˻<EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC,15,19,39,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
GROUPBOX "<22><><EFBFBD><EFBFBD>",IDC_STATIC,6,58,123,46,BS_FLAT
COMBOBOX ID_SELECT_ALIGN,54,69,67,95,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP
CTEXT "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC,15,69,39,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_STATIC,15,82,39,13,SS_CENTERIMAGE,
WS_EX_STATICEDGE
COMBOBOX ID_SELECT_ALIGNTYPE,54,82,67,95,CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041204B0"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "AuthDBManager MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "AuthDBManager\0"
VALUE "LegalCopyright", "Copyright (C) 2002\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "AuthDBManager.EXE\0"
VALUE "ProductName", "AuthDBManager <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x412, 1200
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 114
TOPMARGIN, 7
BOTTOMMARGIN, 159
END
IDD_AuthDBManager_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 411
TOPMARGIN, 7
BOTTOMMARGIN, 391
END
IDD_CONNECT, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 136
TOPMARGIN, 7
BOTTOMMARGIN, 162
END
IDD_SEARCH, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 131
TOPMARGIN, 7
BOTTOMMARGIN, 139
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "icon.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU MENU DISCARDABLE
BEGIN
POPUP "<22><><EFBFBD><EFBFBD>"
BEGIN
MENUITEM "<22><><EFBFBD><EFBFBD>", ID_CONNECT
MENUITEM "<22><><EFBFBD><EFBFBD>", ID_DISCONNECT
END
POPUP "<22><><EFBFBD><EFBFBD>"
BEGIN
MENUITEM "<22><><EFBFBD><EFBFBD> <20>߰<EFBFBD>", ID_ADD_USER
MENUITEM "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", ID_DELETE_USER
END
POPUP "<22><>"
BEGIN
MENUITEM "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ", ID_REFESH
MENUITEM "<22>˻<EFBFBD> <20><><EFBFBD><EFBFBD>", ID_SEARCH
END
POPUP "<22><><EFBFBD><EFBFBD>"
BEGIN
MENUITEM "<22><><EFBFBD><EFBFBD>", ID_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_LEDS BITMAP DISCARDABLE "Led\\leds.bmp"
IDB_LOGO BITMAP DISCARDABLE "res\\Logo.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_F1 "ID"
IDS_F2 "<22><><EFBFBD>̵<EFBFBD>"
IDS_F3 "<22>н<EFBFBD>"
IDS_F4 "<22≯<EFBFBD>"
IDS_F5 "<22><>"
IDS_F6 "<22><><EFBFBD><EFBFBD>"
IDS_F7 "<22>ֹι<D6B9>ȣ"
IDS_F8 "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ"
IDS_F9 "<22>ּ<EFBFBD>"
IDS_F10 "<22>޴<EFBFBD><DEB4><EFBFBD>"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_F11 "<22><>ȭ"
IDS_F12 "<22><><EFBFBD><EFBFBD>"
IDS_F13 "<22><><EFBFBD><EFBFBD>"
IDS_F14 "<22><><EFBFBD>Գ<EFBFBD>¥"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_S1 "<22><>"
IDS_S2 "<22><>"
IDS_A1 "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IDS_A2 "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
END
#endif // Korean resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE 18, 1
#pragma code_page(949)
#endif //_WIN32
#include "res\AuthDBManager.rc2" // non-Microsoft Visual C++ edited resources
#include "l.kor\afxres.rc" // Standard components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,254 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="AuthDBManager"
ProjectGUID="{8832403E-C3A9-419C-832D-0BF8968EA53B}"
Keyword="MFCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib oledb.lib msdasc.lib"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
SubSystem="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Debug/AuthDBManager.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1042"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="odbc32.lib odbccp32.lib oledb.lib msdasc.lib"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
SubSystem="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Release/AuthDBManager.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1042"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath=".\AuthDBManager.cpp">
</File>
<File
RelativePath=".\AuthDBManager.rc">
</File>
<File
RelativePath=".\AuthDBManagerDlg.cpp">
</File>
<File
RelativePath=".\ConnectDlg.cpp">
</File>
<File
RelativePath=".\SearchDlg.cpp">
</File>
<File
RelativePath=".\StdAfx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
PrecompiledHeaderThrough="stdafx.h"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
PrecompiledHeaderThrough="stdafx.h"/>
</FileConfiguration>
</File>
<File
RelativePath=".\UserList.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
RelativePath=".\AuthDBManager.h">
</File>
<File
RelativePath=".\AuthDBManagerDlg.h">
</File>
<File
RelativePath="AuthDef.h">
</File>
<File
RelativePath=".\ConnectDlg.h">
</File>
<File
RelativePath=".\plugin.h">
</File>
<File
RelativePath=".\Resource.h">
</File>
<File
RelativePath=".\SearchDlg.h">
</File>
<File
RelativePath=".\StdAfx.h">
</File>
<File
RelativePath=".\UserList.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File
RelativePath=".\res\AuthDBManager.rc2">
</File>
<File
RelativePath=".\icon.ico">
</File>
<File
RelativePath=".\Led\leds.bmp">
</File>
<File
RelativePath=".\res\Logo.bmp">
</File>
</Filter>
<Filter
Name="Led"
Filter="">
<File
RelativePath=".\Led\Led.cpp">
</File>
<File
RelativePath=".\Led\Led.h">
</File>
</Filter>
<Filter
Name="ListViewControl"
Filter="">
<File
RelativePath=".\ListViewControl\InPlaceEdit.cpp">
</File>
<File
RelativePath=".\ListViewControl\InPlaceEdit.h">
</File>
<File
RelativePath=".\ListViewControl\InPlaceList.cpp">
</File>
<File
RelativePath=".\ListViewControl\InPlaceList.h">
</File>
<File
RelativePath=".\ListViewControl\ListViewControl.cpp">
</File>
<File
RelativePath=".\ListViewControl\ListViewControl.h">
</File>
</Filter>
</Files>
<Globals>
<Global
Name="RESOURCE_FILE"
Value="AuthDBManager.rc"/>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,640 @@
// AuthDBManagerDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AuthDBManager.h"
#include "AuthDBManagerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CListBox m_PlugList;
CString m_LastUpdate;
CString m_Creater;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSelchangePluginList();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
m_LastUpdate = _T("");
m_Creater = _T("");
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, ID_PLUGIN_LIST, m_PlugList);
DDX_Text(pDX, ID_LASTUPDATE, m_LastUpdate);
DDX_Text(pDX, ID_CREATER, m_Creater);
//}}AFX_DATA_MAP
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
CString PlugInfoS;
if(pAppWnd->m_PlugInInfo.PlugInfo)
{
PlugInfoS.Format("%s %s", pAppWnd->m_PlugInInfo.PlugInName, pAppWnd->m_PlugInInfo.PlugInVer);
m_PlugList.AddString(PlugInfoS);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAboutDlg::OnSelchangePluginList()
{
// TODO: Add your control notification handler code here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
int Sel;
Sel = m_PlugList.GetCurSel();
if(Sel == 0)
{
m_Creater = pAppWnd->m_PlugInInfo.PlugInCreator.CreaterName;
m_LastUpdate = pAppWnd->m_PlugInInfo.PlugInLastUpdate;
UpdateData(FALSE);
}
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
ON_LBN_SELCHANGE(ID_PLUGIN_LIST, OnSelchangePluginList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerDlg dialog
CAuthDBManagerDlg::CAuthDBManagerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAuthDBManagerDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAuthDBManagerDlg)
m_ErrorLog = _T("");
m_SelectedCount = _T("");
m_SelectedRow = _T("");
m_SelectedUID = _T("");
m_SelectedID = _T("");
m_TotalRow = _T("");
m_Address = _T("");
m_Birth = _T("");
m_Email = _T("");
m_ID = _T("");
m_IDNumber = _T("");
m_Job = _T("");
m_Mobile = _T("");
m_Name = _T("");
m_Password = _T("");
m_Phone = _T("");
m_ZipCode = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAuthDBManagerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAuthDBManagerDlg)
DDX_Control(pDX, ID_SEX, m_Sex);
DDX_Control(pDX, ID_CHAR_LIST, m_UserList);
DDX_Control(pDX, ID_QEURY_LED, m_QueryLed);
DDX_Control(pDX, ID_CONNECTION_LED, m_ConnectionLed);
DDX_Text(pDX, ID_ERROR_LOG, m_ErrorLog);
DDX_Text(pDX, ID_SELECTED_COUNT, m_SelectedCount);
DDX_Text(pDX, ID_SELECTED_ROW, m_SelectedRow);
DDX_Text(pDX, ID_SELECTED_UID, m_SelectedUID);
DDX_Text(pDX, ID_SELECTED_ID, m_SelectedID);
DDX_Text(pDX, ID_TOTAL_ROW, m_TotalRow);
DDX_Text(pDX, ID_ADDRESS, m_Address);
DDX_Text(pDX, ID_BIRTH, m_Birth);
DDX_Text(pDX, ID_EMAIL, m_Email);
DDX_Text(pDX, ID_ID, m_ID);
DDX_Text(pDX, ID_IDNUMBER, m_IDNumber);
DDX_Text(pDX, ID_JOB, m_Job);
DDX_Text(pDX, ID_MOBILE, m_Mobile);
DDX_Text(pDX, ID_NAME, m_Name);
DDX_Text(pDX, ID_PASSWORD, m_Password);
DDX_Text(pDX, ID_PHONE, m_Phone);
DDX_Text(pDX, ID_ZIPCODE, m_ZipCode);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAuthDBManagerDlg, CDialog)
//{{AFX_MSG_MAP(CAuthDBManagerDlg)
ON_WM_SYSCOMMAND()
ON_NOTIFY(LVN_ENDLABELEDIT, ID_USER_LIST, OnEndlabeleditUserList)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_ABOUT, OnAbout)
ON_COMMAND(ID_CONNECT, OnConnect)
ON_COMMAND(ID_DISCONNECT, OnDisconnect)
ON_NOTIFY(NM_CLICK, ID_USER_LIST, OnClickUserList)
ON_COMMAND(ID_ADD_USER, OnAddUser)
ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
ON_COMMAND(ID_INIT_LOGINTIME, OnInitLogintime)
ON_COMMAND(ID_REFESH, OnRefesh)
ON_COMMAND(ID_SEARCH, OnSearch)
ON_NOTIFY(LVN_KEYDOWN, ID_USER_LIST, OnKeydownUserList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerDlg message handlers
BOOL CAuthDBManagerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
char SelectName[256];
int Counter;
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
m_UserList.SetColumn();
for(Counter = 0; Counter < 2; Counter++)
{
LoadString(pAppWnd->m_Language, IDS_S1 + Counter, SelectName, 256);
m_Sex.InsertString(Counter, SelectName);
}
m_Sex.SetCurSel(0);
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_OFF, CLed::LED_ROUND);
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
m_Align = 0;
m_AlignType = 0;
m_SearchType = 0;
ZeroMemory(m_Search, sizeof(char) * 256);
return TRUE; // return TRUE unless you set the focus to a control
}
void CAuthDBManagerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CAuthDBManagerDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAuthDBManagerDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CAuthDBManagerDlg::OnAbout()
{
// TODO: Add your command handler code here
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
void CAuthDBManagerDlg::OnConnect()
{
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
if(!CDBSingleObject::GetInstance().Connect(CDBSingleObject::Class_AuthDB))
{
m_ErrorLog.Format("[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
else
{
m_ErrorLog.Format("[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>.");
}
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_ON, CLed::LED_ROUND);
UpdateUserTable();
}
void CAuthDBManagerDlg::OnDisconnect()
{
// TODO: Add your command handler code here
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
if(CDBSingleObject::GetInstance().DisconnectDataSource())
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_OFF, CLed::LED_ROUND);
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
}
bool CAuthDBManagerDlg::ConnectDB(int Type, CString DataSource, CString Server, CString DataBase, CString User, CString Pass)
{
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_ON, CLed::LED_ROUND);
if(Type == 0)
{
if(!CDBSingleObject::GetInstance().ConnectSQLServer(DataSource.GetBuffer(0), NULL, NULL, NULL, CDBSingleObject::ConnType_ODBC))
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
return false;
}
}
else if(Type == 1)
{
if(!CDBSingleObject::GetInstance().ConnectSQLServer(Server.GetBuffer(0), DataBase.GetBuffer(0), User.GetBuffer(0), Pass.GetBuffer(0), CDBSingleObject::ConnType_MSSQL))
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
return false;
}
}
else if(Type == 2)
{
if(!CDBSingleObject::GetInstance().ConnectDataSourcePrompt(m_hWnd))
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
return false;
}
}
m_QueryLed.SetLed(CLed::LED_COLOR_RED, CLed::LED_OFF, CLed::LED_ROUND);
m_ConnectionLed.SetLed(CLed::LED_COLOR_GREEN, CLed::LED_ON, CLed::LED_ROUND);
return true;
}
const int MaxRow = 200;
bool CAuthDBManagerDlg::UpdateUserTable(void)
{
SELECT_AUTHUSER_TABLE LoginTable[MaxRow] = {0,};
int StartRow;
int RowCounter, Rows;
char Query[256] = "";
char Option[256] = "";
if(m_SearchType != 0)
{
if(m_SearchType == 1)
{
sprintf(Option, " where Account='%s'", m_Search);
}
else if(m_SearchType == 2)
{
sprintf(Option, " where Name='%s'", m_Search);
}
}
if(m_Align == 0)
{
strcat(Option, " order by UID");
}
else if(m_Align == 1)
{
strcat(Option, " order by Account");
}
else if(m_Align == 2)
{
strcat(Option, " order by Name");
}
if(m_AlignType == 0)
{
strcat(Option, " asc");
}
else if(m_AlignType == 1)
{
strcat(Option, " desc");
}
m_UserList.DeleteAllItems();
sprintf(Query, "select * from AuthUser %s", Option);
for(StartRow = 0;; StartRow += MaxRow)
{
if(CDBSingleObject::GetInstance().Select(Query, (void**)&LoginTable, sizeof(SELECT_AUTHUSER_TABLE), StartRow, MaxRow, &Rows))
{
for(RowCounter = 0; RowCounter < Rows; RowCounter++)
m_UserList.AddUserRow(&LoginTable[RowCounter]);
}
else
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
return false;
}
if(Rows < MaxRow)
break;
}
m_TotalRow.Format("%d", StartRow + Rows);
UpdateData(FALSE);
return true;
}
void CAuthDBManagerDlg::OnClickUserList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION Pos;
int Index;
unsigned long UserUID;
char strUserUID[256];
char strUserID[256];
Pos= m_UserList.GetFirstSelectedItemPosition();
if(Pos != NULL)
{
while(Pos)
{
Index = m_UserList.GetNextSelectedItem(Pos);
}
m_SelectedRow.Format("%d", Index);
m_SelectedCount.Format("%d", m_UserList.GetSelectedCount());
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
{
UserUID = atoi(strUserUID);
m_SelectedUID.Format("%d", UserUID);
m_UserList.GetItemText(Index, 1, strUserID, 256);
m_SelectedID = strUserID;
}
UpdateData(FALSE);
}
*pResult = 0;
}
void CAuthDBManagerDlg::OnEndlabeleditUserList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
char Query[256] = "";
// TODO: Add your control notification handler code here
UPDATE_AUTHUSER_TABLE ModifyLoginTable;
LV_ITEM *plvItem = &pDispInfo->item;
ZeroMemory(&ModifyLoginTable, sizeof(UPDATE_AUTHUSER_TABLE));
if(plvItem->pszText != NULL)
{
m_UserList.SetItemText(plvItem->iItem, plvItem->iSubItem, plvItem->pszText);
m_UserList.GetUserRow(plvItem->iItem, &ModifyLoginTable);
sprintf(Query, "UpdateUser '%d', '%s', '%s', '%s', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
ModifyLoginTable.UID, ModifyLoginTable.AuthID, ModifyLoginTable.AuthPW, ModifyLoginTable.Name, ModifyLoginTable.Sex, ModifyLoginTable.Birth,
ModifyLoginTable.ZipCode, ModifyLoginTable.Address, ModifyLoginTable.Mobile, ModifyLoginTable.Phone, ModifyLoginTable.Email, ModifyLoginTable.Job,
ModifyLoginTable.IDNumber);
CDBSingleObject::GetInstance().ExecuteQuery(Query);;
}
*pResult = 0;
}
void CAuthDBManagerDlg::OnAddUser()
{
// TODO: Add your command handler code here
INSERT_AUTHUSER_TABLE InsertLoginTable = {0,};
char Query[256] = "";
UpdateData(TRUE);
strncpy(InsertLoginTable.AuthID, m_ID.GetBuffer(16), 16);
strncpy(InsertLoginTable.AuthPW, m_Password.GetBuffer(16), 16);
strncpy(InsertLoginTable.Name, m_Name.GetBuffer(16), 16);
InsertLoginTable.Sex = m_Sex.GetCurSel();
strncpy(InsertLoginTable.Birth, m_Birth.GetBuffer(20), 20);
strncpy(InsertLoginTable.IDNumber, m_IDNumber.GetBuffer(14), 14);
strncpy(InsertLoginTable.ZipCode, m_ZipCode.GetBuffer(12), 12);
strncpy(InsertLoginTable.Address, m_Address.GetBuffer(80), 80);
strncpy(InsertLoginTable.Mobile, m_Mobile.GetBuffer(20), 20);
strncpy(InsertLoginTable.Phone, m_Phone.GetBuffer(20), 20);
strncpy(InsertLoginTable.Email, m_Email.GetBuffer(48), 48);
strncpy(InsertLoginTable.Job, m_Job.GetBuffer(20), 20);
sprintf(Query, "InsertUser '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
InsertLoginTable.AuthID, InsertLoginTable.AuthPW, InsertLoginTable.Name, InsertLoginTable.Sex, InsertLoginTable.Birth,InsertLoginTable.ZipCode,
InsertLoginTable.Address, InsertLoginTable.Mobile, InsertLoginTable.Phone, InsertLoginTable.Email, InsertLoginTable.Job, InsertLoginTable.IDNumber);
if(CDBSingleObject::GetInstance().ExecuteQuery(Query))
UpdateUserTable();
else
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
}
}
void CAuthDBManagerDlg::OnDeleteUser()
{
// TODO: Add your command handler code here
POSITION Pos;
int Index;
char Query[256] = "";
char strUserUID[256] = "";
Pos= m_UserList.GetFirstSelectedItemPosition();
if(Pos != NULL)
{
while(Pos != NULL)
{
Index = m_UserList.GetNextSelectedItem(Pos);
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
{
sprintf(Query, "DeleteUserByUID %s", strUserUID);
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
break;
}
}
}
}
UpdateUserTable();
}
void CAuthDBManagerDlg::OnInitLogintime()
{
// TODO: Add your command handler code here
}
void CAuthDBManagerDlg::OnRefesh()
{
// TODO: Add your command handler code here
UpdateUserTable();
}
void CAuthDBManagerDlg::OnSearch()
{
// TODO: Add your command handler code here
CSearchDlg dlgSearch;
dlgSearch.DoModal();
UpdateUserTable();
}
void CAuthDBManagerDlg::OnKeydownUserList(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVKEYDOWN* pKeyDown = (NMLVKEYDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
POSITION Pos;
int Index;
char Query[256] = "";
char strUserUID[256] = "";
if(pKeyDown->wVKey == VK_DELETE)
{
Pos= m_UserList.GetFirstSelectedItemPosition();
if(Pos != NULL)
{
while(Pos)
{
Index = m_UserList.GetNextSelectedItem(Pos);
if(m_UserList.GetItemText(Index, 0, strUserUID, 256))
{
sprintf(Query, "DeleteUserByUID %s", strUserUID);
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
{
m_ErrorLog = CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
break;
}
}
}
UpdateUserTable();
}
}
*pResult = 0;
}

View File

@@ -0,0 +1,98 @@
// AuthDBManagerDlg.h : header file
//
#if !defined(AFX_AuthDBManagerDLG_H__E7BBB14C_99A2_40F4_A212_B00B1FF8EEF2__INCLUDED_)
#define AFX_AuthDBManagerDLG_H__E7BBB14C_99A2_40F4_A212_B00B1FF8EEF2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CAuthDBManagerDlg dialog
#include "AuthDBManager.h"
#include "Led\Led.h"
#include "ConnectDlg.h"
#include "SearchDlg.h"
#include "UserList.h"
class CAuthDBManagerDlg : public CDialog
{
// Construction
public:
CAuthDBManagerDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CAuthDBManagerDlg)
enum { IDD = IDD_AuthDBManager_DIALOG };
CComboBox m_Sex;
CUserList m_UserList;
CLed m_QueryLed;
CLed m_ConnectionLed;
CString m_ErrorLog;
CString m_SelectedCount;
CString m_SelectedRow;
CString m_SelectedUID;
CString m_SelectedID;
CString m_TotalRow;
CString m_Address;
CString m_Birth;
CString m_Email;
CString m_ID;
CString m_IDNumber;
CString m_Job;
CString m_Mobile;
CString m_Name;
CString m_Password;
CString m_Phone;
CString m_ZipCode;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAuthDBManagerDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
char m_Select[2][10];
// Generated message map functions
//{{AFX_MSG(CAuthDBManagerDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnEndlabeleditUserList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnAbout();
afx_msg void OnConnect();
afx_msg void OnDisconnect();
afx_msg void OnClickUserList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnAddUser();
afx_msg void OnDeleteUser();
afx_msg void OnInitLogintime();
afx_msg void OnRefesh();
afx_msg void OnSearch();
afx_msg void OnKeydownUserList(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
int m_Align; // <20><><EFBFBD><EFBFBD>
int m_AlignType;
int m_SearchType; // <20>˻<EFBFBD>
char m_Search[256];
public:
bool ConnectDB(int Type, CString DataSource, CString Server, CString DataBase, CString User, CString Pass);
bool UpdateUserTable(void);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_AuthDBManagerDLG_H__E7BBB14C_99A2_40F4_A212_B00B1FF8EEF2__INCLUDED_)

View File

@@ -0,0 +1,66 @@
///////////////////////////////////////////////////////////////////////////////////////////////
//
// Table Schema Define
//
//////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _AuthDBDef
#define _AuthDBDef
#pragma pack(1)
typedef struct _INSERT_AUTHUSER_TABLE
{
char AuthID[16]; // <20><><EFBFBD>̵<EFBFBD>
char AuthPW[16]; // <20>н<EFBFBD>
char Name[16]; // <20≯<EFBFBD>
char Sex; // <20><><EFBFBD><EFBFBD>
char Birth[11]; // <20><><EFBFBD><EFBFBD>
char ZipCode[12]; // <20><><EFBFBD><EFBFBD> <20><>ȣ
char Address[80]; // <20>ּ<EFBFBD>
char Mobile[20]; // <20>޴<EFBFBD><DEB4><EFBFBD>
char Phone[20]; // <20><>ȭ
char Email[50]; // <20≯<EFBFBD><CCB8><EFBFBD>
char Job[20]; // <20><><EFBFBD><EFBFBD>
char IDNumber[15]; // <20>ֹε<D6B9><CEB5><EFBFBD> <20><>ȣ
}INSERT_AUTHUSER_TABLE, *LPINSERT_AUTHUSER_TABLE;
#pragma pack()
#pragma pack(1)
typedef struct _SELECT_AUTHUSER_TABLE
{
unsigned long UID; // <20><><EFBFBD>̵<EFBFBD>
char AuthID[16]; // <20><><EFBFBD>̵<EFBFBD>
char AuthPW[16]; // <20>н<EFBFBD>
char Name[16]; // <20≯<EFBFBD>
char Sex; // <20><><EFBFBD><EFBFBD>
char Birth[11]; // <20><><EFBFBD><EFBFBD>
char ZipCode[12]; // <20><><EFBFBD><EFBFBD> <20><>ȣ
char Address[80]; // <20>ּ<EFBFBD>
char Mobile[20]; // <20>޴<EFBFBD><DEB4><EFBFBD>
char Phone[20]; // <20><>ȭ
char Email[50]; // <20≯<EFBFBD><CCB8><EFBFBD>
char Job[20]; // <20><><EFBFBD><EFBFBD>
char IDNumber[15]; // <20>ֹε<D6B9><CEB5><EFBFBD> <20><>ȣ
TIME Reg_Date; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
}SELECT_AUTHUSER_TABLE, *LPSELECT_AUTHUSER_TABLE;
#pragma pack()
#pragma pack(1)
typedef struct _UPDATE_AUTHUSER_TABLE
{
unsigned long UID; // <20><><EFBFBD>̵<EFBFBD>
char AuthID[16]; // <20><><EFBFBD>̵<EFBFBD>
char AuthPW[16]; // <20>н<EFBFBD>
char Name[16]; // <20≯<EFBFBD>
char Sex; // <20><><EFBFBD><EFBFBD>
char Birth[11]; // <20><><EFBFBD><EFBFBD>
char ZipCode[12]; // <20><><EFBFBD><EFBFBD> <20><>ȣ
char Address[80]; // <20>ּ<EFBFBD>
char Mobile[20]; // <20>޴<EFBFBD><DEB4><EFBFBD>
char Phone[20]; // <20><>ȭ
char Email[50]; // <20≯<EFBFBD><CCB8><EFBFBD>
char Job[20]; // <20><><EFBFBD><EFBFBD>
char IDNumber[15]; // <20>ֹε<D6B9><CEB5><EFBFBD> <20><>ȣ
}UPDATE_AUTHUSER_TABLE, *LPUPDATE_AUTHUSER_TABLE;
#pragma pack()
#endif

View File

@@ -0,0 +1,89 @@
// ConnectDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AuthDBManager.h"
#include "ConnectDlg.h"
#include "AuthDBManagerDlg.h"
#include ".\connectdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConnectDlg dialog
CConnectDlg::CConnectDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConnectDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CConnectDlg)
m_AuthUserName = _T("");
m_AuthUserPass = _T("");
m_DataBaseName = _T("");
m_DataSourceName = _T("");
m_ServerName = _T("");
//}}AFX_DATA_INIT
}
void CConnectDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConnectDlg)
DDX_Control(pDX, ID_SELECT_TYPE, m_SelectControl);
DDX_Text(pDX, ID_AUTHUSER_NAME, m_AuthUserName);
DDX_Text(pDX, ID_AUTHUSER_PASS, m_AuthUserPass);
DDX_Text(pDX, ID_DATABASE_NAME, m_DataBaseName);
DDX_Text(pDX, ID_DATASOURCE_NAME, m_DataSourceName);
DDX_Text(pDX, ID_SERVER_NAME, m_ServerName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConnectDlg, CDialog)
//{{AFX_MSG_MAP(CConnectDlg)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CconnectDlg message handlers
BOOL CConnectDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_SelectControl.InsertString(0, "ODBC");
m_SelectControl.InsertString(1, "OLE DB");
m_SelectControl.InsertString(2, "Source Prompt");
m_SelectControl.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CConnectDlg::OnOK()
{
// TODO: Add extra validation here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
CAuthDBManagerDlg* pDlgWnd = (CAuthDBManagerDlg*)pAppWnd->m_pMainWnd;
UpdateData();
pDlgWnd->ConnectDB(m_SelectControl.GetCurSel(), m_DataSourceName, m_ServerName, m_DataBaseName, m_AuthUserName, m_AuthUserPass);
CDialog::OnOK();
}
void CConnectDlg::OnBnClickedOk()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
OnOK();
}

View File

@@ -0,0 +1,54 @@
#if !defined(AFX_CONNECTDLG_H__815DC394_E827_414B_96D6_30BA20241E8F__INCLUDED_)
#define AFX_CONNECTDLG_H__815DC394_E827_414B_96D6_30BA20241E8F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ConnectDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CConnectDlg dialog
class CConnectDlg : public CDialog
{
// Construction
public:
CConnectDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CconnectDlg)
enum { IDD = IDD_CONNECT };
CComboBox m_SelectControl;
CString m_AuthUserName;
CString m_AuthUserPass;
CString m_DataBaseName;
CString m_DataSourceName;
CString m_ServerName;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CconnectDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CconnectDlg)
virtual void OnOK();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CONNECTDLG_H__815DC394_E827_414B_96D6_30BA20241E8F__INCLUDED_)

View File

@@ -0,0 +1,238 @@
///////////////////////////////////////////////////////////////////////////////
// Led.cpp : implementation file
// Visual Source Safe: $Revision: 1 $
//
// Led static control. Will display a LED in 4 different colors and two shapes.
///////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1998-1999 Monte Variakojis ( monte@apollocom.com )
// All rights reserved - not to be sold.
///////////////////////////////////////////////////////////////////////////////
#include "..\stdafx.h"
#include "..\resource.h"
#include "Led.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLed
#define TIMER_ID_PING 1 // Timer Ping ID
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
CLed::CLed()
{
m_LedBitmap.LoadBitmap(IDB_LEDS);
m_nLedColor = LED_COLOR_RED;
m_nLedMode = LED_OFF;
m_nLedShape = LED_ROUND;
}
CLed::~CLed()
{
VERIFY(m_LedBitmap.DeleteObject());
}
BEGIN_MESSAGE_MAP(CLed, CStatic)
//{{AFX_MSG_MAP(CLed)
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_CREATE()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLed message handlers
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void CLed::OnPaint()
{
CPaintDC dc(this); // device context for painting
DrawLed(&dc,m_nLedColor,m_nLedMode,m_nLedShape);
// Do not call CStatic::OnPaint() for painting messages
}
///////////////////////////////////////////////////////////////////////////////
// Name: SetLed
// Description: This method will draw the LED to the specified DC.
//
// Entry:
// CDC *pDC - DC to draw to
//
// int iLedColor - Where color is defined by:
// LED_COLOR_RED
// LED_COLOR_GREEN
// LED_COLOR_YELLOW
// LED_COLOR_BLUE
//
// int iMode - where mode is defined by:
// LED_ON
// LED_OFF
// LED_DISABLED
//
// int iShape - where shape is defined by:
// LED_ROUND
// LED_SQUARE
///////////////////////////////////////////////////////////////////////////////
void CLed::DrawLed(CDC *pDC,int nLEDColor, int nMode, int nShape)
{
CRect rect;
GetClientRect(&rect);
//
// Center led within an oversized window
//
if(rect.Width() >= LED_SIZE && rect.Height() >= LED_SIZE)
{
int nWidth = rect.Width();
int nHeight = rect.Height();
rect.left += (nWidth - LED_SIZE)/2;
rect.right -= (nWidth - LED_SIZE)/2;
rect.top += (nHeight - LED_SIZE)/2;
rect.bottom -= (nHeight - LED_SIZE)/2;
}
//
// Prepare temporary DCs and bitmaps
//
CBitmap TransBitmap;
TransBitmap.CreateBitmap(LED_SIZE,LED_SIZE,1,1,NULL);
CBitmap bitmapTemp;
CBitmap* pBitmap = &m_LedBitmap;
CDC srcDC;
CDC dcMask;
CDC TempDC;
TempDC.CreateCompatibleDC(pDC);
srcDC.CreateCompatibleDC(pDC);
dcMask.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = srcDC.SelectObject(pBitmap);
CBitmap* pOldMaskbitmap = dcMask.SelectObject(&TransBitmap);
bitmapTemp.CreateCompatibleBitmap(pDC,LED_SIZE,LED_SIZE);
//
// Work with tempDC and bitmapTemp to reduce flickering
//
CBitmap *pOldBitmapTemp = TempDC.SelectObject(&bitmapTemp);
TempDC.BitBlt(0, 0, LED_SIZE, LED_SIZE, pDC, rect.left, rect.top, SRCCOPY);
//
// Create mask
//
COLORREF OldBkColor = srcDC.SetBkColor(RGB(255,0,255));
dcMask.BitBlt(0, 0, LED_SIZE, LED_SIZE,&srcDC, nMode*LED_SIZE, nLEDColor+nShape, SRCCOPY);
TempDC.SetBkColor(OldBkColor);
//
// Using the IDB_LEDS bitmap, index into the bitmap for the appropriate
// LED. By using the mask color (RGB(255,0,255)) a mask has been created
// so the bitmap will appear transparent.
//
TempDC.BitBlt(0, 0, LED_SIZE, LED_SIZE, &srcDC, nMode*LED_SIZE, nLEDColor+nShape, SRCINVERT);
TempDC.BitBlt(0, 0, LED_SIZE, LED_SIZE,&dcMask, 0, 0, SRCAND);
TempDC.BitBlt(0, 0, LED_SIZE, LED_SIZE, &srcDC, nMode*LED_SIZE, nLEDColor+nShape, SRCINVERT);
//
// Since the actual minipulation is done to tempDC so there is minimal
// flicker, it is now time to draw the result to the screen.
//
pDC->BitBlt(rect.left, rect.top, LED_SIZE, LED_SIZE, &TempDC, 0, 0, SRCCOPY);
//
// House cleaning
//
srcDC.SelectObject(pOldBitmap);
dcMask.SelectObject(pOldMaskbitmap);
TempDC.SelectObject(pOldBitmapTemp);
VERIFY(srcDC.DeleteDC());
VERIFY(dcMask.DeleteDC());
VERIFY(TempDC.DeleteDC());
VERIFY(TransBitmap.DeleteObject());
VERIFY(bitmapTemp.DeleteObject());
}
///////////////////////////////////////////////////////////////////////////////
// Name: SetLed
// Description: This method will draw and set led parameters.
//
// Entry: int iLedColor - Where color is defined by:
// LED_COLOR_RED
// LED_COLOR_GREEN
// LED_COLOR_YELLOW
// LED_COLOR_BLUE
//
// int iMode - where mode is defined by:
// LED_ON
// LED_OFF
// LED_DISABLED
//
// int iShape - where shape is defined by:
// LED_ROUND
// LED_SQUARE
///////////////////////////////////////////////////////////////////////////////
void CLed::SetLed(int nLedColor, int nMode, int nShape)
{
m_nLedColor = nLedColor;
m_nLedMode = nMode;
m_nLedShape = nShape;
CDC *pDC;
pDC = GetDC();
DrawLed(pDC,m_nLedColor,m_nLedMode,m_nLedShape);
ReleaseDC(pDC);
}
///////////////////////////////////////////////////////////////////////////////
// Name: Ping
// Description: This method will turn the led on for dwTimeout milliseconds and
// then turn it off.
//
// Entry: DWORD dwTimeout - Time out in milliseconds
///////////////////////////////////////////////////////////////////////////////
void CLed::Ping(DWORD dwTimeout)
{
// Return if pinging
if(m_bPingEnabled == TRUE)
{
KillTimer(TIMER_ID_PING);
}
m_bPingEnabled = TRUE;
SetLed(m_nLedColor,CLed::LED_ON,m_nLedShape);
SetTimer(TIMER_ID_PING,dwTimeout,NULL);
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void CLed::OnTimer(UINT nIDEvent)
{
if(nIDEvent == TIMER_ID_PING)
{
SetLed(m_nLedColor,CLed::LED_OFF,m_nLedShape);
KillTimer(nIDEvent);
m_bPingEnabled = FALSE;
}
CStatic::OnTimer(nIDEvent);
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
BOOL CLed::OnEraseBkgnd(CDC* pDC)
{
// No background rendering
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,88 @@
///////////////////////////////////////////////////////////////////////////////
// Led.h : header file
// Visual Source Safe: $Revision: 1 $
//
// Led static control. Will display a LED in 4 different colors and two shapes.
///////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1998-1999 Monte Variakojis ( monte@apollocom.com )
// All rights reserved - not to be sold.
///////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_LEDWND_H__2D837381_FFEC_11D1_A1CE_00A024D311C0__INCLUDED_)
#define AFX_LEDWND_H__2D837381_FFEC_11D1_A1CE_00A024D311C0__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
///////////////////////////////////////////////////////////////////////////////
#define LED_SIZE 16 // Led are 16 X 16 pixels
/////////////////////////////////////////////////////////////////////////////
// CLed window
class CLed : public CStatic
{
protected:
int m_nLedColor, m_nLedMode, m_nLedShape;
DWORD m_dwPingTimeout;
BOOL m_bPingEnabled;
CBitmap m_LedBitmap;
public:
enum {
LED_ROUND = 0, // Circle starts at row 0
LED_SQUARE = LED_SIZE * 4, // squares start at row 4
};
enum {
LED_COLOR_RED = 0 * LED_SIZE, // Row 0
LED_COLOR_GREEN = 1 * LED_SIZE, // Row 1
LED_COLOR_YELLOW = 2 * LED_SIZE, // Row 2
LED_COLOR_BLUE = 3 * LED_SIZE, // Row 3
};
enum {
LED_ON = 0, // Column 0
LED_OFF = 1, // Column 1
LED_DISABLED = 2, // Column 2
};
// Construction
public:
CLed();
// Attributes
public:
// Operations
public:
void SetLed(int nLedColor, int nMode, int nShape);
int GetLedMode(){return m_nLedMode;}
void Ping(DWORD dwTimeout = 1000);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLed)
//}}AFX_VIRTUAL
// Implementation
public:
void DrawLed( CDC *pDC, int nLEDColor, int nMode, int nShape );
virtual ~CLed();
// Generated message map functions
protected:
//{{AFX_MSG(CLed)
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_LEDWND_H__2D837381_FFEC_11D1_A1CE_00A024D311C0__INCLUDED_)

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,127 @@
#include "InPlaceEdit.h"
CInPlaceEdit::CInPlaceEdit(int iItem, int iSubItem, CString sInitText) :m_sInitText( sInitText )
{
m_iItem = iItem;
m_iSubItem = iSubItem;
m_bESC = FALSE;
}
CInPlaceEdit::~CInPlaceEdit()
{
}
BEGIN_MESSAGE_MAP(CInPlaceEdit, CEdit)
//{{AFX_MSG_MAP(CInPlaceEdit)
ON_WM_KILLFOCUS()
ON_WM_NCDESTROY()
ON_WM_CHAR()
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CInPlaceEdit::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_DELETE || pMsg->wParam == VK_ESCAPE || GetKeyState(VK_CONTROL))
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return TRUE;
}
}
return CEdit::PreTranslateMessage(pMsg);
}
void CInPlaceEdit::OnKillFocus(CWnd* pNewWnd)
{
CEdit::OnKillFocus(pNewWnd);
CString str;
GetWindowText(str);
LV_DISPINFO dispinfo;
dispinfo.hdr.hwndFrom = GetParent()->m_hWnd;
dispinfo.hdr.idFrom = GetDlgCtrlID();
dispinfo.hdr.code = LVN_ENDLABELEDIT;
dispinfo.item.mask = LVIF_TEXT;
dispinfo.item.iItem = m_iItem;
dispinfo.item.iSubItem = m_iSubItem;
dispinfo.item.pszText = m_bESC ? NULL : LPTSTR((LPCTSTR)str);
dispinfo.item.cchTextMax = str.GetLength();
GetParent()->GetParent()->SendMessage(WM_NOTIFY, GetParent()->GetDlgCtrlID(), (LPARAM)&dispinfo);
DestroyWindow();
}
void CInPlaceEdit::OnNcDestroy()
{
CEdit::OnNcDestroy();
delete this;
}
void CInPlaceEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar == VK_ESCAPE || nChar == VK_RETURN)
{
if(nChar == VK_ESCAPE)
m_bESC = TRUE;
GetParent()->SetFocus();
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
CString str;
GetWindowText(str);
CWindowDC dc(this);
CFont *pFont = GetParent()->GetFont();
CFont *pFontDC = dc.SelectObject(pFont);
CSize size = dc.GetTextExtent(str);
dc.SelectObject(pFontDC);
size.cx += 5;
CRect rect, parentrect;
GetClientRect(&rect);
GetParent()->GetClientRect(&parentrect);
ClientToScreen(&rect);
GetParent()->ScreenToClient(&rect);
if(size.cx > rect.Width())
{
if(size.cx + rect.left < parentrect.right)
rect.right = rect.left + size.cx;
else
rect.right = parentrect.right;
MoveWindow(&rect);
}
}
int CInPlaceEdit::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CEdit::OnCreate(lpCreateStruct) == -1)
return -1;
CFont* font = GetParent()->GetFont();
SetFont(font);
SetWindowText(m_sInitText);
SetFocus();
SetSel(0, -1);
return 0;
}

View File

@@ -0,0 +1,40 @@
#include <afxcmn.h> // MFC support for Windows Common Controls
class CInPlaceEdit : public CEdit
{
public:
CInPlaceEdit(int iItem, int iSubItem, CString sInitText);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CInPlaceEdit)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CInPlaceEdit();
// Generated message map functions
protected:
//{{AFX_MSG(CInPlaceEdit)
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnNcDestroy();
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
int m_iItem;
int m_iSubItem;
CString m_sInitText;
BOOL m_bESC; // To indicate whether ESC key was pressed
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

View File

@@ -0,0 +1,126 @@
// InPlaceList.cpp : implementation file
//
#include "InPlaceList.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CInPlaceList
CInPlaceList::CInPlaceList(int iItem, int iSubItem, CStringList *plstItems, int nSel)
{
m_iItem = iItem;
m_iSubItem = iSubItem;
m_lstItems.AddTail( plstItems );
m_nSel = nSel;
m_bESC = FALSE;
}
CInPlaceList::~CInPlaceList()
{
}
BEGIN_MESSAGE_MAP(CInPlaceList, CComboBox)
//{{AFX_MSG_MAP(CInPlaceList)
ON_WM_CREATE()
ON_WM_KILLFOCUS()
ON_WM_CHAR()
ON_WM_NCDESTROY()
ON_CONTROL_REFLECT(CBN_CLOSEUP, OnCloseup)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInPlaceList message handlers
int CInPlaceList::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CComboBox::OnCreate(lpCreateStruct) == -1)
return -1;
// Set the proper font
CFont* font = GetParent()->GetFont();
SetFont(font);
for( POSITION pos = m_lstItems.GetHeadPosition(); pos != NULL; )
{
AddString( (LPCTSTR) (m_lstItems.GetNext( pos )) );
}
SetCurSel( m_nSel );
SetFocus();
return 0;
}
BOOL CInPlaceList::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN )
{
if(pMsg->wParam == VK_RETURN
|| pMsg->wParam == VK_ESCAPE
)
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return TRUE; // DO NOT process further
}
}
return CComboBox::PreTranslateMessage(pMsg);
}
void CInPlaceList::OnKillFocus(CWnd* pNewWnd)
{
CComboBox::OnKillFocus(pNewWnd);
CString str;
GetWindowText(str);
// Send Notification to parent of ListView ctrl
LV_DISPINFO dispinfo;
dispinfo.hdr.hwndFrom = GetParent()->m_hWnd;
dispinfo.hdr.idFrom = GetDlgCtrlID();
dispinfo.hdr.code = LVN_ENDLABELEDIT;
dispinfo.item.mask = LVIF_TEXT;
dispinfo.item.iItem = m_iItem;
dispinfo.item.iSubItem = m_iSubItem;
dispinfo.item.pszText = m_bESC ? NULL : LPTSTR((LPCTSTR)str);
dispinfo.item.cchTextMax = str.GetLength();
GetParent()->GetParent()->SendMessage( WM_NOTIFY, GetParent()->GetDlgCtrlID(), (LPARAM)&dispinfo );
PostMessage( WM_CLOSE );
}
void CInPlaceList::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if( nChar == VK_ESCAPE || nChar == VK_RETURN)
{
if( nChar == VK_ESCAPE )
m_bESC = TRUE;
GetParent()->SetFocus();
return;
}
CComboBox::OnChar(nChar, nRepCnt, nFlags);
}
void CInPlaceList::OnNcDestroy()
{
CComboBox::OnNcDestroy();
delete this;
}
void CInPlaceList::OnCloseup()
{
GetParent()->SetFocus();
}

View File

@@ -0,0 +1,48 @@
// InPlaceList.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CInPlaceList window
#include <afxcmn.h> // MFC support for Windows Common Controls
class CInPlaceList : public CComboBox
{
// Construction
public:
CInPlaceList(int iItem, int iSubItem, CStringList *plstItems, int nSel);
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CInPlaceList)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CInPlaceList();
// Generated message map functions
protected:
//{{AFX_MSG(CInPlaceList)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnNcDestroy();
afx_msg void OnCloseup();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
int m_iItem;
int m_iSubItem;
CStringList m_lstItems;
int m_nSel;
BOOL m_bESC; // To indicate whether ESC key was pressed
};

View File

@@ -0,0 +1,260 @@
///////////////////////////////////////////////////////////////////////////////////////////////
//
// CListViewControl
//
//////////////////////////////////////////////////////////////////////////////////////////////
#include "ListViewControl.h"
CListViewControl::CListViewControl()
{
ZeroMemory(m_ColType, sizeof(unsigned int) * 100);
}
CListViewControl::~CListViewControl()
{
}
BEGIN_MESSAGE_MAP(CListViewControl, CListCtrl)
//{{AFX_MSG_MAP(CListViewControl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CListViewControl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
if(lplvcd->nmcd.dwItemSpec % 2)
lplvcd->clrTextBk = RGB(200, 228, 248);
*pResult = CDRF_DODEFAULT;
break;
}
}
void CListViewControl::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CListCtrl::OnLButtonDblClk(nFlags, point);
int index, colnum;
if((index = HitTestEx(point, &colnum)) != -1)
{
if(m_ColType[colnum] == CT_EDIT)
{
if(GetWindowLong(m_hWnd, GWL_STYLE) & LVS_EDITLABELS)
EditSubLabel(index, colnum);
}
if(m_ColType[colnum] == CT_COMBO)
{
if(GetWindowLong(m_hWnd, GWL_STYLE) & LVS_EDITLABELS)
ShowInPlaceList(index, colnum, m_ColumnStringList[colnum], 0);
}
}
}
void CListViewControl::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(GetFocus() != this)
SetFocus();
CListCtrl::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CListViewControl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(GetFocus() != this)
SetFocus();
CListCtrl::OnVScroll(nSBCode, nPos, pScrollBar);
}
bool CListViewControl::SetColumnType(int ColNum, unsigned int Type)
{
if(ColNum < 0)
return false;
m_ColType[ColNum] = Type;
return true;
}
bool CListViewControl::SetColumnStringList(int ColNum, CStringList &StringList)
{
if(ColNum < 0)
return false;
m_ColumnStringList[ColNum].RemoveAll();
POSITION Pos = StringList.GetHeadPosition();
while(Pos)
m_ColumnStringList[ColNum].AddTail(StringList.GetNext(Pos));
return true;
}
int CListViewControl::HitTestEx(CPoint &point, int *col) const
{
int colnum = 0;
int row = HitTest(point, NULL);
if(col)
*col = 0;
if((GetWindowLong(m_hWnd, GWL_STYLE) & LVS_TYPEMASK) != LVS_REPORT)
return row;
row = GetTopIndex();
int bottom = row + GetCountPerPage();
if(bottom > GetItemCount())
bottom = GetItemCount();
CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
int nColumnCount = pHeader->GetItemCount();
INT* piColumnArray = new INT[nColumnCount];
((CListCtrl*)this)->GetColumnOrderArray(piColumnArray);
for(;row <=bottom; row++)
{
CRect rect;
GetItemRect(row, &rect, LVIR_BOUNDS);
if(rect.PtInRect(point))
{
for(colnum = 0; colnum < nColumnCount; colnum++)
{
int colwidth = GetColumnWidth(piColumnArray[colnum]);
if(point.x >= rect.left && point.x <= (rect.left + colwidth))
{
*col = piColumnArray[colnum];
delete [] piColumnArray;
return row;
}
rect.left += colwidth;
}
}
}
delete [] piColumnArray;
return -1;
}
CEdit* CListViewControl::EditSubLabel(int nItem, int nCol)
{
if(!EnsureVisible(nItem, TRUE))
return NULL;
CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
int nColumnCount = pHeader->GetItemCount();
if(nCol >= nColumnCount || GetColumnWidth(nCol) < 5)
return NULL;
int offset = 0;
INT *piColumnArray = new INT[nColumnCount];
((CListCtrl*)this)->GetColumnOrderArray(piColumnArray);
for(int i = 0; nCol != piColumnArray[i]; i++)
offset += GetColumnWidth( piColumnArray[i]);
delete [] piColumnArray;
CRect rect;
GetItemRect(nItem, &rect, LVIR_BOUNDS);
CRect rcClient;
GetClientRect(&rcClient);
if(offset + rect.left < 0 || offset + rect.left > rcClient.right)
{
CSize size;
if(offset + rect.left < 0)
size.cx = -(offset - rect.left);
else
size.cx = offset - rect.left;
size.cy = 0;
Scroll(size);
GetItemRect(nItem, &rect, LVIR_BOUNDS);
}
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT;
GetColumn(nCol, &lvcol);
DWORD dwStyle ;
if((lvcol.fmt&LVCFMT_JUSTIFYMASK) == LVCFMT_LEFT)
dwStyle = ES_LEFT;
else if((lvcol.fmt&LVCFMT_JUSTIFYMASK) == LVCFMT_RIGHT)
dwStyle = ES_RIGHT;
else dwStyle = ES_CENTER;
rect.left += offset+4;
rect.right = rect.left + GetColumnWidth(nCol) - 3 ;
if(rect.right > rcClient.right)
rect.right = rcClient.right;
dwStyle |= WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL;
CEdit *pEdit = new CInPlaceEdit(nItem, nCol, GetItemText(nItem, nCol));
pEdit->Create(dwStyle, rect, this, IDC_IPEDIT);
return pEdit;
}
CComboBox* CListViewControl::ShowInPlaceList(int nItem, int nCol, CStringList &lstItems, int nSel)
{
if(!EnsureVisible(nItem, TRUE))
return NULL;
CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
int nColumnCount = pHeader->GetItemCount();
if(nCol >= nColumnCount || GetColumnWidth(nCol) < 10)
return NULL;
int offset = 0;
for(int i = 0; i < nCol; i++)
offset += GetColumnWidth(i);
CRect rect;
GetItemRect(nItem, &rect, LVIR_BOUNDS);
CRect rcClient;
GetClientRect(&rcClient);
if(offset + rect.left < 0 || offset + rect.left > rcClient.right)
{
CSize size;
size.cx = offset + rect.left;
size.cy = 0;
Scroll( size );
rect.left -= size.cx;
}
rect.left += offset+4;
rect.right = rect.left + GetColumnWidth(nCol) - 3 ;
int height = rect.bottom-rect.top;
rect.bottom += 5*height;
if(rect.right > rcClient.right) rect.right = rcClient.right;
DWORD dwStyle = WS_BORDER|WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST|CBS_DISABLENOSCROLL;
CComboBox *pList = new CInPlaceList(nItem, nCol, &lstItems, nSel);
pList->Create(dwStyle, rect, this, IDC_IPEDIT);
pList->SetItemHeight(-1, height);
pList->SetHorizontalExtent(GetColumnWidth(nCol));
return pList;
}

View File

@@ -0,0 +1,47 @@
///////////////////////////////////////////////////////////////////////////////////////////////
//
// CListViewControl
//
//////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _CListViewControl
#define _CListViewControl
#include <afxcmn.h> // MFC support for Windows Common Controls
#include "InPlaceEdit.h"
#include "InPlaceList.h"
#define IDC_IPEDIT 4321
const unsigned int CT_NORMAL = 0;
const unsigned int CT_EDIT = 1;
const unsigned int CT_COMBO = 2;
class CListViewControl : public CListCtrl
{
public:
CListViewControl();
virtual ~CListViewControl();
protected:
//{{AFX_MSG(CCharList)
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//}}AFX_MSG
bool SetColumnType(int ColNum, unsigned int Type = CT_EDIT);
bool SetColumnStringList(int ColNum, CStringList &StringList);
int HitTestEx(CPoint &point, int *col) const;
CEdit* EditSubLabel(int nItem, int nCol);
CComboBox* ShowInPlaceList(int nItem, int nCol, CStringList &lstItems, int nSel);
private:
unsigned int m_ColType[100];
CStringList m_ColumnStringList[100];
DECLARE_MESSAGE_MAP()
};
#endif

View File

@@ -0,0 +1,105 @@
// SearchDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AuthDBManager.h"
#include "SearchDlg.h"
#include "AuthDBManagerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSearchDlg dialog
CSearchDlg::CSearchDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSearchDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSearchDlg)
m_SearchText = _T("");
//}}AFX_DATA_INIT
}
void CSearchDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSearchDlg)
DDX_Control(pDX, ID_SELECT_ALIGNTYPE, m_SelectAlignType);
DDX_Control(pDX, ID_SELECT_ALIGN, m_SelectAlign);
DDX_Control(pDX, ID_SELECT_SEARCH, m_SelectSearch);
DDX_Text(pDX, ID_SEARCH_TEXT, m_SearchText);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSearchDlg, CDialog)
//{{AFX_MSG_MAP(CSearchDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSearchDlg message handlers
BOOL CSearchDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
char FieldName[256];
m_SelectSearch.InsertString(0, "----------------");
LoadString(pAppWnd->m_Language, IDS_F2, FieldName, 256);
m_SelectSearch.InsertString(1, FieldName);
LoadString(pAppWnd->m_Language, IDS_F4, FieldName, 256);
m_SelectSearch.InsertString(2, FieldName);
m_SelectSearch.SetCurSel(0);
m_SelectAlign.InsertString(0, "----------------");
LoadString(pAppWnd->m_Language, IDS_F1, FieldName, 256);
m_SelectAlign.InsertString(1, FieldName);
LoadString(pAppWnd->m_Language, IDS_F2, FieldName, 256);
m_SelectAlign.InsertString(2, FieldName);
LoadString(pAppWnd->m_Language, IDS_F4, FieldName, 256);
m_SelectAlign.InsertString(3, FieldName);
LoadString(pAppWnd->m_Language, IDS_F14, FieldName, 256);
m_SelectAlign.InsertString(4, FieldName);
m_SelectAlign.SetCurSel(0);
LoadString(pAppWnd->m_Language, IDS_A1, FieldName, 256);
m_SelectAlignType.InsertString(0, FieldName);
LoadString(pAppWnd->m_Language, IDS_A2, FieldName, 256);
m_SelectAlignType.InsertString(1, FieldName);
m_SelectAlignType.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSearchDlg::OnOK()
{
// TODO: Add extra validation here
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
CAuthDBManagerDlg* pDlgWnd = (CAuthDBManagerDlg*)pAppWnd->m_pMainWnd;
UpdateData();
pDlgWnd->m_SearchType = m_SelectSearch.GetCurSel();
strcpy(pDlgWnd->m_Search, m_SearchText.GetBuffer(0));
pDlgWnd->m_Align = m_SelectAlign.GetCurSel();
pDlgWnd->m_AlignType = m_SelectAlignType.GetCurSel();
CDialog::OnOK();
}

View File

@@ -0,0 +1,50 @@
#if !defined(AFX_SEARCHDLG_H__A1FDDFCB_DBA3_4CCD_8F91_1E8ABFA035CA__INCLUDED_)
#define AFX_SEARCHDLG_H__A1FDDFCB_DBA3_4CCD_8F91_1E8ABFA035CA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SearchDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CSearchDlg dialog
class CSearchDlg : public CDialog
{
// Construction
public:
CSearchDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CSearchDlg)
enum { IDD = IDD_SEARCH };
CComboBox m_SelectAlignType;
CComboBox m_SelectAlign;
CComboBox m_SelectSearch;
CString m_SearchText;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSearchDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CSearchDlg)
virtual BOOL OnInitDialog();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SEARCHDLG_H__A1FDDFCB_DBA3_4CCD_8F91_1E8ABFA035CA__INCLUDED_)

View File

@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// AuthDBManager.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -0,0 +1,27 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__40910505_0D0F_499D_85FE_F0441F208DE9__INCLUDED_)
#define AFX_STDAFX_H__40910505_0D0F_499D_85FE_F0441F208DE9__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__40910505_0D0F_499D_85FE_F0441F208DE9__INCLUDED_)

View File

@@ -0,0 +1,240 @@
// UserList.cpp : implementation file
//
#include "stdafx.h"
#include "AuthDBManager.h"
#include "UserList.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserList
CUserList::CUserList()
{
int Counter;
char FieldName[256];
CAuthDBManagerApp* pAppWnd = (CAuthDBManagerApp*)AfxGetApp();
for(Counter = 0; Counter < 14; Counter++)
{
LoadString(pAppWnd->m_Language, IDS_F1 + Counter, FieldName, 256);
strcpy(m_FieldName[Counter], FieldName);
}
for(Counter = 0; Counter < 2; Counter++)
{
LoadString(pAppWnd->m_Language, IDS_S1 + Counter, FieldName, 256);
strcpy(m_Select[Counter], FieldName);
}
}
CUserList::~CUserList()
{
}
BEGIN_MESSAGE_MAP(CUserList, CListCtrl)
//{{AFX_MSG_MAP(CUserList)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
ON_WM_LBUTTONDBLCLK()
ON_WM_HSCROLL()
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CUserList::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnCustomDraw(pNMHDR, pResult);
}
void CUserList::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CListViewControl::OnLButtonDblClk(nFlags, point);
}
void CUserList::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CUserList::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnVScroll(nSBCode, nPos, pScrollBar);
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// SetColumn [ public ]
// - <20><><EFBFBD>̺<EFBFBD> <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Parameter :
// 1st : <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Return:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CUserList::SetColumn(void)
{
DWORD ExStyle = LVS_EX_FLATSB | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
DWORD Style = GetWindowLong(m_hWnd, GWL_STYLE);
Style |= LVS_EDITLABELS;
if (!SetWindowLong(m_hWnd, GWL_STYLE, Style))
return false;
CStringList StringList;
int IndexCounter = 0;
SetColumnType(IndexCounter, CT_NORMAL);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 4 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 15 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 15 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 15 * 10);
SetColumnType(IndexCounter, CT_COMBO);
StringList.AddTail(m_Select[0]);
StringList.AddTail(m_Select[1]);
SetColumnStringList(IndexCounter, StringList);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 5 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 10 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 15 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 7 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 30 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 10 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 10 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 15 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 8 * 10);
SetColumnType(IndexCounter, CT_EDIT);
InsertColumn(IndexCounter, m_FieldName[IndexCounter++], LVCFMT_CENTER, 16 * 10);
return true;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// AddUserRow [ public ]
// - <20><> <20>߰<EFBFBD>
//
// Parameter :
// 1st : <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Return:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CUserList::AddUserRow(LPSELECT_AUTHUSER_TABLE UserTable_In)
{
CString strItem;
int Counter = 1;
int Index;
Index = GetItemCount();
strItem.Format("%d", UserTable_In->UID);
InsertItem(Index, strItem);
strItem.Format("%s", UserTable_In->AuthID);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->AuthPW);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Name);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", m_Select[UserTable_In->Sex]);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Birth);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->IDNumber);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->ZipCode);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Address);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Mobile);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Phone);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Email);
SetItemText(Index, Counter++, strItem);
strItem.Format("%s", UserTable_In->Job);
SetItemText(Index, Counter++, strItem);
strItem.Format("%04d/%02d/%02d %02d:%02d:%02d", UserTable_In->Reg_Date.Year, UserTable_In->Reg_Date.Month, UserTable_In->Reg_Date.Day, UserTable_In->Reg_Date.Hour, UserTable_In->Reg_Date.Minute, UserTable_In->Reg_Date.Second);
SetItemText(Index, Counter++, strItem);
return true;
}
bool CUserList::GetUserRow(unsigned long Item_In, LPUPDATE_AUTHUSER_TABLE Table_Out)
{
int Counter = 0;
char strItemText[256];
CString DateText, YearText, MonthText, DayText, HourText, MinuteText, SecondText;
GetItemText(Item_In, Counter++, strItemText, 256);
Table_Out->UID = atoi(strItemText);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->AuthID, strItemText, 16);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->AuthPW, strItemText, 16);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Name, strItemText, 16);
GetItemText(Item_In, Counter++, strItemText, 256);
if(!strcmp(strItemText, m_Select[0]))
Table_Out->Sex = 0;
else
Table_Out->Sex = 1;
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Birth, strItemText, 20);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->IDNumber, strItemText, 15);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->ZipCode, strItemText, 12);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Address, strItemText, 80);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Mobile, strItemText, 20);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Phone, strItemText, 20);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Email, strItemText, 50);
GetItemText(Item_In, Counter++, strItemText, 256);
strncpy(Table_Out->Job, strItemText, 20);
GetItemText(Item_In, Counter++, strItemText, 256);
return true;
}

View File

@@ -0,0 +1,61 @@
#if !defined(AFX_USERLIST_H__CA827D8B_2DCE_47F1_8895_25056B67CD92__INCLUDED_)
#define AFX_USERLIST_H__CA827D8B_2DCE_47F1_8895_25056B67CD92__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// UserList.h : header file
//
#include "AuthDBManager.h"
#include "ListViewControl\ListViewControl.h"
/////////////////////////////////////////////////////////////////////////////
// CUserList window
class CUserList : public CListViewControl
{
// Construction
public:
CUserList();
// Attributes
public:
// Operations
public:
char m_FieldName[21][20];
char m_Select[2][10];
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CUserList)
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CUserList();
bool SetColumn(void);
bool AddUserRow(LPSELECT_AUTHUSER_TABLE UserTable_In);
bool GetUserRow(unsigned long Item_In, LPUPDATE_AUTHUSER_TABLE Table_Out);
// Generated message map functions
protected:
//{{AFX_MSG(CUserList)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_USERLIST_H__CA827D8B_2DCE_47F1_8895_25056B67CD92__INCLUDED_)

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,25 @@
#include <windows.h>
#if !defined PlugIn_Strunt
#define PlugIn_Strunt
typedef struct
{
char CreaterName[255];
char CreaterEmail[255];
char CreaterHomepage[255];
}CREATERINFO;
typedef struct
{
bool PlugInfo;
char PlugInVer[255];
char PlugInName[255];
char PlugInLastUpdate[255];
CREATERINFO PlugInCreator;
}PLUGININFO;
#endif
typedef PLUGININFO (*GET_PLUGIN_INFO) (void);

View File

@@ -0,0 +1,13 @@
//
// AuthDBManager.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

@@ -0,0 +1,89 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by AuthDBManager.rc
//
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_AuthDBManager_DIALOG 102
#define IDS_F1 102
#define IDS_F2 103
#define IDS_F3 104
#define IDS_F4 105
#define IDS_F5 106
#define IDS_F6 107
#define IDS_F7 108
#define IDS_F8 109
#define IDS_F9 110
#define IDS_F10 111
#define IDS_F11 112
#define IDS_F12 113
#define IDS_F13 114
#define IDS_F14 115
#define IDR_MAINFRAME 128
#define IDR_MENU 130
#define IDD_CONNECT 131
#define IDB_LEDS 132
#define IDB_LOGO 133
#define IDD_SEARCH 134
#define IDS_S1 150
#define IDS_S2 151
#define IDS_A1 152
#define IDS_A2 153
#define ID_USER_LIST 1000
#define ID_CHAR_LIST 1000
#define ID_ERROR_LOG 1001
#define ID_SELECT_TYPE 1002
#define ID_ID 1002
#define ID_DATASOURCE_NAME 1003
#define ID_PASSWORD 1003
#define ID_SERVER_NAME 1004
#define ID_CONNECTION_LED 1004
#define ID_DATABASE_NAME 1005
#define ID_QEURY_LED 1005
#define ID_AUTHUSER_NAME 1006
#define ID_SELECTED_ROW 1006
#define ID_AUTHUSER_PASS 1007
#define ID_SELECTED_COUNT 1007
#define ID_SELECTED_UID 1008
#define ID_SEX 1009
#define ID_NAME 1011
#define ID_PLUGIN_LIST 1011
#define ID_LASTUPDATE 1012
#define ID_BIRTH 1013
#define ID_CREATER 1013
#define ID_SEARCH_TEXT 1013
#define ID_IDNUMBER 1014
#define ID_SELECT_SEARCH 1014
#define ID_ZIPCODE 1015
#define ID_SELECT_ALIGN 1015
#define ID_ADDRESS 1016
#define ID_SELECT_ALIGNTYPE 1016
#define IDC_DEFAULT 1017
#define IDC_BUTTON1 1018
#define ID_MOBILE 1019
#define ID_PHONE 1020
#define ID_JOB 1021
#define ID_EMAIL 1022
#define ID_SELECTED_ID 1024
#define ID_TOTAL_ROW 1025
#define ID_CONNECT 32771
#define ID_DISCONNECT 32772
#define ID_ABOUT 32773
#define ID_ADD_USER 32774
#define ID_DELETE_USER 32775
#define ID_INIT_LOGINTIME 32776
#define ID_REFESH 32777
#define ID_SEARCH 32778
#define ID_AUTHTEST 32779
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 135
#define _APS_NEXT_COMMAND_VALUE 32780
#define _APS_NEXT_CONTROL_VALUE 1020
#define _APS_NEXT_SYMED_VALUE 102
#endif
#endif

View File

@@ -0,0 +1,72 @@
// AuthGama.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
//
#include "stdafx.h"
#include "AuthGama.h"
#include "AuthGamaDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAuthGamaApp
BEGIN_MESSAGE_MAP(CAuthGamaApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CAuthGamaApp <20><><EFBFBD><EFBFBD>
CAuthGamaApp::CAuthGamaApp()
{
// TODO: <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// InitInstance<63><65> <20><><EFBFBD><EFBFBD> <20>߿<EFBFBD><DFBF><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAuthGamaApp <20><>ü<EFBFBD>Դϴ<D4B4>.
CAuthGamaApp theApp;
// CAuthGamaApp <20>ʱ<EFBFBD>ȭ
BOOL CAuthGamaApp::InitInstance()
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>Ŵ<EFBFBD><C5B4>佺Ʈ<E4BDBA><C6AE> ComCtl32.dll <20><><EFBFBD><EFBFBD> 6 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>־<EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>, Windows XP <20>󿡼<EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> InitCommonControls()<29><> <20>ʿ<EFBFBD><CABF>մϴ<D5B4>.
// InitCommonControls()<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
// ǥ<><C7A5> <20>ʱ<EFBFBD>ȭ
// <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><20><><EFBFBD>̷<EFBFBD><CCB7><EFBFBD>
// <20>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> Ư<><C6AF> <20>ʱ<EFBFBD>ȭ <20><>ƾ<EFBFBD><C6BE> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
// <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
// TODO: <20><> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> ȸ<><C8B8> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
SetRegistryKey(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>"));
CAuthGamaDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
else if (nResponse == IDCANCEL)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
return FALSE;
}

View File

@@ -0,0 +1,31 @@
// AuthGama.h : PROJECT_NAME <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#pragma once
#ifndef __AFXWIN_H__
#error PCH<43><48><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> 'stdafx.h'<27><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
#endif
#include "resource.h" // <20><> <20><>ȣ
// CAuthGamaApp:
// <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> AuthGama.cpp<70><70> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
//
class CAuthGamaApp : public CWinApp
{
public:
CAuthGamaApp();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
virtual BOOL InitInstance();
// <20><><EFBFBD><EFBFBD>
DECLARE_MESSAGE_MAP()
};
extern CAuthGamaApp theApp;

View File

@@ -0,0 +1,202 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
"LANGUAGE 18, 1\r\n"
"#pragma code_page(949)\r\n"
"#include ""res\\AuthGama.rc2"" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>\r\n"
"#include ""afxres.rc"" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON "res\\AuthGama.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_AUTHGAMA_DIALOG DIALOGEX 0, 0, 214, 201
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "AuthGama"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
EDITTEXT IDC_AUTH_USER,57,36,115,12,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
EDITTEXT IDC_AUTH_PASSWD,57,48,115,12,ES_PASSWORD |
ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE
EDITTEXT IDC_UID_IN,71,135,127,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
EDITTEXT IDC_ACCOUNT_IN,71,147,126,12,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
PUSHBUTTON "ã<><C3A3>",IDC_FIND_BTN,136,164,62,24,BS_FLAT
PUSHBUTTON "<22><><EFBFBD><EFBFBD>",IDC_DB_CONNECT,7,7,83,18,BS_FLAT
CTEXT "Account",IDC_STATIC,11,37,45,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "Password",IDC_STATIC,11,49,45,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
PUSHBUTTON "<22><><EFBFBD><EFBFBD>",IDC_AUTH_BTN,179,36,24,37,BS_FLAT
CTEXT "",IDC_UID_OUT,14,164,120,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "UID",IDC_STATIC,14,135,56,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",IDC_ACCOUNT_OUT,14,176,120,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "Account",IDC_STATIC,14,147,56,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT IDC_MD5_PASSWORD,46,86,129,13,ES_PASSWORD |
ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE
EDITTEXT IDC_MD5_HASHVAL,46,102,130,13,ES_AUTOHSCROLL |
ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
GROUPBOX "MD5",IDC_STATIC,7,78,200,40,BS_FLAT
LTEXT "Password",IDC_STATIC,12,90,31,8
LTEXT "MD5 Hash",IDC_STATIC,12,103,32,8
PUSHBUTTON "<22><>ȯ",IDC_MD5_CONVERT_BTN,178,86,25,29,BS_FLAT
GROUPBOX "<22><><EFBFBD><EFBFBD>",IDC_STATIC,7,28,200,48,BS_FLAT
GROUPBOX "<22>˻<EFBFBD>",IDC_STATIC,7,122,200,72,BS_FLAT
CTEXT "",IDC_AUTH_RESULT,57,61,115,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "Result",IDC_STATIC,11,61,45,11,SS_CENTERIMAGE,
WS_EX_STATICEDGE
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041203b5"
BEGIN
VALUE "CompanyName", "TODO: <ȸ<><C8B8> <20≯<EFBFBD>>"
VALUE "FileDescription", "TODO: <<3C><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>>"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "AuthGama.exe"
VALUE "LegalCopyright", "TODO: (c) <ȸ<><C8B8> <20≯<EFBFBD>>. All rights reserved."
VALUE "OriginalFilename", "AuthGama.exe"
VALUE "ProductName", "TODO: <<3C><>ǰ <20≯<EFBFBD>>"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "<22><>ȯ", 0x412, 949
END
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_AUTHGAMA_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 207
TOPMARGIN, 7
BOTTOMMARGIN, 194
END
END
#endif // APSTUDIO_INVOKED
#endif // <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
LANGUAGE 18, 1
#pragma code_page(949)
#include "res\AuthGama.rc2" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
#include "afxres.rc" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="AuthGama"
ProjectGUID="{CE41A965-FA1E-4CCD-9D57-AA41409E331C}"
Keyword="MFCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1042"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
MinimalRebuild="FALSE"
RuntimeLibrary="0"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1042"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="<22>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath=".\AuthGama.cpp">
</File>
<File
RelativePath=".\AuthGamaDlg.cpp">
</File>
<File
RelativePath=".\stdafx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath=".\AuthGama.h">
</File>
<File
RelativePath=".\AuthGamaDlg.h">
</File>
<File
RelativePath=".\Resource.h">
</File>
<File
RelativePath=".\stdafx.h">
</File>
</Filter>
<Filter
Name="<22><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
<File
RelativePath=".\res\AuthGama.ico">
</File>
<File
RelativePath=".\AuthGama.rc">
</File>
<File
RelativePath=".\res\AuthGama.rc2">
</File>
</Filter>
<Filter
Name="MD5"
Filter="">
<File
RelativePath=".\Md5\global.h">
</File>
<File
RelativePath=".\Md5\md5.h">
</File>
<File
RelativePath=".\Md5\md5c.c">
</File>
</Filter>
<File
RelativePath=".\res\AuthGama.manifest">
</File>
<File
RelativePath=".\ReadMe.txt">
</File>
</Files>
<Globals>
<Global
Name="RESOURCE_FILE"
Value="AuthGama.rc"/>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,318 @@
// AuthGamaDlg.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#include "stdafx.h"
#include "AuthGama.h"
#include "AuthGamaDlg.h"
#include <Utility/Setup/ServerSetup.h>
#include <Log/ServerLog.h>
#include <DB/DBComponent.h>
#include <DB/AuthDBComponent.h>
extern "C"
{
#include <MD5/global.h>
#include <MD5/md5.h>
#include ".\authgamadlg.h"
}
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAuthGamaDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
static void MD5Print (unsigned char digest[16], char *szOutput)
{
for (unsigned int i = 0; i < 16; i++)
{
sprintf (szOutput + i * 2, "%02x", digest[i]);
}
}
static void MD5String (char *szString, char* szOutput)
{
MD5_CTX context;
unsigned char digest[16];
unsigned int len = static_cast<unsigned int>(strlen(szString));
MD5Init (&context);
MD5Update (&context, reinterpret_cast<unsigned char*>(szString), len);
MD5Final (digest, &context);
MD5Print (digest, szOutput);
}
CAuthGamaDlg::CAuthGamaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAuthGamaDlg::IDD, pParent)
, m_szAuthAccount(_T(""))
, m_szAuthPassword(_T(""))
, m_szAuthResult(_T(""))
, m_szMD5Password(_T(""))
, m_szMD5HashVal(_T(""))
, m_szFindUID(_T(""))
, m_szFindAccount(_T(""))
, m_szFoundUID(_T(""))
, m_szFoundAccount(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAuthGamaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_AUTH_USER, m_szAuthAccount);
DDX_Text(pDX, IDC_AUTH_PASSWD, m_szAuthPassword);
DDX_Text(pDX, IDC_AUTH_RESULT, m_szAuthResult);
DDX_Text(pDX, IDC_MD5_PASSWORD, m_szMD5Password);
DDX_Text(pDX, IDC_MD5_HASHVAL, m_szMD5HashVal);
DDX_Text(pDX, IDC_UID_IN, m_szFindUID);
DDX_Text(pDX, IDC_ACCOUNT_IN, m_szFindAccount);
DDX_Text(pDX, IDC_UID_OUT, m_szFoundUID);
DDX_Text(pDX, IDC_ACCOUNT_OUT, m_szFoundAccount);
DDX_Control(pDX, IDC_AUTH_BTN, m_btnAuth);
DDX_Control(pDX, IDC_MD5_CONVERT_BTN, m_btnMD5);
DDX_Control(pDX, IDC_FIND_BTN, m_btnFind);
}
BEGIN_MESSAGE_MAP(CAuthGamaDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_DB_CONNECT, OnBnClickedDbConnect)
ON_BN_CLICKED(IDC_AUTH_BTN, OnBnClickedAuthBtn)
ON_BN_CLICKED(IDC_MD5_CONVERT_BTN, OnBnClickedMd5ConvertBtn)
ON_BN_CLICKED(IDC_FIND_BTN, OnBnClickedFindBtn)
ON_EN_CHANGE(IDC_ACCOUNT_IN, OnEnChangeAccountIn)
ON_EN_CHANGE(IDC_UID_IN, OnEnChangeUidIn)
END_MESSAGE_MAP()
// CAuthGamaDlg <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
BOOL CAuthGamaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// <20><> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><> â<><C3A2> <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, TRUE); // ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// DB<44><42> <20><><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>մϴ<D5B4>.
m_btnAuth.EnableWindow(FALSE);
//m_btnMD5.EnableWindow(FALSE); // MD5 <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DB<44><42><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EBB0A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>(by zun!)
m_btnFind.EnableWindow(FALSE);
// <20>α׸<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
g_Log.Disable(0xFFFFFFFF);
g_SessionLog.Disable(0xFFFFFFFF);
return TRUE; // <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TRUE<55><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
}
// <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20>ּ<EFBFBD>ȭ <20><><EFBFBD>߸<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD>
// <20>Ʒ<EFBFBD> <20>ڵ尡 <20>ʿ<EFBFBD><CABF>մϴ<D5B4>. <20><><EFBFBD><EFBFBD>/<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
void CAuthGamaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // <20>׸<EFBFBD><D7B8><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD>ؽ<EFBFBD>Ʈ
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><EFBFBD><E7B0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB5A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8>ϴ<EFBFBD>.
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ּ<EFBFBD>ȭ<EFBFBD><C8AD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> ǥ<>õǵ<C3B5><C7B5><EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD>
// <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
HCURSOR CAuthGamaDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CAuthGamaDlg::OnBnClickedDbConnect()
{
// <20><><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><EFBFBD><EFBFBD> <20>¾<EFBFBD><C2BE><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>DB<44><42> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>մϴ<D5B4>.
CString szError;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
if (!CServerSetup::GetInstance().Initialize(CServerSetup::AuthServer))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>д<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
szError.Format("Read AuthServer info failed");
}
else if (!DBComponent.Connect(CDBComponent::Class_AuthDB))
{
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.
szError.Format("Connect DB failed : %s ", DBComponent.GetErrorString());
}
else
{
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.
m_btnAuth.EnableWindow(TRUE);
m_btnMD5.EnableWindow(TRUE);
m_btnFind.EnableWindow(TRUE);
SetWindowText(_T("AuthGama : AuthDB Connect Succeeded"));
}
if (!szError.IsEmpty())
{
AfxMessageBox(szError, MB_OK | MB_ICONERROR);
}
}
void CAuthGamaDlg::OnBnClickedAuthBtn()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(TRUE);
DWORD dwUID = 0;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
char szPassword[33];
char szMD5String[33];
_snprintf(szPassword, 33, m_szAuthPassword);
szPassword[32] = 0;
MD5String(szPassword, szMD5String);
szMD5String[32] = 0;
if (!DBComponent::AuthDB::LoginAuthGama(DBComponent,
m_szAuthAccount, szMD5String, dwUID))
{
m_szAuthResult.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
else if (dwUID < 100)
{
switch(dwUID)
{
case 1: m_szAuthResult.Format(_T("Invalid password")); break;
case 2: m_szAuthResult.Format(_T("Unknown Account")); break;
case 5: m_szAuthResult.Format(_T("Password failed more than 3")); break;
default: m_szAuthResult.Format(_T("Unknown Error")); break;
}
}
else
{
m_szAuthResult.Format(_T("%d"), dwUID);
}
UpdateData(FALSE);
}
void CAuthGamaDlg::OnBnClickedMd5ConvertBtn()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(TRUE);
char szPassword[33];
char szMD5String[33];
_snprintf(szPassword, 33, m_szMD5Password);
szPassword[32] = 0;
MD5String(szPassword, szMD5String);
szMD5String[32] = 0;
m_szMD5HashVal.SetString(szMD5String);
UpdateData(FALSE);
}
void CAuthGamaDlg::OnBnClickedFindBtn()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(TRUE);
const int MAX_BUFFER = 64;
CString szError;
CDBComponent& DBComponent = CDBSingleObject::GetInstance();
unsigned long dwUID = 0;
if (!m_szFindUID.IsEmpty() && (0 != (dwUID = atol(m_szFindUID))))
{
char szAccount[MAX_BUFFER];
if (DBComponent::AuthDB::GetGamaAccountByUID(DBComponent, dwUID, szAccount, MAX_BUFFER))
{
m_szFoundUID.Format(_T("%d"), dwUID);
m_szFoundAccount.SetString(szAccount);
}
else
{
szError.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
}
else if (!m_szFindAccount.IsEmpty())
{
if (DBComponent::AuthDB::GetGamaUIDByAccount(DBComponent, m_szFindAccount, dwUID))
{
m_szFoundUID.Format(_T("%d"), dwUID);
m_szFoundAccount.SetString(m_szFindAccount);
}
else
{
szError.Format(_T("DB Error : %s"), DBComponent.GetErrorString());
}
}
if (!szError.IsEmpty())
{
AfxMessageBox(szError, MB_OK | MB_ICONERROR);
}
UpdateData(FALSE);
}
void CAuthGamaDlg::OnOK()
{
// TODO: <20><><EFBFBD>⿡ Ư<><C6AF>ȭ<EFBFBD><C8AD> <20>ڵ带 <20>߰<EFBFBD> <20><>/<2F>Ǵ<EFBFBD> <20>⺻ Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
// CDialog::OnOK();
}
void CAuthGamaDlg::OnEnChangeAccountIn()
{
// TODO: RICHEDIT <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
// CDialog::<3A><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> OR <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ENM_CHANGE <20>÷<EFBFBD><C3B7>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>
// CRichEditCtrl().SetEventMask()<29><> ȣ<><C8A3><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> OnInitDialog() <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><> <20>˸<EFBFBD><CBB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(TRUE);
m_szFindUID.Empty();
UpdateData(FALSE);
}
void CAuthGamaDlg::OnEnChangeUidIn()
{
// TODO: RICHEDIT <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
// CDialog::<3A><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> OR <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ENM_CHANGE <20>÷<EFBFBD><C3B7>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>
// CRichEditCtrl().SetEventMask()<29><> ȣ<><C8A3><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> OnInitDialog() <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><> <20>˸<EFBFBD><CBB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(TRUE);
m_szFindAccount.Empty();
UpdateData(FALSE);
}

View File

@@ -0,0 +1,61 @@
// AuthGamaDlg.h : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#pragma once
#include "afxwin.h"
// CAuthGamaDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
class CAuthGamaDlg : public CDialog
{
// <20><><EFBFBD><EFBFBD>
public:
CAuthGamaDlg(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum { IDD = IDD_AUTHGAMA_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>
protected:
HICON m_hIcon;
// <20>޽<EFBFBD><DEBD><EFBFBD> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
private:
afx_msg void OnBnClickedDbConnect();
afx_msg void OnBnClickedAuthBtn();
afx_msg void OnBnClickedMd5ConvertBtn();
afx_msg void OnBnClickedFindBtn();
CString m_szAuthAccount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_szAuthPassword; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
CString m_szAuthResult; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_szMD5Password; // MD5<44><35><EFBFBD><EFBFBD> <20>˾Ƴ<CBBE> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
CString m_szMD5HashVal; // <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> MD5<44><35>
CString m_szFindUID; // <20>˻<EFBFBD><CBBB><EFBFBD> UID
CString m_szFindAccount; // <20>˻<EFBFBD><CBBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_szFoundUID; // <20>˻<EFBFBD><CBBB><EFBFBD> UID
CString m_szFoundAccount; // <20>˻<EFBFBD><CBBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CButton m_btnAuth;
CButton m_btnMD5;
CButton m_btnFind;
protected:
virtual void OnOK();
public:
afx_msg void OnEnChangeAccountIn();
afx_msg void OnEnChangeUidIn();
};

View File

@@ -0,0 +1,30 @@
/* GLOBAL.H - RSAREF types and constants
*/
/* PROTOTYPES should be set to one if and only if the compiler supports
function argument prototyping.
The following makes PROTOTYPES default to 0 if it has not already
been defined with C compiler flags.
*/
#ifndef PROTOTYPES
#define PROTOTYPES 0
#endif
/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;
/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
returns an empty list.
*/
#if PROTOTYPES
#define PROTO_LIST(list) list
#else
#define PROTO_LIST(list) ()
#endif

View File

@@ -0,0 +1,36 @@
/* MD5.H - header file for MD5C.C
*/
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
/* MD5 context. */
typedef struct {
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD5_CTX;
void MD5Init (MD5_CTX *);
void MD5Update (MD5_CTX *, unsigned char *, unsigned int);
void MD5Final (unsigned char [16], MD5_CTX *);

View File

@@ -0,0 +1,337 @@
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
*/
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
#include "global.h"
#include "md5.h"
/* Constants for MD5Transform routine.
*/
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
static void Encode PROTO_LIST
((unsigned char *, UINT4 *, unsigned int));
static void Decode PROTO_LIST
((UINT4 *, unsigned char *, unsigned int));
static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
/* F, G, H and I are basic MD5 functions.
*/
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
/* ROTATE_LEFT rotates x left n bits.
*/
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) { \
(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define GG(a, b, c, d, x, s, ac) { \
(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define HH(a, b, c, d, x, s, ac) { \
(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define II(a, b, c, d, x, s, ac) { \
(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
/* MD5 initialization. Begins an MD5 operation, writing a new context.
*/
void MD5Init (context)
MD5_CTX *context; /* context */
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->state[0] = 0x67452301;
context->state[1] = 0xefcdab89;
context->state[2] = 0x98badcfe;
context->state[3] = 0x10325476;
}
/* MD5 block update operation. Continues an MD5 message-digest
operation, processing another message block, and updating the
context.
*/
void MD5Update (context, input, inputLen)
MD5_CTX *context; /* context */
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
{
unsigned int i, index, partLen;
/* Compute number of bytes mod 64 */
index = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
< ((UINT4)inputLen << 3))
context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
partLen = 64 - index;
/* Transform as many times as possible.
*/
if (inputLen >= partLen) {
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)input, partLen);
MD5Transform (context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
MD5Transform (context->state, &input[i]);
index = 0;
}
else
i = 0;
/* Buffer remaining input */
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)&input[i],
inputLen-i);
}
/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context.
*/
void MD5Final (digest, context)
unsigned char digest[16]; /* message digest */
MD5_CTX *context; /* context */
{
unsigned char bits[8];
unsigned int index, padLen;
/* Save number of bits */
Encode (bits, context->count, 8);
/* Pad out to 56 mod 64.
*/
index = (unsigned int)((context->count[0] >> 3) & 0x3f);
padLen = (index < 56) ? (56 - index) : (120 - index);
MD5Update (context, PADDING, padLen);
/* Append length (before padding) */
MD5Update (context, bits, 8);
/* Store state in digest */
Encode (digest, context->state, 16);
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)context, 0, sizeof (*context));
}
/* MD5 basic transformation. Transforms state based on block.
*/
static void MD5Transform (state, block)
UINT4 state[4];
unsigned char block[64];
{
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
Decode (x, block, 64);
/* Round 1 */
FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
/* Round 2 */
GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
/* Round 3 */
HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
/* Round 4 */
II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
state[0] += a;
state[1] += b;
state[2] += c;
state[3] += d;
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)x, 0, sizeof (x));
}
/* Encodes input (UINT4) into output (unsigned char). Assumes len is
a multiple of 4.
*/
static void Encode (output, input, len)
unsigned char *output;
UINT4 *input;
unsigned int len;
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4) {
output[j] = (unsigned char)(input[i] & 0xff);
output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
}
}
/* Decodes input (unsigned char) into output (UINT4). Assumes len is
a multiple of 4.
*/
static void Decode (output, input, len)
UINT4 *output;
unsigned char *input;
unsigned int len;
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
(((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}
/* Note: Replace "for loop" with standard memcpy if possible.
*/
static void MD5_memcpy (output, input, len)
POINTER output;
POINTER input;
unsigned int len;
{
unsigned int i;
for (i = 0; i < len; i++)
output[i] = input[i];
}
/* Note: Replace "for loop" with standard memset if possible.
*/
static void MD5_memset (output, value, len)
POINTER output;
int value;
unsigned int len;
{
unsigned int i;
for (i = 0; i < len; i++)
((char *)output)[i] = (char)value;
}

View File

@@ -0,0 +1,77 @@
================================================================================
MFC <20><><EFBFBD>̺귯<CCBA><EAB7AF> : AuthGama <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
================================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> AuthGama <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2BABB><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>ۼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
<EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> AuthGama <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD>ԵǾ<D4B5>
<EFBFBD>ֽ<EFBFBD><EFBFBD>ϴ<EFBFBD>.
AuthGama.vcproj
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VC++ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Visual C++ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>,
<20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե˴ϴ<CBB4>.
AuthGama.h
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. <20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> Resource.h<><68> <20><><EFBFBD><EFBFBD>
Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ԵǸ<D4B5> CAuthGamaApp <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
AuthGama.cpp
CAuthGamaApp <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
AuthGama.rc
<20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> Microsoft Windows <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> RES <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>Ʈ<EFBFBD><C6AE> <20><> Ŀ<><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD>ԵǸ<D4B5>
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
<20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> 1042<34><32> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
res\AuthGama.ico
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AuthGama.rc<72><63> <20><><EFBFBD>Ե˴ϴ<CBB4>.
res\AuthGama.rc2
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>ԵǾ<D4B5> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
AuthGamaDlg.h, AuthGamaDlg.cpp - <20><>ȭ <20><><EFBFBD><EFBFBD>
CAuthGamaDlg Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD>
<20><> <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ǵ˴ϴ<CBB4>. <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> AuthGama.rc<72><63>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD>
ActiveX <20><>Ʈ<EFBFBD><C6AE>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> ActiveX <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ ǥ<><C7A5> <20><><EFBFBD><EFBFBD>
StdAfx.h, StdAfx.cpp
<20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(PCH) AuthGama.pch <20><> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> StdAfx.obj<62><6A> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
Resource.h
<20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD>ҽ<EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>а<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD>մϴ<D5B4>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1><EFBFBD><EFBFBD> "TODO:"<22><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>߰<EFBFBD><DFB0>ϰų<CFB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>ϴ<EFBFBD>
<EFBFBD>ҽ<EFBFBD> <20>ڵ带 <20><>Ÿ<EFBFBD><C5B8><EFBFBD>ϴ<EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DLL<4C><4C> MFC<46><43> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><20> ü<><C3BC><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> Microsoft Visual C++ CD-ROM<4F><4D> Win\System <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20>ִ<EFBFBD>
<EFBFBD>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> MFC70XXX.DLL<4C><4C> <20><>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD> system <20>Ǵ<EFBFBD> system32 <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MFCLOC.DLL<4C><4C> <20≯<EFBFBD><CCB8><EFBFBD> <20>ٲپ<D9B2><D9BE><EFBFBD> <20>մϴ<D5B4>. "XXX"<22><> <20>ش<EFBFBD> <20><><EFBFBD><20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MFC70DEU.DLL<4C><4C><EFBFBD><EFBFBD> <20><><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD> <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD>Ե˴ϴ<CBB4>.
<EFBFBD>̷<EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>Ϻ<EFBFBD> UI <20><><EFBFBD>Ұ<EFBFBD> <20> ü<><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20>˴ϴ<CBB4>.
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,31 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by AuthGama.rc
//
#define IDD_AUTHGAMA_DIALOG 102
#define IDR_MAINFRAME 128
#define IDC_DB_CONNECT 1000
#define IDC_AUTH_USER 1002
#define IDC_AUTH_PASSWD 1003
#define IDC_AUTH_BTN 1004
#define IDC_UID_OUT 1005
#define IDC_AUTH_RESULT 1006
#define IDC_UID_IN 1008
#define IDC_FIND_BTN 1009
#define IDC_ACCOUNT_OUT 1010
#define IDC_ACCOUNT_IN 1011
#define IDC_MD5_PASSWORD 1016
#define IDC_MD5_HASHVAL 1017
#define IDC_MD5_CONVERT 1018
#define IDC_MD5_CONVERT_BTN 1018
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.AuthGama"
type="win32"
/>
<description>여기에 응용 프로그램 설명을 추가합니다.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

View File

@@ -0,0 +1,13 @@
//
// AuthGama.RC2 - resources Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
//
#ifdef APSTUDIO_INVOKED
#error <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,7 @@
// stdafx.cpp : ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// AuthGama.pch<63><68> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.
// stdafx.obj<62><6A> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#include "stdafx.h"

View File

@@ -0,0 +1,42 @@
// stdafx.h : <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
// ǥ<><C7A5> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Windows <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ܽ<EFBFBD>ŵ<EFBFBD>ϴ<EFBFBD>.
#endif
// <20>Ʒ<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><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
// <20>ٸ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MSDN<44><4E> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
#ifndef WINVER // Windows 95 <20><> Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define WINVER 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINNT // Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINNT 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINDOWS // Windows 98 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINDOWS 0x0410 // Windows Me <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_IE // IE 4.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_IE 0x0400 // IE 5.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // <20>Ϻ<EFBFBD> CString <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// MFC<46><43> <20><><EFBFBD><EFBFBD> <20>κа<CEBA> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC <20>ٽ<EFBFBD> <20><> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#include <afxext.h> // MFC <20>ͽ<EFBFBD><CDBD>ټ<EFBFBD>
#include <afxdisp.h> // MFC <20>ڵ<EFBFBD>ȭ Ŭ<><C5AC><EFBFBD><EFBFBD>
#include <afxdtctl.h> // Internet Explorer 4 <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // Windows <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#endif // _AFX_NO_AFXCMN_SUPPORT

View File

@@ -0,0 +1,74 @@
// AuthHan.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "AuthHan.h"
#include "AuthHanDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAuthHanApp
BEGIN_MESSAGE_MAP(CAuthHanApp, CWinApp)
//{{AFX_MSG_MAP(CAuthHanApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthHanApp construction
CAuthHanApp::CAuthHanApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CAuthHanApp object
CAuthHanApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAuthHanApp initialization
BOOL CAuthHanApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CAuthHanDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

View File

@@ -0,0 +1,49 @@
// AuthHan.h : main header file for the AUTHHAN application
//
#if !defined(AFX_AUTHHAN_H__9A2BCE45_C0A5_418B_B7DC_02F9002937D2__INCLUDED_)
#define AFX_AUTHHAN_H__9A2BCE45_C0A5_418B_B7DC_02F9002937D2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CAuthHanApp:
// See AuthHan.cpp for the implementation of this class
//
class CAuthHanApp : public CWinApp
{
public:
CAuthHanApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAuthHanApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CAuthHanApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_AUTHHAN_H__9A2BCE45_C0A5_418B_B7DC_02F9002937D2__INCLUDED_)

View File

@@ -0,0 +1,239 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 18, 1\r\n"
"#pragma code_page(949)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\AuthHan.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""l.kor\\afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON "res\\AuthHan.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG 0, 0, 235, 55
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "AuthHan <20><><EFBFBD><EFBFBD>"
FONT 9, "<22><><EFBFBD><EFBFBD>"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "AuthHan <20><><EFBFBD><EFBFBD> 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX
LTEXT "Copyright (C) 2002",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "Ȯ<><C8AE>",IDOK,178,7,50,14,WS_GROUP
END
IDD_AUTHHAN_DIALOG DIALOGEX 0, 0, 289, 206
STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "AuthHan"
FONT 10, "<22><><EFBFBD><EFBFBD>", 0, 0, 0x1
BEGIN
EDITTEXT IDC_ACCOUNT,47,35,85,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
EDITTEXT IDC_PASSWORD,47,47,85,12,ES_PASSWORD | ES_AUTOHSCROLL |
NOT WS_BORDER,WS_EX_STATICEDGE
EDITTEXT IDC_UID_IN,195,42,85,12,ES_AUTOHSCROLL | NOT WS_BORDER,
WS_EX_STATICEDGE
EDITTEXT IDC_ACCOUNT_IN,195,55,85,12,ES_AUTOHSCROLL | NOT
WS_BORDER,WS_EX_STATICEDGE
PUSHBUTTON "ã<><C3A3>",IDC_FIND,224,73,56,26,BS_FLAT
PUSHBUTTON "UID<49><44><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ",IDC_FIND_UID_LIST,196,113,89,
15,BS_FLAT
PUSHBUTTON "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> UID<49><44> <20><>ȯ",IDC_FIND_ACCOUNT_LIST,196,134,
89,15,BS_FLAT
PUSHBUTTON "<22><><EFBFBD><EFBFBD>",IDC_CONNECT,4,4,79,14,BS_FLAT
LTEXT "",IDC_LOG,4,159,282,43,0,WS_EX_STATICEDGE
GROUPBOX "<22><><EFBFBD><EFBFBD>",IDC_STATIC,4,23,133,82,BS_FLAT
CTEXT "Account",IDC_STATIC,8,35,39,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "Password",IDC_STATIC,8,47,39,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
PUSHBUTTON "<22><><EFBFBD><EFBFBD>",IDC_AUTH,8,67,66,29,BS_FLAT
CTEXT "",IDC_ID,145,73,75,12,SS_CENTERIMAGE,WS_EX_STATICEDGE
PUSHBUTTON "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ",IDC_UPDATE,78,67,54,14,BS_FLAT
GROUPBOX "<22>˻<EFBFBD>",IDC_STATIC,140,23,145,82,BS_FLAT
CTEXT "UID",IDC_STATIC,145,42,49,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "",IDC_ACCOUNT_OUT,145,86,75,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
CTEXT "Account",IDC_STATIC,145,55,49,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
PUSHBUTTON "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",IDC_REG,78,83,54,14,BS_FLAT
CONTROL "<22><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>(ActionRyl) <20><><EFBFBD><EFBFBD>üũ",IDC_BATTLERYL_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,98,8,104,10
EDITTEXT IDC_MD5_PASSWORD,48,118,85,14,ES_PASSWORD |
ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_STATICEDGE
EDITTEXT IDC_MD5_HASHVAL,48,135,85,14,ES_AUTOHSCROLL |
ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
GROUPBOX "MD5",IDC_STATIC,8,110,155,43
LTEXT "Password",IDC_STATIC,13,121,33,8
LTEXT "MD5 Hash",IDC_STATIC,13,137,33,8
PUSHBUTTON "<22><>ȯ",IDC_MD5_CONVERT,137,119,22,30
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041204B0"
BEGIN
VALUE "FileDescription", "AuthHan MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>"
VALUE "FileVersion", "1, 0, 0, 1"
VALUE "InternalName", "AuthHan"
VALUE "LegalCopyright", "Copyright (C) 2002"
VALUE "OriginalFilename", "AuthHan.EXE"
VALUE "ProductName", "AuthHan <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>"
VALUE "ProductVersion", "1, 0, 0, 1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x412, 1200
END
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 48
END
IDD_AUTHHAN_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 4
RIGHTMARGIN, 285
TOPMARGIN, 4
BOTTOMMARGIN, 202
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_ABOUTBOX "AuthHan <20><><EFBFBD><EFBFBD>(&A)..."
END
#endif // <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE 18, 1
#pragma code_page(949)
#endif //_WIN32
#include "res\AuthHan.rc2" // non-Microsoft Visual C++ edited resources
#include "l.kor\afxres.rc" // Standard components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,202 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="AuthHan"
ProjectGUID="{89A2020E-B414-4DEB-A86D-3FE96E28267A}"
Keyword="MFCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
ExpandAttributedSource="FALSE"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
OutputFile="$(OutDir)/$(ProjectName).exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
SubSystem="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Debug/AuthHan.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1042"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
OutputFile="$(OutDir)/$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
SubSystem="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName=".\Release/AuthHan.tlb"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1042"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
<File
RelativePath=".\AuthHan.cpp">
</File>
<File
RelativePath=".\AuthHanDlg.cpp">
</File>
<File
RelativePath=".\md5c.c">
</File>
<File
RelativePath=".\StdAfx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
PrecompiledHeaderThrough="stdafx.h"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
PrecompiledHeaderThrough="stdafx.h"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl">
<File
RelativePath=".\AuthHan.h">
</File>
<File
RelativePath=".\AuthHanDlg.h">
</File>
<File
RelativePath=".\global.h">
</File>
<File
RelativePath=".\md5.h">
</File>
<File
RelativePath=".\Resource.h">
</File>
<File
RelativePath=".\StdAfx.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
<File
RelativePath=".\res\AuthHan.ico">
</File>
<File
RelativePath=".\AuthHan.rc">
</File>
<File
RelativePath=".\res\AuthHan.rc2">
</File>
</Filter>
</Files>
<Globals>
<Global
Name="RESOURCE_FILE"
Value="AuthHan.rc"/>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,555 @@
// AuthHanDlg.cpp : implementation file
//
#include "stdafx.h"
#include "AuthHan.h"
#include "AuthHanDlg.h"
extern "C"
{
#include <stdio.h>
#include "global.h"
#include "md5.h"
}
#include <DB/DBComponent.h>
#include <DB/AuthDBComponent.h>
#include ".\authhandlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static void MD5Print (unsigned char digest[16], char *output)
{
unsigned int i;
for (i = 0; i < 16; i++)
{
sprintf (output + i * 2, "%02x", digest[i]);
}
}
static void MD5String (char *string, char *output)
{
MD5_CTX context;
unsigned char digest[16];
unsigned int len = strlen (string);
MD5Init (&context);
MD5Update (&context, reinterpret_cast<unsigned char*>(string), len);
MD5Final (digest, &context);
MD5Print (digest, output);
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthHanDlg dialog
CAuthHanDlg::CAuthHanDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAuthHanDlg::IDD, pParent)
, m_AccountIn(_T(""))
, m_bBattleRylAuth(FALSE)
, m_szMD5Password(_T(""))
, m_szMD5HashValue(_T(""))
{
//{{AFX_DATA_INIT(CAuthHanDlg)
m_Log = _T("");
m_Account = _T("");
m_Password = _T("");
m_ID = _T("");
m_UID_IN = _T("");
m_Account_Out = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAuthHanDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAuthHanDlg)
DDX_Text(pDX, IDC_LOG, m_Log);
DDX_Text(pDX, IDC_ACCOUNT, m_Account);
DDX_Text(pDX, IDC_PASSWORD, m_Password);
DDX_Text(pDX, IDC_ID, m_ID);
DDX_Text(pDX, IDC_UID_IN, m_UID_IN);
DDX_Text(pDX, IDC_ACCOUNT_OUT, m_Account_Out);
//}}AFX_DATA_MAP
DDX_Text(pDX, IDC_ACCOUNT_IN, m_AccountIn);
DDX_Check(pDX, IDC_BATTLERYL_CHECK, m_bBattleRylAuth);
DDX_Text(pDX, IDC_MD5_PASSWORD, m_szMD5Password);
DDX_Text(pDX, IDC_MD5_HASHVAL, m_szMD5HashValue);
}
BEGIN_MESSAGE_MAP(CAuthHanDlg, CDialog)
//{{AFX_MSG_MAP(CAuthHanDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CONNECT, OnConnect)
ON_BN_CLICKED(IDC_AUTH, OnAuth)
ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
ON_BN_CLICKED(IDC_FIND, OnFind)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_REG, OnBnClickedReg)
ON_BN_CLICKED(IDC_FIND_UID_LIST, OnBnClickedFindUidList)
ON_BN_CLICKED(IDC_FIND_ACCOUNT_LIST, OnBnClickedFindAccountList)
ON_BN_CLICKED(IDC_MD5_CONVERT, OnBnClickedMd5Convert)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAuthHanDlg message handlers
BOOL CAuthHanDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CAuthHanDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CAuthHanDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAuthHanDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CAuthHanDlg::OnConnect()
{
// TODO: Add your control notification handler code here
if(CDBSingleObject::GetInstance().Connect(CDBSingleObject::Class_AuthDB))
{
m_Log = "Connected";
}
else
{
m_Log = "Connected failed";
}
UpdateData(FALSE);
}
typedef struct _ACCOUNT
{
char Account[16];
char Password[16];
}ACCOUNT, *LPACCOUNT;
void CAuthHanDlg::OnAuth()
{
UpdateData();
AuthUserHangame();
}
void CAuthHanDlg::AuthUserHangame(void)
{
UpdateData();
HAN_UID hanUID;
char szPassword[33];
memset(szPassword, 0, sizeof(char) * 33);
MD5String(m_Password.GetBuffer(0), szPassword);
bool bResult = !m_bBattleRylAuth ?
DBComponent::AuthDB::LoginAuthHan(CDBSingleObject::GetInstance(),
m_Account.GetBuffer(0), szPassword, hanUID) :
DBComponent::AuthDB::LoginBattleAuthHan(CDBSingleObject::GetInstance(),
m_Account.GetBuffer(0), szPassword, hanUID);
if(bResult)
{
unsigned long UserID = hanUID.hUID;
if(UserID > 100)
{
m_ID.Format("%d", UserID);
m_Log.Format("H:0x%08x L:0x%08x", hanUID.hUID, hanUID.lUID);
}
else
{
switch(UserID)
{
case 1: m_Log = "password mismatch"; break;
case 2: m_Log = "<EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴϰų<CFB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; break;
case 3: m_Log = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD>"; break;
case 4: m_Log = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̴<EFBFBD>"; break;
case 5: m_Log = "<20>̻<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD>"; break;
case 6: m_Log = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"; break;
default:
m_Log.Format("<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> : %u : H:0x%08x L:0x%08x", UserID, hanUID.hUID, hanUID.lUID);
break;
}
}
}
else
{
m_Log = CDBSingleObject::GetInstance().GetErrorString();
}
UpdateData(FALSE);
}
void CAuthHanDlg::OnUpdate()
{
UpdateData();
UpdateData(FALSE);
}
void CAuthHanDlg::OnFind()
{
UpdateData();
DWORD UserID = 0;
char UID[16] = "";
char Account[16] = "";
if(0 != m_AccountIn.GetLength())
{
bool bResult = !m_bBattleRylAuth ?
DBComponent::AuthDB::GetUIDByAccount(CDBSingleObject::GetInstance(), m_AccountIn.GetBuffer(0), UID)
: DBComponent::AuthDB::GetBattleUIDByAccount(CDBSingleObject::GetInstance(), m_AccountIn.GetBuffer(0), UID);
if(bResult)
{
m_ID = UID;
m_Account_Out = "";
}
else
{
m_Log = CDBSingleObject::GetInstance().GetErrorString();
}
}
else if(0 != m_UID_IN.GetLength())
{
bool bResult = !m_bBattleRylAuth ?
DBComponent::AuthDB::GetAccountByUID(CDBSingleObject::GetInstance(), atoi(m_UID_IN.GetBuffer(0)), Account)
: DBComponent::AuthDB::GetBattleAccountByUID(CDBSingleObject::GetInstance(), atoi(m_UID_IN.GetBuffer(0)), Account);
if(bResult)
{
m_ID = "";
m_Account_Out = Account;
}
else
{
m_Log = CDBSingleObject::GetInstance().GetErrorString();
}
}
UpdateData(FALSE);
}
void CAuthHanDlg::OnBnClickedReg()
{
UpdateData();
bool bResult = !m_bBattleRylAuth ?
DBComponent::AuthDB::RegRylGameHan(CDBSingleObject::GetInstance(), m_Account.GetBuffer(0), "Y")
: DBComponent::AuthDB::RegBattleRylGameHan(CDBSingleObject::GetInstance(), m_Account.GetBuffer(0), "Y");
m_Log = bResult ? "Query Ok..." : CDBSingleObject::GetInstance().GetErrorString();
UpdateData(FALSE);
}
void CAuthHanDlg::OnBnClickedFindUidList()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// 1. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 2. <20><> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20>޾Ƽ<DEBE> <20><><EFBFBD><EFBFBD>.
// 3. GetAccountByUID <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>о<EFBFBD> <20>´<EFBFBD>
// 4. <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
// 5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݴ´<DDB4>.
UpdateData();
OPENFILENAME openfile;
OPENFILENAME savefile;
char szOpenFileName[MAX_PATH * MAX_PATH] = "";
char szSaveFileName[MAX_PATH] = "";
memset(&openfile, 0, sizeof(OPENFILENAME));
memset(&savefile, 0, sizeof(OPENFILENAME));
openfile.lStructSize = sizeof(OPENFILENAME);
openfile.hwndOwner = m_hWnd;
openfile.lpstrFilter = "All Files(*.*)\0*.*\0";
openfile.lpstrFile = szOpenFileName;
openfile.nMaxFile = MAX_PATH * MAX_PATH;
openfile.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER;
savefile.lStructSize = sizeof(OPENFILENAME);
savefile.hwndOwner = m_hWnd;
savefile.lpstrFilter = "All Files(*.*)\0*.*\0";
savefile.lpstrFile = szSaveFileName;
savefile.nMaxFile = MAX_PATH;
savefile.Flags = OFN_LONGNAMES | OFN_EXPLORER;
bool bResult = false;
if(GetOpenFileName(&openfile))
{
if(GetSaveFileName(&savefile))
{
FILE* readfile = fopen(szOpenFileName, "rt");
if(NULL != readfile)
{
FILE* writefile = fopen(szSaveFileName, "wt");
if(NULL != writefile)
{
const int MAX_BUFFER = 4000;
char szUID[MAX_BUFFER];
char Account[16] = "";
while(fgets(szUID, MAX_BUFFER, readfile))
{
char* stopstring = NULL;
unsigned long dwUID = strtoul(szUID, &stopstring, 10);
if(0 < dwUID)
{
bool bResult = !m_bBattleRylAuth ? DBComponent::AuthDB::GetAccountByUID(CDBSingleObject::GetInstance(), dwUID, Account)
: DBComponent::AuthDB::GetBattleAccountByUID(CDBSingleObject::GetInstance(), dwUID, Account);
if(bResult)
{
fprintf(writefile, "%10d\t%s\n", dwUID, Account);
}
else
{
fprintf(writefile, "%10d\t%s\n", dwUID, CDBSingleObject::GetInstance().GetErrorString());
}
}
Sleep(50);
}
bResult = true;
fclose(writefile);
}
fclose(readfile);
}
}
}
MessageBox(bResult ? "<EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>." : "<EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>");
}
void CAuthHanDlg::OnBnClickedFindAccountList()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
OPENFILENAME openfile;
OPENFILENAME savefile;
char szOpenFileName[MAX_PATH * MAX_PATH] = "";
char szSaveFileName[MAX_PATH] = "";
memset(&openfile, 0, sizeof(OPENFILENAME));
memset(&savefile, 0, sizeof(OPENFILENAME));
openfile.lStructSize = sizeof(OPENFILENAME);
openfile.hwndOwner = m_hWnd;
openfile.lpstrFilter = "All Files(*.*)\0*.*\0";
openfile.lpstrFile = szOpenFileName;
openfile.nMaxFile = MAX_PATH * MAX_PATH;
openfile.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER;
savefile.lStructSize = sizeof(OPENFILENAME);
savefile.hwndOwner = m_hWnd;
savefile.lpstrFilter = "All Files(*.*)\0*.*\0";
savefile.lpstrFile = szSaveFileName;
savefile.nMaxFile = MAX_PATH;
savefile.Flags = OFN_LONGNAMES | OFN_EXPLORER;
bool bResult = false;
if(GetOpenFileName(&openfile))
{
if(GetSaveFileName(&savefile))
{
FILE* readfile = fopen(szOpenFileName, "rt");
if(NULL != readfile)
{
FILE* writefile = fopen(szSaveFileName, "wt");
if(NULL != writefile)
{
const int MAX_BUFFER = 4000;
char szAccount[MAX_BUFFER];
char szUID[16] = "";
while(fgets(szUID, MAX_BUFFER, readfile))
{
char* stopstring = NULL;
bool bResult = !m_bBattleRylAuth ? DBComponent::AuthDB::GetUIDByAccount(CDBSingleObject::GetInstance(), szAccount, szUID)
: DBComponent::AuthDB::GetBattleUIDByAccount(CDBSingleObject::GetInstance(), szAccount, szUID);
if(bResult)
{
fprintf(writefile, "%s\t%s\n", szUID, szAccount);
}
else
{
fprintf(writefile, "%s\t%s\n", szUID, CDBSingleObject::GetInstance().GetErrorString());
}
Sleep(50);
}
bResult = true;
fclose(writefile);
}
fclose(readfile);
}
}
}
MessageBox(bResult ? "<EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>." : "<EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>");
}
void CAuthHanDlg::OnBnClickedMd5Convert()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
char szPassword[33];
memset(szPassword, 0, sizeof(char) * 33);
MD5String(m_szMD5Password.GetBuffer(0), szPassword);
m_szMD5HashValue = szPassword;
UpdateData(FALSE);
}

View File

@@ -0,0 +1,78 @@
// AuthHanDlg.h : header file
//
#if !defined(AFX_AUTHHANDLG_H__D956BA36_044B_41F8_8C63_71ACF469DA91__INCLUDED_)
#define AFX_AUTHHANDLG_H__D956BA36_044B_41F8_8C63_71ACF469DA91__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <RylServerLibrary/DB/DBComponent.h>
/////////////////////////////////////////////////////////////////////////////
// CAuthHanDlg dialog
class CAuthHanDlg : public CDialog
{
// Construction
public:
CAuthHanDlg(CWnd* pParent = NULL); // standard constructor
void AuthUserHangame(void);
// Dialog Data
//{{AFX_DATA(CAuthHanDlg)
enum { IDD = IDD_AUTHHAN_DIALOG };
CString m_Log;
CString m_Account;
CString m_Password;
CString m_ID;
CString m_T1;
CString m_T2;
CString m_UID_IN;
CString m_Account_Out;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAuthHanDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
public:
// Generated message map functions
//{{AFX_MSG(CAuthHanDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnConnect();
afx_msg void OnAuth();
afx_msg void OnUpdate();
afx_msg void OnFind();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedReg();
afx_msg void OnBnClickedFindUidList();
afx_msg void OnBnClickedFindAccountList();
private:
CString m_AccountIn;
BOOL m_bBattleRylAuth;
CString m_szMD5Password;
CString m_szMD5HashValue;
afx_msg void OnBnClickedMd5Convert();
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_AUTHHANDLG_H__D956BA36_044B_41F8_8C63_71ACF469DA91__INCLUDED_)

View File

@@ -0,0 +1,42 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by AuthHan.rc
//
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_AUTHHAN_DIALOG 102
#define IDR_MAINFRAME 128
#define IDC_CONNECT 1000
#define IDC_LOG 1001
#define IDC_ACCOUNT 1002
#define IDC_PASSWORD 1003
#define IDC_AUTH 1004
#define IDC_ID 1005
#define IDC_UPDATE 1006
#define IDC_BUTTON 1007
#define IDC_UID_IN 1008
#define IDC_FIND 1009
#define IDC_ACCOUNT_OUT 1010
#define IDC_ACCOUNT_IN 1011
#define IDC_FIND_UID_LIST 1012
#define IDC_REG 1013
#define IDC_FIND3 1014
#define IDC_FIND_ACCOUNT_LIST 1014
#define IDC_CHECK1 1015
#define IDC_BATTLERYL_CHECK 1015
#define IDC_MD5_PASSWORD 1016
#define IDC_MD5_HASHVAL 1017
#define IDC_BUTTON1 1018
#define IDC_MD5_CONVERT 1018
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1019
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// AuthHan.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -0,0 +1,27 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__0EAFCB48_9CA8_4B9A_BF6D_C9048E6747F7__INCLUDED_)
#define AFX_STDAFX_H__0EAFCB48_9CA8_4B9A_BF6D_C9048E6747F7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__0EAFCB48_9CA8_4B9A_BF6D_C9048E6747F7__INCLUDED_)

View File

@@ -0,0 +1,30 @@
/* GLOBAL.H - RSAREF types and constants
*/
/* PROTOTYPES should be set to one if and only if the compiler supports
function argument prototyping.
The following makes PROTOTYPES default to 0 if it has not already
been defined with C compiler flags.
*/
#ifndef PROTOTYPES
#define PROTOTYPES 0
#endif
/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;
/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
returns an empty list.
*/
#if PROTOTYPES
#define PROTO_LIST(list) list
#else
#define PROTO_LIST(list) ()
#endif

View File

@@ -0,0 +1,36 @@
/* MD5.H - header file for MD5C.C
*/
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
/* MD5 context. */
typedef struct {
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD5_CTX;
void MD5Init (MD5_CTX *);
void MD5Update (MD5_CTX *, unsigned char *, unsigned int);
void MD5Final (unsigned char [16], MD5_CTX *);

View File

@@ -0,0 +1,337 @@
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
*/
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
#include "global.h"
#include "md5.h"
/* Constants for MD5Transform routine.
*/
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
static void Encode PROTO_LIST
((unsigned char *, UINT4 *, unsigned int));
static void Decode PROTO_LIST
((UINT4 *, unsigned char *, unsigned int));
static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
/* F, G, H and I are basic MD5 functions.
*/
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
/* ROTATE_LEFT rotates x left n bits.
*/
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) { \
(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define GG(a, b, c, d, x, s, ac) { \
(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define HH(a, b, c, d, x, s, ac) { \
(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define II(a, b, c, d, x, s, ac) { \
(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
/* MD5 initialization. Begins an MD5 operation, writing a new context.
*/
void MD5Init (context)
MD5_CTX *context; /* context */
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->state[0] = 0x67452301;
context->state[1] = 0xefcdab89;
context->state[2] = 0x98badcfe;
context->state[3] = 0x10325476;
}
/* MD5 block update operation. Continues an MD5 message-digest
operation, processing another message block, and updating the
context.
*/
void MD5Update (context, input, inputLen)
MD5_CTX *context; /* context */
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
{
unsigned int i, index, partLen;
/* Compute number of bytes mod 64 */
index = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
< ((UINT4)inputLen << 3))
context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
partLen = 64 - index;
/* Transform as many times as possible.
*/
if (inputLen >= partLen) {
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)input, partLen);
MD5Transform (context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
MD5Transform (context->state, &input[i]);
index = 0;
}
else
i = 0;
/* Buffer remaining input */
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)&input[i],
inputLen-i);
}
/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context.
*/
void MD5Final (digest, context)
unsigned char digest[16]; /* message digest */
MD5_CTX *context; /* context */
{
unsigned char bits[8];
unsigned int index, padLen;
/* Save number of bits */
Encode (bits, context->count, 8);
/* Pad out to 56 mod 64.
*/
index = (unsigned int)((context->count[0] >> 3) & 0x3f);
padLen = (index < 56) ? (56 - index) : (120 - index);
MD5Update (context, PADDING, padLen);
/* Append length (before padding) */
MD5Update (context, bits, 8);
/* Store state in digest */
Encode (digest, context->state, 16);
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)context, 0, sizeof (*context));
}
/* MD5 basic transformation. Transforms state based on block.
*/
static void MD5Transform (state, block)
UINT4 state[4];
unsigned char block[64];
{
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
Decode (x, block, 64);
/* Round 1 */
FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
/* Round 2 */
GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
/* Round 3 */
HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
/* Round 4 */
II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
state[0] += a;
state[1] += b;
state[2] += c;
state[3] += d;
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)x, 0, sizeof (x));
}
/* Encodes input (UINT4) into output (unsigned char). Assumes len is
a multiple of 4.
*/
static void Encode (output, input, len)
unsigned char *output;
UINT4 *input;
unsigned int len;
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4) {
output[j] = (unsigned char)(input[i] & 0xff);
output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
}
}
/* Decodes input (unsigned char) into output (UINT4). Assumes len is
a multiple of 4.
*/
static void Decode (output, input, len)
UINT4 *output;
unsigned char *input;
unsigned int len;
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
(((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}
/* Note: Replace "for loop" with standard memcpy if possible.
*/
static void MD5_memcpy (output, input, len)
POINTER output;
POINTER input;
unsigned int len;
{
unsigned int i;
for (i = 0; i < len; i++)
output[i] = input[i];
}
/* Note: Replace "for loop" with standard memset if possible.
*/
static void MD5_memset (output, value, len)
POINTER output;
int value;
unsigned int len;
{
unsigned int i;
for (i = 0; i < len; i++)
((char *)output)[i] = (char)value;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,13 @@
//
// AUTHHAN.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,65 @@
// AuthYouxi.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
//
#include "stdafx.h"
#include "AuthYouxi.h"
#include "AuthYouxiDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAuthYouxiApp
BEGIN_MESSAGE_MAP(CAuthYouxiApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CAuthYouxiApp <20><><EFBFBD><EFBFBD>
CAuthYouxiApp::CAuthYouxiApp()
{
// TODO: <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// InitInstance<63><65> <20><><EFBFBD><EFBFBD> <20>߿<EFBFBD><DFBF><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAuthYouxiApp <20><>ü<EFBFBD>Դϴ<D4B4>.
CAuthYouxiApp theApp;
// CAuthYouxiApp <20>ʱ<EFBFBD>ȭ
BOOL CAuthYouxiApp::InitInstance()
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>Ŵ<EFBFBD><C5B4>佺Ʈ<E4BDBA><C6AE> ComCtl32.dll <20><><EFBFBD><EFBFBD> 6 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>־<EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>, Windows XP <20>󿡼<EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> InitCommonControls()<29><> <20>ʿ<EFBFBD><CABF>մϴ<D5B4>.
// InitCommonControls()<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
CAuthYouxiDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
else if (nResponse == IDCANCEL)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
return FALSE;
}

View File

@@ -0,0 +1,31 @@
// AuthYouxi.h : PROJECT_NAME <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#pragma once
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // <20><> <20><>ȣ
// CAuthYouxiApp:
// <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> AuthYouxi.cpp<70><70> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
//
class CAuthYouxiApp : public CWinApp
{
public:
CAuthYouxiApp();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
virtual BOOL InitInstance();
// <20><><EFBFBD><EFBFBD>
DECLARE_MESSAGE_MAP()
};
extern CAuthYouxiApp theApp;

View File

@@ -0,0 +1,215 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
"LANGUAGE 18, 1\r\n"
"#pragma code_page(949)\r\n"
"#include ""res\\AuthYouxi.rc2"" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>\r\n"
"#include ""afxres.rc"" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON "res\\AuthYouxi.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "AuthYouxi <20><><EFBFBD><EFBFBD>"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "AuthYouxi <20><><EFBFBD><EFBFBD> 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX
LTEXT "Copyright (c) 2003",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "Ȯ<><C8AE>",IDOK,178,7,50,16,WS_GROUP
END
IDD_AUTHYOUXI_DIALOG DIALOGEX 0, 0, 157, 174
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "AuthYouxi"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON ".",IDC_DEFAULT,22,122,6,6,BS_FLAT | NOT WS_VISIBLE
PUSHBUTTON "<22><><EFBFBD><EFBFBD>",IDC_CONNECT,5,5,50,14,BS_FLAT
GROUPBOX "<22><><EFBFBD><EFBFBD>",IDC_STATIC,5,24,145,83
CTEXT "<22><><EFBFBD><EFBFBD>",IDC_STATIC,11,37,32,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT IDC_ACCOUNT,44,37,96,12,ES_AUTOHSCROLL | NOT WS_BORDER
CTEXT "<22>н<EFBFBD>",IDC_STATIC,11,50,32,12,SS_CENTERIMAGE,
WS_EX_STATICEDGE
EDITTEXT IDC_PASSWORD,44,50,96,12,ES_AUTOHSCROLL | NOT WS_BORDER
PUSHBUTTON "spLoginAuthMyth",IDC_AUTH,11,68,129,14,BS_FLAT
PUSHBUTTON "spPayAuthMyth",IDC_PAYAUTH,11,84,129,14,BS_FLAT
LTEXT "",IDC_LOG,5,112,145,56,0,WS_EX_STATICEDGE
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041203b5"
BEGIN
VALUE "CompanyName", "TODO: <ȸ<><C8B8> <20≯<EFBFBD>>"
VALUE "FileDescription", "TODO: <<3C><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>>"
VALUE "FileVersion", "1.0.0.1"
VALUE "InternalName", "AuthYouxi.exe"
VALUE "LegalCopyright", "TODO: (c) <ȸ<><C8B8> <20≯<EFBFBD>>. All rights reserved."
VALUE "OriginalFilename", "AuthYouxi.exe"
VALUE "ProductName", "TODO: <<3C><>ǰ <20≯<EFBFBD>>"
VALUE "ProductVersion", "1.0.0.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "<22><>ȯ", 0x412, 949
END
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 48
END
IDD_AUTHYOUXI_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 150
TOPMARGIN, 7
BOTTOMMARGIN, 167
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//
IDR_MANIFEST RT_MANIFEST "res\\AuthYouxi.manifest"
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_ABOUTBOX "AuthYouxi <20><><EFBFBD><EFBFBD>(&A)..."
END
#endif // <20>ѱ<EFBFBD><D1B1><EFBFBD> resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
LANGUAGE 18, 1
#pragma code_page(949)
#include "res\AuthYouxi.rc2" // Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
#include "afxres.rc" // ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="AuthYouxi"
ProjectGUID="{02F46342-4C6A-4518-BE02-E40BC2F96AB4}"
Keyword="MFCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../DBToolExecutable/$(ConfigurationName)"
IntermediateDirectory="../Intermediate/$(ProjectName)/$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
AdditionalIncludeDirectories="../;./;../../RylServerProject;../../RylServerProject/RylServerLibrary;../../RylServerProject/BaseLibrary"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
StringPooling="TRUE"
MinimalRebuild="FALSE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
TreatWChar_tAsBuiltInType="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="FALSE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="<22>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath="AuthYouxi.cpp">
</File>
<File
RelativePath="AuthYouxiDlg.cpp">
</File>
<File
RelativePath="stdafx.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath="AuthYouxi.h">
</File>
<File
RelativePath="AuthYouxiDlg.h">
</File>
<File
RelativePath="Resource.h">
</File>
<File
RelativePath="stdafx.h">
</File>
</Filter>
<Filter
Name="<22><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;jpg;jpeg;jpe;manifest">
<File
RelativePath="res\AuthYouxi.ico">
</File>
<File
RelativePath="res\AuthYouxi.manifest">
</File>
<File
RelativePath="AuthYouxi.rc">
</File>
<File
RelativePath="res\AuthYouxi.rc2">
</File>
</Filter>
<File
RelativePath="ReadMe.txt">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,255 @@
// AuthYouxiDlg.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#include "stdafx.h"
#include "AuthYouxi.h"
#include "AuthYouxiDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <DB/DBComponent.h>
#include <DB/AuthDBComponent.h>
#include <DB/BillingDBComponent.h>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> CAboutDlg <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CAuthYouxiDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
CAuthYouxiDlg::CAuthYouxiDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAuthYouxiDlg::IDD, pParent)
, m_Log(_T(""))
, m_Account(_T(""))
, m_Password(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAuthYouxiDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_LOG, m_Log);
DDX_Text(pDX, IDC_ACCOUNT, m_Account);
DDX_Text(pDX, IDC_PASSWORD, m_Password);
}
BEGIN_MESSAGE_MAP(CAuthYouxiDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CONNECT, OnBnClickedConnect)
ON_BN_CLICKED(IDC_AUTH, OnBnClickedAuth)
ON_BN_CLICKED(IDC_PAYAUTH, OnBnClickedPayauth)
END_MESSAGE_MAP()
// CAuthYouxiDlg <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
BOOL CAuthYouxiDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// <20>ý<EFBFBD><C3BD><EFBFBD> <20>޴<EFBFBD><DEB4><EFBFBD> "<22><><EFBFBD><EFBFBD>..." <20>޴<EFBFBD> <20>׸<EFBFBD><D7B8><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// IDM_ABOUTBOX<4F><58> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20>մϴ<D5B4>.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// <20><> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><> â<><C3A2> <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, TRUE); // ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// TODO: <20><><EFBFBD><20>߰<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
return TRUE; // <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TRUE<55><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
}
void CAuthYouxiDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20>ּ<EFBFBD>ȭ <20><><EFBFBD>߸<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD>
// <20>Ʒ<EFBFBD> <20>ڵ尡 <20>ʿ<EFBFBD><CABF>մϴ<D5B4>. <20><><EFBFBD><EFBFBD>/<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
void CAuthYouxiDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // <20>׸<EFBFBD><D7B8><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD>ؽ<EFBFBD>Ʈ
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><EFBFBD><E7B0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB5A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8>ϴ<EFBFBD>.
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ּ<EFBFBD>ȭ<EFBFBD><C8AD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> ǥ<>õǵ<C3B5><C7B5><EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD>
// <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
HCURSOR CAuthYouxiDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CAuthYouxiDlg::OnBnClickedConnect()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
if(CDBSingleObject::GetInstance().Connect(CDBSingleObject::Class_KeeperDB))
{
m_Log = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>. (Connected)";
}
else
{
m_Log = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
UpdateData(FALSE);
}
void CAuthYouxiDlg::OnBnClickedAuth()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
AUTH Auth = {0,};
if(DBComponent::AuthDB::LoginAuthMyth(CDBSingleObject::GetInstance(),
m_Account.GetBuffer(0), m_Password.GetBuffer(0), "0.0.0.0", &Auth))
{
if(0 == Auth.Errcode)
{
m_Log.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> UID:%d", Auth.UID);
}
else
{
switch(Auth.Errcode)
{
case 1: m_Log.Format("%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰų<CAB0> <20><>ȣ<EFBFBD><C8A3> Ʋ<><C6B2>", Auth.Errcode); break;
case 2: m_Log.Format("%d UID <20><> <20>̻<EFBFBD>", Auth.Errcode); break;
case 3: m_Log.Format("%d <20>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>", Auth.Errcode); break;
case 9: m_Log.Format("%d <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 11: m_Log.Format("%d <20><><EFBFBD><EFBFBD>Ʈ ī<><C4AB> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD>", Auth.Errcode); break;
case 12: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 13: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 14: m_Log.Format("%d <20><>ȿ <20><20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 19: m_Log.Format("%d <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 21: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B0A3> <20><><EFBFBD>۵<EFBFBD><DBB5><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD>", Auth.Errcode); break;
case 22: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 29: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 51: m_Log.Format("%d <20><><EFBFBD><EFBFBD>Ʈ ī<><C4AB> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD>", Auth.Errcode); break;
case 52: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 53: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 54: m_Log.Format("%d <20><>ȿ <20><20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
case 59: m_Log.Format("%d <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
default: m_Log.Format("%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", Auth.Errcode); break;
}
}
}
else
{
m_Log = CDBSingleObject::GetInstance().GetErrorString();
}
UpdateData(FALSE);
}
void CAuthYouxiDlg::OnBnClickedPayauth()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
PAY_AUTH PayAuth = {0,};
if(DBComponent::BillingDB::PayAuthMyth(
CDBSingleObject::GetInstance(), m_Account.GetBuffer(0), "0.0.0.0", &PayAuth))
{
if(0 == PayAuth.Errcode)
{
m_Log.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> UID:%d, Time:%d (<28><>)", PayAuth.UID, PayAuth.Time);
}
else
{
switch(PayAuth.Errcode)
{
case 1: m_Log.Format("%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>ð<EFBFBD>:%d", PayAuth.Errcode, PayAuth.Time); break;
case 11: m_Log.Format("%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20>ð<EFBFBD>:%d", PayAuth.Errcode, PayAuth.Time); break;
case 13: m_Log.Format("%d <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>. <20>ð<EFBFBD>:%d", PayAuth.Errcode, PayAuth.Time); break;
case 19: m_Log.Format("%d <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>ð<EFBFBD>:%d", PayAuth.Errcode, PayAuth.Time); break;
default: m_Log.Format("%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>ð<EFBFBD>:%d", PayAuth.Errcode, PayAuth.Time); break;
}
}
}
else
{
m_Log = CDBSingleObject::GetInstance().GetErrorString();
}
UpdateData(FALSE);
}

View File

@@ -0,0 +1,38 @@
// AuthYouxiDlg.h : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#pragma once
// CAuthYouxiDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
class CAuthYouxiDlg : public CDialog
{
// <20><><EFBFBD><EFBFBD>
public:
CAuthYouxiDlg(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum { IDD = IDD_AUTHYOUXI_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>
protected:
HICON m_hIcon;
// <20>޽<EFBFBD><DEBD><EFBFBD> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedConnect();
CString m_Log;
CString m_Account;
CString m_Password;
afx_msg void OnBnClickedAuth();
afx_msg void OnBnClickedPayauth();
};

View File

@@ -0,0 +1,81 @@
================================================================================
MFC <20><><EFBFBD>̺귯<CCBA><EAB7AF> : AuthYouxi <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
================================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> AuthYouxi <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>α׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2BABB><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>ۼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
<EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> AuthYouxi <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD>ԵǾ<D4B5>
<EFBFBD>ֽ<EFBFBD><EFBFBD>ϴ<EFBFBD>.
AuthYouxi.vcproj
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VC++ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Visual C++ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>,
<20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե˴ϴ<CBB4>.
AuthYouxi.h
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. <20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>õ<EFBFBD> Resource.h<><68> <20><><EFBFBD><EFBFBD>
Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ԵǸ<D4B5> CAuthYouxiApp <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
AuthYouxi.cpp
CAuthYouxiApp <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
AuthYouxi.rc
<20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> Microsoft Windows <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> RES <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>Ʈ<EFBFBD><C6AE> <20><> Ŀ<><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD>ԵǸ<D4B5>
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
<20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> 1042<34><32> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
res\AuthYouxi.ico
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AuthYouxi.rc<72><63> <20><><EFBFBD>Ե˴ϴ<CBB4>.
res\AuthYouxi.rc2
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
<20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>ԵǾ<D4B5> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
AuthYouxiDlg.h, AuthYouxiDlg.cpp - <20><>ȭ <20><><EFBFBD><EFBFBD>
CAuthYouxiDlg Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD>
<20><> <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ǵ˴ϴ<CBB4>. <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> AuthYouxi.rc<72><63>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD>
ActiveX <20><>Ʈ<EFBFBD><C6AE>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> ActiveX <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
<EFBFBD>μ<EFBFBD> <20><> <20>μ<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1> MFC <20><><EFBFBD>̺귯<CCBA><EAB7AF><EFBFBD><EFBFBD> CView Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>Ͽ<EFBFBD>
<20>μ<EFBFBD>, <20>μ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20>μ<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20>ڵ带 <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ ǥ<><C7A5> <20><><EFBFBD><EFBFBD>
StdAfx.h, StdAfx.cpp
<20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(PCH) AuthYouxi.pch <20><> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> StdAfx.obj<62><6A> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
Resource.h
<20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD>ҽ<EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>а<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD>մϴ<D5B4>.
/////////////////////////////////////////////////////////////////////////////
<EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1><EFBFBD><EFBFBD> "TODO:"<22><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>߰<EFBFBD><DFB0>ϰų<CFB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>ϴ<EFBFBD>
<EFBFBD>ҽ<EFBFBD> <20>ڵ带 <20><>Ÿ<EFBFBD><C5B8><EFBFBD>ϴ<EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DLL<4C><4C> MFC<46><43> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><20> ü<><C3BC><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> Microsoft Visual C++ CD-ROM<4F><4D> Win\System <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD> <20>ִ<EFBFBD>
<EFBFBD>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> MFC70XXX.DLL<4C><4C> <20><>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD> system <20>Ǵ<EFBFBD> system32 <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MFCLOC.DLL<4C><4C> <20≯<EFBFBD><CCB8><EFBFBD> <20>ٲپ<D9B2><D9BE><EFBFBD> <20>մϴ<D5B4>. "XXX"<22><> <20>ش<EFBFBD> <20><><EFBFBD><20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> MFC70DEU.DLL<4C><4C><EFBFBD><EFBFBD> <20><><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD> <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD>Ե˴ϴ<CBB4>.
<EFBFBD>̷<EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>Ϻ<EFBFBD> UI <20><><EFBFBD>Ұ<EFBFBD> <20> ü<><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20>˴ϴ<CBB4>.
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,28 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by AuthYouxi.rc
//
#define IDR_MANIFEST 1
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_AUTHYOUXI_DIALOG 102
#define IDR_MAINFRAME 128
#define IDC_DEFAULT 1000
#define IDC_CONNECT 1001
#define IDC_ACCOUNT 1002
#define IDC_PASSWORD 1003
#define IDC_AUTH 1004
#define IDC_PAYAUTH 1005
#define IDC_LOG 1006
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1007
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.AuthYouxi"
type="win32"
/>
<description>여기에 응용 프로그램 설명을 추가합니다.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

View File

@@ -0,0 +1,13 @@
//
// AuthYouxi.RC2 - resources Microsoft Visual C++<2B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD>ҽ<EFBFBD>
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>....
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,7 @@
// stdafx.cpp : ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
// AuthYouxi.pch<63><68> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.
// stdafx.obj<62><6A> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#include "stdafx.h"

View File

@@ -0,0 +1,42 @@
// stdafx.h : <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
// ǥ<><C7A5> <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Windows <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ܽ<EFBFBD>ŵ<EFBFBD>ϴ<EFBFBD>.
#endif
// <20>Ʒ<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><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
// <20>ٸ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MSDN<44><4E> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
#ifndef WINVER // Windows 95 <20><> Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define WINVER 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINNT // Windows NT 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINNT 0x0400 // Windows 98<39><38> Windows 2000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_WINDOWS // Windows 98 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_WINDOWS 0x0410 // Windows Me <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#ifndef _WIN32_IE // IE 4.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
#define _WIN32_IE 0x0400 // IE 5.0 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>µ<EFBFBD><C2B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽʽÿ<CABD>.
#endif
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // <20>Ϻ<EFBFBD> CString <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>.
// MFC<46><43> <20><><EFBFBD><EFBFBD> <20>κа<CEBA> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC <20>ٽ<EFBFBD> <20><> ǥ<><C7A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#include <afxext.h> // MFC <20>ͽ<EFBFBD><CDBD>ټ<EFBFBD>
#include <afxdisp.h> // MFC <20>ڵ<EFBFBD>ȭ Ŭ<><C5AC><EFBFBD><EFBFBD>
#include <afxdtctl.h> // Internet Explorer 4 <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // Windows <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> MFC <20><><EFBFBD><EFBFBD>
#endif // _AFX_NO_AFXCMN_SUPPORT

View File

@@ -0,0 +1,206 @@
// Admin.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "GameDBTool.h"
#include "Admin.h"
#include "GameDBTool.h"
#include "GameDBToolDlg.h"
#include ".\admin.h"
// CAdmin <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
IMPLEMENT_DYNAMIC(CAdmin, CDialog)
CAdmin::CAdmin(CWnd* pParent /*=NULL*/)
: CDialog(CAdmin::IDD, pParent)
, m_UserID(_T(""))
, m_SIP(_T(""))
, m_EIP(_T(""))
{
}
CAdmin::~CAdmin()
{
}
void CAdmin::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_UID, m_UserID);
DDX_Control(pDX, IDC_LEVEL, m_Level);
DDX_Text(pDX, IDC_S_IP, m_SIP);
DDX_Text(pDX, IDC_E_IP, m_EIP);
}
BEGIN_MESSAGE_MAP(CAdmin, CDialog)
ON_BN_CLICKED(IDC_MODIFY, OnBnClickedModify)
ON_EN_CHANGE(IDC_S_IP, OnEnChangeSIp)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CAdmin <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
BOOL CAdmin::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: <20><><EFBFBD><20>߰<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
ADMIN Admin = {0,};
char Query[256] = "";
sprintf(Query, "SELECT * FROM AdminList WHERE UID='%d'", m_UID);
int Rows = 0;
if(!CDBSingleObject::GetInstance().Select( Query, (void **)&Admin, sizeof(ADMIN), 0, 1, &Rows))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(0 == Rows)
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
m_UserID.Format("%d", m_UID);
m_Level.InsertString(0, "None");
m_Level.InsertString(1, "Admin LV1");
m_Level.InsertString(2, "Admin LV2");
m_Level.InsertString(3, "Admin LV3");
// <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> â <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ǥ<><C7A5>
switch(Admin.Level)
{
case 0: m_Level.SetCurSel(0); break;
case 1: m_Level.SetCurSel(1); break;
case 2: m_Level.SetCurSel(2); break;
case 3: m_Level.SetCurSel(3); break;
}
// <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> â <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ǥ<><C7A5>
m_SIP = Admin.IP_S;
m_EIP = Admin.IP_E;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// <20><><EFBFBD><EFBFBD>: OCX <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
}
void CAdmin::OnBnClickedModify()
{
UpdateData();
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
IN_ADDR SAddr = {0,};
IN_ADDR EAddr = {0,};
SAddr.S_un.S_addr = inet_addr(m_SIP.GetBuffer(0));
EAddr.S_un.S_addr = inet_addr(m_EIP.GetBuffer(0));
if((SAddr.S_un.S_un_b.s_b1 != EAddr.S_un.S_un_b.s_b1) || (SAddr.S_un.S_un_b.s_b2 != EAddr.S_un.S_un_b.s_b2) ||
(SAddr.S_un.S_un_b.s_b3 != EAddr.S_un.S_un_b.s_b3))
{
MessageBox("IP <20><EFBFBD><EBBFAA> <20>߸<EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.");
return;
}
char Query[256] = "";
switch(m_Level.GetCurSel())
{
case 0: // <20>Ϲ<EFBFBD>
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
0, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 1: // <20><EFBFBD><EEBFB5> LV1
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
1, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 2: // <20><EFBFBD><EEBFB5> LV2
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
2, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 3: // <20><EFBFBD><EEBFB5> LV3
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
3, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
}
int Rows = 0;
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
CAdmin::OnOK();
}
void CAdmin::OnEnChangeSIp()
{
UpdateData();
m_EIP = m_SIP;
UpdateData(FALSE);
}
bool CAdminDB::Initialize(void)
{
char Query[256] = "";
memset(&m_AdminList, 0, sizeof(unsigned long) * MaxList);
sprintf(Query, "SELECT UID FROM AdminList");
if(!CDBSingleObject::GetInstance().Select( Query, (void **)m_AdminList, sizeof(DWORD), 0, MaxList, &m_AdminNum))
return false;
return true;
}
unsigned short CAdminDB::GetAdminLevel(unsigned long UID)
{
for(int Count = 0; Count < m_AdminNum; ++Count)
if(m_AdminList[Count] == UID)
{
return Level::L1;
}
return Level::None;
}
HBRUSH CAdmin::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: <20><><EFBFBD>⼭ DC<44><43> Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
HBRUSH m_hBrush;
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
switch( nCtlColor ){
case CTLCOLOR_DLG:
pDC->SetBkColor(RGB( 255, 255, 255));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB( 255, 169, 128));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
default:
return hbr;
break;
}
}

View File

@@ -0,0 +1,58 @@
#pragma once
#include "afxwin.h"
// CAdmin <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
class CAdmin : public CDialog
{
DECLARE_DYNAMIC(CAdmin)
public:
CAdmin(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
virtual ~CAdmin();
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
enum { IDD = IDD_ADMIN };
DWORD m_UID;
public:
void SetUID(DWORD UID_In) { m_UID = UID_In; }
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
CString m_UserID;
CComboBox m_Level;
afx_msg void OnBnClickedModify();
CString m_SIP;
CString m_EIP;
afx_msg void OnEnChangeSIp();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
};
class CAdminDB
{
public:
enum Level
{
None = 0,
L1 = 1, // <20><EFBFBD><EEBFB5> L1
L2 = 2, // <20><EFBFBD><EEBFB5> L2
L3 = 3, // <20><EFBFBD><EEBFB5> L3
};
private:
enum { MaxList = 100 };
DWORD m_AdminList[MaxList];
int m_AdminNum;
public:
bool Initialize(void);
unsigned short GetAdminLevel(unsigned long UID);
};

View File

@@ -0,0 +1,513 @@
// CharCopy.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "GameDBTool.h"
#include "CharCopy.h"
#include "GameDBTool.h"
#include "GameDBToolDlg.h"
#include ".\charcopy.h"
// CCharCopy <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
IMPLEMENT_DYNAMIC(CCharCopy, CDialog)
CCharCopy::CCharCopy(CWnd* pParent /*=NULL*/)
: CDialog(CCharCopy::IDD, pParent)
, m_CharID(_T(""))
, m_TargetID(_T(""))
{
}
CCharCopy::~CCharCopy()
{
}
void CCharCopy::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_CID, m_CharID);
DDX_Text(pDX, IDC_TARGETID, m_TargetID);
}
BOOL CCharCopy::OnInitDialog()
{
CDialog::OnInitDialog();
m_CharID.Format("%d", m_CID);
UpdateData(FALSE);
return TRUE;
}
BEGIN_MESSAGE_MAP(CCharCopy, CDialog)
ON_BN_CLICKED(IDC_FILE_SAVE, OnBnClickedFileSave)
ON_BN_CLICKED(IDC_DB_LOAD, OnBnClickedDbLoad)
ON_BN_CLICKED(IDC_COPY_TO, OnBnClickedCopyTo)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
void CCharCopy::OnBnClickedFileSave()
{
UpdateData();
CHAR_INFOST CharInfo; // ij<><C4B3><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD>
CHAR_POS CharPos; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD>
SKILL Skill; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
QUICK Quick; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
EQUIP Equip; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
INVEN Inven; // ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD>
EXTRA Extra; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
EXCHANGE Exchange; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ
CHAR_INFOEX CharInfoEx; // ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen;
if(lpFileOpen->SaveDlg("idump"))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
DWORD dwWritten = 0;
char DumpText[256] = "";
HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hLogFile == NULL)
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
unsigned short usEquipView[15] = { 0, };
// <20>ε<EFBFBD>
if(!DBComponent::GameDB::GetCharInfo(CDBSingleObject::GetInstance(), m_CID, &CharInfo, usEquipView, 15))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharPos(CDBSingleObject::GetInstance(), m_CID, &CharPos))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharSkill(CDBSingleObject::GetInstance(), m_CID, &Skill))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &Quick))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetEquip(CDBSingleObject::GetInstance(), m_CID, &Equip))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetInven(CDBSingleObject::GetInstance(), m_CID, &Inven))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetExtra(CDBSingleObject::GetInstance(), m_CID, &Extra))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetExchange(CDBSingleObject::GetInstance(), m_CID, &Exchange))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharInfoEx(CDBSingleObject::GetInstance(), m_CID, &CharInfoEx))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
// <20><><EFBFBD><EFBFBD>
if(!WriteFile(hLogFile, &CharInfo, sizeof(CHAR_INFOST), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &CharPos, sizeof(CHAR_POS), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Skill, sizeof(SKILL), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Quick, sizeof(QUICK), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Equip, sizeof(EQUIP), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Inven, sizeof(INVEN), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Extra, sizeof(EXTRA), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &Exchange, sizeof(EXCHANGE), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!WriteFile(hLogFile, &CharInfoEx, sizeof(CHAR_INFOEX), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
}
}
void CCharCopy::OnBnClickedDbLoad()
{
CHAR_INFOST CharInfo; // ij<><C4B3><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD>
CHAR_POS CharPos; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD>
SKILL Skill; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
QUICK Quick; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
EQUIP Equip; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
INVEN Inven; // ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD>
EXTRA Extra; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
EXCHANGE Exchange; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ
CHAR_INFOEX CharInfoEx; // ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen;
if(lpFileOpen->OpenDlg())
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
DWORD dwWritten = 0;
char DumpText[256] = "";
HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hLogFile == NULL)
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20><><EFBFBD><EFBFBD>
if(!ReadFile(hLogFile, &CharInfo, sizeof(CHAR_INFOST), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &CharPos, sizeof(CHAR_POS), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Skill, sizeof(SKILL), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Quick, sizeof(QUICK), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Equip, sizeof(EQUIP), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Inven, sizeof(INVEN), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Extra, sizeof(EXTRA), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &Exchange, sizeof(EXCHANGE), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
if(!ReadFile(hLogFile, &CharInfoEx, sizeof(CHAR_INFOEX), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20><><EFBFBD><EFBFBD>
unsigned short EquipView[15] = {0,};
if(!DBComponent::GameDB::UpdateCharInfo(CDBSingleObject::GetInstance(), m_CID, &CharInfo, EquipView, 15))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharPos(CDBSingleObject::GetInstance(), m_CID, &CharPos))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharSkill(CDBSingleObject::GetInstance(), m_CID, &Skill))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateQuick(CDBSingleObject::GetInstance(), m_CID, &Quick))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateEquip(CDBSingleObject::GetInstance(), m_CID, &Equip))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateInven(CDBSingleObject::GetInstance(), m_CID, &Inven))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateExtra(CDBSingleObject::GetInstance(), m_CID, &Extra))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateExchange(CDBSingleObject::GetInstance(), m_CID, &Exchange))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharInfoEx(CDBSingleObject::GetInstance(), m_CID, &CharInfoEx))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
}
}
void CCharCopy::OnBnClickedCopyTo()
{
UpdateData();
CHAR_INFOST CharInfo; // ij<><C4B3><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD>
CHAR_POS CharPos; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD>
SKILL Skill; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
QUICK Quick; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
EQUIP Equip; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
INVEN Inven; // ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD>
EXTRA Extra; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
EXCHANGE Exchange; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ
CHAR_INFOEX CharInfoEx; // ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ű<EFBFBD><C5B1><EFBFBD> <20><><EFBFBD><EFBFBD>");
unsigned short usEquipView[15] = { 0, };
// <20>ε<EFBFBD>
if(!DBComponent::GameDB::GetCharInfo(CDBSingleObject::GetInstance(), m_CID, &CharInfo, usEquipView, 15))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharPos(CDBSingleObject::GetInstance(), m_CID, &CharPos))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharSkill(CDBSingleObject::GetInstance(), m_CID, &Skill))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &Quick))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetEquip(CDBSingleObject::GetInstance(), m_CID, &Equip))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetInven(CDBSingleObject::GetInstance(), m_CID, &Inven))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetExtra(CDBSingleObject::GetInstance(), m_CID, &Extra))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetExchange(CDBSingleObject::GetInstance(), m_CID, &Exchange))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetCharInfoEx(CDBSingleObject::GetInstance(), m_CID, &CharInfoEx))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
// <20><><EFBFBD><EFBFBD>
DWORD TargetCID = atoi(m_TargetID.GetBuffer());
if(!DBComponent::GameDB::UpdateCharInfo(CDBSingleObject::GetInstance(), TargetCID, &CharInfo, usEquipView, 15))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharPos(CDBSingleObject::GetInstance(), TargetCID, &CharPos))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharSkill(CDBSingleObject::GetInstance(), TargetCID, &Skill))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateQuick(CDBSingleObject::GetInstance(), TargetCID, &Quick))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateEquip(CDBSingleObject::GetInstance(), TargetCID, &Equip))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateInven(CDBSingleObject::GetInstance(), TargetCID, &Inven))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateExtra(CDBSingleObject::GetInstance(), TargetCID, &Extra))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateExchange(CDBSingleObject::GetInstance(), TargetCID, &Exchange))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateCharInfoEx(CDBSingleObject::GetInstance(), TargetCID, &CharInfoEx))
{
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
pDlgWnd->m_Log.LogPrint("<><C4AB>] ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ű<EFBFBD><C5B1><EFBFBD> <20><><EFBFBD><EFBFBD>");
}
HBRUSH CCharCopy::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: <20><><EFBFBD>⼭ DC<44><43> Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
HBRUSH m_hBrush;
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
switch( nCtlColor ){
case CTLCOLOR_DLG:
pDC->SetBkColor(RGB( 255, 255, 255));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB( 255, 169, 128));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
default:
return hbr;
break;
}
}

View File

@@ -0,0 +1,34 @@
#pragma once
// CCharCopy <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
class CCharCopy : public CDialog
{
DECLARE_DYNAMIC(CCharCopy)
DWORD m_CID;
public:
CCharCopy(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
virtual ~CCharCopy();
void SetCID(DWORD CID_In) { m_CID = CID_In; }
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
enum { IDD = IDD_CHARCOPY };
protected:
virtual BOOL OnInitDialog();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedFileSave();
CString m_CharID;
CString m_TargetID;
afx_msg void OnBnClickedDbLoad();
afx_msg void OnBnClickedCopyTo();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
};

View File

@@ -0,0 +1,257 @@
// CharItem.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "GameDBTool.h"
#include "CharItem.h"
#include "GameDBTool.h"
#include "GameDBToolDlg.h"
#include ".\charitem.h"
// CCharItem <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
IMPLEMENT_DYNAMIC(CCharItem, CDialog)
CCharItem::CCharItem(CWnd* pParent /*=NULL*/)
: CDialog(CCharItem::IDD, pParent)
, m_Equip(_T(""))
, m_EquipSize(_T(""))
, m_InvenSize(_T(""))
, m_Inven(_T(""))
{
memset(&m_QuickData, 0, sizeof(QUICK));
memset(&m_InvenData, 0, sizeof(INVEN));
memset(&m_EquipData, 0, sizeof(EQUIP));
}
CCharItem::~CCharItem()
{
}
void CCharItem::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EQUIP, m_Equip);
DDX_Text(pDX, IDC_EQUIP_SIZE, m_EquipSize);
DDX_Text(pDX, IDC_INVEN_SIZE, m_InvenSize);
DDX_Text(pDX, IDC_INVEN, m_Inven);
}
BOOL CCharItem::OnInitDialog()
{
CDialog::OnInitDialog();
CCharItem::OnBnClickedDbLoad();
return TRUE;
}
BEGIN_MESSAGE_MAP(CCharItem, CDialog)
ON_BN_CLICKED(IDC_DB_LOAD, OnBnClickedDbLoad)
ON_BN_CLICKED(IDC_FILE_SAVE, OnBnClickedFileSave)
ON_BN_CLICKED(IDC_FILE_LOAD, OnBnClickedFileLoad)
ON_BN_CLICKED(IDC_DB_SAVE, OnBnClickedDbSave)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CCharItem <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
void CCharItem::PrintData(void)
{
int Counter = 0;
char Dest[3];
BYTE *lpPos = NULL;
// <20><> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m_Equip = "0x";
lpPos = (BYTE*)&m_EquipData;
for(Counter = 0; Counter < sizeof(EQUIP); ++Counter, ++lpPos)
{
Math::Convert::Hex08ToStr((char *)&Dest, *lpPos);
m_Equip.Insert((Counter * 2) + 2, Dest);
}
m_EquipSize.Format("%d", m_EquipData.dwSize);
// <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD>
m_Inven = "0x";
lpPos = (BYTE*)&m_InvenData;
for(Counter = 0; Counter < sizeof(INVEN); ++Counter, ++lpPos)
{
Math::Convert::Hex08ToStr((char *)&Dest, *lpPos);
m_Inven.Insert((Counter * 2) + 2, Dest);
}
m_InvenSize.Format("%d", m_InvenData.dwSize);
UpdateData(FALSE);
}
void CCharItem::OnBnClickedDbLoad()
{
memset(&m_QuickData, 0, sizeof(QUICK));
memset(&m_InvenData, 0, sizeof(INVEN));
memset(&m_EquipData, 0, sizeof(EQUIP));
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
/* if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &m_QuickData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
*/
if(!DBComponent::GameDB::GetEquip(CDBSingleObject::GetInstance(), m_CID, &m_EquipData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::GetInven(CDBSingleObject::GetInstance(), m_CID, &m_InvenData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20>κ<EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
PrintData();
}
void CCharItem::OnBnClickedFileSave()
{
UpdateData();
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen;
if(lpFileOpen->SaveDlg("idump"))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
DWORD dwWritten = 0;
char DumpText[256] = "";
HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hLogFile == NULL)
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if(!WriteFile(hLogFile, &m_EquipData, sizeof(EQUIP), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if(!WriteFile(hLogFile, &m_InvenData, sizeof(INVEN), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
}
}
void CCharItem::OnBnClickedFileLoad()
{
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen;
if(lpFileOpen->OpenDlg())
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
DWORD dwWritten = 0;
char DumpText[256] = "";
HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hLogFile == NULL)
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if(!ReadFile(hLogFile, &m_EquipData, sizeof(EQUIP), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
// <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if(!ReadFile(hLogFile, &m_InvenData, sizeof(INVEN), &dwWritten, NULL))
{
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %d", GetLastError());
return;
}
CloseHandle(hLogFile);
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
}
CCharItem::PrintData();
}
void CCharItem::OnBnClickedDbSave()
{
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
/* if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &m_QuickData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD><D0B1>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
*/
if(!DBComponent::GameDB::UpdateEquip(CDBSingleObject::GetInstance(), m_CID, &m_EquipData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(!DBComponent::GameDB::UpdateInven(CDBSingleObject::GetInstance(), m_CID, &m_InvenData))
{
pDlgWnd->m_Log.LogPrint("[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD>. %s", CDBSingleObject::GetInstance().GetErrorString());
}
}
HBRUSH CCharItem::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: <20><><EFBFBD>⼭ DC<44><43> Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
HBRUSH m_hBrush;
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
switch( nCtlColor ){
case CTLCOLOR_DLG:
pDC->SetBkColor(RGB( 255, 255, 255));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB( 255, 169, 128));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
default:
return hbr;
break;
}
}

View File

@@ -0,0 +1,42 @@
#pragma once
// CCharItem <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
class CCharItem : public CDialog
{
DECLARE_DYNAMIC(CCharItem)
DWORD m_CID;
QUICK m_QuickData;
INVEN m_InvenData;
EQUIP m_EquipData;
public:
CCharItem(CWnd* pParent = NULL); // ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
virtual ~CCharItem();
void SetCID(DWORD CID_In) { m_CID = CID_In; }
void PrintData(void);
// <20><>ȭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
enum { IDD = IDD_CHARITEM };
protected:
virtual BOOL OnInitDialog();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
DECLARE_MESSAGE_MAP()
public:
CString m_Equip;
CString m_EquipSize;
CString m_InvenSize;
CString m_Inven;
afx_msg void OnBnClickedDbLoad();
afx_msg void OnBnClickedFileSave();
afx_msg void OnBnClickedFileLoad();
afx_msg void OnBnClickedDbSave();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
};

View File

@@ -0,0 +1,394 @@
#include "charlist.h"
char g_CharInfoField[25][20] =
{
"CID", "Name", "Sex", "Hair", "Face",
"Nationality", "Class", "Fame", "Mileage", "Guild",
"Party", "Level", "Gold", "IP", "STR",
"DEX", "CON", "INT", "WIS", "HP",
"MP", "EXP"
};
char g_Sex[2][7] = { "Male", "Female" };
CCharList::CCharList()
{
}
CCharList::~CCharList()
{
}
BEGIN_MESSAGE_MAP(CCharList, CListCtrl)
//{{AFX_MSG_MAP(CUserList)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEndLableEdit)
ON_WM_LBUTTONDBLCLK()
ON_WM_HSCROLL()
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CCharList::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnCustomDraw(pNMHDR, pResult);
}
void CCharList::OnEndLableEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
CListViewControl::OnEndLableEdit(pNMHDR, pResult);
}
void CCharList::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CListViewControl::OnLButtonDblClk(nFlags, point);
}
void CCharList::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CCharList::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListViewControl::OnVScroll(nSBCode, nPos, pScrollBar);
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// SetColumn [ public ]
// - <20><><EFBFBD>̺<EFBFBD> <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Parameter :
// 1st : <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Return:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CCharList::SetColumn(void)
{
DWORD ExStyle = LVS_EX_FLATSB | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
DWORD Style = GetWindowLong(m_hWnd, GWL_STYLE);
Style |= LVS_EDITLABELS;
if (!SetWindowLong(m_hWnd, GWL_STYLE, Style))
return false;
CStringList StringList;
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
SetColumnType(0, CT_NORMAL);
InsertColumn(0, g_CharInfoField[0], LVCFMT_CENTER, 4 * 20 + 5);
// <20≯<EFBFBD>
SetColumnType(1, CT_NORMAL);
InsertColumn(1, g_CharInfoField[1], LVCFMT_CENTER, 130 );
// <20><><EFBFBD><EFBFBD>
SetColumnType(2, CT_COMBO);
StringList.AddTail(g_Sex[0]);
StringList.AddTail(g_Sex[1]);
SetColumnStringList(2, StringList);
InsertColumn(2, g_CharInfoField[2], LVCFMT_CENTER, 5 * 10);
// <20>Ӹ<EFBFBD>
SetColumnType(3, CT_EDIT);
InsertColumn(3, g_CharInfoField[3], LVCFMT_CENTER, 4 * 10);
// <20><><EFBFBD><EFBFBD>
SetColumnType(4, CT_EDIT);
InsertColumn(4, g_CharInfoField[4], LVCFMT_CENTER, 4 * 10);
// <20><><EFBFBD><EFBFBD>
SetColumnType(5, CT_EDIT);
InsertColumn(5, g_CharInfoField[5], LVCFMT_CENTER, 4 * 10);
// Ŭ<><C5AC><EFBFBD><EFBFBD>
SetColumnType(6, CT_EDIT);
InsertColumn(6, g_CharInfoField[6], LVCFMT_CENTER, 6 * 10);
// <20><><EFBFBD>
SetColumnType(7, CT_EDIT);
InsertColumn(7, g_CharInfoField[7], LVCFMT_CENTER, 6 * 10);
// <20><><EFBFBD><EFBFBD>
SetColumnType(8, CT_EDIT);
InsertColumn(8, g_CharInfoField[8], LVCFMT_CENTER, 4 * 10);
// <20><><EFBFBD><EFBFBD>
SetColumnType(9, CT_EDIT);
InsertColumn(9, g_CharInfoField[9], LVCFMT_CENTER, 4 * 10);
// <20><>Ƽ
SetColumnType(10, CT_EDIT);
InsertColumn(10, g_CharInfoField[10], LVCFMT_CENTER, 4 * 10);
// <20><><EFBFBD><EFBFBD>
SetColumnType(11, CT_EDIT);
InsertColumn(11, g_CharInfoField[11], LVCFMT_CENTER, 4 * 10);
// <20><>
SetColumnType(12, CT_EDIT);
InsertColumn(12, g_CharInfoField[12], LVCFMT_CENTER, 8 * 10);
// IP
SetColumnType(13, CT_EDIT);
InsertColumn(13, g_CharInfoField[13], LVCFMT_CENTER, 4 * 10);
// STR
SetColumnType(14, CT_EDIT);
InsertColumn(14, g_CharInfoField[14], LVCFMT_CENTER, 4 * 10);
// DEX
SetColumnType(15, CT_EDIT);
InsertColumn(15, g_CharInfoField[15], LVCFMT_CENTER, 4 * 10);
// CON
SetColumnType(16, CT_EDIT);
InsertColumn(16, g_CharInfoField[16], LVCFMT_CENTER, 4 * 10);
// INT
SetColumnType(17, CT_EDIT);
InsertColumn(17, g_CharInfoField[17], LVCFMT_CENTER, 4 * 10);
// WIS
SetColumnType(18, CT_EDIT);
InsertColumn(18, g_CharInfoField[18], LVCFMT_CENTER, 4 * 10);
// HP
SetColumnType(19, CT_EDIT);
InsertColumn(19, g_CharInfoField[19], LVCFMT_CENTER, 4 * 10);
// MP
SetColumnType(20, CT_EDIT);
InsertColumn(20, g_CharInfoField[20], LVCFMT_CENTER, 4 * 10);
// EXP
SetColumnType(21, CT_EDIT);
InsertColumn(21, g_CharInfoField[21], LVCFMT_CENTER, 6 * 10);
return true;
}
//Interface////////////////////////////////////////////////////////////////////////////////////
//
// AddUserRow [ public ]
// - <20><> <20>߰<EFBFBD>
//
// Parameter :
// 1st : <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Return:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
//
///////////////////////////////////////////////////////////////////////////////////////////////
bool CCharList::AddCharRow(LPCHAR_INFOST CharInfo_In)
{
// TODO : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> ó<><C3B3><EFBFBD>صӴϴ<D3B4>. <20>ʿ<EFBFBD><CABF>Ͻ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>. (2005-01-26 by <20>ε<EFBFBD>)
/*
CString strItem;
int Index;
Index = GetItemCount();
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
strItem.Format("%d", CharInfo_In->UID);
InsertItem(Index, strItem);
// <20≯<EFBFBD>
strItem.Format("%s", CharInfo_In->Name);
SetItemText(Index, 1, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%s", g_Sex[CharInfo_In->Sex - 1]);
SetItemText(Index, 2, strItem);
// <20>Ӹ<EFBFBD>
strItem.Format("%d", CharInfo_In->Hair);
SetItemText(Index, 3, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Face);
SetItemText(Index, 4, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Race);
SetItemText(Index, 5, strItem);
// Ŭ<><C5AC><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Class);
SetItemText(Index, 6, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Fame);
SetItemText(Index, 7, strItem);
// <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
strItem.Format("%d", CharInfo_In->Mileage);
SetItemText(Index, 8, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Guild);
SetItemText(Index, 9, strItem);
// <20><>Ƽ
strItem.Format("%d", CharInfo_In->Party);
SetItemText(Index, 10, strItem);
// <20><><EFBFBD><EFBFBD>
strItem.Format("%d", CharInfo_In->Level);
SetItemText(Index, 11, strItem);
// <20><>
strItem.Format("%d", CharInfo_In->Gold);
SetItemText(Index, 12, strItem);
// IP
strItem.Format("%d", CharInfo_In->IP);
SetItemText(Index, 13, strItem);
// STR
strItem.Format("%d", CharInfo_In->STR);
SetItemText(Index, 14, strItem);
// DEX
strItem.Format("%d", CharInfo_In->DEX);
SetItemText(Index, 15, strItem);
// CON
strItem.Format("%d", CharInfo_In->CON);
SetItemText(Index, 16, strItem);
// INT
strItem.Format("%d", CharInfo_In->INT);
SetItemText(Index, 17, strItem);
// WIS
strItem.Format("%d", CharInfo_In->WIS);
SetItemText(Index, 18, strItem);
// HP
strItem.Format("%d", CharInfo_In->HP);
SetItemText(Index, 19, strItem);
// MP
strItem.Format("%d", CharInfo_In->MP);
SetItemText(Index, 20, strItem);
// EXP
strItem.Format("%d", CharInfo_In->Exp);
SetItemText(Index, 21, strItem);
*/
return true;
}
bool CCharList::GetCharRow(unsigned long Item_In, LPCHAR_INFOST CharInfo_Out)
{
// TODO : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> ó<><C3B3><EFBFBD>صӴϴ<D3B4>. <20>ʿ<EFBFBD><CABF>Ͻ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>. (2005-01-26 by <20>ε<EFBFBD>)
/*
int Counter = 0;
char strItemText[256];
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
GetItemText(Item_In, 0, strItemText, 256);
CharInfo_Out->UID = atoi(strItemText);
// <20≯<EFBFBD>
GetItemText(Item_In, 1, strItemText, 256);
strncpy(CharInfo_Out->Name, strItemText, 16);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 2, strItemText, 256);
if(!strcmp(strItemText, g_Sex[0]))
CharInfo_Out->Sex = 1;
else
CharInfo_Out->Sex = 2;
// <20>Ӹ<EFBFBD>
GetItemText(Item_In, 3, strItemText, 256);
CharInfo_Out->Hair = atoi(strItemText);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 4, strItemText, 256);
CharInfo_Out->Face = atoi(strItemText);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 5, strItemText, 256);
CharInfo_Out->Race = atoi(strItemText);
// Ŭ<><C5AC><EFBFBD><EFBFBD>
GetItemText(Item_In, 6, strItemText, 256);
CharInfo_Out->Class = atoi(strItemText);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 7, strItemText, 256);
CharInfo_Out->Fame = atoi(strItemText);
// <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
GetItemText(Item_In, 8, strItemText, 256);
CharInfo_Out->Mileage = atoi(strItemText);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 9, strItemText, 256);
CharInfo_Out->Guild = atoi(strItemText);
// <20><>Ƽ
GetItemText(Item_In, 10, strItemText, 256);
CharInfo_Out->Party = atoi(strItemText);
// <20><><EFBFBD><EFBFBD>
GetItemText(Item_In, 11, strItemText, 256);
CharInfo_Out->Level = atoi(strItemText);
// <20><>
GetItemText(Item_In, 12, strItemText, 256);
CharInfo_Out->Gold = atoi(strItemText);
// IP
GetItemText(Item_In, 13, strItemText, 256);
CharInfo_Out->IP = atoi(strItemText);
// STR
GetItemText(Item_In, 14, strItemText, 256);
CharInfo_Out->STR = atoi(strItemText);
// DEX
GetItemText(Item_In, 15, strItemText, 256);
CharInfo_Out->DEX = atoi(strItemText);
// CON
GetItemText(Item_In, 16, strItemText, 256);
CharInfo_Out->CON = atoi(strItemText);
// INT
GetItemText(Item_In, 17, strItemText, 256);
CharInfo_Out->INT = atoi(strItemText);
// WIS
GetItemText(Item_In, 18, strItemText, 256);
CharInfo_Out->WIS = atoi(strItemText);
// HP
GetItemText(Item_In, 19, strItemText, 256);
CharInfo_Out->HP = atoi(strItemText);
// MP
GetItemText(Item_In, 20, strItemText, 256);
CharInfo_Out->MP = atoi(strItemText);
// EXP
GetItemText(Item_In, 21, strItemText, 256);
CharInfo_Out->Exp = atoi(strItemText);
*/
return true;
}

View File

@@ -0,0 +1,42 @@
#pragma once
#include "./controlex/listviewcontrol.h"
#include "GameDBTool.h"
class CCharList :
public CListViewControl
{
// Construction
public:
CCharList();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CUserList)
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnEndLableEdit(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CCharList();
bool SetColumn(void);
bool AddCharRow(LPCHAR_INFOST CharInfo_In);
bool GetCharRow(unsigned long Item_In, LPCHAR_INFOST CharInfo_Out);
// Generated message map functions
protected:
//{{AFX_MSG(CUserList)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

Some files were not shown because too many files have changed in this diff Show More