Auto pickup for specific items.
This commit is contained in:
@@ -85,9 +85,6 @@ AutoLearnSkills = False
|
||||
# Default: False
|
||||
AutoLearnForgottenScrollSkills = False
|
||||
|
||||
# Default: False
|
||||
AutoLootHerbs = False
|
||||
|
||||
# Maximum number of buffs and songs/dances.
|
||||
# Remember that Divine Inspiration will give players 4 additional buff slots on top of the number specified in "maxbuffamount".
|
||||
# Default: 20, 12, 12
|
||||
@@ -679,6 +676,10 @@ StartingSP = 0
|
||||
# Default: 9999999999999 (9 Trillion 999 Billion 999 Million 999 Thousand 999 Adena)
|
||||
MaxAdena = 9999999999999
|
||||
|
||||
# Enable herbs auto pickup.
|
||||
# Default: False
|
||||
AutoLootHerbs = False
|
||||
|
||||
# This option, when set to True, will enable automatically picking up items.
|
||||
# If set False it will force the player to pickup dropped items from mobs.
|
||||
# This excludes herbs mentioned above and items from Raid/GrandBosses with minions.
|
||||
@@ -701,6 +702,12 @@ RaidLootRightsInterval = 900
|
||||
# Default: 45
|
||||
RaidLootRightsCCSize = 45
|
||||
|
||||
# Specific item ids for auto pickup.
|
||||
# Overrides all methods above.
|
||||
# Format: itemId,itemId,itemId,....
|
||||
# Default: 0
|
||||
AutoLootItemIds = 0
|
||||
|
||||
# This is the time in seconds that it will take for the player command "/unstuck" to activate.
|
||||
# Default: 300
|
||||
UnstuckInterval = 300
|
||||
|
@@ -263,6 +263,7 @@ public final class Config
|
||||
public static boolean AUTO_LOOT_RAIDS;
|
||||
public static int LOOT_RAIDS_PRIVILEGE_INTERVAL;
|
||||
public static int LOOT_RAIDS_PRIVILEGE_CC_SIZE;
|
||||
public static List<Integer> AUTO_LOOT_ITEM_IDS;
|
||||
public static int UNSTUCK_INTERVAL;
|
||||
public static int TELEPORT_WATCHDOG_TIMEOUT;
|
||||
public static int PLAYER_SPAWN_PROTECTION;
|
||||
@@ -1678,6 +1679,25 @@ public final class Config
|
||||
AUTO_LOOT_RAIDS = Character.getBoolean("AutoLootRaids", false);
|
||||
LOOT_RAIDS_PRIVILEGE_INTERVAL = Character.getInt("RaidLootRightsInterval", 900) * 1000;
|
||||
LOOT_RAIDS_PRIVILEGE_CC_SIZE = Character.getInt("RaidLootRightsCCSize", 45);
|
||||
final String[] autoLootItemIds = Character.getString("AutoLootItemIds", "0").split(",");
|
||||
AUTO_LOOT_ITEM_IDS = new ArrayList<>(autoLootItemIds.length);
|
||||
for (String item : autoLootItemIds)
|
||||
{
|
||||
Integer itm = 0;
|
||||
try
|
||||
{
|
||||
itm = Integer.parseInt(item);
|
||||
}
|
||||
catch (NumberFormatException nfe)
|
||||
{
|
||||
LOGGER.warning("Auto loot item ids: Wrong ItemId passed: " + item);
|
||||
LOGGER.warning(nfe.getMessage());
|
||||
}
|
||||
if (itm != 0)
|
||||
{
|
||||
AUTO_LOOT_ITEM_IDS.add(itm);
|
||||
}
|
||||
}
|
||||
UNSTUCK_INTERVAL = Character.getInt("UnstuckInterval", 300);
|
||||
TELEPORT_WATCHDOG_TIMEOUT = Character.getInt("TeleportWatchdogTimeout", 0);
|
||||
PLAYER_SPAWN_PROTECTION = Character.getInt("PlayerSpawnProtection", 0);
|
||||
|
@@ -212,7 +212,7 @@ public class ItemTable
|
||||
// Create and Init the L2ItemInstance corresponding to the Item Identifier
|
||||
final L2ItemInstance item = new L2ItemInstance(IdFactory.getInstance().getNextId(), itemId);
|
||||
|
||||
if (process.equalsIgnoreCase("loot"))
|
||||
if (process.equalsIgnoreCase("loot") && !Config.AUTO_LOOT_ITEM_IDS.contains(itemId))
|
||||
{
|
||||
ScheduledFuture<?> itemLootShedule;
|
||||
if ((reference instanceof L2Attackable) && ((L2Attackable) reference).isRaid()) // loot privilege for raids
|
||||
|
@@ -975,7 +975,7 @@ public class L2Attackable extends L2Npc
|
||||
{
|
||||
final L2Item item = ItemTable.getInstance().getTemplate(drop.getId());
|
||||
// Check if the autoLoot mode is active
|
||||
if (isFlying() || (!item.hasExImmediateEffect() && ((!isRaid() && Config.AUTO_LOOT) || (isRaid() && Config.AUTO_LOOT_RAIDS))))
|
||||
if (Config.AUTO_LOOT_ITEM_IDS.contains(item.getId()) || isFlying() || (!item.hasExImmediateEffect() && ((!isRaid() && Config.AUTO_LOOT) || (isRaid() && Config.AUTO_LOOT_RAIDS))))
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
@@ -1017,7 +1017,7 @@ public class L2Attackable extends L2Npc
|
||||
{
|
||||
final L2Item item = ItemTable.getInstance().getTemplate(drop.getId());
|
||||
// Check if the autoLoot mode is active
|
||||
if (isFlying() || (!item.hasExImmediateEffect() && ((!isRaid() && Config.AUTO_LOOT) || (isRaid() && Config.AUTO_LOOT_RAIDS))) || (item.hasExImmediateEffect() && Config.AUTO_LOOT_HERBS))
|
||||
if (Config.AUTO_LOOT_ITEM_IDS.contains(item.getId()) || isFlying() || (!item.hasExImmediateEffect() && ((!isRaid() && Config.AUTO_LOOT) || (isRaid() && Config.AUTO_LOOT_RAIDS))) || (item.hasExImmediateEffect() && Config.AUTO_LOOT_HERBS))
|
||||
{
|
||||
player.doAutoLoot(this, drop); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
@@ -1046,7 +1046,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
if ((player.getLevel() <= getLevel()) && (Rnd.get(100) < Config.CHAMPION_REWARD_LOWER_LVL_ITEM_CHANCE))
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
if (Config.AUTO_LOOT_ITEM_IDS.contains(item.getId()) || Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
@@ -1057,7 +1057,7 @@ public class L2Attackable extends L2Npc
|
||||
}
|
||||
else if ((player.getLevel() > getLevel()) && (Rnd.get(100) < Config.CHAMPION_REWARD_HIGHER_LVL_ITEM_CHANCE))
|
||||
{
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
if (Config.AUTO_LOOT_ITEM_IDS.contains(item.getId()) || Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.addItem("ChampionLoot", item.getId(), item.getCount(), this, true); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
@@ -1110,7 +1110,7 @@ public class L2Attackable extends L2Npc
|
||||
{
|
||||
final int itemId = drop.getEventDrop().getItemIdList()[Rnd.get(drop.getEventDrop().getItemIdList().length)];
|
||||
final long itemCount = Rnd.get(drop.getEventDrop().getMinCount(), drop.getEventDrop().getMaxCount());
|
||||
if (Config.AUTO_LOOT || isFlying())
|
||||
if (Config.AUTO_LOOT_ITEM_IDS.contains(itemId) || Config.AUTO_LOOT || isFlying())
|
||||
{
|
||||
player.doAutoLoot(this, itemId, itemCount); // Give the item(s) to the L2PcInstance that has killed the L2Attackable
|
||||
}
|
||||
|
Reference in New Issue
Block a user