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.
DISCORD :
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/hood-services
https://campsite.bio/utchihaamkt
hello everyone !
I need help with a l2script Rev H5-Salvation/Classic build. I compiled the project, installed everything but I can't log in to the server, it won't log me in. I tried a thousand ways without good results. I leave you the error when logging in either with the H5-Salvation Client.
ERROR ---> WARN: IPBANMANAGER ---> IP !!!!
I'm waiting for help! Thank you!
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.