From 7e327f140239f021b5efd3549df360c784faae93 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 23 Mar 2022 11:12:02 +0000 Subject: [PATCH] Support for item daily reuse reset. --- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 78 ++++++++++++++++++- .../instancemanager/DailyTaskManager.java | 78 ++++++++++++++++++- .../instancemanager/DailyTaskManager.java | 78 ++++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- .../instancemanager/DailyTaskManager.java | 77 +++++++++++++++++- 21 files changed, 1578 insertions(+), 42 deletions(-) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 6779359988..ce88b59257 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -58,6 +61,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -111,6 +118,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -235,13 +243,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -250,9 +259,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(false); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 6779359988..ce88b59257 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -58,6 +61,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -111,6 +118,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -235,13 +243,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -250,9 +259,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(false); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 91e7e3cc13..ad712b7b29 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -30,14 +30,17 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -56,6 +59,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -110,6 +117,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -227,13 +235,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -242,9 +251,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 91e7e3cc13..ad712b7b29 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -30,14 +30,17 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -56,6 +59,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -110,6 +117,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -227,13 +235,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -242,9 +251,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 91e7e3cc13..ad712b7b29 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -30,14 +30,17 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -56,6 +59,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -110,6 +117,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -227,13 +235,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -242,9 +251,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 5e48831a81..680089efa8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -30,6 +30,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -58,6 +61,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -113,6 +120,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -231,13 +239,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -246,9 +255,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 4770ca5d96..54c219673f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -40,8 +41,10 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -60,6 +63,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + }; protected DailyTaskManager() { @@ -115,6 +122,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -235,13 +243,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -250,9 +259,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 4770ca5d96..bec8c8bc6d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -40,8 +41,10 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -60,6 +63,11 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + 60011, // Festival Fairy's Good Luck Bag + }; protected DailyTaskManager() { @@ -115,6 +123,7 @@ public class DailyTaskManager // Daily tasks. resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -235,13 +244,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -250,9 +260,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 1b4ec1e9f1..aef3c0f775 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -33,6 +33,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -62,6 +65,11 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + 60011, // Festival Fairy's Good Luck Bag + }; protected DailyTaskManager() { @@ -118,6 +126,7 @@ public class DailyTaskManager // Daily tasks. resetAttendanceRewards(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetHomunculusResetPoints(); @@ -238,13 +247,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -253,9 +263,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 1b4ec1e9f1..aef3c0f775 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -33,6 +33,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -62,6 +65,11 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 47387, // Balthus Knights Supply Items + 60011, // Festival Fairy's Good Luck Bag + }; protected DailyTaskManager() { @@ -118,6 +126,7 @@ public class DailyTaskManager // Daily tasks. resetAttendanceRewards(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetHomunculusResetPoints(); @@ -238,13 +247,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -253,9 +263,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c8d54b47ee..103197b676 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -59,6 +62,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -112,6 +119,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -237,13 +245,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -252,9 +261,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(false); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c8d54b47ee..103197b676 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -59,6 +62,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -112,6 +119,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -237,13 +245,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -252,9 +261,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(false); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c8d54b47ee..0fe0e1348a 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -59,6 +62,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -112,6 +119,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -237,13 +245,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -252,9 +261,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c8d54b47ee..0fe0e1348a 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -59,6 +62,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -112,6 +119,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -237,13 +245,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -252,9 +261,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c8d54b47ee..0fe0e1348a 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -59,6 +62,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -112,6 +119,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -237,13 +245,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -252,9 +261,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 26d279b253..86e4718cc3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; @@ -40,8 +41,10 @@ import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -61,6 +64,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -115,6 +122,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetWorldChatPoints(); resetRecommends(); @@ -241,13 +249,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -256,9 +265,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 6779359988..ebefab5b51 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Player; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.SubClassHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo; @@ -58,6 +61,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -111,6 +118,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetWorldChatPoints(); resetDailyPrimeShopData(); resetRecommends(); @@ -235,13 +243,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -250,9 +259,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(false); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index ae889f32c1..4e9c81d7b4 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -63,6 +66,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -118,6 +125,7 @@ public class DailyTaskManager // Daily tasks. resetClanBonus(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetWorldChatPoints(); @@ -253,13 +261,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -268,9 +277,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetWorldChatPoints() { if (!Config.ENABLE_WORLD_CHAT) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index 8e9d2b7485..3c9c8fdf92 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -63,6 +66,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -120,6 +127,7 @@ public class DailyTaskManager resetClanContributionList(); resetClanDonationPoints(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetWorldChatPoints(); @@ -263,13 +271,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -278,9 +287,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetClanDonationPoints() { try (Connection con = DatabaseFactory.getConnection()) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c93a61c444..f8445585c5 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -63,6 +66,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -121,6 +128,7 @@ public class DailyTaskManager resetClanDonationPoints(); resetDailyHennaPattern(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetWorldChatPoints(); @@ -264,13 +272,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -279,9 +288,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetClanDonationPoints() { try (Connection con = DatabaseFactory.getConnection()) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java index c93a61c444..f8445585c5 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java @@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.data.xml.LimitShopData; import org.l2jmobius.gameserver.data.xml.PrimeShopData; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.World; @@ -42,8 +43,10 @@ import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder; import org.l2jmobius.gameserver.model.holders.SubClassHolder; import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; +import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup; +import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.AccountVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.vip.VipManager; @@ -63,6 +66,10 @@ public class DailyTaskManager 2510, // Wondrous Cubic 22180, // Wondrous Cubic - 1 time use }; + private static final int[] RESET_ITEMS = + { + 49782, // Balthus Knights' Supply Box + }; protected DailyTaskManager() { @@ -121,6 +128,7 @@ public class DailyTaskManager resetClanDonationPoints(); resetDailyHennaPattern(); resetDailySkills(); + resetDailyItems(); resetDailyPrimeShopData(); resetDailyLimitShopData(); resetWorldChatPoints(); @@ -264,13 +272,14 @@ public class DailyTaskManager private void resetDailySkills() { + // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) { - for (int skill : RESET_SKILLS) + for (int skillId : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill); + ps.setInt(1, skillId); ps.execute(); } } @@ -279,9 +288,73 @@ public class DailyTaskManager { LOGGER.log(Level.SEVERE, "Could not reset daily skill reuse: ", e); } + + // Update data for online players. + // final Set updates = new HashSet<>(); + for (int skillId : RESET_SKILLS) + { + final Skill skill = SkillData.getInstance().getSkill(skillId, 1 /* No known need for more levels */); + if (skill != null) + { + for (Player player : World.getInstance().getPlayers()) + { + if (player.hasSkillReuse(skill.getReuseHashCode())) + { + player.removeTimeStamp(skill); + // updates.add(player); + } + } + } + } + // for (Player player : updates) + // { + // player.sendSkillList(); + // } + LOGGER.info("Daily skill reuse cleaned."); } + private void resetDailyItems() + { + // Update data for offline players. + try (Connection con = DatabaseFactory.getConnection()) + { + for (int itemId : RESET_ITEMS) + { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_item_reuse_save WHERE itemId=?;")) + { + ps.setInt(1, itemId); + ps.execute(); + } + } + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Could not reset daily item reuse: ", e); + } + + // Update data for online players. + boolean update; + for (Player player : World.getInstance().getPlayers()) + { + update = false; + for (int itemId : RESET_ITEMS) + { + for (Item item : player.getInventory().getAllItemsByItemId(itemId)) + { + player.getItemReuseTimeStamps().remove(item.getObjectId()); + update = true; + } + } + if (update) + { + player.sendItemList(); + } + } + + LOGGER.info("Daily item reuse cleaned."); + } + private void resetClanDonationPoints() { try (Connection con = DatabaseFactory.getConnection())