hata veren blok:
#include "../../libgame/include/grid.h"
void ITEM_MANAGER::GetChestItemList(const DWORD& dwChestVnum, std::vector<TChestDropInfoTable>& vec_item)
{
const auto pGroup = GetSpecialItemGroup(dwChestVnum);
if (!pGroup)
return;
std::vector<std::unique_ptr<CGrid>> pGrids;
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
for (int i = 0; i < pGroup->GetGroupSize(); i++)
{
const auto itemTable = GetTable(pGroup->GetVnum(i));
//pass if exp, yang or duplicate item
if (!itemTable || !itemTable->dwVnum || itemTable->dwVnum < 3 || std::find_if(vec_item.begin(), vec_item.end(), [&pGroup, &i](const TChestDropInfoTable& data) -> bool { return static_cast<DWORD>(pGroup->GetVnum(i)) == data.dwItemVnum; }) != vec_item.end())
continue;
bool PushNewGrid = true;
for (size_t iPage = 0; iPage < pGrids.size(); iPage++)
{
const auto iPos = pGrids.at(iPage)->FindBlank(1, itemTable->bSize);
if (iPos >= 0)
{
pGrids.at(iPage)->Put(iPos, 1, itemTable->bSize);
vec_item.push_back({ static_cast<BYTE>(iPage+1), static_cast<BYTE>(iPos), static_cast<DWORD>(pGroup->GetVnum(i)), static_cast<BYTE>(pGroup->GetCount(i)) });
PushNewGrid = false;
break;
}
}
if (PushNewGrid)
{
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
i--;//again
}
}
//sort by itemvnum..
std::sort(vec_item.begin(), vec_item.end(), [](const TChestDropInfoTable& a, const TChestDropInfoTable& b) { return a.dwItemVnum < b.dwItemVnum; });
}