69 lines
1.9 KiB
C++
69 lines
1.9 KiB
C++
#pragma once
|
|
|
|
class CKnightsRankSet : public OdbcRecordset
|
|
{
|
|
public:
|
|
CKnightsRankSet(OdbcConnection * dbConnection, void * dummy)
|
|
: OdbcRecordset(dbConnection), nKarusCount(0), nElmoCount(0)
|
|
{
|
|
memset(&strKarusCaptain, 0, sizeof(strKarusCaptain));
|
|
memset(&strElmoCaptain, 0, sizeof(strElmoCaptain));
|
|
}
|
|
|
|
virtual tstring GetTableName() { return _T("KNIGHTS_RATING"); }
|
|
virtual tstring GetColumns() { return _T("nRank, shIndex, nPoints"); }
|
|
|
|
virtual bool Fetch()
|
|
{
|
|
_KNIGHTS_RATING * pData = new _KNIGHTS_RATING;
|
|
|
|
_dbCommand->FetchUInt32(1, pData->nRank);
|
|
_dbCommand->FetchUInt16(2, pData->sClanID);
|
|
_dbCommand->FetchUInt32(3, pData->nPoints);
|
|
|
|
CKnights *pKnights = g_pMain->GetClanPtr(pData->sClanID);
|
|
if (pKnights == nullptr
|
|
|| (pKnights->m_byNation != KARUS && pKnights->m_byNation != ELMORAD)
|
|
|| !g_pMain->m_KnightsRatingArray[pKnights->m_byNation - 1].PutData(pData->nRank, pData))
|
|
{
|
|
delete pData;
|
|
return true;
|
|
}
|
|
|
|
if (pKnights->m_byNation == KARUS)
|
|
{
|
|
if (nKarusCount == 5)
|
|
return true;
|
|
|
|
CUser *pUser = g_pMain->GetUserPtr(pKnights->m_strChief, TYPE_CHARACTER);
|
|
if (pUser == nullptr || !pUser->GetMap()->isWarZone())
|
|
return true;
|
|
|
|
if (pUser->GetClanID() == pData->sClanID)
|
|
{
|
|
_snprintf(strKarusCaptain[nKarusCount++], 50, "[%s][%s]", pKnights->m_strName.c_str(), pUser->GetName().c_str());
|
|
pUser->ChangeFame(COMMAND_CAPTAIN);
|
|
}
|
|
}
|
|
else if (pKnights->m_byNation == ELMORAD)
|
|
{
|
|
if (nElmoCount == 5)
|
|
return true;
|
|
|
|
CUser *pUser = g_pMain->GetUserPtr(pKnights->m_strChief, TYPE_CHARACTER);
|
|
if (pUser == nullptr || !pUser->GetMap()->isWarZone())
|
|
return true;
|
|
|
|
if (pUser->GetClanID() == pData->sClanID)
|
|
{
|
|
_snprintf(strElmoCaptain[nElmoCount++], 50, "[%s][%s]", pKnights->m_strName.c_str(), pUser->GetName().c_str());
|
|
pUser->ChangeFame(COMMAND_CAPTAIN);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
char strKarusCaptain[5][50], strElmoCaptain[5][50];
|
|
uint32 nKarusCount, nElmoCount;
|
|
}; |