Jump to content
  • 0

[Help]EVENT_INTERVAL


Question

Posted

What is wrong ? no error at build but no effect in game.

I want something like EventInterval = 21:00,22:00,1:00

 
private AZStartTask _task;
class AZStartTask implements Runnable
{
	private long _startTime;
	public AZStartTask(long startTime)
	{
		_startTime = startTime;
	}
	public void setStartTime(long startTime)
	{
		_startTime = startTime;
	}
	public void run()
	{
	startEvent();
	}
}

public void scheduleEventStart()
{
	try
	{
		Calendar currentTime = Calendar.getInstance();
		Calendar nextStartTime = null;
		Calendar testStartTime = null;
		for (String timeOfDay : Config.EVENT_INTERVAL)
		{
			// Creating a Calendar object from the specified interval value
			testStartTime = Calendar.getInstance();
			testStartTime.setLenient(true);
			String[] splitTimeOfDay = timeOfDay.split(":");
			testStartTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(splitTimeOfDay[0]));
			testStartTime.set(Calendar.MINUTE, Integer.parseInt(splitTimeOfDay[1]));
			// If the date is in the past, make it the next day (Example: Checking for "1:00", when the time is 23:57.)
			if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
			{
				testStartTime.add(Calendar.DAY_OF_MONTH, 1);
			}
			// Check for the test date to be the minimum (smallest in the specified list)
			if (nextStartTime == null || testStartTime.getTimeInMillis() < nextStartTime.getTimeInMillis())
			{
				nextStartTime = testStartTime;
			}
		}
		_task = new AZStartTask(nextStartTime.getTimeInMillis());
		ThreadPoolManager.getInstance().executeTask(_task);
	}
	catch (Exception e)
	{ }
}

9 answers to this question

Recommended Posts

  • 0
Posted

public static void startEvent()
{
	new Thread(_instance).start();
}

 

is inside in my engine

 

And tvt

public void startEvent()
{
	if (!TvTEvent.startFight())
	{
		Announcements.getInstance().announceToAll("TvT Event: Event cancelled due to lack of Participation.");
		_log.info("TvTEventEngine[TvTManager.run()]: Lack of registration, abort event.");

		this.scheduleEventStart();
	}
	else
	{
		TvTEvent.sysMsgToAllParticipants("TvT Event: Teleporting participants to an arena in "
				+ Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " second(s).");
		_task.setStartTime(System.currentTimeMillis() + 60000L * Config.TVT_EVENT_RUNNING_TIME);
		ThreadPoolManager.getInstance().executeTask(_task);
	}
}

  • 0
Posted

Sounds to be right to me.

Which dates have you selected ?

There's a chance it might be parsing the dates all wrong, hence, only making the events in e.g. 18 days from when you test.

  • 0
Posted

change the if (!TvTEvent.startFight()) to an enum state

 

btw you have 2 startevent method?

Nope, only this

public static void startEvent()
{
	new Thread(_instance).start();
}

  • 0
Posted

Nope, only this

public static void startEvent()
{
	new Thread(_instance).start();
}

 

rofl thats an event start?

anyway i still dont understand that explain to me how your event start because normally it should work like this

 

gameserver.java load the event scheduler which is a threadpool and its call everytime a new event task but for you its totally different as i see

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


×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock