Добрый день девелоперы
Пытаюсь сейчас прикрутить хербы С5 к серверу SF. Всё вроде получилось, но есть одно НО. Для начала немного поясню... Суть в этих хербах - они падают с мобов в ньюбских локациях, такие баночки манны и hp и когда игрок подбирает их они сразу юзаються. Их 4 вида: HP,MP восстанавливающие и добавляющие к атаке п. или м. на пару минут. Так вот.. когда включен автолут всё работает отлично, но когда они падают на землю и потом подобрать то они просто сразу изчезают и еффекта нету. Вот код L2Attackable.java:
if (Rnd.get() < Config.HERB_OF_LIFE_DROP_RATE)
{
RewardItem item = new RewardItem(8154, 1);
if (Config.AUTO_LOOT_HERBS) player.doAutoLoot(this, item); // Give this or these Item(s) to the L2PcInstance that has killed the L2Attackable
else DropItem(player, item);
}
Т.е как видим тут если включен автолут, то выполняется player.doAutoLoot(this, item);, а если нет, то DropItem(player, item);.
Далее в L2PcInstance.java:
/**
* Adds item to inventory and send a Server->Client InventoryUpdate packet to the L2PcInstance.
* @param process : String Identifier of process triggering this action
* @param item : L2ItemInstance to be added
* @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation
* @param sendMessage : boolean Specifies whether to send message to Client about this action
/
public void addItem(String process, L2ItemInstance item, L2Object reference, boolean sendMessage)
{
...................................
if (item.getItemId()<= 8157 && item.getItemId() >= 8154)
{
IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getItemId());
if (handler == null)
_log.fine("No item handler registered for item ID " + item.getItemId() + ".");
else
handler.useItem(this, item);
}
..................................
/*
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the L2PcInstance.
* @param process : String Identifier of process triggering this action
* @param itemId : int Item Identifier of the item to be added
* @param count : int Quantity of items to be added
* @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation
* @param sendMessage : boolean Specifies whether to send message to Client about this action
*/
public void addItem(String process, int itemId, int count, L2Object reference, boolean sendMessage)
{
..................................
if (item.getItemId()<= 8157 && item.getItemId() >= 8154)
{
IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getItemId());
if (handler == null)
_log.fine("No item handler registered for item ID " + item.getItemId() + ".");
else
handler.useItem(this, item);
}
// If over capacity, trop the item
if (!isGM() && !_inventory.validateCapacity(0)) dropItem("InvDrop", item, null, true);
}
Вот собственно вопрос - Почему когда хербы падают на землю и потом поднять ничего не происходит, а если автолутом player.doAutoLoot(this, item); то всё работает ?
Как это исправить ?