knightonline/server/shared/database/PetTableSet.h

48 lines
1.3 KiB
C++

#pragma once
class CPetTableSet : public OdbcRecordset
{
public:
CPetTableSet(OdbcConnection * dbConnection, PetArray *pMap)
: OdbcRecordset(dbConnection), m_pMap(pMap) {}
virtual tstring GetTableName() { return _T("PET_DATA"); }
virtual tstring GetColumns()
{
return _T("PET_SERIAL, PET_SLOT, PET_NAME, PET_EXP, PET_LEVEL, PET_STOMACH, PET_ITEMID, PET_CLASS");
}
virtual bool Fetch()
{
CPet * pData = new CPet();
int i = 1;
uint32 ItemId;
uint8 Slot;
_dbCommand->FetchUInt64(i++, pData->m_Serial);
_dbCommand->FetchString(i++, pData->m_strPetID);
_dbCommand->FetchUInt64(i++, pData->m_iExp);
_dbCommand->FetchByte(i++, pData->m_bLevel);
_dbCommand->FetchUInt16(i++, pData->m_sSatisfaction);
_dbCommand->FetchByte(i++, Slot);
_dbCommand->FetchUInt32(i++, ItemId);
_ITEM_DATA * pItem = &pData->m_sItemArray[Slot];
pItem->nNum = ItemId;
pItem->sCount = 1;
pItem->sDuration = 1;
_dbCommand->FetchByte(i++, pData->m_sClass);
_dbCommand->FetchUInt32(i++, pData->SpecialPetID);
if (pData->SpecialPetID > g_pMain->LastPetID)
g_pMain->LastPetID = pData->SpecialPetID;
pData->m_pNpc = nullptr;
if (pData == nullptr)
delete pData;
else
m_pMap->insert(std::make_pair(pData->m_Serial, pData));
return true;
}
PetArray * m_pMap;
};