📄 tsodbc.cpp
字号:
// TsODBC.cpp
#include "TsODBC.h"
#include "../CLock.h"
#include <iostream>
using namespace std;
//-------------------------------------------------------------------------------------------------------
TsODBC::TsODBC()
{
m_hEnv = m_hDBC = NULL; // 疙飞 勤甸
m_hStmtCharInfoUp = m_hStmtDetailInfoUp = m_hStmtEquipUp = m_hStmtInvenUp
= m_hStmtStoreUp = m_hStmtStore2Up = m_hStmtDelChar = m_hStmtInsert = NULL;
m_hStmtCharInfoSt = m_hStmtDetailInfoSt = m_hStmtEquipSt = m_hStmtInvenSt = m_hStmtStoreSt
= m_hStmtStore2St = NULL;
m_hStmtAccountSt = m_hStmtLogInUp = m_hStmtLogOutUp = NULL;
m_dwLastTick = GetTickCount();
InitializeCriticalSection(&m_cs);
}
//-------------------------------------------------------------------------------------------------------
TsODBC::~TsODBC()
{
CleanupConn();
DeleteCriticalSection(&m_cs);
}
//-------------------------------------------------------------------------------------------------------
// Name :: int DummyQuery(DWORD dwTick)
// Create Date :: 2004/12/27
// Description :: Dummy Query 贸府 (connection 楷搬 蜡瘤甫 困秦 积己等 勤甸俊 林扁利牢 Query甫 朝赴促)
// param ::
// Return Value :: 0: 角菩 1:己傍 2:犁孽府饶 酒流 1盒捞 檬苞啊 救登菌促.
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
int TsODBC::DummyQuery(DWORD dwTick)
{
CLock lock( &m_cs );
if( m_dwLastTick + DUMMYQUERY_TICK_TERM > dwTick ) return 2;
m_dwLastTick = dwTick;
int ret = SQLExecute( m_hStmtcnntpl );
if( ret == SQL_SUCCESS )
{
SQLFetch(m_hStmtcnntpl);
SQLCloseCursor( m_hStmtcnntpl );
}
else
{
PrintError( m_hStmtcnntpl, NULL );
SQLCloseCursor( m_hStmtcnntpl );
if( !ReconnectODBC() )
{// 汲沥 角菩
}
return 0;
}
return 1;
}
//-------------------------------------------------------------------------------------------------------
// Name :: int OpenAccountData(char *cID, ACCOUNT_INFO *pData)
// Create Date :: 2004/10/29
// Description :: Account 沥焊 select
// param ::
// Return Value :: 0: 己傍 1: 角菩 2: 角菩饶 檬扁拳 角菩
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
int TsODBC::OpenAccountData(char *cID, ACCOUNT_INFO *pData)
{
int ret;
strcpy( m_cID, cID );
CLock lock( &m_cs );
m_dwLastTick = GetTickCount();
ret = SQLExecute( m_hStmtAccountSt );
if( ret == SQL_SUCCESS )
{
if( SQLFetch(m_hStmtAccountSt) != SQL_NO_DATA )
{
memcpy( pData->Password, m_AccInfo.Password, 16 );
for (int i= 0 ; i <= 16; i++)
{
if (pData->Password[i] == 32)
{
pData->Password[i] = 0x00;
break;
}
}
pData->iAccountID = m_AccInfo.iAccountID;
pData->iAdminLevel = m_AccInfo.iAdminLevel;
memcpy( &pData->BlockDate, &m_AccInfo.BlockDate, sizeof(pData->BlockDate) );
}
else
{
PrintError( m_hStmtAccountSt, NULL );
SQLCloseCursor( m_hStmtAccountSt );
return 1;
}
SQLCloseCursor( m_hStmtAccountSt );
}
else
{
PrintError( m_hStmtAccountSt, NULL );
SQLCloseCursor( m_hStmtAccountSt );
if( !ReconnectODBC() )
{// 汲沥 角菩
return 2;
}
return 1;
}
return 0;
}
//-------------------------------------------------------------------------------------------------------
// Name :: int UpdateAccountLogInData(char *cID, char *cIp)
// Create Date :: 2004/10/29
// Description :: Log In 矫埃 Update
// param ::
// Return Value :: 0: 己傍 1: 角菩 2: 角菩饶 檬扁拳 角菩
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
int TsODBC::UpdateAccountLogInData(char *cID, char *cIp)
{
int ret;
strcpy( m_cID, cID );
strcpy( m_cIP, cIp );
CLock lock( &m_cs );
m_dwLastTick = GetTickCount();
ret = SQLExecute( m_hStmtLogInUp );
if( ret != SQL_SUCCESS )
{
PrintError( m_hStmtLogInUp, NULL );
if( !ReconnectODBC() )
{// 汲沥 角菩
return 2;
}
return 1;
}
return 0;
}
//-------------------------------------------------------------------------------------------------------
// Name :: int UpdateAccountLogoutData( char *cID )
// Create Date :: 2004/10/29
// Description :: Log Out 矫埃 Update
// param ::
// Return Value :: 0: 己傍 1: 角菩 2: 角菩饶 檬扁拳 角菩
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
int TsODBC::UpdateAccountLogoutData( char *cID )
{
int ret;
strcpy( m_cID, cID );
CLock lock( &m_cs );
m_dwLastTick = GetTickCount();
ret = SQLExecute( m_hStmtLogOutUp );
if( ret != SQL_SUCCESS )
{
PrintError( m_hStmtLogOutUp, NULL );
if( !ReconnectODBC() )
{// 汲沥 角菩
return 2;
}
return 1;
}
return 0;
}
//-------------------------------------------------------------------------------------------------------
// Name :: BOOL DeleteCharInfo( char *charName, int iCharIndex, int iAccountID )
// Create Date :: 2004/10/29
// Description :: char Info 甫 昏力
// param ::
// Return Value ::
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
BOOL TsODBC::DeleteCharInfo( char *charName, int iCharIndex, int iAccountID )
{
int ret;
m_iOutPutValue = 0;
m_info.m_CharInfo._iAccountID = iAccountID;
m_info.m_CharInfo._iCharIndex = iCharIndex;
strcpy( m_info.m_CharInfo._charName, charName );
CLock lock( &m_cs );
m_dwLastTick = GetTickCount();
ret = SQLExecute( m_hStmtDelChar );
if( ret == SQL_SUCCESS || ret == SQL_NEED_DATA || ret == SQL_SUCCESS_WITH_INFO || ret == SQL_NO_DATA )
{
SQLMoreResults( m_hStmtDelChar );
// 己傍 角菩 皑荤.
if( m_iOutPutValue == 2 ) return TRUE; // 昏力 己傍
else return FALSE;
}
else
{
PrintError( m_hStmtDelChar, NULL );
if( !ReconnectODBC() )
{// 汲沥 角菩
}
return FALSE;
}
}
//-------------------------------------------------------------------------------------------------------
// Name :: BOOL AddNewCharInfo( CHARINFO *pData )
// Create Date :: 2004/10/29
// Description :: char 眠啊
// param ::
// Return Value ::
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
BOOL TsODBC::AddNewCharInfo( CHARINFO *pData )
{
int ret;
m_iOutPutValue = 0;
memcpy( &m_info.m_CharInfo, pData, sizeof(m_info.m_CharInfo) );
// 流诀, 己喊, 楷钦俊 辆加利牢 积己 Data 甸, 老窜 烙矫肺 技泼
switch( m_info.m_CharInfo._byJob )
{
// 浚府纳
case JOB_SOLID : //1 贾府靛
m_info.byStr = 90;
m_info.byVit = 80;
m_info.byInt = 65;
m_info.byMan = 65;
m_info.byDex = 70;
m_info.stHp = 240;
m_info.stMp = 90;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 0;
break;
case JOB_FORCE : //2 器胶
m_info.byStr = 60;
m_info.byVit = 65;
m_info.byInt = 95;
m_info.byMan = 80;
m_info.byDex = 70;
m_info.stHp = 195;
m_info.stMp = 160;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 0;
break;
case JOB_CARE : //3 纳绢
m_info.byStr = 80;
m_info.byVit = 60;
m_info.byInt = 80;
m_info.byMan = 80;
m_info.byDex = 70;
m_info.stHp = 180;
m_info.stMp = 120;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 0;
break;
case JOB_SWIFT : //4 胶困橇飘
m_info.byStr = 80;
m_info.byVit = 70;
m_info.byInt = 60;
m_info.byMan = 60;
m_info.byDex = 100;
m_info.stHp = 210;
m_info.stMp = 100;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 0;
break;
// 孤农鄂
case JOB_ARMS : //5 鞠令
m_info.byStr = 100;
m_info.byVit = 70;
m_info.byInt = 60;
m_info.byMan = 60;
m_info.byDex = 80;
m_info.stHp = 210;
m_info.stMp = 90;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 1;
break;
case JOB_SPIRITS : //6 胶乔复明
m_info.byStr = 70;
m_info.byVit = 105;
m_info.byInt = 50;
m_info.byMan = 80;
m_info.byDex = 65;
m_info.stHp = 150;
m_info.stMp = 160;
m_info.xpos = 23419.0f;
m_info.ypos = 240.0f;
m_info.zpos = 35617.0f;
m_info.byZoneNumber = 1;
break;
default : // 舅荐绝绰 鸥涝
return FALSE;
}
CLock lock( &m_cs );
m_dwLastTick = GetTickCount();
ret = SQLExecute( m_hStmtInsert );
if( ret == SQL_SUCCESS || ret == SQL_NEED_DATA || ret == SQL_SUCCESS_WITH_INFO || ret == SQL_NO_DATA )
{
SQLMoreResults( m_hStmtInsert );
// 己傍 角菩 皑荤.
if( m_iOutPutValue != 0 )
{
//return TRUE; // 眠啊 己傍
// ? 酒捞袍阑 林绢具 茄促 檬扁 酒捞袍 汲沥窍绊 捞何盒 汲沥窍磊...
//if(UpdateItemInfo(m_hStmtEquipUp) == FALSE)
//{
// // 己傍..
// return TRUE;
//}
//else
//{
// // 角菩..
// return FALSE;
//}
}
else if(m_iOutPutValue == 2147483647)
//捞固 粮犁窍绰 某腐磐 疙捞促.
return m_iOutPutValue;
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -