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

📄 royalrumble.cpp

📁 决战帝王1.5武神降临对喜爱决战的玩家共享研究用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
}

void CRoyalRumble::ForceExit()
{
	USER* pUser = NULL;
	COM* pCom = g_pMainDlg->GetCOM();
	if( !pCom ) return;

	for( int i = 0; i < MAX_USER; i++ )
	{
		pUser = pCom->GetUserUid( i );

		if( !pUser ) continue;

		if( pUser->m_state != STATE_GAMESTARTED ) continue;

		if( pUser->m_curz != m_iZoneNum ) continue;

		if( pUser->CheckInvalidMapType() != 12 ) continue;

		pUser->TownPotal();
	}
}

void CRoyalRumble::BBSWrite(char *strTitle, char *strContent)
{
	char strWriter[128];
	sprintf( strWriter, "畴刚" );

	SDWORD sTitleLen	= _tcslen(strTitle);
	SDWORD sContentLen	= _tcslen(strContent);
	SDWORD sIDLen		= _tcslen(strWriter);

	SQLHSTMT	hstmt = NULL;
	SQLRETURN	retcode;
	TCHAR		szSQL[8000];	::ZeroMemory(szSQL, sizeof(szSQL));

	int bbsnum = 3;		// 肺凯烦喉侩 霸矫魄

	_sntprintf(szSQL, sizeof(szSQL), TEXT( "{call BBS_WRITE ( %d, ?, ?, ? )}" ), bbsnum );

	int db_index = 0;
	CDatabase* pDB = g_DBNew[AUTOMATA_THREAD].GetDB( db_index );
	if( !pDB ) { return; }

	retcode = SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, pDB->m_hdbc, &hstmt );

	if( retcode != SQL_SUCCESS )
	{
		return;
	}

	int i = 1;
	SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, 20,		0, (TCHAR*)strWriter,	0, &sIDLen );
	SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, 50,		0, (TCHAR*)strTitle,	0, &sTitleLen );
	SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, 5000,	0, (TCHAR*)strContent,	0, &sContentLen );

	retcode = SQLExecDirect( hstmt, (unsigned char*)szSQL, sizeof(szSQL));
	if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
	{
	}
	else if (retcode == SQL_ERROR)
	{
		DisplayErrorMsg(hstmt);
		SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);

		g_DBNew[AUTOMATA_THREAD].ReleaseDB(db_index);
		return;
	}
	
	SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);
	g_DBNew[AUTOMATA_THREAD].ReleaseDB(db_index);

	return;
}

void CRoyalRumble::UpdateRoyalRumbleData()
{
	if( m_bNextRRInit )		// 促澜 版扁 老沥捞 汲沥登菌栏骨肺 诀单捞飘 窍瘤 臼绰促.
	{
		return;
	}

	m_bNextRRInit = TRUE;	// 促澜 版扁 老沥捞 汲沥登菌促.

	CTime curtime = CTime::GetCurrentTime();
	CTimeSpan addtime( 28, 0, 0, 0 );

	curtime = curtime + addtime;

	SQLHSTMT		hstmt = NULL;
	SQLRETURN		retcode;
	TCHAR			szSQL[1024];

	int i = 0;

	SQLINTEGER	sInd;
	SQLSMALLINT sYear, sMonth, sDay;
	SQLCHAR		strWinner[CHAR_NAME_LENGTH+1];

	::ZeroMemory(szSQL, sizeof(szSQL));
	::ZeroMemory(strWinner, sizeof(strWinner));

	sYear = curtime.GetYear();
	sMonth = curtime.GetMonth();
	sDay = curtime.GetDay();

	sInd = 0;

	_sntprintf(szSQL, sizeof(szSQL), TEXT("update royal_rumble set nYear = %d, nMonth = %d, nDay = %d, strWinner = \'%s\'"), sYear, sMonth, sDay, g_strARKRRWinner);

	int db_index = 0;
	CDatabase* pDB = g_DB[AUTOMATA_THREAD].GetDB( db_index );
	if( !pDB ) return;

	retcode = SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, pDB->m_hdbc, &hstmt );

	if( retcode != SQL_SUCCESS )
	{
		TRACE("Fail To Update Royal Rumble Data !!\n");

		return;
	}

	retcode = SQLExecDirect( hstmt, (unsigned char*)szSQL, SQL_NTS);

	if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
	{
	}
	else
	{
		DisplayErrorMsg(hstmt);
		retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);

		g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
		return;
	}

	retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);
	g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);

	BridgeServerARKWinnerChangeReq();
	return;
}

void CRoyalRumble::RobItem()
{
	return;

	if( g_strARKRRWinner.GetLength() <= 0 ) return;

	USER* pUser = NULL;
	COM* pCom = g_pMainDlg->GetCOM();
	if( !pCom ) return;

	char tempUserID[CHAR_NAME_LENGTH+1];
	strcpy( tempUserID, g_strARKRRWinner );

	pUser = pCom->GetUser( tempUserID );

	if( !pUser ) return;
	if( pUser->m_state != STATE_GAMESTARTED ) return;

	CBufferEx TempBuf;

	int i, j;

	for( i = 0; i < TOTAL_ITEM_NUM; i++ )
	{
		if( pUser->m_UserItem[i].sSid != m_iItemSid ) continue;

		pUser->ReSetItemSlot( &(pUser->m_UserItem[i]) );
		pUser->CheckMagicItemMove();
		pUser->UpdateUserItemDN();

		pUser->GetRecoverySpeed();			// 促矫 雀汗加档甫 拌魂

		TempBuf.Add(ITEM_GIVE_RESULT);
		TempBuf.Add(SUCCESS);
		TempBuf.Add((BYTE)i);
		TempBuf.Add(pUser->m_UserItem[i].sLevel);
		TempBuf.Add(pUser->m_UserItem[i].sSid);
		TempBuf.Add(pUser->m_UserItem[i].sDuration);
		TempBuf.Add(pUser->m_UserItem[i].sBullNum);
		TempBuf.Add(pUser->m_UserItem[i].sCount);
		for(j = 0; j < MAGIC_NUM; j++) TempBuf.Add(pUser->m_UserItem[i].tMagic[j]);

		TempBuf.Add(pUser->m_UserItem[i].tIQ);

		pUser->Send(TempBuf, TempBuf.GetLength());
	}

	for( i = 0; i < TOTAL_BANK_ITEM_NUM; i++ )
	{
		if( pUser->m_UserBankItem[i].sSid != 840 ) continue;

		pUser->ReSetItemSlot( &(pUser->m_UserBankItem[i]) );
		pUser->UpdateUserBank();

		pUser->GetRecoverySpeed();			// 促矫 雀汗加档甫 拌魂

		TempBuf.Add(ITEM_GIVE_RESULT);
		TempBuf.Add(SUCCESS);
		TempBuf.Add((BYTE)i);
		TempBuf.Add(pUser->m_UserBankItem[i].sLevel);
		TempBuf.Add(pUser->m_UserBankItem[i].sSid);
		TempBuf.Add(pUser->m_UserBankItem[i].sDuration);
		TempBuf.Add(pUser->m_UserBankItem[i].sBullNum);
		TempBuf.Add(pUser->m_UserBankItem[i].sCount);
		for(j = 0; j < MAGIC_NUM; j++) TempBuf.Add(pUser->m_UserBankItem[i].tMagic[j]);

		TempBuf.Add(pUser->m_UserBankItem[i].tIQ);

		pUser->Send(TempBuf, TempBuf.GetLength());
	}

	pUser->SendSystemMsg( "肺凯烦喉 惑前 酒捞袍捞 雀荐 登菌嚼聪促", SYSTEM_NORMAL, TO_ME);
}

void CRoyalRumble::GiveItemToWinner(USER *pUser)
{
	return;

	int iWeight = 0;
	int iSlot;

	iWeight = g_arItemTable[m_ItemRR.sSid]->m_byWeight;

	CWordArray		arEmptySlot, arSameSlot;

	iSlot = pUser->GetEmptySlot( INVENTORY_SLOT );

	if( iSlot < 0 ) return;

	pUser->ReSetItemSlot( &(pUser->m_UserItem[iSlot]) );

	pUser->m_UserItem[iSlot].sLevel			= m_ItemRR.sLevel;
	pUser->m_UserItem[iSlot].sSid			= m_ItemRR.sSid;
	pUser->m_UserItem[iSlot].sCount			= m_ItemRR.sCount;
	pUser->m_UserItem[iSlot].sDuration		= m_ItemRR.sDuration;
	pUser->m_UserItem[iSlot].sBullNum		= m_ItemRR.sBullNum;
	pUser->m_UserItem[iSlot].tIQ			= m_ItemRR.tIQ;

	pUser->m_UserItem[iSlot].iItemSerial	= m_ItemRR.iItemSerial;
	pUser->m_UserItem[iSlot].dwMoney		= m_ItemRR.dwMoney;

	for( int i = 0; i < MAGIC_NUM; i++ ) pUser->m_UserItem[iSlot].tMagic[i] = m_ItemRR.tMagic[i];

	arEmptySlot.Add(iSlot); 

	pUser->m_iCurWeight += iWeight;
	pUser->GetRecoverySpeed();					// 酒捞袍 公霸俊 函悼捞 积扁搁 雀汗加档 函券

	pUser->UpdateInvenSlot(&arEmptySlot, &arSameSlot);

	return;
}

void CRoyalRumble::UpdateRoyalRumbleWinner()
{
	SQLHSTMT		hstmt = NULL;
	SQLRETURN		retcode;
	TCHAR			szSQL[1024];

	int i = 0;

	SQLINTEGER	sInd;
	SQLCHAR		strWinner[CHAR_NAME_LENGTH+1];

	::ZeroMemory(szSQL, sizeof(szSQL));
	::ZeroMemory(strWinner, sizeof(strWinner));

	sInd = 0;

	_sntprintf(szSQL, sizeof(szSQL), TEXT("update royal_rumble set strWinner = \'%s\'"), g_strARKRRWinner);

	int db_index = 0;
	CDatabase* pDB = g_DB[AUTOMATA_THREAD].GetDB( db_index );
	if( !pDB ) return;

	retcode = SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, pDB->m_hdbc, &hstmt );

	if( retcode != SQL_SUCCESS )
	{
		TRACE("Fail To Update Royal Rumble Data !!\n");

		return;
	}

	retcode = SQLExecDirect( hstmt, (unsigned char*)szSQL, SQL_NTS);

	if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
	{
	}
	else
	{
		DisplayErrorMsg(hstmt);
		retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);

		g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
		return;
	}

	retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);
	g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);

	BridgeServerARKWinnerChangeReq();

	return;
}

void CRoyalRumble::ForceInit()
{
	RobItem();
	g_strARKRRWinner = _T("");
	UpdateRoyalRumbleWinner();
	m_bNextRRInit = TRUE;

	InitRRUser();

	m_iCurrentStartCount = m_iStartCount;
	m_bRRStatus = RR_IDLE;
	m_iCurrentPlaySecond = 0;
	m_iCurrentBravoSecond = 0;

	CTime curtime = CTime::GetCurrentTime();
	CTimeSpan addtime( 0, 0, 10, 0 );

	m_timeApplyStart	= curtime;
	m_timeApplyEnd		= curtime;

	// 涝厘 啊瓷 矫埃
	m_timeEnterStart	= curtime;
	m_timeEnterEnd		= curtime + addtime;

	m_dwLastEnterMsg = 0;
	m_dwLastStartMsg = 0;

	MAP* pMap = NULL;

	for( int i = 0; i < g_zone.GetSize(); i++ )
	{
		if( g_zone[i] )
		{
			if( g_zone[i]->m_Zone == m_iZoneNum )
			{
				pMap = g_zone[i];
				break;
			}
		}
	}

	if( !pMap )	// 捞惑惑怕 惯积
	{
		AfxMessageBox( "Can't find RR Map" );
		return;
	}

	m_pRRMap = pMap;

	m_ItemRR.sSid = m_iItemSid;

	m_ItemRR.sLevel		= g_arItemTable[m_ItemRR.sSid]->m_byRLevel;
	m_ItemRR.sCount		= 1;
	m_ItemRR.sDuration	= g_arItemTable[m_ItemRR.sSid]->m_sDuration;
	m_ItemRR.sBullNum	= g_arItemTable[m_ItemRR.sSid]->m_sBullNum;

	m_ItemRR.tMagic[0]	= (BYTE)137;
	m_ItemRR.tMagic[1]	= (BYTE)141;
	m_ItemRR.tMagic[2]	= (BYTE)128;
	m_ItemRR.tMagic[3]	= (BYTE)42;
	m_ItemRR.tMagic[4]	= (BYTE)31;
	m_ItemRR.tMagic[5]	= (BYTE)33;
	m_ItemRR.tIQ		= UNIQUE_ITEM;

	m_ItemRR.iItemSerial= 0;
	m_ItemRR.dwMoney	= 0;
}

void CRoyalRumble::InitRRUser()
{
	int i;

	for( i = 0; i < m_arRRUser.GetSize(); i++ )
	{
		if( m_arRRUser[i] )
		{
			delete m_arRRUser[i];
		}
	}
	m_arRRUser.RemoveAll();
}

void CRoyalRumble::Apply()	// 盔贰 脚没阑 罐绰 窃鉴单... 荤傈 傍瘤客 惑怕 檬扁拳俊 静捞绰 巴栏肺 侩档 函版
{
	RobItem();
	g_strARKRRWinner = _T("");

	UpdateRoyalRumbleData();

	CString strMsg;
	CTime time = CTime::GetCurrentTime();

	if( ( time.GetMinute() % 10 ) == 5 ||  ( time.GetMinute() % 10 ) == 0 )		// 5盒 付促 茄锅究
	{
		strMsg.Format( "坷疵 8矫 NEO A.R.K 拜捧厘俊辑 肺凯烦喉版扁啊 凯赋聪促. 腹篮 曼咯 何殴靛赋聪促" );
		g_pMainDlg->AnnounceAllServer( (LPTSTR)(LPCTSTR)strMsg, SYSTEM_ANNOUNCE );
	}
}

void CRoyalRumble::BridgeServerARKWinnerChangeReq()
{
	int index = 0;
	TCHAR TempBuf[SEND_BUF_SIZE];

	char strWinner[CHAR_NAME_LENGTH+1];		memset( strWinner, NULL, CHAR_NAME_LENGTH+1 );
	strcpy( strWinner, g_strARKRRWinner );

	SetByte( TempBuf, SERVER_ARK_WINNER, index );
	SetByte( TempBuf, strlen( strWinner ), index );
	SetString( TempBuf, strWinner, strlen( strWinner ), index );

	g_pMainDlg->m_pBridgeSocket->Send( TempBuf, index );
}

⌨️ 快捷键说明

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