Jump to content

Recommended Posts

Posted

Is There any way how to allow Announcement before start? i mean you will see messege "Announcement : server will be restarted in 5 mins."-...not just counting from 20sec.

  • 2 years later...
Posted

Thanks for sharing the code. Very good one. And working on frozen :) with little changes.

already shared for frozen , but old version thats why you must make litle changes

Posted

OK now some changes made by myself for l2jfrozen pack. first for announces in Shutdown.java add this code on place:
 

_seconds = _secondsShut;
_minutes = _seconds / 60;
_hours = _seconds / 3600;
// 30 min, 20 min, 10 min, 5 min, 2 min, 1 min announces
				
+ if (_seconds == 1800 || _seconds == 1200 || _seconds == 600 || _seconds == 300 || _seconds == 120 || _seconds == 60)
+ {
+ _an.announceToAll("Server is " + MODE_TEXT[_shutdownMode] + " after " + _minutes + " minute(s)!");				
+ }
				
// announce only every minute after 10 minutes left and every second after 20 seconds

After that modified code to save before autorestarting:

 

public void autoRestart(int time)
{
     _secondsShut = time;
     _instance._shutdownMode = GM_RESTART;
      countdown();
        LOGGER.warn("Auto Restart countdown is over. " + MODE_TEXT[_shutdownMode] + " NOW!");
        saveData();
	Runtime.getRuntime().halt(2);
}

Now will show restarting, not SIGTERM.

After that - modified Restart.java
 

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gameserver;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.LogManager;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;

/*

import java.util.Calendar;
import java.util.logging.Logger;
*/

/**
* This Config for Auto Restart GameServer
* Initialize class getInstance()
* Set Time in Config File
* Thank You L2JServer | L2JRussia
*
* @author L2JRussia
*
*/
public class Restart
{
        //Variaveis globais
        private static Restart _instance = null;
        protected static final Logger _log = Logger.getLogger(Restart.class.getName());
        private Calendar NextRestart;
        private SimpleDateFormat format = new SimpleDateFormat("HH:mm");

        //Singleton
        public static Restart getInstance()
        {
                if(_instance == null)
                        _instance = new Restart();
                return _instance;
        }

        public String getRestartNextTime()
        {
        if(NextRestart.getTime() != null)
                return format.format(NextRestart.getTime());
                else
                        return "Erro";
        }

        //Connstrutor
        private Restart()
        {
      //:D
        }

        public void StartCalculationOfNextRestartTime()
        {
_log.info("########################################");
_log.info("#[Restart System]: System activated... #");
_log.info("########################################");
                try
                {
                        Calendar currentTime = Calendar.getInstance();
                        Calendar testStartTime = null;
                        long flush2 = 0,timeL = 0;
                        int count = 0;

                        for (String timeOfDay : Config.RESTART_INTERVAL_BY_TIME_OF_DAY)
                        {
                                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]));
                                testStartTime.set(Calendar.SECOND, 00);
                                //Verifica a validade to tempo
                                if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
                                {
                                        testStartTime.add(Calendar.DAY_OF_MONTH, 1);
                                }

                                //TimeL Recebe o quanto falta de milisegundos para o restart
                                timeL = testStartTime.getTimeInMillis() - currentTime.getTimeInMillis();

                                //Verifica qual horario sera o proximo restart
                                if(count == 0){
                                flush2 = timeL;
                                NextRestart = testStartTime;
                                }

                                if(timeL <  flush2){
                                flush2 = timeL;
                                NextRestart = testStartTime;
                                }

                                count ++;
                        }
                        _log.info("[AutoRestart]: Next Restart Time: " + NextRestart.getTime().toString());
            ThreadPoolManager.getInstance().scheduleGeneral(new StartRestartTask(), flush2);
                }
                catch (Exception e)
	                {
	                    System.out.println("[AutoRestart]: The restart automated server presented error in load restarts period config !");
	                }
	        }
	
	        class StartRestartTask implements Runnable
	        {
	                public void run()
	                {
	          _log.info("Start automated restart GameServer.");
	          Shutdown.getInstance().autoRestart(Config.RESTART_SECONDS);
	                }
					
	        }
	}

After that modified GameServer.java code: 

	Util.printSection("Restart Manager");
        if(Config.RESTART_BY_TIME_OF_DAY)
                Restart.getInstance().StartCalculationOfNextRestartTime();
        else
                LOGGER.info("# Auto Restart System is Disabled #");
      
        System.gc();

Aaand at last to work config code must be put into l2jfrozen.properties config file in config/functions folder.

All other codes are working perfectly. This is just small fix and Iam writing these codes with little changes.

  • 3 years later...
  • 1 year later...
Posted
On 3/9/2015 at 1:01 AM, netrica said:

Thanks for sharing the code. Very good one. And working on frozen :) with little changes.

what you changed to work ?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Very nice server. Good attention to attention to detail. Bravo.
    • Once, a professor said, "Never trust the ones who claim they worked for Bill Gates." It's all rumors and fake information. If someone had actually worked for Bill Gates, they would have earned a decent salary and wouldn't be struggling to pay a $150 bill. So, if someone couldn't even pay $150, then I'm sorry, but the best I can do is ban both of their accounts from this forum.   Scammers will always remain scammers unless they choose to change. I'm not taking anyone's side this is simply a business decision. That's the best I can do. Peace!
    • Meanwhile today is July 1 and no payment was made past April 26. Like I said: if you do not like my rates you are free to work on it with someone else or yourself. This does not change that you owe me the payment. The "tools" and "access" on your files is like if you gave me a box of dirt from Istanbul, Turkiye. It's utterly worthless.   Anywho.. I added a link for the system in Mediafire. https://www.mediafire.com/file/qms0af7h7l1alo3/ClassicLude_P110_System.7z/file
    • The following user refused to pay his remaining balance for work done on his server. While he has paid prior (2 transactions) it seems he has ran out of money given that he is opening the next Burj Al-Arab in ChatGPT City on Sam Al-Tman Rd with his 5kk€ salary which is paid personally by Bill Gates. The conversation was held on June 4, 2026. Today is July 1. Needless to say, my hope of getting the remaining payment is bleak. While poor people can seethe and be like "wtf Baylee so expensive!!! I can ask robot!!!" - you are free to do it! However if you want to work with one of the best in this field there is always a premium price for a premium service. All work was livestreamed on a private channel as well to keep record. I do not waste time or stall given that I bill hourly.         The "30 mins" has long elapsed. Unless you argue time is a relative construct and works different on Turkiye. Perhaps to him it has only been 5 mins. Or maybe he got lost on his private jet with Bill Gates and Elon Mask like flight 370. Who knows.   Known accounts: https://maxcheaters.com/profile/244683-baba_vanga/ https://maxcheaters.com/profile/245691-l2emerge/  
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..