Hello I changed the INTERVAL event to String but it does not work, the event starts when the serve goes online.
by :
# Time Between TvT events (in minutes, 300 = 5 hours)
TvTEventInterval = 1
for :
# Times TvT will occur (24h format).
# Example: 20:00,21,00,22:00
TvTEventInterval = 23:16 <---- Do not start at this time begins before
code original :
package net.sf.l2j.gameserver.model.entity;++import net.sf.l2j.commons.concurrent.ThreadPool;++import net.sf.l2j.Config;+import net.sf.l2j.gameserver.util.Broadcast;++/**
+ * @author FBIagent
+ */+publicclassTvTEventManager implements Runnable+{+/**
+ * The one and only instance of this class<br>
+ */+privatestaticTvTEventManager _instance = null;++/**
+ * New instance only by getInstance()<br>
+ */+privateTvTEventManager()+{+if(Config.TVT_EVENT_ENABLED)+{+ThreadPool.schedule(this,0);+System.out.println("TvTEventEngine[TvTManager.TvTManager()]: Started.");+}+else+System.out.println("TvTEventEngine[TvTManager.TvTManager()]: Engine is disabled.");+}++/**
+ * Initialize new/Returns the one and only instance<br>
+ * <br>
+ * @return TvTManager<br>
+ */+publicstaticTvTEventManager getInstance()+{+if(_instance == null)+ _instance =newTvTEventManager();++return _instance;+}++/**
+ * The task method to handle cycles of the event
+ * @see java.lang.Runnable#run()
+ */+@Override+publicvoid run()+{+TvTEvent.init();++for(;;)+{+ waiter(Config.TVT_EVENT_INTERVAL *60);// in config given as minutes++if(!TvTEvent.startParticipation())+{+Broadcast.announceToOnlinePlayers("TvT: Event was canceled.",true);+System.out.println("TvTEventEngine[TvTManager.run()]: Error spawning event npc for participation.");+continue;+}+Broadcast.announceToOnlinePlayers("TvT: Registration opened for "+Config.TVT_EVENT_PARTICIPATION_TIME +" minute(s). Type .tvtjoin or .tvtleave",true);++ waiter(Config.TVT_EVENT_PARTICIPATION_TIME *60);// in config given as minutes++if(!TvTEvent.startFight())+{+Broadcast.announceToOnlinePlayers("TvT: Event canceled due to lack of Participation.",true);+System.out.println("TvTEventEngine[TvTManager.run()]: Lack of registration, abort event.");+continue;+}+Broadcast.announceToOnlinePlayers("TvT: Registration closed!",true);+TvTEvent.sysMsgToAllParticipants("TvT: Teleporting participants to an arena in "+Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY +" second(s).");++ waiter(Config.TVT_EVENT_RUNNING_TIME *60);// in config given as minutes+Broadcast.announceToOnlinePlayers(TvTEvent.calculateRewards(),true);+TvTEvent.sysMsgToAllParticipants("TvT: Teleporting back to the registration npc in "+Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY +" second(s).");+TvTEvent.stopFight();+}+}++/**
+ * This method waits for a period time delay
+ * @param seconds
+ */+void waiter(int seconds)+{+while(seconds >1)+{+ seconds--;// here because we don't want to see two time announce at the same time++if(TvTEvent.isParticipating()||TvTEvent.isStarted())+{+switch(seconds)+{+case3600:// 1 hour left+if(TvTEvent.isParticipating())+Broadcast.announceToOnlinePlayers("TvT: "+ seconds /60/60+" hour(s) umtil registration is closed!",true);+elseif(TvTEvent.isStarted())+TvTEvent.sysMsgToAllParticipants("TvT: "+ seconds /60/60+" hour(s) until event is finished!");++break;+case1800:// 30 minutes left+case900:// 15 minutes left+case600:// 10 minutes left+case300:// 5 minutes left+case240:// 4 minutes left+case180:// 3 minutes left+case120:// 2 minutes left+case60:// 1 minute left+if(TvTEvent.isParticipating())+Broadcast.announceToOnlinePlayers("TvT: "+ seconds /60+" minute(s) until registration is closed!",true);+elseif(TvTEvent.isStarted())+TvTEvent.sysMsgToAllParticipants("TvT: "+ seconds /60+" minute(s) until the event is finished!");++break;+case30:// 30 seconds left+/**
+ * case 15: // 15 seconds left case 10: // 10 seconds left
+ */+case5:// 5 seconds left++/**
+ * case 4: // 4 seconds left case 3: // 3 seconds left case 2: // 2 seconds left case 1: // 1 seconds left
+ */+if(TvTEvent.isParticipating())+Broadcast.announceToOnlinePlayers("TvT: "+ seconds +" second(s) until registration is closed!",true);+elseif(TvTEvent.isStarted())+TvTEvent.sysMsgToAllParticipants("TvT: "+ seconds +" second(s) until the event is finished!");++break;+}+}+TvTEvent.waiter(1);+}+}+}
code modified :
package net.sf.l2j.gameserver.model.entity.jdev.engine.manager;import java.util.Calendar;import java.util.logging.Logger;import net.sf.l2j.commons.concurrent.ThreadPool;import net.sf.l2j.Config;import net.sf.l2j.gameserver.model.entity.jdev.engine.TeamVsTeam;import net.sf.l2j.gameserver.util.Broadcast;/**
* @author FBIagent
*/publicclassTvTManager implements Runnable{protectedstatic final Logger _log =Logger.getLogger(TvTManager.class.getName());publicTvTManager(){if(Config.EVENTS_ENABLED){ThreadPool.schedule(this,0);
_log.info("TeamVsTeam: Started.");}else
_log.info("TeamVsTeam: Disabled.");}publicstaticTvTManager getInstance(){returnSingletonHolder._instance;}@Overridepublicvoid run(){TeamVsTeam.init();try{Calendar currentTime =Calendar.getInstance();Calendar nextStartTime = null;Calendar testStartTime = null;for(String timeOfDay :Config.TVT_EVENT_INTERVAL){
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(testStartTime.getTimeInMillis()< currentTime.getTimeInMillis())
testStartTime.add(Calendar.DAY_OF_MONTH,1);if(nextStartTime == null || testStartTime.getTimeInMillis()< nextStartTime.getTimeInMillis())
nextStartTime = testStartTime;if(!TeamVsTeam.startParticipation()){Broadcast.announceToOnlinePlayers("TeamVsTeam: Event was cancelled.",true);System.out.println("TeamVsTeam: Error spawning event npc for participation.");continue;}Broadcast.announceToOnlinePlayers("TeamVsTeam: Registration opened for "+Config.TVT_EVENT_PARTICIPATION_TIME +" minute(s).",true);Broadcast.announceToOnlinePlayers("TeamVsTeam: Joinable in "+Config.EVENTS_JOIN_LOCATION +".",true);Broadcast.announceToOnlinePlayers("TeamVsTeam:"+" Recruiting levels: "+Config.EVENTS_MIN_LVL +" to "+Config.EVENTS_MAX_LVL +".",true);if(Config.TVT_VOICED_COMMAND)Broadcast.announceToOnlinePlayers("TeamVsTeam: Commands .TVTon .TVToff .TVTinfo.",true);
waiter(Config.TVT_EVENT_PARTICIPATION_TIME *60);// in config given as minutesif(!TeamVsTeam.startFight()){Broadcast.announceToOnlinePlayers("TeamVsTeam: Event cancelled due to lack of Participation.",true);System.out.println("TeamVsTeam: Lack of registration, abort event.");continue;}TeamVsTeam.sysMsgToAllParticipants("TeamVsTeam: Teleporting participants to an arena in "+Config.EVENTS_START_LEAVE_TELEPORT_DELAY +" second(s).");
waiter(Config.TVT_EVENT_RUNNING_TIME *60);// in config given as minutesBroadcast.announceToOnlinePlayers(TeamVsTeam.calculateRewards(),true);TeamVsTeam.sysMsgToAllParticipants("TeamVsTeam: Teleporting back to the registration npc in "+Config.EVENTS_START_LEAVE_TELEPORT_DELAY +" second(s).");TeamVsTeam.stopFight();}}catch(Exception e){
_log.warning("TeamVsTeam: Error figuring out a start time. Check TVTEventInterval in config file.");}}void waiter(int seconds){while(seconds >1){
seconds--;// Here because we don't want to see two time announce at the same timeif(TeamVsTeam.isParticipating()||TeamVsTeam.isStarted()){switch(seconds){case3600:// 1 hour leftif(TeamVsTeam.isParticipating())Broadcast.announceToOnlinePlayers("TeamVsTeam: "+ seconds /60/60+" hour(s) umtil registration is closed!",true);elseif(TeamVsTeam.isStarted())TeamVsTeam.sysMsgToAllParticipants("TeamVsTeam: "+ seconds /60/60+" hour(s) until event is finished!");break;case1800:// 30 minutes leftcase900:// 15 minutes leftcase600:// 10 minutes leftcase300:// 5 minutes leftcase240:// 4 minutes leftcase180:// 3 minutes leftcase120:// 2 minutes leftcase60:// 1 minute leftif(TeamVsTeam.isParticipating())Broadcast.announceToOnlinePlayers("TeamVsTeam: "+ seconds /60+" minute(s) until registration is closed!",true);elseif(TeamVsTeam.isStarted())TeamVsTeam.sysMsgToAllParticipants("TeamVsTeam: "+ seconds /60+" minute(s) until the event is finished!");break;case30:// 30 seconds leftcase15:// 15 seconds leftcase10:// 10 seconds leftcase3:// 3 seconds leftcase2:// 2 seconds leftcase1:// 1 seconds leftif(TeamVsTeam.isParticipating())Broadcast.announceToOnlinePlayers("TeamVsTeam: "+ seconds +" second(s) until registration is closed!",true);elseif(TeamVsTeam.isStarted())TeamVsTeam.sysMsgToAllParticipants("TeamVsTeam: "+ seconds +" second(s) until the event is finished!");break;}}long startOneSecondWaiterStartTime =System.currentTimeMillis();while(startOneSecondWaiterStartTime +1000L>System.currentTimeMillis()){try{Thread.sleep(1);}catch(final InterruptedException ie){
ie.printStackTrace();}}}}privatestaticclassSingletonHolder{protectedstatic final TvTManager _instance =newTvTManager();}}
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.
I don't understand why you are so offended and aggressive, who allowed you to disrespect me or call me in any way? Did I insulted you? You act like a angry kid, grow up boy.
@Maxtor@Celestino
The administrators of this forum can access everything I've sent...
Your move won't work on me. Hahahaha!
Getting into the parameters and editing the HTMLs of websites and claiming it's real used to be really cool among true friends.
@jtos So, is this also true? 🤣😂🤣😂🤣😂🤣
Your joke still hasn't been better than mine. Hahahah!
Question
l2jkain
Hello I changed the INTERVAL event to String but it does not work, the event starts when the serve goes online.
by :
# Time Between TvT events (in minutes, 300 = 5 hours) TvTEventInterval = 1
for :
# Times TvT will occur (24h format).
# Example: 20:00,21,00,22:00
TvTEventInterval = 23:16 <---- Do not start at this time begins before
code original :
code modified :
6 answers to this question
Recommended Posts
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.