05-20-2012, 12:45 AM
Здравствуйте.
Сборка L2J freya.
Задача такая:
Нужно переместить вещь из инвентаря игрока, в банк.
Все получается сделать но: вещь пропадает только после рестарта игрока.
Уже оч долго мучаюсь с этой траблой.
Кто то знает как обновить правильно инвентарь?
Вот как я делаю:
Вариант1:
Вариант2:
есть и другие варианты но суть такая же...
Сборка L2J freya.
Задача такая:
Нужно переместить вещь из инвентаря игрока, в банк.
Все получается сделать но: вещь пропадает только после рестарта игрока.
Уже оч долго мучаюсь с этой траблой.
Кто то знает как обновить правильно инвентарь?
Вот как я делаю:
Вариант1:
L2Item it = ItemTable.getInstance().getTemplate(15986);
L2ItemInstance item = activeChar.getInventory().getItemByItemId(it.getItemId());
ItemContainer wh = activeChar.getInventory();
L2ItemInstance newItem = activeChar.getInventory().transferItem("SendMail", item.getObjectId(), item.getCount(), wh, activeChar, "123123");
newItem.setLocation(L2ItemInstance.ItemLocation.WAREHOUSE, 1);
InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();
playerIU.addRemovedItem(newItem);
activeChar.sendPacket(playerIU);
StatusUpdate su = new StatusUpdate(activeChar);
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.sendPacket(su);
Вариант2:
L2Item it = ItemTable.getInstance().getTemplate(15986);
L2ItemInstance item = activeChar.getInventory().getItemByItemId(it.getItemId());
//добавляем вещь в банк
item.setLocation(L2ItemInstance.ItemLocation.WAREHOUSE, 0);
item.setLastChange(L2ItemInstance.MODIFIED);
//обновляем базу
item.updateDatabase();
//удаляем вещь с мира.
L2World.getInstance().removeObject(item);
L2World.getInstance().removeVisibleObject(item, item.getWorldRegion());
//обновляем инвентарь
InventoryUpdate iu = new InventoryUpdate();
iu.addRemovedItem(item);
activeChar.sendPacket(iu);
//обновляем вес инвентаря
StatusUpdate su = new StatusUpdate(activeChar);
su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
activeChar.getInventory().refreshWeight();
есть и другие варианты но суть такая же...
Сижу на zone-game, помогаю и напрягаю других.