1. if (ch->IsDead() || ch->GetExchange() || ch->IsOpenSafebox() || ch->IsCubeOpen())
  2. {
  3. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Sistem> Bu islemi yapmak icin aktif olan pencereleri kapatiniz"));
  4. return;
  5. }
  6. for (int i = 0; i < INVENTORY_MAX_NUM; ++i)
  7. {
  8. LPITEM item = ch->GetInventoryItem(i);
  9. if(!item)
  10. continue;
  11. if(item->isLocked())
  12. continue;
  13. if(item->GetCount() == 200)
  14. continue;
  15. if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK))
  16. {
  17. for (int j = i; j < INVENTORY_MAX_NUM; ++j)
  18. {
  19. LPITEM item2 = ch->GetInventoryItem(j);
  20. if(!item2)
  21. continue;
  22. if(item2->isLocked())
  23. continue;
  24. if (item2->GetVnum() == item->GetVnum())
  25. {
  26. bool bStopSockets = false;
  27. for (int k = 0; k < ITEM_SOCKET_MAX_NUM; ++k)
  28. {
  29. if (item2->GetSocket(k) != item->GetSocket(k))
  30. {
  31. bStopSockets = true;
  32. break;
  33. }
  34. }
  35. if(bStopSockets)
  36. continue;
  37. BYTE bAddCount = MIN(200 - item->GetCount(), item2->GetCount());
  38. item->SetCount(item->GetCount() + bAddCount);
  39. item2->SetCount(item2->GetCount() - bAddCount);
  40. continue;
  41. }
  42. }
  43. }
  44. }