1. void CHARACTER::ClearItem()
  2. {
  3. int i;
  4. LPITEM item;
  5. for (i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
  6. {
  7. if ((item = GetInventoryItem(i)))
  8. {
  9. item->SetSkipSave(true);
  10. ITEM_MANAGER::instance().FlushDelayedSave(item);
  11. item->RemoveFromCharacter();
  12. M2_DESTROY_ITEM(item);
  13. SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
  14. }
  15. }
  16. for (i = 0; i < DRAGON_SOUL_INVENTORY_MAX_NUM; ++i)
  17. {
  18. if ((item = GetItem(TItemPos(DRAGON_SOUL_INVENTORY, i))))
  19. {
  20. item->SetSkipSave(true);
  21. ITEM_MANAGER::instance().FlushDelayedSave(item);
  22. item->RemoveFromCharacter();
  23. M2_DESTROY_ITEM(item);
  24. }
  25. }
  26. #ifdef ENABLE_SPLIT_INVENTORY_SYSTEM
  27. for (i = 0; i < SKILL_BOOK_INVENTORY_MAX_NUM; ++i)
  28. {
  29. if ((item = GetItem(TItemPos(SKILL_BOOK_INVENTORY, i))))
  30. {
  31. item->SetSkipSave(true);
  32. ITEM_MANAGER::instance().FlushDelayedSave(item);
  33. item->RemoveFromCharacter();
  34. M2_DESTROY_ITEM(item);
  35. }
  36. }
  37. for (i = 0; i < UPGRADE_ITEMS_INVENTORY_MAX_NUM; ++i)
  38. {
  39. if ((item = GetItem(TItemPos(UPGRADE_ITEMS_INVENTORY, i))))
  40. {
  41. item->SetSkipSave(true);
  42. ITEM_MANAGER::instance().FlushDelayedSave(item);
  43. item->RemoveFromCharacter();
  44. M2_DESTROY_ITEM(item);
  45. }
  46. }
  47. for (i = 0; i < STONE_INVENTORY_MAX_NUM; ++i)
  48. {
  49. if ((item = GetItem(TItemPos(STONE_INVENTORY, i))))
  50. {
  51. item->SetSkipSave(true);
  52. ITEM_MANAGER::instance().FlushDelayedSave(item);
  53. item->RemoveFromCharacter();
  54. M2_DESTROY_ITEM(item);
  55. }
  56. }
  57. for (i = 0; i < BOX_INVENTORY_MAX_NUM; ++i)
  58. {
  59. if ((item = GetItem(TItemPos(BOX_INVENTORY, i))))
  60. {
  61. item->SetSkipSave(true);
  62. ITEM_MANAGER::instance().FlushDelayedSave(item);
  63. item->RemoveFromCharacter();
  64. M2_DESTROY_ITEM(item);
  65. }
  66. }
  67. for (i = 0; i < EFSUN_INVENTORY_MAX_NUM; ++i)
  68. {
  69. if ((item = GetItem(TItemPos(EFSUN_INVENTORY, i))))
  70. {
  71. item->SetSkipSave(true);
  72. ITEM_MANAGER::instance().FlushDelayedSave(item);
  73. item->RemoveFromCharacter();
  74. M2_DESTROY_ITEM(item);
  75. }
  76. }
  77. for (i = 0; i < CICEK_INVENTORY_MAX_NUM; ++i)
  78. {
  79. if ((item = GetItem(TItemPos(CICEK_INVENTORY, i))))
  80. {
  81. item->SetSkipSave(true);
  82. ITEM_MANAGER::instance().FlushDelayedSave(item);
  83. item->RemoveFromCharacter();
  84. M2_DESTROY_ITEM(item);
  85. }
  86. }
  87. #endif
  88. }