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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...