rendered paste bodyIndex: C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/ItemContainer.java===================================================================--- C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/ItemContainer.java (revision 1718)+++ C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/ItemContainer.java (working copy)@@ -145,6 +145,11 @@ */ public synchronized L2ItemInstance addItem(String process, int itemId, int count, L2PcInstance actor, L2Object reference) {+ return addItem(process, itemId, count, 0, actor, reference);+ }+ + public synchronized L2ItemInstance addItem(String process, int itemId, int count, int ObjectId, L2PcInstance actor, L2Object reference)+ { L2ItemInstance item = getItemByItemId(itemId); // If stackable item is found in inventory just add to current quantity@@ -167,11 +172,17 @@ } if (template.isStackable()) {- item = ItemTable.getInstance().createItem(process, itemId, count, actor, reference);+ if (ObjectId == 0)+ item = ItemTable.getInstance().createItem(process, itemId, count, actor, reference);+ else+ item = ItemTable.getInstance().createItem(process, itemId, count, ObjectId, actor, reference); i = count; // End iteration }- else item = ItemTable.getInstance().createItem(process, itemId, 1, actor, reference);-+ else+ if (ObjectId == 0)+ item = ItemTable.getInstance().createItem(process, itemId, 1, actor, reference);+ else+ item = ItemTable.getInstance().createItem(process, itemId, 1, ObjectId, actor, reference); item.setOwnerId(getOwnerId()); item.setLocation(getBaseLocation()); item.setLastChange((L2ItemInstance.ADDED));@@ -226,6 +237,7 @@ public synchronized L2ItemInstance transferItem(String process, int objectId, int count, ItemContainer target, L2PcInstance actor, L2Object reference) { L2ItemInstance sourceitem = getItemByObjectId(objectId);+ int sourceitemcount = sourceitem.getCount(); if (sourceitem == null) return null; L2ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getItemId()) : null; @@ -236,8 +248,12 @@ if (sourceitem.getCount() == count && targetitem == null) { removeItem(sourceitem);- target.addItem(process, sourceitem, actor, reference);- targetitem = sourceitem;+ ItemTable.getInstance().destroyItem(process, sourceitem, false, false, actor, reference);+ sourceitem.updateDatabase();+ //ItemDestroy = true;+ targetitem = target.addItem(process, sourceitem.getItemId(), count, objectId, actor, reference);+ targetitem.setEnchantLevel(sourceitem.getEnchantLevel());+ //targetitem.setLocation() } else {@@ -246,13 +262,18 @@ else // Otherwise destroy old item { removeItem(sourceitem);- ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);+ ItemTable.getInstance().destroyItem(process, sourceitem, false, false, actor, reference);+ sourceitem.updateDatabase();+ //ItemDestroy = true; } if (targetitem != null) // If possible, only update counts targetitem.setCount(process, targetitem.getCount() + count, actor, reference); else // Otherwise add new item - targetitem = target.addItem(process, sourceitem.getItemId(), count, actor, reference);+ if (sourceitemcount > count) + targetitem = target.addItem(process, sourceitem.getItemId(), count, actor, reference);+ else+ targetitem = target.addItem(process, sourceitem.getItemId(), count, objectId, actor, reference); } // Updates databaseIndex: C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ItemTable.java===================================================================--- C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ItemTable.java (revision 1718)+++ C:/Documents and Settings/Anderson/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ItemTable.java (working copy)@@ -610,8 +610,22 @@ */ public L2ItemInstance createItem(String process, int itemId, int count, L2PcInstance actor, L2Object reference) {+ return createItem(process, itemId, count, 0, actor, reference);+ }++ public L2ItemInstance createItem(String process, int itemId, int count, L2PcInstance actor)+ {+ return createItem(process, itemId, count, actor, null);+ }+ + public L2ItemInstance createItem(String process, int itemId, int count, int objectId, L2PcInstance actor, L2Object reference)+ { // Create and Init the L2ItemInstance corresponding to the Item Identifier- L2ItemInstance item = new L2ItemInstance(IdFactory.getInstance().getNextId(), itemId);+ L2ItemInstance item;+ if (objectId == 0)+ item = new L2ItemInstance(IdFactory.getInstance().getNextId(), itemId);+ else+ item = new L2ItemInstance(objectId, itemId); if (Config.DEBUG) _log.fine("ItemTable: Item created oid:" + item.getObjectId()+ " itemid:" + itemId); // Add the L2ItemInstance object to _allObjects of L2world@@ -629,11 +643,6 @@ } return item; }-- public L2ItemInstance createItem(String process, int itemId, int count, L2PcInstance actor)- {- return createItem(process, itemId, count, actor, null);- } /** * Returns a dummy (fr = factice) item.<BR><BR>@@ -680,6 +689,11 @@ */ public void destroyItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) {+ destroyItem(process, item, true, true, actor, reference);+ }+ + public void destroyItem(String process, L2ItemInstance item, boolean release, boolean destroyPet, L2PcInstance actor, L2Object reference)+ { synchronized (item) { item.setCount(0);@@ -688,7 +702,7 @@ item.setLastChange(L2ItemInstance.REMOVED); L2World.getInstance().removeObject(item);- IdFactory.getInstance().releaseId(item.getObjectId());+ if (release) IdFactory.getInstance().releaseId(item.getObjectId()); if (Config.LOG_ITEMS) {@@ -724,11 +738,14 @@ } */ // Delete the pet in db- con = L2DatabaseFactory.getInstance().getConnection();- PreparedStatement statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id=?");- statement.setInt(1, item.getObjectId());- statement.execute();- statement.close();+ if (destroyPet)+ {+ con = L2DatabaseFactory.getInstance().getConnection();+ PreparedStatement statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id=?");+ statement.setInt(1, item.getObjectId());+ statement.execute();+ statement.close(); + } } catch (Exception e) {@@ -741,7 +758,6 @@ } } }- public void reload() { synchronized(_instance)