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();}}
Weapongrp.dat find junk=n
n=number which is connected with enchantedweaponfloweffect.dat which is also connected to another weapon..something.dat dont remember the exact name right now.
Good luck!!!
Im looking for a l2off developer for an interlude project with custom items etc that i wish to run.Please ppl with attitude do not contact with me.
The payment is via revolut.
Can anyone tell me how to edit enchant effects in Source of flame? Protocol 418.
many wapons have their own effects/glows and i can seem to find how to replicate those for my custom items.
Thanks in advance.
(didnt notice i wasnt on cliend mod section. move if posible)
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 :
Link to comment
Share on other sites
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.