passaport 0 Posted February 16, 2018 Share Posted February 16, 2018 Hi, metin2dev The bug is manifest like this : My exchange.cpp file: bool CExchange::CheckSpace() { static CGrid s_grid1(5, 9); // 9 Rows a 5 Columns static CGrid s_grid2(5, 9); // 9 Rows a 5 Columns static CGrid s_grid3(5, 9); // 9 Rows a 5 Columns static CGrid s_grid4(5, 9); // 9 Rows a 5 Columns s_grid1.Clear(); s_grid2.Clear(); s_grid3.Clear(); s_grid4.Clear(); LPCHARACTER victim = GetCompany()->GetOwner(); LPITEM item; int i; const int perPageSlotCount = INVENTORY_MAX_NUM / 4; for (i = 0; i < INVENTORY_MAX_NUM; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; BYTE itemSize = item->GetSize(); if (i < perPageSlotCount) // Notice: This is adjusted for 4 Pages only! s_grid1.Put(i, 1, itemSize); else if (i < perPageSlotCount * 2) s_grid2.Put(i - perPageSlotCount, 1, itemSize); else if (i < perPageSlotCount * 3) s_grid3.Put(i - perPageSlotCount * 2, 1, itemSize); else s_grid4.Put(i - perPageSlotCount * 3, 1, itemSize); } static std::vector <WORD> s_vDSGrid(DRAGON_SOUL_INVENTORY_MAX_NUM); bool bDSInitialized = false; for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i) { if (!(item = m_apItems[i])) continue; #ifdef NEW_ADD_INVENTORY int envanterblack; if (item->IsDragonSoul()) envanterblack = victim->GetEmptyDragonSoulInventory(item); else envanterblack = victim->GetEmptyInventory(item->GetSize()); if (envanterblack < 0) { victim->ChatPacket(CHAT_TYPE_INFO, "Text Bug1"); GetOwner()->ChatPacket(CHAT_TYPE_INFO, "Text Bug2"); return false; } #endif BYTE itemSize = item->GetSize(); if (item->IsDragonSoul()) { if (!victim->DragonSoul_IsQualified()) return false; if (!bDSInitialized) { bDSInitialized = true; victim->CopyDragonSoulItemGrid(s_vDSGrid); } bool bExistEmptySpace = false; WORD wBasePos = DSManager::instance().GetBasePosition(item); if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM) return false; for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++) { WORD wPos = wBasePos + i; if (0 == s_vDSGrid[wBasePos]) { bool bEmpty = true; for (int j = 1; j < item->GetSize(); j++) { if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM]) { bEmpty = false; break; } } if (bEmpty) { for (int j = 0; j < item->GetSize(); j++) { s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1; } bExistEmptySpace = true; break; } } if (bExistEmptySpace) break; } if (!bExistEmptySpace) return false; } else { int iPos = s_grid1.FindBlank(1, itemSize); if (iPos >= 0) { s_grid1.Put(iPos, 1, itemSize); continue; } iPos = s_grid2.FindBlank(1, itemSize); if (iPos >= 0) { s_grid2.Put(iPos, 1, itemSize); continue; } iPos = s_grid3.FindBlank(1, itemSize); if (iPos >= 0) { s_grid3.Put(iPos, 1, itemSize); continue; } iPos = s_grid4.FindBlank(1, itemSize); if (iPos >= 0) { s_grid4.Put(iPos, 1, itemSize); continue; } return false; // No space left in inventory } } return true; } If i don't have any space in inventory and i make a trade i recive the message : Text Bug 1 and the victim(another player) Text Bug 2 and the trade don't make..but if i have 2 slots for a sword and i give 2 sword ,the another player recive 1 sword and 1 stay in my inventory... Soory for my bad english but i worked 4 days to it and i don't know what to do anymore... Link to comment Share on other sites More sharing options...
Developer Ikarus_ 2436 Posted February 18, 2018 Developer Share Posted February 18, 2018 https://metin2dev.org/board/index.php?/topic/791-metin2-4-inventory-page/&do=findComment&comment=92465 My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now