Enchant support for CustomMailManager.
This commit is contained in:
parent
7b933621f0
commit
64b5d6251a
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3354,6 +3354,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3410,6 +3425,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3356,6 +3356,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3412,6 +3427,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3358,6 +3358,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3414,6 +3429,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3353,6 +3353,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3409,6 +3424,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3411,6 +3411,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3467,6 +3482,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3424,6 +3424,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3480,6 +3495,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3425,6 +3425,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3481,6 +3496,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3370,6 +3370,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3426,6 +3441,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3410,6 +3410,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3466,6 +3481,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3429,6 +3429,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3485,6 +3500,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -64,28 +64,30 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
player.sendPacket(new CreatureSay(null, ChatType.WHISPER, rs.getString("subject"), rs.getString("message")));
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Integer.parseInt(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Integer.parseInt(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
player.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, true);
|
||||
player.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), itemHolder.getEnchantLevel(), null, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3110,15 +3110,31 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, int count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @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 enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, int count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
final ItemTemplate item = ItemTable.getInstance().getTemplate(itemId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.log(Level.SEVERE, "Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
LOGGER.severe("Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Sends message to client if requested
|
||||
if (sendMessage && ((!isCastingNow() && item.hasExImmediateEffect()) || !item.hasExImmediateEffect()))
|
||||
{
|
||||
@ -3139,20 +3155,17 @@ public class Player extends Playable
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
else if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3169,6 +3182,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(int id, int count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, int count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MessageSenderType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), MessageSenderType.PLAYER);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3340,15 +3340,31 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
final ItemTemplate item = ItemTable.getInstance().getTemplate(itemId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.log(Level.SEVERE, "Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
LOGGER.severe("Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Sends message to client if requested
|
||||
if (sendMessage && ((!isCastingNow() && item.hasExImmediateEffect()) || !item.hasExImmediateEffect()))
|
||||
{
|
||||
@ -3369,20 +3385,17 @@ public class Player extends Playable
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
else if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3399,6 +3412,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MessageSenderType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), MessageSenderType.PLAYER);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3251,15 +3251,31 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
final ItemTemplate item = ItemTable.getInstance().getTemplate(itemId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.log(Level.SEVERE, "Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
LOGGER.severe("Item doesn't exist so cannot be added. Item ID: " + itemId);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Sends message to client if requested
|
||||
if (sendMessage && ((!isCastingNow() && item.hasExImmediateEffect()) || !item.hasExImmediateEffect()))
|
||||
{
|
||||
@ -3280,20 +3296,17 @@ public class Player extends Playable
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
else if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (process.equalsIgnoreCase("Sweeper") || process.equalsIgnoreCase("Quest"))
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
else
|
||||
{
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
|
||||
sm.addItemName(itemId);
|
||||
sendPacket(sm);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3310,6 +3323,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3307,6 +3307,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3363,6 +3378,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3316,6 +3316,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3372,6 +3387,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3316,6 +3316,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3372,6 +3387,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3316,6 +3316,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3372,6 +3387,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3314,6 +3314,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3370,6 +3385,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3341,6 +3341,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3397,6 +3412,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3355,6 +3355,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3411,6 +3426,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3341,6 +3341,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3397,6 +3412,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3287,6 +3287,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3343,6 +3358,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3296,6 +3296,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3352,6 +3367,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
|
||||
/**
|
||||
* @author Index, Mobius
|
||||
*/
|
||||
public class ItemEnchantHolder extends ItemHolder
|
||||
{
|
||||
private final int _enchantLevel;
|
||||
|
||||
public ItemEnchantHolder(StatSet set)
|
||||
{
|
||||
super(set);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = 0;
|
||||
}
|
||||
|
||||
public ItemEnchantHolder(int id, long count, int enchantLevel)
|
||||
{
|
||||
super(id, count);
|
||||
_enchantLevel = enchantLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return enchant level of items contained in this object
|
||||
*/
|
||||
public int getEnchantLevel()
|
||||
{
|
||||
return _enchantLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (!(obj instanceof ItemEnchantHolder objInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (obj == this)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return (getId() == objInstance.getId()) && ((getCount() == objInstance.getCount()) && (_enchantLevel == objInstance.getEnchantLevel()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[" + getClass().getSimpleName() + "] ID: " + getId() + ", count: " + getCount() + ", enchant level: " + _enchantLevel;
|
||||
}
|
||||
}
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3348,6 +3348,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3405,6 +3420,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3464,6 +3464,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject 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
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@ -3521,6 +3536,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user