#include “stdafx.h” #include “AuctionHouse.h” #include “QueryServer.h”
CAutionhouse::CAutionhouse() { Init(); }
CAutionhouse::~CAutionhouse() { Destroy(); }
void CAutionhouse::Init() { ullHighestAuctionID = 0;
smart_ptr<QueryResult> result = GetCharDB.Query("SELECT * FROM auctionhouse"); if (result) { do { Field* f = result->Fetch(); smart_ptr<QueryResult> item = GetCharDB.Query("SELECT * FROM items WHERE id=%I64u", f[6].GetUInt64()); if (item) { Field* fi = item->Fetch(); sTENKAICHIDAISIJYOU_DATA* data = new sTENKAICHIDAISIJYOU_DATA; data->nItem = f[0].GetUInt64(); data->charId = f[1].GetUInt32(); data->byTabType = f[2].GetBYTE(); data->byItemType = f[11].GetBYTE(); data->byItemLevel = f[9].GetBYTE(); NTL_SAFE_WCSCPY(data->awchItemName, s2ws(f[3].GetString()).c_str()); NTL_SAFE_WCSCPY(data->awchSeller, s2ws(f[4].GetString()).c_str()); data->dwPrice = f[5].GetDWORD(); data->nStartSellTime = (DBOTIME)f[7].GetUInt64(); data->nEndSellTime = (DBOTIME)f[8].GetUInt64(); data->itemId = f[6].GetUInt64(); data->itemNo = fi[1].GetUInt32(); data->byCount = fi[5].GetBYTE(); data->dwNeed_Class_Bit_Flag = f[10].GetDWORD(); data->byRank = fi[6].GetBYTE(); data->byGrade = fi[8].GetBYTE(); data->byCurrentDurability = fi[7].GetBYTE(); data->byBattleAttribute = fi[10].GetBYTE(); NTL_SAFE_WCSCPY(data->awchMaker, s2ws(fi[11].GetString()).c_str()); data->sOptionSet.aOptionTblidx[0] = fi[12].GetUInt32(); data->sOptionSet.aOptionTblidx[1] = fi[13].GetUInt32(); data->sOptionSet.aRandomOption[0].wOptionIndex = fi[14].GetWORD(); data->sOptionSet.aRandomOption[0].optionValue = fi[15].GetINT(); data->sOptionSet.aRandomOption[1].wOptionIndex = fi[16].GetWORD(); data->sOptionSet.aRandomOption[1].optionValue = fi[17].GetINT(); data->sOptionSet.aRandomOption[2].wOptionIndex = fi[18].GetWORD(); data->sOptionSet.aRandomOption[2].optionValue = fi[19].GetINT(); data->sOptionSet.aRandomOption[3].wOptionIndex = fi[20].GetWORD(); data->sOptionSet.aRandomOption[3].optionValue = fi[21].GetINT(); data->sOptionSet.aRandomOption[4].wOptionIndex = fi[22].GetWORD(); data->sOptionSet.aRandomOption[4].optionValue = fi[23].GetINT(); data->sOptionSet.aRandomOption[5].wOptionIndex = fi[24].GetWORD(); data->sOptionSet.aRandomOption[5].optionValue = fi[25].GetINT(); data->sOptionSet.aRandomOption[6].wOptionIndex = fi[26].GetWORD(); data->sOptionSet.aRandomOption[6].optionValue = fi[27].GetINT(); data->sOptionSet.aRandomOption[7].wOptionIndex = fi[28].GetWORD(); data->sOptionSet.aRandomOption[7].optionValue = fi[29].GetINT(); data->nUseEndTime = (DBOTIME)fi[31].GetUInt64(); data->byRestrictState = fi[32].GetBYTE(); m_mapAuctionhouse.insert(std::make_pair(data->nItem, data)); if (data->nItem > ullHighestAuctionID) ullHighestAuctionID = data->nItem; } else { GetCharDB.Execute("DELETE FROM auctionhouse WHERE id=%I64u", f[0].GetUInt64()); } } while (result->NextRow()); }}
void CAutionhouse::Destroy() { for (TMapAuctionHouse::iterator it = m_mapAuctionhouse.begin(); it != m_mapAuctionhouse.end(); ) { delete it->second;
it = m_mapAuctionhouse.erase(it); }}
void CAutionhouse::InsertItem(sTENKAICHIDAISIJYOU_DATA* pData) { m_mapAuctionhouse.insert(std::make_pair(pData->nItem, pData)); }
void CAutionhouse::EraseItem(ITEMID nItem) { m_mapAuctionhouse.erase(nItem); }
sTENKAICHIDAISIJYOU_DATA * CAutionhouse::GetItem(ITEMID nItem) { TMapAuctionHouse::iterator it = m_mapAuctionhouse.find(nItem); if (it != m_mapAuctionhouse.end()) return it->second;
return nullptr ;}