Jump to content

Recommended Posts

Posted

This will allow you to set multiple different competition start times for Olympiad.

 

Use AltOlyCompStart to set the times in General.properties.

Time is in military format, ie: 18:00 (6:00 PM). Separate times with commas, ie: 18:00,19:00,20:00

Note: Be sure to adjust your AltOlyCPeriod in the config as well, in respect to your start times.

 

Tested and working (...however, not tested live so please use at your own discretion)

 

Enjoy,

mackry (moooo)

 

Index: /java/com/l2jserver/gameserver/model/olympiad/Olympiad.java
===================================================================
--- /java/com/l2jserver/gameserver/model/olympiad/Olympiad.java	(revision 0)
+++ /java/com/l2jserver/gameserver/model/olympiad/Olympiad.java	(working copy)

	protected int _currentCycle;
	private long _compEnd;
	private Calendar _compStart;
+	private Calendar _nextCompStart;
+	
	protected static boolean _inCompPeriod;
	protected static boolean _compStarted = false;
	protected ScheduledFuture<?> _scheduledCompStart;
@@ -403,11 +405,35 @@
		_nonClassBasedRegisters = new L2FastList<L2PcInstance>();
		_classBasedRegisters = new FastMap<Integer, L2FastList<L2PcInstance>>();

-		_compStart = Calendar.getInstance();
-		_compStart.set(Calendar.HOUR_OF_DAY, COMP_START);
-		_compStart.set(Calendar.MINUTE, COMP_MIN);
-		_compEnd = _compStart.getTimeInMillis() + COMP_PERIOD;
+		try
+		{
+			Calendar currentTime = Calendar.getInstance();
+
+			for (String timeOfDay : Config.ALT_OLY_COMP_INTERVAL)
+			{
+				_compStart = Calendar.getInstance();
+				_compStart.setLenient(true);
+				String [] splitTimeOfDay = timeOfDay.split(":");
+				_compStart.set(Calendar.HOUR_OF_DAY, Integer.parseInt(splitTimeOfDay[0]));
+				_compStart.set(Calendar.MINUTE, Integer.parseInt(splitTimeOfDay[1]));
+				if (_compStart.getTimeInMillis() < currentTime.getTimeInMillis())
+				{
+					_compStart.add(Calendar.DAY_OF_MONTH, 1);
+				}
+				_compEnd = _compStart.getTimeInMillis() + COMP_PERIOD;
+			}
+		}
+		catch (Exception e)
+		{
+			_log.warning("Olympiad[Olympiad.init()]: Error figuring out a start time. Check OlyCompInterval in config file.");
+		}

+		
+		//_compStart = Calendar.getInstance();
+		//_compStart.set(Calendar.HOUR_OF_DAY, COMP_START);
+		//_compStart.set(Calendar.MINUTE, COMP_MIN);
+		//_compEnd = _compStart.getTimeInMillis() + COMP_PERIOD;
+		
		if (_scheduledOlympiadEnd != null)
			_scheduledOlympiadEnd.cancel(true);

@@ -901,15 +927,18 @@

	private long setNewCompBegin()
	{
-		_compStart = Calendar.getInstance();
-		_compStart.set(Calendar.HOUR_OF_DAY, COMP_START);
-		_compStart.set(Calendar.MINUTE, COMP_MIN);
-		_compStart.add(Calendar.HOUR_OF_DAY, 24);
+		Calendar nextCompStart = null;
+		nextCompStart = Calendar.getInstance();
+		if (nextCompStart == null || _compStart.getTimeInMillis() < nextCompStart.getTimeInMillis())
+		{
+			nextCompStart = _compStart;
+			
+		}
		_compEnd = _compStart.getTimeInMillis() + COMP_PERIOD;

-		_log.info("Olympiad System: New Schedule @ " + _compStart.getTime());
+		_log.info("Olympiad System: New Schedule @ " + nextCompStart.getTime());

-		return (_compStart.getTimeInMillis() - Calendar.getInstance().getTimeInMillis());
+		return (nextCompStart.getTimeInMillis() - Calendar.getInstance().getTimeInMillis());
	}

	protected long getMillisToCompEnd()


Index: /java/config/General.properties
===================================================================
--- /java/config/General.properties	(revision 0)
+++ /java/config/General.properties	(working copy)
@@ -439,6 +439,10 @@
# Default: 18
AltOlyStartTime = 18

+# Olympiad Start Time in Military hours Default 6pm (18) 
+# Default: 18
+AltOlyCompStart = 04:00,8:00,12:00,16:00,20:00,00:00
+
# Olympiad Start Time for Min's, Default 00 so at the start of the hour.
# Default: 00
AltOlyMin = 00
@@ -446,7 +450,7 @@
# Olympiad Competition Period, Default 6 hours.
# (If set different, should be increment by 10mins)
# Default: 21600000
-AltOlyCPeriod = 21600000
+AltOlyCPeriod = 3600000

# Olympiad Battle Period, Default 6 minutes.
# Default: 360000

Index: /java/com/l2jserver/Config.java
===================================================================
--- : /java/com/l2jserver/Config.java	(revision 0)
+++ : /java/com/l2jserver/Config.java	(working copy)
@@ -456,6 +456,7 @@
	public static int NAME_PAGE_SIZE_COMMUNITYBOARD;
	public static int NAME_PER_ROW_COMMUNITYBOARD;
	public static int ALT_OLY_START_TIME;
+	public static String[] ALT_OLY_COMP_INTERVAL;
	public static int ALT_OLY_MIN;
	public static long ALT_OLY_CPERIOD;
	public static long ALT_OLY_BATTLE;
@@ -1621,6 +1622,7 @@
					NAME_PAGE_SIZE_COMMUNITYBOARD = Integer.parseInt(General.getProperty("NamePageSizeOnCommunityBoard", "50"));
					NAME_PER_ROW_COMMUNITYBOARD = Integer.parseInt(General.getProperty("NamePerRowOnCommunityBoard", "5"));
					ALT_OLY_START_TIME = Integer.parseInt(General.getProperty("AltOlyStartTime", "18"));
+					ALT_OLY_COMP_INTERVAL = General.getProperty("AltOlyCompStart", "20:00").split(",");
					ALT_OLY_MIN = Integer.parseInt(General.getProperty("AltOlyMin","00"));
					ALT_OLY_CPERIOD = Long.parseLong(General.getProperty("AltOlyCPeriod","21600000"));
					ALT_OLY_BATTLE = Long.parseLong(General.getProperty("AltOlyBattle","360000"));

Posted

I thing that you forget the Config.java side ...

When you add it I will give it a test !

 

Doh! Thanks SkyLanceя, this was an old mod I did so some of it got lost somehow >.< Fixed.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • NEW SEASON GRAND OPENING FROM - 10/07/2026, FRIDAY, 20:00 +3 GMT !
    • No complicated KYC, instant setup after purchase!  Boost your connection speed and secure your privacy today!  Official Website: https://novproxy.com?kwd=tt-max
    • I don't know this guy and I don't care about him or the server. What I want to say I already do it. And yes, it does seem like he has some mental problems to make up these stories. 
    • L2JForge Edition Update Revision: V1.0.119  Update: 15 June – 1 July 2026  Fixes & Improvements Fixed PawnShop pagination and inactive Community Board actions. Added thread-safe caching to the PawnShop system. Fixed MMOTopVote vote tracking. Fixed PvP Event participant cleanup. Restored the missing PvP Ranking broadcast. Improved CTF flag handling and zone validation. Added Try Skin / Hat Preview handlers to the Community Board. Improved character skin appearance refreshes without requiring a restart. Improved NPC positioning to reduce train and collision abuse. Fixed Seal of Ruler casting from invalid artifact positions. Added stricter castle artifact, range and height validation. Fixed character restoration stability during Enter World. Reworked Community Board Home, Shop, Bosses and Events sections. Added live Raid/Epic Boss status and respawn information. Added upcoming PvP and GvG event schedules. Integrated character services, settings and statistics into the Community Board. Moved Vote Rewards from a voiced command into the Character Menu in Community Board. Removed the obsolete Achievements / .rewards system.  Removed unused multilingual resources and simplified datapack loading. Improved datapack startup and HTML cache stability. Added automatic build revision and build-date metadata. Reorganized runtime libraries and standardized generated server jars. Refined the Player, Creature, GameClient, Clan and Frintezza systems. Performed extensive source cleanup and reliability improvements. Updated build configuration and repository exclusions.  Work in Progress Development continues with additional gameplay fixes, performance improvements, system cleanup and more upgrades already in progress..
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..