RequestCollectionRegister should not take only one item.
This commit is contained in:
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.collection;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.CollectionData;
|
import org.l2jmobius.gameserver.data.xml.CollectionData;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.CollectionDataHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemCollectionData;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerCollectionData;
|
import org.l2jmobius.gameserver.model.holders.PlayerCollectionData;
|
||||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -27,7 +29,7 @@ import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionCom
|
|||||||
import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionRegister;
|
import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionRegister;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Written by Berezkin Nikolay, on 12.04.2021
|
* @author Berezkin Nikolay, Mobius
|
||||||
*/
|
*/
|
||||||
public class RequestCollectionRegister implements IClientIncomingPacket
|
public class RequestCollectionRegister implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
@@ -52,21 +54,43 @@ public class RequestCollectionRegister implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final ItemInstance item = player.getInventory().getItemByObjectId(_itemObjId);
|
|
||||||
|
|
||||||
|
final ItemInstance item = player.getInventory().getItemByObjectId(_itemObjId);
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
player.sendMessage("Item not found.");
|
player.sendMessage("Item not found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.destroyItemByItemId("Collection", item.getId(), 1, player, true);
|
final CollectionDataHolder collection = CollectionData.getInstance().getCollection(_collectionId);
|
||||||
|
if (collection == null)
|
||||||
|
{
|
||||||
|
player.sendMessage("Could not find collection.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
long count = 0;
|
||||||
|
for (ItemCollectionData data : collection.getItems())
|
||||||
|
{
|
||||||
|
if ((data.getItemId() == item.getId()) && ((data.getEnchantLevel() == 0) || (data.getEnchantLevel() == item.getEnchantLevel())))
|
||||||
|
{
|
||||||
|
count = data.getCount();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((count == 0) || (item.getCount() < count))
|
||||||
|
{
|
||||||
|
player.sendMessage("Incorrect item count.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.destroyItemByItemId("Collection", item.getId(), count, player, true);
|
||||||
|
|
||||||
player.sendPacket(new ExCollectionRegister(_collectionId, _index, item));
|
player.sendPacket(new ExCollectionRegister(_collectionId, _index, item));
|
||||||
|
|
||||||
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
|
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
|
||||||
|
|
||||||
if (CollectionData.getInstance().getCollection(_collectionId).getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count())
|
if (collection.getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count())
|
||||||
{
|
{
|
||||||
player.sendPacket(new ExCollectionComplete(_collectionId));
|
player.sendPacket(new ExCollectionComplete(_collectionId));
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.network.clientpackets.collection;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.CollectionData;
|
import org.l2jmobius.gameserver.data.xml.CollectionData;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.CollectionDataHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemCollectionData;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerCollectionData;
|
import org.l2jmobius.gameserver.model.holders.PlayerCollectionData;
|
||||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -27,7 +29,7 @@ import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionCom
|
|||||||
import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionRegister;
|
import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionRegister;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Written by Berezkin Nikolay, on 12.04.2021
|
* @author Berezkin Nikolay, Mobius
|
||||||
*/
|
*/
|
||||||
public class RequestCollectionRegister implements IClientIncomingPacket
|
public class RequestCollectionRegister implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
@@ -52,21 +54,43 @@ public class RequestCollectionRegister implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final ItemInstance item = player.getInventory().getItemByObjectId(_itemObjId);
|
|
||||||
|
|
||||||
|
final ItemInstance item = player.getInventory().getItemByObjectId(_itemObjId);
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
player.sendMessage("Item not found.");
|
player.sendMessage("Item not found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.destroyItemByItemId("Collection", item.getId(), 1, player, true);
|
final CollectionDataHolder collection = CollectionData.getInstance().getCollection(_collectionId);
|
||||||
|
if (collection == null)
|
||||||
|
{
|
||||||
|
player.sendMessage("Could not find collection.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
long count = 0;
|
||||||
|
for (ItemCollectionData data : collection.getItems())
|
||||||
|
{
|
||||||
|
if ((data.getItemId() == item.getId()) && ((data.getEnchantLevel() == 0) || (data.getEnchantLevel() == item.getEnchantLevel())))
|
||||||
|
{
|
||||||
|
count = data.getCount();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((count == 0) || (item.getCount() < count))
|
||||||
|
{
|
||||||
|
player.sendMessage("Incorrect item count.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.destroyItemByItemId("Collection", item.getId(), count, player, true);
|
||||||
|
|
||||||
player.sendPacket(new ExCollectionRegister(_collectionId, _index, item));
|
player.sendPacket(new ExCollectionRegister(_collectionId, _index, item));
|
||||||
|
|
||||||
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
|
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
|
||||||
|
|
||||||
if (CollectionData.getInstance().getCollection(_collectionId).getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count())
|
if (collection.getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count())
|
||||||
{
|
{
|
||||||
player.sendPacket(new ExCollectionComplete(_collectionId));
|
player.sendPacket(new ExCollectionComplete(_collectionId));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user