Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Item transfer
#1
Здравствуйте.
Сборка 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();



есть и другие варианты но суть такая же...
[Изображение: guru.gif] Сижу на zone-game, помогаю и напрягаю других.
Ответ
#2
весело Sad
[Изображение: guru.gif] Сижу на zone-game, помогаю и напрягаю других.
Ответ
#3
UPDATE items set location='WAREHOUSE' where owner_id=100500;
Ответ
#4
смотри в L2PcInstance или в инвентаре, метод transfer или чтото подобное должно быть, если неошибась

а так смотри пакет SendWarehouseWithdrawList (кажись так) , учись искать а не спрашивать, тут на лыже редко кто пишет
consulo.io - Consulo - multi-language IDE
Ответ
#5
Делай по принципу Warehouse Deposit , смотри как там это делается а там уже пили
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  html Item Broker'a lDmitryl 9 2,226 02-13-2015, 09:29 PM
Последний пост: lDmitryl
  WARNING: Duplicate handler for item Bonabo 6 2,389 05-06-2013, 12:07 PM
Последний пост: Gaikotsu
  New item MROBAR 4 1,838 02-17-2012, 05:58 PM
Последний пост: Gaikotsu
  Item by Npc ID krisadr 5 3,910 03-17-2011, 06:08 PM
Последний пост: krisadr
  Drop item Gracia Shot 3 2,635 10-13-2009, 08:50 AM
Последний пост: Taku

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)