Reverted revision 8919 timed hunting zone changes.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment
2021-07-02 23:07:29 +00:00
parent 082e6cc2f9
commit 8a311baada
24 changed files with 372 additions and 37 deletions

View File

@@ -3,6 +3,7 @@
<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>
@@ -13,6 +14,7 @@
<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>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
@@ -42,6 +42,7 @@
<!-- 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" />
<run name="weeklytimedHuntingZoneReset" if="HASNT_RUN" />
<run name="clanLeaderApply" if="HASNT_RUN" /> <run name="clanLeaderApply" if="HASNT_RUN" />
<run name="vitalityReset" if="HASNT_RUN" /> <run name="vitalityReset" if="HASNT_RUN" />
</conditionalSchedule> </conditionalSchedule>

View File

@@ -260,7 +260,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -275,7 +275,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -290,6 +290,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public static DailyTaskManager getInstance() public static DailyTaskManager getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;

View File

@@ -3,6 +3,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -13,6 +14,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -23,6 +25,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -33,6 +36,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>18000</remainRefillTime> <remainRefillTime>18000</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -43,6 +47,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>36000</maxAddedTime> <!-- 12 hours --> <maxAddedTime>36000</maxAddedTime> <!-- 12 hours -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -54,6 +59,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour --> <maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
@@ -46,6 +46,8 @@
<!-- 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" />
<run name="weeklytimedHuntingZoneReset" if="HASNT_RUN" />
<run name="resetThroneOfHeroes" if="HASNT_RUN" />
<run name="clanLeaderApply" if="HASNT_RUN" /> <run name="clanLeaderApply" if="HASNT_RUN" />
<run name="vitalityReset" if="HASNT_RUN" /> <run name="vitalityReset" if="HASNT_RUN" />
<run name="dailyVitalityReset" if="HASNT_RUN" /> <run name="dailyVitalityReset" if="HASNT_RUN" />

View File

@@ -337,12 +337,11 @@ 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() public void onResetTimedHuntingZones()
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -357,7 +356,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -372,6 +371,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public void resetHomunculusResetPoints() public void resetHomunculusResetPoints()
{ {
// Update data for offline players. // Update data for offline players.

View File

@@ -3,6 +3,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -13,6 +14,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -23,6 +25,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -33,6 +36,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>18000</remainRefillTime> <remainRefillTime>18000</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -43,6 +47,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>36000</maxAddedTime> <!-- 12 hours --> <maxAddedTime>36000</maxAddedTime> <!-- 12 hours -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -54,6 +59,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour --> <maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
@@ -46,6 +46,8 @@
<!-- 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" />
<run name="weeklytimedHuntingZoneReset" if="HASNT_RUN" />
<run name="resetThroneOfHeroes" if="HASNT_RUN" />
<run name="clanLeaderApply" if="HASNT_RUN" /> <run name="clanLeaderApply" if="HASNT_RUN" />
<run name="vitalityReset" if="HASNT_RUN" /> <run name="vitalityReset" if="HASNT_RUN" />
<run name="dailyVitalityReset" if="HASNT_RUN" /> <run name="dailyVitalityReset" if="HASNT_RUN" />

View File

@@ -337,12 +337,11 @@ 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() public void onResetTimedHuntingZones()
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -357,7 +356,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -372,6 +371,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public void resetHomunculusResetPoints() public void resetHomunculusResetPoints()
{ {
// Update data for offline players. // Update data for offline players.

View File

@@ -3,6 +3,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -13,6 +14,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -23,6 +25,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>7200</remainRefillTime> <remainRefillTime>7200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -33,6 +36,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>21600</maxAddedTime> <!-- 6 hours --> <maxAddedTime>21600</maxAddedTime> <!-- 6 hours -->
<remainRefillTime>18000</remainRefillTime> <remainRefillTime>18000</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -43,6 +47,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>36000</maxAddedTime> <!-- 12 hours --> <maxAddedTime>36000</maxAddedTime> <!-- 12 hours -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>
@@ -54,6 +59,7 @@
<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>864000</resetDelay> <!-- 10 days -->
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour --> <maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
<remainRefillTime>0</remainRefillTime> <remainRefillTime>0</remainRefillTime>
<refillTimeMax>3600</refillTimeMax> <refillTimeMax>3600</refillTimeMax>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
<!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly Throne of Heroes reset task every WEDNESDAY at 6:30 -->
@@ -46,6 +46,8 @@
<!-- 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" />
<run name="weeklytimedHuntingZoneReset" if="HASNT_RUN" />
<run name="resetThroneOfHeroes" if="HASNT_RUN" />
<run name="clanLeaderApply" if="HASNT_RUN" /> <run name="clanLeaderApply" if="HASNT_RUN" />
<run name="vitalityReset" if="HASNT_RUN" /> <run name="vitalityReset" if="HASNT_RUN" />
<run name="dailyVitalityReset" if="HASNT_RUN" /> <run name="dailyVitalityReset" if="HASNT_RUN" />

View File

@@ -337,12 +337,11 @@ 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() public void onResetTimedHuntingZones()
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -357,7 +356,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -372,6 +371,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public void resetHomunculusResetPoints() public void resetHomunculusResetPoints()
{ {
// Update data for offline players. // Update data for offline players.

View File

@@ -3,6 +3,7 @@
<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>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
<!-- Schedule the vitality reset task every WEDNESDAY at 6:30 --> <!-- Schedule the vitality reset task every WEDNESDAY at 6:30 -->

View File

@@ -288,7 +288,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -303,7 +303,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -318,6 +318,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public static DailyTaskManager getInstance() public static DailyTaskManager getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;

View File

@@ -3,6 +3,7 @@
<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>
@@ -13,6 +14,7 @@
<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>
@@ -23,6 +25,7 @@
<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>
@@ -33,6 +36,7 @@
<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>
@@ -44,6 +48,7 @@
<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>
@@ -55,6 +60,7 @@
<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>
@@ -66,6 +72,7 @@
<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>
@@ -77,6 +84,7 @@
<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>
@@ -88,6 +96,7 @@
<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>
@@ -99,6 +108,7 @@
<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>

View File

@@ -24,8 +24,8 @@
</schedule> </schedule>
<!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 --> <!-- Schedule the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
</scheduler> </scheduler>
</event> </event>

View File

@@ -358,7 +358,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -373,7 +373,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -388,6 +388,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public static DailyTaskManager getInstance() public static DailyTaskManager getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;

View File

@@ -3,6 +3,7 @@
<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>
@@ -13,6 +14,7 @@
<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>
@@ -23,6 +25,7 @@
<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>
@@ -33,6 +36,7 @@
<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>
@@ -44,6 +48,7 @@
<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>
@@ -55,6 +60,7 @@
<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>
@@ -66,6 +72,7 @@
<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>
@@ -77,6 +84,7 @@
<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>
@@ -88,6 +96,7 @@
<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>
@@ -99,6 +108,7 @@
<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>

View File

@@ -22,10 +22,10 @@
<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 the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
</scheduler> </scheduler>
</event> </event>

View File

@@ -389,7 +389,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -404,7 +404,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -419,6 +419,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public static DailyTaskManager getInstance() public static DailyTaskManager getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;

View File

@@ -3,6 +3,7 @@
<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>
@@ -13,6 +14,7 @@
<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>
@@ -23,6 +25,7 @@
<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>
@@ -33,6 +36,7 @@
<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>
@@ -44,6 +48,7 @@
<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>
@@ -55,6 +60,7 @@
<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>
@@ -66,6 +72,7 @@
<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>
@@ -77,6 +84,7 @@
<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>
@@ -88,6 +96,7 @@
<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>
@@ -99,6 +108,7 @@
<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>

View File

@@ -22,10 +22,10 @@
<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 the weekly timed hunting zones reset task every WEDNESDAY at 6:30 -->
<schedule name="timedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3"> <schedule name="weeklytimedHuntingZoneReset" hour="06" minute="30" dayOfWeek="3">
<event name="#onResetTimedHuntingZones" /> <event name="#onResetWeeklyTimedHuntingZones" />
</schedule> </schedule>
</scheduler> </scheduler>
</event> </event>

View File

@@ -389,7 +389,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
{ {
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{ {
if (holder.getResetDelay() > 0) if (holder.isWeekly())
{ {
continue; continue;
} }
@@ -404,7 +404,7 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.SEVERE, "Could not reset Training Camp: ", e); LOGGER.log(Level.SEVERE, "Could not reset Special Hunting Zones: ", e);
} }
// Update data for online players. // Update data for online players.
@@ -419,6 +419,41 @@ public class DailyTaskManager extends AbstractEventManager<AbstractEvent<?>>
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
} }
@ScheduleTarget
public void onResetWeeklyTimedHuntingZones()
{
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
{
if (!holder.isWeekly())
{
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 Weekly Special Hunting Zones: ", 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("Weekly Special Hunting Zones has been resetted.");
}
public static DailyTaskManager getInstance() public static DailyTaskManager getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;