📄 rmtool.cpp
字号:
//Character Template Load
POSITION pos = GetFirstDocTemplatePosition();
pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
pDocTemplate->OpenDocumentFile(NULL);
pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
pDocTemplate->OpenDocumentFile(NULL);
}
break;
default: break;
}
// DBSCHEMA catalog[20];
// g_pDb->QueryDBCatalog(catalog, 20, DRAGON_DB);
// DBSCHEMA table[150];
// g_pDb->QueryDBTable(table, 150, DRAGON_DB);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// 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)
// No message handlers
//}}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()
// App command to run the dialog
void CRMToolApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CRMToolApp message handlers
BOOL CRMToolApp::InitDatabase()
{
CoInitialize(NULL); //COM 扼捞宏矾府甫 檬扁拳
HRESULT hr = ::CoCreateInstance(
CLSID_OLEDBTHREAD,
NULL,
CLSCTX_INPROC_SERVER,
IID_OLEDBTHREAD,
(void**)&g_pDb);
if (FAILED(hr))
{
MessageBox(NULL,"Cannot create IID_OLEDBTHREAD","Error",NULL);
return 0;
}
return TRUE;
}
int CRMToolApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
if(g_pNet)
{
g_pNet->CloseConnection(0);
g_pNet->ReleaseNetwork();
g_pNet->Release();
}
if(g_pFt)
g_pFt->Release(); //Release甫 救窍聪 皋葛府啊 货绰焙..ぱ_-;;
if(g_pDb)
{
//Error this~!!!!
g_pDb->ReleaseDBConnection(0); //牢磊啊 0捞搁 葛电 Connection Release...
g_pDb->Release();
}
// ::CoFreeUnusedLibraries();
::CoUninitialize();
return CWinApp::ExitInstance();
}
BOOL CRMToolApp::InitFTModule()
{
CoInitialize(NULL); //COM 扼捞宏矾府甫 檬扁拳
HRESULT hr = ::CoCreateInstance(
CLSID_FILETRANSFER,
NULL,
CLSCTX_INPROC_SERVER,
IID_FILETRANSFER,
(void**)&g_pFt);
if (FAILED(hr))
{
MessageBox(NULL,"Cannot create IID_FILETRANSFER","Error",NULL);
return FALSE;
}
/*
g_pFt->Connect("203.248.248.229",25378);
for(int i=0; i<20 ; i++)
{
PACKET_FILE_COPY packet(3, 5000, 1, "MapserverDummy2.chm");
g_pFt->Send((char*)&packet, packet.GetPacketSize());
}
g_pFt->CloseClientSocket();
*/
return TRUE;
}
BOOL CRMToolApp::InitClientNet()
{
HRESULT hr = ::CoCreateInstance(
CLSID_CLIENTNET,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICLIENTNET,
(void**)&g_pNet);
if (FAILED(hr))
{
MessageBox(NULL,"Cannot create IID_ICLIENTNET","Error",NULL);
return FALSE;
}
g_pNet->CreateNetwork(m_pMainWnd->GetSafeHwnd());
// int ret = g_pNet->ConnectToServer("211.174.52.133",25378);
return TRUE;//020303 lsw
}
BOOL CRMToolApp::GetServerInfo()
{
char path[ MAX_PATH ];
__PATH
char keyname[ 0xff ];
// sprintf(path,"%s\\Setup.ini",GetInstalledPath());
#ifndef __COMPACT__
WCHAR sql[ 0xff ];
QueryServerInfo rcvData[ MAX_SERVERNUM_PER_SERVERSET ];
memset(rcvData, 0, sizeof(rcvData));
#endif
int ServerSetIndex, ret; ServerSetIndex = 0, ret = 0;
for(int i=1 ; i<= CURRENT_SERVERSET_NUM ; i++)
{
sprintf(keyname,"ServersetIndex%d",i);
m_ServerSetInfo[ i-1 ].nServerSetIndex = ::GetPrivateProfileInt("ServerTool",keyname,0,path); //ServerSetNum 罐酒柯促.
sprintf(keyname,"ServersetName%d",i);
::GetPrivateProfileString("ServerTool",keyname,"",m_ServerSetInfo[ i-1 ].szSetName ,
sizeof(m_ServerSetInfo[ i-1 ].szSetName), path); //ServerSetName 罐酒柯促.
#ifndef __COMPACT__
swprintf(sql,L"EXEC UP_RM_SERVER_INFO %d", m_ServerSetInfo[ i-1 ].nServerSetIndex);
//ret = g_pDb->OpenRecord(sql, rcvData, 100, (BYTE)TOTAL_DB);//kyo
ret = g_pDb->OpenRecord(sql, rcvData, 1024, (BYTE)TOTAL_DB);
for(int k=0 ; k<ret ; k++)
{
memcpy(&m_ServerInfo[ i-1 ][ k ], &rcvData[ k ], sizeof(rcvData[0]));
}
if( 20 == ::GetPrivateProfileInt("Admin","idCheck",-10,g_szSetupPath) ) //kyo
{
LeaveLogInFile( "ret= %d ", ret);
for(int k=0 ; k<ret ; k++)
{
LeaveLogInFile( "Get Type = %d, index = %d ", m_ServerInfo[ i-1 ][ k ].ServerType, k);
}
}
if(ret < 0)
{
MessageBox(NULL,"Failed query ServerInfo","Error",MB_OK);
return FALSE;
}
else
m_ServerSetInfo[ i-1 ].nServerNum = ret;
#endif
}
return TRUE;
}
BOOL CRMToolApp::LoadDefaultSetting()
{
char path[ MAX_PATH ];
__PATH
// strcat(path,".\\Setup.ini");
// sprintf(path,"%s\\Setup.ini",GetInstalledPath());
char buffer[256];
::GetCurrentDirectory(256, buffer);
// MessageBox(NULL,buffer,NULL,NULL);
CURRENT_SERVERSET_NUM = ::GetPrivateProfileInt("ServerTool","TotalServersetNum",0,path);
m_DefaultView = ::GetPrivateProfileInt("Default","DefaultView",0,path);
//捞芭绰 0捞 霓焊冠胶狼 "Select ServerSet" 1捞 惑侩 .. 2啊 2焙.. 捞犯霸 唱啊磊..
m_DefaultServerSetIndex = ::GetPrivateProfileInt("Default","DefaultServersetIndex",0,path);
//GameServerData 版肺 包访 悸泼 阂矾坷扁
char Key[ 128 ]; char temp[ MAX_PATH ];
::GetPrivateProfileString("PathInfo","GameServerDataServerIP","",m_szGameServerDataIp,16,path);
::GetPrivateProfileString("PathInfo","ServerExecAddress","",m_szServerExecAddress,MAX_PATH,path);
::GetPrivateProfileString("PathInfo","IniMakePath","",temp,MAX_PATH,path);
m_szIniMakePath = temp;
for(int i=1; i<=CURRENT_SERVERSET_NUM ; i++)
{
sprintf(Key,"GameServerDataPath%d",i);
::GetPrivateProfileString("PathInfo",Key,"",m_szGameServerDataPath[ i-1 ], MAX_PATH, path);
sprintf(Key,"RemoteGameServerDataPath%d",i);
::GetPrivateProfileString("PathInfo",Key,"",m_szRemoteGameServerDataPath[ i-1 ], MAX_PATH, path);
sprintf(Key,"DownloadPath%d",i);
::GetPrivateProfileString("PathInfo",Key,"",m_szDownloadPath[ i-1 ],MAX_PATH,path);
}
::GetPrivateProfileString("PathInfo","GameServerUploadPath","",m_szUploadPath, sizeof(m_szUploadPath), path);
return TRUE;
}
BOOL CRMToolApp::LogInProxy()
{
char path[ MAX_PATH ];
__PATH
// sprintf(path,"%s\\Setup.ini",GetInstalledPath());
// char ip[ MAX_SERVERSET_NUM ][ 16 ]; memset(ip,0,sizeof(ip));
// WORD port[ MAX_SERVERSET_NUM ];
char key[ 0xff ];
for(int i=1; i<=CURRENT_SERVERSET_NUM ; i++)
{
sprintf(key,"proxy%d",i);
::GetPrivateProfileString("ProxyServerInfo",key,"",m_ProxyIp[ i-1 ],16, path);
sprintf(key,"port%d",i);
m_ProxyPort[ i-1 ] = (WORD)::GetPrivateProfileInt("ProxyServerInfo",key,0,path);
//Proxy Server俊 肺弊牢 窍绊 牧池记 牢郸胶 历厘
m_nCI[ i-1 ] = (unsigned short)g_pNet->ConnectToServer(m_ProxyIp[ i-1 ], m_ProxyPort[ i-1 ]);//020303 lsw
if(!m_nCI[ i-1 ])
{
char str[0xff];
sprintf(str,"Fail to connect proxyserver, ConnectionIndex = %d",i-1);
MessageBox(NULL,str,"Error",MB_OK);
continue;
//return FALSE;
}
//舅荐 绝绰 菩哦. 捞吧 焊具郴瘤. 促框巴捞 楷搬捞 等促. why???
MANAGER_PACKET_HEADER packet;
packet.wCMD = MANAGER_CLIENT_FIRST_PACKET_TYPE;
packet.dwCRC = MANAGER_CLIENT_FIRST_PACKET_CRC;
g_pNet->Send(m_nCI[ i-1 ], (char*)&packet, sizeof(packet));
PACKET_RM_LOGIN LoginPacket(m_LogInfo.ID, m_LogInfo.Name);
g_pNet->Send(m_nCI[ i-1 ], (char*)&LoginPacket, LoginPacket.GetPacketSize());
}
return TRUE;
}
void CRMToolApp::OpenServerTemplate()
{
CMultiDocTemplate* pDocTemplate;
//Server Template Load
POSITION pos = GetFirstDocTemplatePosition();
pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
pDocTemplate->OpenDocumentFile(NULL);
}
int CRMToolApp::FindIndexByPort(int nServerSetIndex, WORD wPort)
{
//努扼捞攫飘聪瘪.. 弊成 公侥窍霸 八祸窍磊.. ぱ_-;; 秦浆静扁 蓖满寸..ぱ.-
for(int i=0; i<MAX_SERVERNUM_PER_SERVERSET ; i++)
{
if(m_ServerInfo[ nServerSetIndex ][i].Port == wPort)
return i;
}
return 0;//020303 lsw
}
void CRMToolApp::DelTree(char *szFolderPath)
{
//颇老疙 盖 场俊 \啊 嘿栏搁 救等寸..ぱ_-;;
SHFILEOPSTRUCT FileOp = {0};
char szTemp[MAX_PATH];
strcpy(szTemp, szFolderPath);
szTemp[strlen(szFolderPath) + 1] = NULL;
FileOp.hwnd = NULL;
FileOp.wFunc = FO_DELETE;
FileOp.pFrom = szTemp;
FileOp.pTo = NULL;
FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI;
FileOp.fAnyOperationsAborted = FALSE;
FileOp.hNameMappings = NULL;
FileOp.lpszProgressTitle = NULL;
SHFileOperation(&FileOp);
}
BOOL CRMToolApp::InitDragonDB()
{
int result = 0;
//char szDb[ 0xff ];
WCHAR wszDb[ 0xff ];
//惑侩 DragonDB 立加
WCHAR wszAddress[ 128 ];
for( int i = 0 ; i < CURRENT_SERVERSET_NUM ; i++ )
{
DRAGON_DB[i] = g_pDb->CreateDBConnection();
//sprintf(szDb,"%s",g_NationAccount.szDragon_DB_DefaultName[ i ] );
//g_pDb->KSCToUnicode(szDb, wszDb);
g_pDb->KSCToUnicode( g_NationAccount.szDragon_DB_DefaultName[ i ], wszDb);
g_pDb->KSCToUnicode( g_NationAccount.szDragon_DB_Address[ i ], wszAddress );
result = g_pDb->Initialize(wszAddress, wszDb ,g_NationAccount.szDragon_Account,
g_NationAccount.szDragon_Password, (BYTE)DRAGON_DB[i] );
if(result < 0)
{
char szBuffer1[ 0xff ];
::WideCharToMultiByte(CP_ACP, 0, wszAddress,-1, szBuffer1, 100, NULL, NULL);
CString szSendMsg;
szSendMsg.Format( "Failed Connection to GameDatabase In %s", szBuffer1 );
AfxMessageBox( szSendMsg );
g_pDb->ReleaseDBConnection( (BYTE)DRAGON_DB[i] );
//kyo
DRAGON_DB[i] = -1;
//return FALSE;
}
}
//Ability 茄拌摹 Query
m_nAbilityLimitCount = g_pDb->OpenRecord(L"select * from ability_limit order by step , pre_Class asc", m_AbilityLimit, MAX_ABILITY_DATA,
(BYTE)DRAGON_DB[ GET_GAMEDATABASE_INIT ] ); // 盖付瘤阜铂肺 秦蝶.
if(m_nAbilityLimitCount < 0)
AfxMessageBox("Fail to load RM_ABILITY_LIMIT");
//Level, Levelstep 弥措蔼 Query
NPC_LV2EXP_MAX_VALUE value;
int ret = g_pDb->OpenRecord(L"select MAX(lv) as [level] , MAX(step) as step from npc_lv2exp", &value, 1,
(BYTE)(DRAGON_DB[ GET_GAMEDATABASE_INIT ]) );
if(ret < 0)
AfxMessageBox("Fail to load RM_GET_MAX_VALUE");
//m_nMaxLevel = value.dwMaxLevel;
m_nMaxLevel = MAX_CHARACTER_LEVEL;// 303007
m_nMaxLevelStep = value.dwMaxStep;
//阿阿狼 辑滚悸狼 MapInfo Loading
for(i=0; i< CURRENT_SERVERSET_NUM; i++)
{
if( g_iNation == NATION_JAPAN )
{
ret = g_pDb->OpenRecord(L"select RTRIM(mapfile), RTRIM(LTRIM(mapname)), nation from map_info", m_MapInfoUNI[ i ], 100, (BYTE)DRAGON_DB[ i ]);
SetMapInfo( m_MapInfo[i], m_MapInfoUNI[i] );
}
else
{
ret = g_pDb->OpenRecord(L"select RTRIM(mapfile), RTRIM(LTRIM(mapname)), nation from map_info", m_MapInfo[ i ], 100, (BYTE)DRAGON_DB[ i ]);
}
if(ret < 0)
AfxMessageBox("Fail to load RM_GET_MAP_NAME");
else if(ret > 0)
m_nMapCount[ i ] = ret;
}
//阿阿狼 辑滚悸狼 DBSchema 肺爹
for(i=0; i< CURRENT_SERVERSET_NUM; i++)
{
ret = g_pDb->QueryDBCatalog(m_DbSchema[i], 50, (BYTE)DRAGON_DB[ i ]);
if(ret < 0)
AfxMessageBox("Fail to load DBSCHEMA");
else if(ret > 0)
m_nDbCount[ i ] = ret;
}
// 021115 怕惫巩力
///
return TRUE;
}
BOOL CRMToolApp::LogServer( int nServerSet, CString szInfo)
{
// if(m_LogInfo.LoginType == 10000)
// return TRUE;
#ifdef RM_LOG_MODE
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
//kyo now
sprintf(szQuery,"EXEC UP_RM_LOG '%s',%d,'%s','%s'",m_LogInfo.ID, nServerSet + 100, m_szLocalAddress, szInfo);
//sprintf(szQuery,"EXEC UP_RM_LOG '%s',%d,'%s','%s'",m_LogInfo.ID, m_LogInfo.LoginType, m_szLocalAddress, szInfo);
g_pDb->KSCToUnicode(szQuery,wszQuery);
//int reval = (BYTE)g_pDb->ExecuteSQL(wszQuery,TOTAL_DB);
return g_pDb->ExecuteSQL(wszQuery,(BYTE)TOTAL_DB);
#endif
return true;
}
bool DecoadFile( char *filename, void *pData, int size )
{
CHSEL_STREAM m_hsel;
FILE *fp = fopen( filename, "rb" );
if( !fp ) return false;
int nVersion = 0;
fread( (void*)(&nVersion), sizeof(int), 1, fp );
if (m_hsel.GetVersion() != nVersion) return false;
HselInit deinit;
fread( (void*)(&deinit), sizeof(HselInit), 1, fp );
if (!m_hsel.Initial(deinit)) return false;
fread( pData, 1, size, fp );
m_hsel.Decrypt((char *)pData, size);
fclose( fp );
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -