⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsodbc.cpp

📁 Soul的源代码,类似于劲舞团之类的游戏
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// 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 + -