DailyTaskManager weekly reset improvements.
Thanks to nasseka.
This commit is contained in:
@@ -3,7 +3,6 @@
|
|||||||
<zone id="1" name="Storm Isle">
|
<zone id="1" name="Storm Isle">
|
||||||
<enterLocation>194291,176604,-1888</enterLocation>
|
<enterLocation>194291,176604,-1888</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
<zone id="6" name="Primeval Isle">
|
<zone id="6" name="Primeval Isle">
|
||||||
<enterLocation>9400,-21720,-3634</enterLocation>
|
<enterLocation>9400,-21720,-3634</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
@@ -23,6 +23,16 @@
|
|||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="resetThroneOfHeroes" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetThroneOfHeroes" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
||||||
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onVitalityReset" />
|
<event name="#onVitalityReset" />
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -38,6 +39,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
||||||
@@ -67,6 +69,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetRecommends();
|
resetRecommends();
|
||||||
resetWorldChatPoints();
|
resetWorldChatPoints();
|
||||||
resetTrainingCamp();
|
resetTrainingCamp();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -252,6 +255,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public static DailyTaskManager getInstance()
|
public static DailyTaskManager getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
@@ -3,9 +3,8 @@
|
|||||||
<zone id="1" name="Storm Isle">
|
<zone id="1" name="Storm Isle">
|
||||||
<enterLocation>194291,176604,-1888</enterLocation>
|
<enterLocation>194291,176604,-1888</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>100</minLevel>
|
<minLevel>100</minLevel>
|
||||||
@@ -14,9 +13,8 @@
|
|||||||
<zone id="6" name="Primeval Isle">
|
<zone id="6" name="Primeval Isle">
|
||||||
<enterLocation>9400,-21720,-3634</enterLocation>
|
<enterLocation>9400,-21720,-3634</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>105</minLevel>
|
<minLevel>105</minLevel>
|
||||||
@@ -25,9 +23,8 @@
|
|||||||
<zone id="7" name="Golden Altar">
|
<zone id="7" name="Golden Altar">
|
||||||
<enterLocation>-122259,73678,-2872</enterLocation>
|
<enterLocation>-122259,73678,-2872</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>107</minLevel>
|
<minLevel>107</minLevel>
|
||||||
@@ -36,9 +33,8 @@
|
|||||||
<zone id="11" name="Abandoned Coal Mines">
|
<zone id="11" name="Abandoned Coal Mines">
|
||||||
<enterLocation>139411,-169382,-1600</enterLocation>
|
<enterLocation>139411,-169382,-1600</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>18000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>99</minLevel>
|
<minLevel>99</minLevel>
|
||||||
@@ -47,9 +43,8 @@
|
|||||||
<zone id="8" name="Tower of Insolence">
|
<zone id="8" name="Tower of Insolence">
|
||||||
<enterLocation>-82014,16247,-15416</enterLocation>
|
<enterLocation>-82014,16247,-15416</enterLocation>
|
||||||
<initialTime>36000</initialTime> <!-- 10 hours -->
|
<initialTime>36000</initialTime> <!-- 10 hours -->
|
||||||
<resetDelay>604800</resetDelay> <!-- 7 days -->
|
<maxAddedTime>36000</maxAddedTime> <!-- 12 hours -->
|
||||||
<maxAddedTime>43200</maxAddedTime> <!-- 12 hours -->
|
<remainRefillTime>0</remainRefillTime>
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>110</minLevel>
|
<minLevel>110</minLevel>
|
||||||
@@ -59,9 +54,8 @@
|
|||||||
<zone id="12" name="Imperial Tomb">
|
<zone id="12" name="Imperial Tomb">
|
||||||
<enterLocation>181409,-78389,-2728</enterLocation>
|
<enterLocation>181409,-78389,-2728</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
|
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>0</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>105</minLevel>
|
<minLevel>105</minLevel>
|
||||||
|
@@ -23,6 +23,16 @@
|
|||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="resetThroneOfHeroes" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetThroneOfHeroes" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
||||||
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onVitalityReset" />
|
<event name="#onVitalityReset" />
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -29,6 +29,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
||||||
@@ -69,8 +71,8 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetRecommends();
|
resetRecommends();
|
||||||
resetWorldChatPoints();
|
resetWorldChatPoints();
|
||||||
resetTrainingCamp();
|
resetTrainingCamp();
|
||||||
resetThroneOfHeroes();
|
|
||||||
resetHomunculusResetPoints();
|
resetHomunculusResetPoints();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -299,7 +301,8 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetThroneOfHeroes()
|
@ScheduleTarget
|
||||||
|
public void onResetThroneOfHeroes()
|
||||||
{
|
{
|
||||||
// Update data for offline players.
|
// Update data for offline players.
|
||||||
try (Connection con = DatabaseFactory.getConnection())
|
try (Connection con = DatabaseFactory.getConnection())
|
||||||
@@ -334,6 +337,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
LOGGER.info("Throne of Heroes Entry has been resetted.");
|
LOGGER.info("Throne of Heroes Entry has been resetted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public void resetHomunculusResetPoints()
|
public void resetHomunculusResetPoints()
|
||||||
{
|
{
|
||||||
// Update data for offline players.
|
// Update data for offline players.
|
||||||
@@ -357,10 +395,10 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
// Update data for online players.
|
// Update data for online players.
|
||||||
for (PlayerInstance player : World.getInstance().getPlayers())
|
for (PlayerInstance player : World.getInstance().getPlayers())
|
||||||
{
|
{
|
||||||
player.getVariables().set("HOMUNCULUS_USED_RESET_KILLS", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_RESET_VP, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_KILL_CONVERT", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_VP_CONVERT, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_RESET_VP", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_RESET_KILLS, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_VP_CONVERT", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_KILL_CONVERT, 0);
|
||||||
player.getVariables().storeMe();
|
player.getVariables().storeMe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,9 +3,8 @@
|
|||||||
<zone id="1" name="Storm Isle">
|
<zone id="1" name="Storm Isle">
|
||||||
<enterLocation>194291,176604,-1888</enterLocation>
|
<enterLocation>194291,176604,-1888</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>100</minLevel>
|
<minLevel>100</minLevel>
|
||||||
@@ -14,9 +13,8 @@
|
|||||||
<zone id="6" name="Primeval Isle">
|
<zone id="6" name="Primeval Isle">
|
||||||
<enterLocation>9400,-21720,-3634</enterLocation>
|
<enterLocation>9400,-21720,-3634</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>105</minLevel>
|
<minLevel>105</minLevel>
|
||||||
@@ -25,9 +23,8 @@
|
|||||||
<zone id="7" name="Golden Altar">
|
<zone id="7" name="Golden Altar">
|
||||||
<enterLocation>-122259,73678,-2872</enterLocation>
|
<enterLocation>-122259,73678,-2872</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>107</minLevel>
|
<minLevel>107</minLevel>
|
||||||
@@ -36,9 +33,8 @@
|
|||||||
<zone id="11" name="Abandoned Coal Mines">
|
<zone id="11" name="Abandoned Coal Mines">
|
||||||
<enterLocation>139411,-169382,-1600</enterLocation>
|
<enterLocation>139411,-169382,-1600</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>18000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>99</minLevel>
|
<minLevel>99</minLevel>
|
||||||
@@ -47,9 +43,8 @@
|
|||||||
<zone id="8" name="Tower of Insolence">
|
<zone id="8" name="Tower of Insolence">
|
||||||
<enterLocation>-82014,16247,-15416</enterLocation>
|
<enterLocation>-82014,16247,-15416</enterLocation>
|
||||||
<initialTime>36000</initialTime> <!-- 10 hours -->
|
<initialTime>36000</initialTime> <!-- 10 hours -->
|
||||||
<resetDelay>604800</resetDelay> <!-- 7 days -->
|
<maxAddedTime>36000</maxAddedTime> <!-- 12 hours -->
|
||||||
<maxAddedTime>43200</maxAddedTime> <!-- 12 hours -->
|
<remainRefillTime>0</remainRefillTime>
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>110</minLevel>
|
<minLevel>110</minLevel>
|
||||||
@@ -59,20 +54,28 @@
|
|||||||
<zone id="12" name="Imperial Tomb">
|
<zone id="12" name="Imperial Tomb">
|
||||||
<enterLocation>181409,-78389,-2728</enterLocation>
|
<enterLocation>181409,-78389,-2728</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
|
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>0</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>105</minLevel>
|
<minLevel>105</minLevel>
|
||||||
<maxLevel>130</maxLevel>
|
<maxLevel>130</maxLevel>
|
||||||
</zone>
|
</zone>
|
||||||
|
<!--<zone id="13" name="Corroded Fields">
|
||||||
|
<enterLocation>90327,198818,-3280</enterLocation>
|
||||||
|
<initialTime>3600</initialTime> 1 hour
|
||||||
|
<maxAddedTime>3600</maxAddedTime> 1 hour
|
||||||
|
<remainRefillTime>43200</remainRefillTime>
|
||||||
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
<entryFee>150000</entryFee>
|
||||||
|
<minLevel>100</minLevel>
|
||||||
|
<maxLevel>130</maxLevel>
|
||||||
|
</zone>-->
|
||||||
<zone id="14" name="Otherworldly Atelia Refinery">
|
<zone id="14" name="Otherworldly Atelia Refinery">
|
||||||
<enterLocation>-49013,15351,-8808</enterLocation>
|
<enterLocation>-49013,15351,-8808</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
<entryFee>150000</entryFee>
|
<entryFee>150000</entryFee>
|
||||||
<minLevel>112</minLevel>
|
<minLevel>112</minLevel>
|
||||||
|
@@ -23,6 +23,16 @@
|
|||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="resetThroneOfHeroes" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetThroneOfHeroes" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
||||||
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onVitalityReset" />
|
<event name="#onVitalityReset" />
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -29,6 +29,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
|
||||||
@@ -69,8 +71,8 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetRecommends();
|
resetRecommends();
|
||||||
resetWorldChatPoints();
|
resetWorldChatPoints();
|
||||||
resetTrainingCamp();
|
resetTrainingCamp();
|
||||||
resetThroneOfHeroes();
|
|
||||||
resetHomunculusResetPoints();
|
resetHomunculusResetPoints();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -299,7 +301,8 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetThroneOfHeroes()
|
@ScheduleTarget
|
||||||
|
public void onResetThroneOfHeroes()
|
||||||
{
|
{
|
||||||
// Update data for offline players.
|
// Update data for offline players.
|
||||||
try (Connection con = DatabaseFactory.getConnection())
|
try (Connection con = DatabaseFactory.getConnection())
|
||||||
@@ -334,6 +337,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
LOGGER.info("Throne of Heroes Entry has been resetted.");
|
LOGGER.info("Throne of Heroes Entry has been resetted.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public void resetHomunculusResetPoints()
|
public void resetHomunculusResetPoints()
|
||||||
{
|
{
|
||||||
// Update data for offline players.
|
// Update data for offline players.
|
||||||
@@ -357,10 +395,10 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
// Update data for online players.
|
// Update data for online players.
|
||||||
for (PlayerInstance player : World.getInstance().getPlayers())
|
for (PlayerInstance player : World.getInstance().getPlayers())
|
||||||
{
|
{
|
||||||
player.getVariables().set("HOMUNCULUS_USED_RESET_KILLS", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_RESET_VP, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_KILL_CONVERT", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_VP_CONVERT, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_RESET_VP", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_RESET_KILLS, 0);
|
||||||
player.getVariables().set("HOMUNCULUS_USED_VP_CONVERT", 0);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_USED_KILL_CONVERT, 0);
|
||||||
player.getVariables().storeMe();
|
player.getVariables().storeMe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
<zone id="2" name="Ancient Pirates' Tomb">
|
<zone id="2" name="Ancient Pirates' Tomb">
|
||||||
<enterLocation>17613,-76862,-6265</enterLocation>
|
<enterLocation>17613,-76862,-6265</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>18000</maxAddedTime> <!-- 5 hours -->
|
<maxAddedTime>18000</maxAddedTime> <!-- 5 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
@@ -23,12 +23,16 @@
|
|||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
|
|
||||||
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->
|
||||||
<!-- <schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
<!-- <schedule name="vitalityReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onVitalityReset" />
|
<event name="#onVitalityReset" />
|
||||||
</schedule> -->
|
</schedule> -->
|
||||||
|
|
||||||
|
|
||||||
<!-- Attach condition to reset if server boots up in after 6:30 and hasn't reset yet -->
|
<!-- Attach condition to reset if server boots up in after 6:30 and hasn't reset yet -->
|
||||||
<!-- <conditionalSchedule>
|
<!-- <conditionalSchedule>
|
||||||
<run name="reset" if="HASNT_RUN" />
|
<run name="reset" if="HASNT_RUN" />
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -38,6 +39,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
@@ -71,6 +73,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetWorldChatPoints();
|
resetWorldChatPoints();
|
||||||
resetTrainingCamp();
|
resetTrainingCamp();
|
||||||
resetVip();
|
resetVip();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -280,6 +283,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public static DailyTaskManager getInstance()
|
public static DailyTaskManager getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
<zone id="1" name="Primeval Isle">
|
<zone id="1" name="Primeval Isle">
|
||||||
<enterLocation>6025,-2274,-2990</enterLocation>
|
<enterLocation>6025,-2274,-2990</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>43200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
<zone id="4" name="Forgotten Primeval Garden">
|
<zone id="4" name="Forgotten Primeval Garden">
|
||||||
<enterLocation>-112937,213590,-13248</enterLocation>
|
<enterLocation>-112937,213590,-13248</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>18000</remainRefillTime>
|
<remainRefillTime>18000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -25,7 +23,6 @@
|
|||||||
<zone id="11" name="Alligator Island">
|
<zone id="11" name="Alligator Island">
|
||||||
<enterLocation>115528,191580,-3371</enterLocation>
|
<enterLocation>115528,191580,-3371</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>7200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -36,7 +33,6 @@
|
|||||||
<zone id="12" name="Antharas Lair">
|
<zone id="12" name="Antharas Lair">
|
||||||
<enterLocation>133247,114445,-3724</enterLocation>
|
<enterLocation>133247,114445,-3724</enterLocation>
|
||||||
<initialTime>25200</initialTime> <!-- 7 hours -->
|
<initialTime>25200</initialTime> <!-- 7 hours -->
|
||||||
<resetDelay>604800</resetDelay> <!-- 7 days -->
|
|
||||||
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
||||||
<remainRefillTime>126000</remainRefillTime>
|
<remainRefillTime>126000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -48,7 +44,6 @@
|
|||||||
<zone id="101" name="Transcendent Instance Zone 1">
|
<zone id="101" name="Transcendent Instance Zone 1">
|
||||||
<enterLocation>63443,26304,-3755</enterLocation>
|
<enterLocation>63443,26304,-3755</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -60,7 +55,6 @@
|
|||||||
<zone id="102" name="Transcendent Instance Zone 2">
|
<zone id="102" name="Transcendent Instance Zone 2">
|
||||||
<enterLocation>125277,70262,-4408</enterLocation>
|
<enterLocation>125277,70262,-4408</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -72,7 +66,6 @@
|
|||||||
<zone id="103" name="Transcendent Instance Zone 3">
|
<zone id="103" name="Transcendent Instance Zone 3">
|
||||||
<enterLocation>148724,-22366,-3436</enterLocation>
|
<enterLocation>148724,-22366,-3436</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -84,7 +77,6 @@
|
|||||||
<zone id="104" name="Transcendent Instance Zone 4">
|
<zone id="104" name="Transcendent Instance Zone 4">
|
||||||
<enterLocation>167965,28800,-3606</enterLocation>
|
<enterLocation>167965,28800,-3606</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -96,7 +88,6 @@
|
|||||||
<zone id="106" name="Transcendent Instance Zone 6">
|
<zone id="106" name="Transcendent Instance Zone 6">
|
||||||
<enterLocation>99797,110524,-3702</enterLocation>
|
<enterLocation>99797,110524,-3702</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -108,7 +99,6 @@
|
|||||||
<zone id="107" name="Transcendent Instance Zone 7">
|
<zone id="107" name="Transcendent Instance Zone 7">
|
||||||
<enterLocation>-50416,145363,-2825</enterLocation>
|
<enterLocation>-50416,145363,-2825</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
@@ -22,6 +22,11 @@
|
|||||||
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
</scheduler>
|
</scheduler>
|
||||||
</event>
|
</event>
|
||||||
</list>
|
</list>
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -31,6 +31,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -42,6 +43,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
@@ -76,6 +78,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetTrainingCamp();
|
resetTrainingCamp();
|
||||||
resetVitality();
|
resetVitality();
|
||||||
resetVip();
|
resetVip();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -350,6 +353,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public static DailyTaskManager getInstance()
|
public static DailyTaskManager getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
<zone id="1" name="Primeval Isle">
|
<zone id="1" name="Primeval Isle">
|
||||||
<enterLocation>6025,-2274,-2990</enterLocation>
|
<enterLocation>6025,-2274,-2990</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>43200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
<zone id="4" name="Forgotten Primeval Garden">
|
<zone id="4" name="Forgotten Primeval Garden">
|
||||||
<enterLocation>-112937,213590,-13248</enterLocation>
|
<enterLocation>-112937,213590,-13248</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>18000</remainRefillTime>
|
<remainRefillTime>18000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -25,7 +23,6 @@
|
|||||||
<zone id="11" name="Alligator Island">
|
<zone id="11" name="Alligator Island">
|
||||||
<enterLocation>115528,191580,-3371</enterLocation>
|
<enterLocation>115528,191580,-3371</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>7200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -36,7 +33,6 @@
|
|||||||
<zone id="12" name="Antharas Lair">
|
<zone id="12" name="Antharas Lair">
|
||||||
<enterLocation>133247,114445,-3724</enterLocation>
|
<enterLocation>133247,114445,-3724</enterLocation>
|
||||||
<initialTime>25200</initialTime> <!-- 7 hours -->
|
<initialTime>25200</initialTime> <!-- 7 hours -->
|
||||||
<resetDelay>604800</resetDelay> <!-- 7 days -->
|
|
||||||
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
||||||
<remainRefillTime>126000</remainRefillTime>
|
<remainRefillTime>126000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -48,7 +44,6 @@
|
|||||||
<zone id="101" name="Transcendent Instance Zone 1">
|
<zone id="101" name="Transcendent Instance Zone 1">
|
||||||
<enterLocation>63443,26304,-3755</enterLocation>
|
<enterLocation>63443,26304,-3755</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -60,7 +55,6 @@
|
|||||||
<zone id="102" name="Transcendent Instance Zone 2">
|
<zone id="102" name="Transcendent Instance Zone 2">
|
||||||
<enterLocation>125277,70262,-4408</enterLocation>
|
<enterLocation>125277,70262,-4408</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -72,7 +66,6 @@
|
|||||||
<zone id="103" name="Transcendent Instance Zone 3">
|
<zone id="103" name="Transcendent Instance Zone 3">
|
||||||
<enterLocation>148724,-22366,-3436</enterLocation>
|
<enterLocation>148724,-22366,-3436</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -84,7 +77,6 @@
|
|||||||
<zone id="104" name="Transcendent Instance Zone 4">
|
<zone id="104" name="Transcendent Instance Zone 4">
|
||||||
<enterLocation>167965,28800,-3606</enterLocation>
|
<enterLocation>167965,28800,-3606</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -96,7 +88,6 @@
|
|||||||
<zone id="106" name="Transcendent Instance Zone 6">
|
<zone id="106" name="Transcendent Instance Zone 6">
|
||||||
<enterLocation>99797,110524,-3702</enterLocation>
|
<enterLocation>99797,110524,-3702</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -108,7 +99,6 @@
|
|||||||
<zone id="107" name="Transcendent Instance Zone 7">
|
<zone id="107" name="Transcendent Instance Zone 7">
|
||||||
<enterLocation>-50416,145363,-2825</enterLocation>
|
<enterLocation>-50416,145363,-2825</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
@@ -22,6 +22,11 @@
|
|||||||
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
</scheduler>
|
</scheduler>
|
||||||
</event>
|
</event>
|
||||||
</list>
|
</list>
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -31,6 +31,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -42,6 +43,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
@@ -77,6 +79,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetVitality();
|
resetVitality();
|
||||||
resetVip();
|
resetVip();
|
||||||
resetClanDonationPoints();
|
resetClanDonationPoints();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -381,6 +384,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public static DailyTaskManager getInstance()
|
public static DailyTaskManager getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
<zone id="1" name="Primeval Isle">
|
<zone id="1" name="Primeval Isle">
|
||||||
<enterLocation>6025,-2274,-2990</enterLocation>
|
<enterLocation>6025,-2274,-2990</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>43200</remainRefillTime>
|
<remainRefillTime>43200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
<zone id="4" name="Forgotten Primeval Garden">
|
<zone id="4" name="Forgotten Primeval Garden">
|
||||||
<enterLocation>-112937,213590,-13248</enterLocation>
|
<enterLocation>-112937,213590,-13248</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
|
||||||
<remainRefillTime>18000</remainRefillTime>
|
<remainRefillTime>18000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -25,7 +23,6 @@
|
|||||||
<zone id="11" name="Alligator Island">
|
<zone id="11" name="Alligator Island">
|
||||||
<enterLocation>115528,191580,-3371</enterLocation>
|
<enterLocation>115528,191580,-3371</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>7200</remainRefillTime>
|
<remainRefillTime>7200</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -36,7 +33,6 @@
|
|||||||
<zone id="12" name="Antharas Lair">
|
<zone id="12" name="Antharas Lair">
|
||||||
<enterLocation>133247,114445,-3724</enterLocation>
|
<enterLocation>133247,114445,-3724</enterLocation>
|
||||||
<initialTime>25200</initialTime> <!-- 7 hours -->
|
<initialTime>25200</initialTime> <!-- 7 hours -->
|
||||||
<resetDelay>604800</resetDelay> <!-- 7 days -->
|
|
||||||
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
<maxAddedTime>151200</maxAddedTime> <!-- 42 hours -->
|
||||||
<remainRefillTime>126000</remainRefillTime>
|
<remainRefillTime>126000</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -48,7 +44,6 @@
|
|||||||
<zone id="101" name="Transcendent Instance Zone 1">
|
<zone id="101" name="Transcendent Instance Zone 1">
|
||||||
<enterLocation>63443,26304,-3755</enterLocation>
|
<enterLocation>63443,26304,-3755</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -60,7 +55,6 @@
|
|||||||
<zone id="102" name="Transcendent Instance Zone 2">
|
<zone id="102" name="Transcendent Instance Zone 2">
|
||||||
<enterLocation>125277,70262,-4408</enterLocation>
|
<enterLocation>125277,70262,-4408</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -72,7 +66,6 @@
|
|||||||
<zone id="103" name="Transcendent Instance Zone 3">
|
<zone id="103" name="Transcendent Instance Zone 3">
|
||||||
<enterLocation>148724,-22366,-3436</enterLocation>
|
<enterLocation>148724,-22366,-3436</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -84,7 +77,6 @@
|
|||||||
<zone id="104" name="Transcendent Instance Zone 4">
|
<zone id="104" name="Transcendent Instance Zone 4">
|
||||||
<enterLocation>167965,28800,-3606</enterLocation>
|
<enterLocation>167965,28800,-3606</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -96,7 +88,6 @@
|
|||||||
<zone id="106" name="Transcendent Instance Zone 6">
|
<zone id="106" name="Transcendent Instance Zone 6">
|
||||||
<enterLocation>99797,110524,-3702</enterLocation>
|
<enterLocation>99797,110524,-3702</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
@@ -108,7 +99,6 @@
|
|||||||
<zone id="107" name="Transcendent Instance Zone 7">
|
<zone id="107" name="Transcendent Instance Zone 7">
|
||||||
<enterLocation>-50416,145363,-2825</enterLocation>
|
<enterLocation>-50416,145363,-2825</enterLocation>
|
||||||
<initialTime>3600</initialTime> <!-- 1 hour -->
|
<initialTime>3600</initialTime> <!-- 1 hour -->
|
||||||
<resetDelay>36000</resetDelay> <!-- 10 hours -->
|
|
||||||
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
<maxAddedTime>46800</maxAddedTime> <!-- 13 hours -->
|
||||||
<remainRefillTime>3600</remainRefillTime>
|
<remainRefillTime>3600</remainRefillTime>
|
||||||
<refillTimeMax>3600</refillTimeMax>
|
<refillTimeMax>3600</refillTimeMax>
|
||||||
|
@@ -22,6 +22,11 @@
|
|||||||
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
<schedule name="clanLeaderApply" hour="06" minute="30" dayOfWeek="3">
|
||||||
<event name="#onClanLeaderApply" />
|
<event name="#onClanLeaderApply" />
|
||||||
</schedule>
|
</schedule>
|
||||||
|
|
||||||
|
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
|
||||||
|
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
|
||||||
|
<event name="#onResetTimedHuntingZones" />
|
||||||
|
</schedule>
|
||||||
</scheduler>
|
</scheduler>
|
||||||
</event>
|
</event>
|
||||||
</list>
|
</list>
|
@@ -7,7 +7,7 @@
|
|||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" name="enterLocation" />
|
<xs:element type="xs:string" name="enterLocation" />
|
||||||
<xs:element type="xs:int" name="initialTime" />
|
<xs:element type="xs:int" name="initialTime" />
|
||||||
<xs:element type="xs:int" name="resetDelay" />
|
<xs:element type="xs:int" name="resetDelay" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="maxAddedTime" />
|
<xs:element type="xs:int" name="maxAddedTime" />
|
||||||
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
<xs:element type="xs:int" name="remainRefillTime" minOccurs="0" />
|
||||||
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
<xs:element type="xs:int" name="refillTimeMax" minOccurs="0" />
|
||||||
|
@@ -31,6 +31,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
import org.l2jmobius.gameserver.data.sql.ClanTable;
|
||||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
|
||||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
@@ -42,6 +43,7 @@ import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager;
|
|||||||
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
|
||||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
|
||||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
@@ -77,6 +79,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
resetVitality();
|
resetVitality();
|
||||||
resetVip();
|
resetVip();
|
||||||
resetClanDonationPoints();
|
resetClanDonationPoints();
|
||||||
|
onResetTimedHuntingZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ScheduleTarget
|
@ScheduleTarget
|
||||||
@@ -381,6 +384,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
|
|||||||
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ScheduleTarget
|
||||||
|
public void onResetTimedHuntingZones()
|
||||||
|
{
|
||||||
|
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
|
||||||
|
{
|
||||||
|
if (holder.getResetDelay() > 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for offline players.
|
||||||
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
|
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
|
||||||
|
{
|
||||||
|
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
ps.executeUpdate();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data for online players.
|
||||||
|
World.getInstance().getPlayers().stream().forEach(player ->
|
||||||
|
{
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
|
||||||
|
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
|
||||||
|
player.getVariables().storeMe();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Special Hunting Zones has been resetted.");
|
||||||
|
}
|
||||||
|
|
||||||
public static DailyTaskManager getInstance()
|
public static DailyTaskManager getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
Reference in New Issue
Block a user