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();}}
When something’s inconvenient, people always find a way to make life easier.
It’s dark? Turn on a lamp — no more tripping around.
The socket’s hiding under the bed? Boom, extension cord.
Noisy neighbor? Headphones and soundproof walls.
Too lazy to move? Just have a kid, problem solved.
Lost one sock? Humanity just gave up on that one.
And for everything else — there’s VibeSMS.
Because getting your verification codes should be as simple as flipping a switch 💡⚡
Website: https://vibe-sms.net/
📱 Telegram channel: https://t.me/vibe_sms
We are giving away free software for registering Google and Telegram accounts.
To get a license, send your SMS-Activate ID in a private message. Your ID is the numbers in the upper right corner next to the profile icon.
Important! The license will be blocked if you resell it. If you have any questions, please contact the SMS-Activate manager (https://t.me/SMM_pro_hawj). If your license has expired and you liked it, just write to us and we will give you another one.
We're looking for classic interlude files or interlude files compatible with the classic client,protocol 110 or 166 doesnt matter.
The files we're looking for must be suitable for a mid rate server or files used already by its old owner who is willing to sell them.
If you think you have something interesting and it meets the criteria then contact me by sending me a private message
Please dont come with crap or shared here and there files. ONLY trused peoples.
You should also know that we are looking for a source code of the files also,not a compiled version only.L2J
Any payment method, Available up to 2.000euro depending to the product.
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
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 accountSign in
Already have an account? Sign in here.
Sign In Now