Do not drop items when casting known skills to avoid exploits.
This commit is contained in:
parent
a50424f6ed
commit
e1bccf5b39
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Skill;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
@ -55,17 +56,27 @@ public class RequestDropItem extends ClientBasePacket
|
||||
_log.warning("tried to drop an item that is not in the inventory ?!?:" + objectId);
|
||||
return;
|
||||
}
|
||||
|
||||
final int oldCount = oldItem.getCount();
|
||||
ItemInstance dropedItem = null;
|
||||
if (oldCount < count)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((activeChar.getDistance(x, y) > 150.0) || (Math.abs(z - activeChar.getZ()) > 50))
|
||||
{
|
||||
activeChar.sendPacket(new SystemMessage(SystemMessage.CANNOT_DISCARD_DISTANCE_TOO_FAR));
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
final Skill skill = activeChar.getSkill();
|
||||
if ((skill != null) && activeChar.isSkillDisabled(skill.getId()) && (activeChar.getSkillLevel(skill.getId()) > 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (oldItem.isEquipped())
|
||||
{
|
||||
dropedItem = activeChar.getInventory().dropItem(objectId, count);
|
||||
@ -82,6 +93,7 @@ public class RequestDropItem extends ClientBasePacket
|
||||
dropedItem.setY(y);
|
||||
dropedItem.setZ(z);
|
||||
dropedItem.setOnTheGround(true);
|
||||
|
||||
final DropItem di = new DropItem(dropedItem, activeChar.getObjectId());
|
||||
activeChar.sendPacket(di);
|
||||
activeChar.addKnownObjectWithoutCreate(dropedItem);
|
||||
@ -89,6 +101,7 @@ public class RequestDropItem extends ClientBasePacket
|
||||
{
|
||||
player.addKnownObjectWithoutCreate(dropedItem);
|
||||
}
|
||||
|
||||
final InventoryUpdate iu = new InventoryUpdate();
|
||||
if (oldCount == dropedItem.getCount())
|
||||
{
|
||||
@ -99,6 +112,7 @@ public class RequestDropItem extends ClientBasePacket
|
||||
iu.addModifiedItem(oldItem);
|
||||
}
|
||||
activeChar.sendPacket(iu);
|
||||
|
||||
final SystemMessage sm = new SystemMessage(SystemMessage.YOU_DROPPED_S1);
|
||||
sm.addItemName(dropedItem.getItemId());
|
||||
activeChar.sendPacket(sm);
|
||||
|
@ -165,15 +165,23 @@ public class RequestDropItem extends GameClientPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
final SkillDat skillDat = player.getCurrentSkill();
|
||||
if ((skillDat != null) && (skillDat.getSkill().getItemConsumeId() == item.getItemId()) //
|
||||
&& ((player.getInventory().getInventoryItemCount(item.getItemId(), -1) - skillDat.getSkill().getItemConsume()) < _count))
|
||||
final SkillDat skill = player.getCurrentSkill();
|
||||
if (skill != null)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if ((skill.getSkill().getItemConsumeId() == item.getItemId()) && ((player.getInventory().getInventoryItemCount(item.getItemId(), -1) - skill.getSkill().getItemConsume()) < _count))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.getKnownSkill(skill.getSkillId()) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,27 +140,43 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
final SkillUseHolder skill = player.getCurrentSkill();
|
||||
if ((skill != null) && (skill.getSkill().getItemConsumeId() == item.getId()) //
|
||||
&& ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getSkill().getItemConsumeCount()) < _count))
|
||||
if (skill != null)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if ((skill.getSkill().getItemConsumeId() == item.getId()) && ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getSkill().getItemConsumeCount()) < _count))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.getKnownSkill(skill.getSkillId()) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if (player.isCastingSimultaneouslyNow())
|
||||
{
|
||||
final Skill skill = player.getLastSimultaneousSkillCast();
|
||||
if ((skill != null) && (skill.getItemConsumeId() == item.getId()) //
|
||||
&& ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getItemConsumeCount()) < _count))
|
||||
if (skill != null)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if ((skill.getItemConsumeId() == item.getId()) && ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getItemConsumeCount()) < _count))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.getKnownSkill(skill.getId()) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,27 +140,43 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
final SkillUseHolder skill = player.getCurrentSkill();
|
||||
if ((skill != null) && (skill.getSkill().getItemConsumeId() == item.getId()) //
|
||||
&& ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getSkill().getItemConsumeCount()) < _count))
|
||||
if (skill != null)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if ((skill.getSkill().getItemConsumeId() == item.getId()) && ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getSkill().getItemConsumeCount()) < _count))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.getKnownSkill(skill.getSkillId()) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if (player.isCastingSimultaneouslyNow())
|
||||
{
|
||||
final Skill skill = player.getLastSimultaneousSkillCast();
|
||||
if ((skill != null) && (skill.getItemConsumeId() == item.getId()) //
|
||||
&& ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getItemConsumeCount()) < _count))
|
||||
if (skill != null)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
// Cannot discard item that the skill is consuming.
|
||||
if ((skill.getItemConsumeId() == item.getId()) && ((player.getInventory().getInventoryItemCount(item.getId(), -1) - skill.getItemConsumeCount()) < _count))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.getKnownSkill(skill.getId()) != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
@ -22,11 +22,14 @@ import org.l2jmobius.gameserver.data.xml.impl.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.PlayerCondOverride;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.items.type.ActionType;
|
||||
import org.l2jmobius.gameserver.model.items.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@ -168,6 +171,24 @@ public class RequestDropItem implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not drop items when casting known skills to avoid exploits.
|
||||
if (player.isCastingNow())
|
||||
{
|
||||
for (SkillCaster skillCaster : player.getSkillCasters())
|
||||
{
|
||||
final Skill skill = skillCaster.getSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
final SkillUseHolder skill = player.getQueuedSkill();
|
||||
if ((skill != null) && (player.getKnownSkill(skill.getSkillId()) != null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.isEquipped())
|
||||
{
|
||||
player.getInventory().unEquipItemInSlot(item.getLocationSlot());
|
||||
|
Loading…
Reference in New Issue
Block a user