📄 royalrumble.cpp
字号:
}
}
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 + -