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

📄 mysql.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	tp->Exp				= ch->Exp;
	tp->viewtype		= ch->viewtype;
	
	tp->nk3				= ch->nk[N_VYSEUS];
	tp->nk4				= ch->nk[N_ZYPERN];
	tp->nk6				= ch->nk[N_YILSE];
	ch->GetStepInfo(tp->aStepInfo, sizeof(tp->aStepInfo));
	p.h.header.size = sizeof( t_update_char_db);
	CheckFightMap(tp->MapName, tp->X, tp->Y, ch );		// 0910 YGI
	tp->check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( connections, DB_DEMON, &p, 1 );
}

void updateBinaryDataToLoaginServer( t_connection c[], int id )
{														
	t_packet p;										
	LPCHARLIST ch = &c[id].chrlst;			
	
	if(!::CanSaveUserData(ch,5)){return;}

	p.h.header.type = CMD_UPDATE_BINARY_DATA0;														
	memcpy(p.u.server_update_binary_data0.name, c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_binary_data0.id, c[id].id,  ID_LENGTH );
	memcpy(p.u.server_update_binary_data0.Ws,				(UCHAR *)ch->Ws,			SIZE_OF_WS );
	memcpy(p.u.server_update_binary_data0.Ps,				(UCHAR *)ch->Ps,			SIZE_OF_PS );
	memcpy(p.u.server_update_binary_data0.Skill,			(UCHAR *)ch->Skill,			SIZE_OF_SKILL );
	memcpy(p.u.server_update_binary_data0.skillexp,		(UCHAR *)ch->skillexp,		SIZE_OF_SKILL_EXP );
	memcpy(p.u.server_update_binary_data0.tac_skillEXP,	(UCHAR *)ch->tac_skillEXP,	SIZE_OF_TAC_SKILL_EXP );
	p.h.header.size = sizeof( t_server_update_binary_data0 );
	p.u.server_update_binary_data0.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
	
	
	p.h.header.type = CMD_UPDATE_SCRIPT_DATA;
	memcpy(p.u.server_update_script_data.name, c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_script_data.id, c[id].id,  ID_LENGTH );
	memcpy(p.u.server_update_script_data.script_var,			(UCHAR *)var[ id],			SIZE_OF_SCRIPT_VAR );
	p.h.header.size = sizeof( t_server_update_script_data );
	p.u.server_update_script_data.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
	
	//////////////////////////// 0218 YGI //////////////////////
	EndsetPartyMenberForUpdate( ch );		
	
	p.h.header.type = CMD_UPDATE_BINARY_DATA1;	
	memcpy(p.u.server_update_binary_data1.name, c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_binary_data1.id, c[id].id,  ID_LENGTH );
	memcpy(p.u.server_update_binary_data1.equip,			(UCHAR *)ch->equip,			SIZE_OF_EQUIP);
	memcpy(p.u.server_update_binary_data1.quick,			(UCHAR *)ch->quick,			SIZE_OF_QUICK);
	memcpy(p.u.server_update_binary_data1.party,			(UCHAR *)ch->party_str,			SIZE_OF_PARTY );
	memcpy(p.u.server_update_binary_data1.relation,			(UCHAR *)ch->relation_str,		SIZE_OF_RELATION);
	memcpy(p.u.server_update_binary_data1.employment,		(UCHAR *)ch->employment_str,	SIZE_OF_EMPLOYMENT);
	p.h.header.size = sizeof( t_server_update_binary_data1 );
	p.u.server_update_binary_data1.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
	
	p.h.header.type = CMD_UPDATE_INV_DATA;		
	memcpy(p.u.server_update_inv_data.name, c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_inv_data.id,   c[id].id,  ID_LENGTH );
	memcpy(p.u.server_update_inv_data.inv,			(UCHAR *)ch->inv,				SIZE_OF_INV );
	p.h.header.size = sizeof( t_server_update_inv_data );	
	p.u.server_update_inv_data.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
	
	p.h.header.type = CMD_UPDATE_ITEM_DATA;		
	memcpy(p.u.server_update_item_data.name, c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_item_data.id,   c[id].id,  ID_LENGTH );
	memcpy(p.u.server_update_item_data.Item,			(UCHAR *)ch->Item,			SIZE_OF_ITEMINDEX );
	p.h.header.size = sizeof( t_server_update_item_data	);		
	p.u.server_update_item_data.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
	
	p.h.header.type = CMD_UPDATE_BANKITEM_DATA;
	memcpy(p.u.server_update_bankitem_data.name,	c[id].name, NM_LENGTH);
	memcpy(p.u.server_update_bankitem_data.id,		c[id].id,  ID_LENGTH );
	strcpy(p.u.server_update_bankitem_data.mapname, MapName );
	
	memcpy(p.u.server_update_bankitem_data.bankitem,		(UCHAR *)ch->bank,		SIZE_OF_BANKITEM );
	p.h.header.size = sizeof( t_server_update_bankitem_data	);		
	p.u.server_update_bankitem_data.check_crc = AddCRC(p.u.data, p.h.header.size-4, 10 ); // acer5
	QueuePacket( c, DB_DEMON, &p, 1 );
}

void displaySQLError(SQLHSTMT hstmt)
{
	SQLCHAR err[80] ;
	SQLINTEGER nep ;
	SQLCHAR msg[255] ;
	SQLSMALLINT num ;
	
	SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, err, &nep, msg, 254, &num) ;
	//YGI acer
	MyLog( 0, "\nSQL Error MSG: %s; %s", err, msg) ;
}


int AddBoxItem_SQL(int id)
{
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	char		szQuerry[255];
	
	sprintf(szQuerry, "insert into box_item(id) values (%d)", id);
	
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		//SQLTransact(SQL_NULL_HENV, hDBC, SQL_COMMIT);
		SQLFreeStmt(hStmt, SQL_DROP);
		return(1); // succeed
	}
	else
	{
		//SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
		SQLFreeStmt(hStmt, SQL_DROP);
		return(-3); // unknown error
	}
};

int DeleteBoxItem_SQL(int id)
{
	HSTMT hStmt = NULL;
	RETCODE retCode;
	char szQuerry[255];
	
    sprintf(szQuerry, "delete from box_item where id=%d", id);
	
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		retCode = SQLFetch(hStmt);
		SQLFreeStmt(hStmt, SQL_DROP);
		return(1);
	}
	SQLFreeStmt(hStmt, SQL_DROP);
	return -1;
};
//-----------------------------------------
int TotalConnections( void )
{
	return 1;
}


//---------------------------------------------


DiseaseTable	disease_tbl[6];
// 龙捍 抛捞喉 ~~~		0104
int GetDisease_SQL( )
{	
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	SDWORD		cbValue;
	char		szQuerry[2047];
	DWORD		t;
	//char		name[31];
	
	for( int a=0; a<6; a++ )
	{
	/*		sprintf(szQuerry, "Select disease_number, han_name, name, lv, nut1_1, nut2_1, nut3_1, probability_1, andor_1, checktime_1, contact_char, talk_char, fuck_char,"
	"contact_obj,eat_obj,nut1_2,nut2_2,nut3_2,probability_2,checktime_2,andor_2,dec_str,dec_dex,dec_con,dec_wis,dec_int,dec_movp,dec_char,"
	"dec_endu,dec_mor,dec_luck,dec_ws,dec_ps,recoverable,life,health,mp,dp,max_,damage,att_rate,depen_rate,ac,mad,poison,stony,sluggish,active,"
	"paralysis,active_time,maintain_time,natural_recovery,nut1_3,nut2_3,nut3_3,probability_3,checktime_3,andor_3,price_heal,price_prevent"
	"From DiseaseMain Where disease_number=%d ", a+1);
		*/
		sprintf(szQuerry, "Select *"
			"From DiseaseMain Where disease_number=%d ", a+1);
		SQLAllocStmt(hDBC, &hStmt);
		retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
		if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
		{
			retCode = SQLFetch(hStmt);
			if(retCode == SQL_SUCCESS)
			{
				int cn = 1;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].disease_number	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_CHAR,	 disease_tbl[a].han_name, 31, &cbValue);		
				retCode = SQLGetData(hStmt,  cn++, SQL_C_CHAR,  disease_tbl[a].name, 31, &cbValue);			
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].lv		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut1_1		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut2_1		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut3_1		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].probability_1= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].andor_1		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].checktime_1	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].contact_char	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].talk_char	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].fuck_char	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].contact_obj	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].eat_obj		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut1_2		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut2_2		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut3_2		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].probability_2= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].checktime_2	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].andor_2		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_str		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_dex		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_con		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_wis		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_int		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_movp		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_char		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_endu		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_mor		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_luck		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_ws		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dec_ps		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].recoverable	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].life			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].health		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].mp			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].dp			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].max_			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].damage		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].att_rate		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].depen_rate	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].ac			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].mad			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].poison		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].stony		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].sluggish		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].active		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].paralysis	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].active_time	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].maintain_time	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].natural_recovery	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut1_3			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut2_3			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].nut3_3			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].probability_3	= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].checktime_3		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].andor_3			= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].price_heal		= (short )t;
				retCode = SQLGetData(hStmt,  cn++, SQL_C_ULONG, &t, 0, &cbValue);	disease_tbl[a].price_prevent	= (short )t;
				
				
				SQLFreeStmt(hStmt, SQL_DROP);
				
				//				 return(1);
			}
			else
			{
				SQLFreeStmt(hStmt, SQL_DROP);
				return(-2);
			}
		}
		else
		{
			SQLFreeStmt(hStmt, SQL_DROP);
			return(-1);
		}
	}
	
	FILE *fp;
	
	fp = fopen( "./Output/disease_tbl.bin", "wb" );
	if( fp )
	{
		fwrite( disease_tbl, 6, sizeof(DiseaseTable), fp );
		fclose(fp);
	}
	
	return 1;
}

int UpdateCharID_SQL( int char_id )
{
	HSTMT		hStmt = NULL;
	RETCODE		retCode;
	char		szQuerry[ 128];
	
	sprintf(szQuerry, "update CharIDCount set CharIDCount=%d", char_id);
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		SQLFreeStmt(hStmt, SQL_DROP);
		return(1);
	}
	else 
	{
		//SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
		SQLFreeStmt(hStmt, SQL_DROP);
		return(-2);
	}
};



///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////

// BBS包府 家胶...

//#define MAX_DATA  5000
//	char enter[ MAX_DATA];
//	FILE *fp = fopen( "t.txt", "rt" );
//	DWORD filelen = filelength( fileno(fp));
//	fread(	enter, filelen, 1, fp );
//	fclose(fp);

int InsertBBS( char *name, char *title, char *contents )
{
	HSTMT hStmt = NULL;
	RETCODE retCode;
	char szQuerry[128];
	
	sprintf(szQuerry,	"insert into bbs ( date, name, title ) "
		"values ('%d/%d/%d %d:%d:%d', '%s', '%s' )", 
		g_mon+1, g_day, g_year - 2000, g_hour, g_min, g_sec, name, title );
	
	// 某腐磐狼 老馆 Data甫 chr_info俊 积己窍绊 ( 1-1窜拌 )
	SQLAllocStmt(hDBC, &hStmt);
	retCode = SQLExecDirect(hStmt, (UCHAR *)szQuerry, SQL_NTS);
	if(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
	{
		//SQLTransact(SQL_NULL_HENV, hDBC, SQL_COMMIT);
		SQLFreeStmt(hStmt, SQL_DROP);
	}
	else
	{
		//SQLTransact(SQL_NULL_HENV, hDBC, SQL_ROLLBACK);
		SQLFreeStmt(hStmt, SQL_DROP);
		return(0); // unknown error
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	SQLINTEGER  cbdata = 200, cbvalue = SQL_DATA_AT_EXEC ;
	SQLINTEGER	cbcontentslen;
	SQLRETURN	retcode;
	SQLHSTMT	hstmt;
	SQLPOINTER	pParamData;
	int			n=0;
	char		aaa=20;
	DWORD		filelen;
	
	filelen = strlen( contents );
	
	sprintf(szQuerry, "UPDATE bbs SET con=? WHERE date='%d/%d/%d %d:%d:%d'", g_mon+1, g_day, g_year - 2000, g_hour, g_min, g_sec );
	
	//printf("\nSQL: %s", query);
	SQLAllocStmt(hDBC, &hstmt);
	retcode = SQLPrepare(hstmt, (UCHAR *)szQuerry, SQL_NTS);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -