Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Autorestart Gameserver

Iniciado por Swarlog, Sep 01, 2022, 12:53 AM

Tema anterior - Siguiente tema

Swarlog



Citar# If EnableRestartSystem = True Describe hours of the day
# Example: 22:00,23:00 (hh:mm,hh:mm...)
# NOTE: Separate ":" mm:hh and "," others restart time
RestartByTimeOfDay = 00:00,12:00 <<  Here you put the time that will give the restart!

### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (revision 936)
+++ gameserver/head-src/com/l2jfrozen/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -26,6 +26,7 @@
import com.l2jfrozen.Config;
import com.l2jfrozen.crypt.nProtect;
import com.l2jfrozen.crypt.nProtect.RestrictionType;
+import com.l2jfrozen.gameserver.Restart;
import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jfrozen.gameserver.controllers.GameTimeController;
import com.l2jfrozen.gameserver.datatables.CharSchemesTable;
@@ -466,6 +467,11 @@
}
}

+        if(Config.RESTART_BY_TIME_OF_DAY)
+        {
+                ShowNextRestart(activeChar);
+        }
+
// NPCBuffer
if (PowerPakConfig.BUFFER_ENABLED)
CharSchemesTable.getInstance().onPlayerLogin(activeChar.getObjectId());
@@ -801,6 +807,17 @@
}
}

+    /**
+    * Envia mensagem para o player do proximo restart
+    * NOTE: RESTART_BY_TIME_OF_DAY = TRUE
+    *
+    * @param activeChar
+    */
+    private void ShowNextRestart(L2PcInstance activeChar)
+    {
+            activeChar.sendMessage("Next Restart: " + Restart.getInstance().getRestartNextTime());
+    }
+
@Override
public String getType()
{



### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/head-src/com/l2jfrozen/gameserver/Shutdown.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/Shutdown.java (revision 936)
+++ gameserver/head-src/com/l2jfrozen/gameserver/Shutdown.java (working copy)
@@ -171,6 +171,18 @@
}
}

+    public void autoRestart(int time)
+    {
+            _secondsShut = time;
+
+            countdown();
+         
+            _shutdownMode = GM_RESTART;
+         
+            _instance.setMode(GM_RESTART);
+            System.exit(2);
+    }
+
/**
* Default constucter is only used internal to create the shutdown-hook instance
*/


### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/head-src/com/l2jfrozen/gameserver/Restart.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/Restart.java (revision 0)
+++ gameserver/head-src/com/l2jfrozen/gameserver/Restart.java (revision 0)
@@ -0,0 +1,122 @@
+/*
+ * 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.text.SimpleDateFormat;
+ import java.util.Calendar;
+ import java.util.logging.Logger;
+
+ import com.l2jfrozen.Config;
+ import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+
+ /**
+ * 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 actived...#");
+ _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);
+                 }
+         }
+ }
\ No newline at end of file


### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/head-src/com/l2jfrozen/gameserver/GameServer.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/GameServer.java (revision 936)
+++ gameserver/head-src/com/l2jfrozen/gameserver/GameServer.java (working copy)
@@ -549,6 +549,14 @@
if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS)
OfflineTradeTable.restoreOfflineTraders();

+ Util.printSection("Restart Manager");
+        if(Config.RESTART_BY_TIME_OF_DAY)
+                Restart.getInstance().StartCalculationOfNextRestartTime();
+        else
+                _log.info("# Auto Restart System is Disabled #");
+     
+        System.gc();
+
Util.printSection("Info");
_log.info("Operating System: " + Util.getOSName() + " " + Util.getOSVersion() + " " + Util.getOSArch());
_log.info("Available CPUs: " + Util.getAvailableProcessors());



### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/config/custom/la2slipper.properties
===================================================================
--- gameserver/config/custom/la2slipper.properties (revision 936)
+++ gameserver/config/custom/la2slipper.properties (working copy)
@@ -2,6 +2,42 @@
#                        Server Config                      #
#============================================================#

+###########################################
+# Automated restart config                #
+# Mod exclusive LA2JSlipper              #
+# #########################################
+# Enable / Disable Restart Auto
+EnableRestartSystem = False
+
+# If EnableRestartSystem = True Describe hours of the day
+# Example: 22:00,23:00 (hh:mm,hh:mm...)
+# NOTE: Separate ":" mm:hh and "," others restart time
+RestartByTimeOfDay = 00:00,12:00
+
+# Seconds to restart the server ( 360 = 5 Minutos )
+# default = 360
+RestartSeconds = 360
+
# Server Name Enabled: Displays a message on char login
# with the server name you have set below.
ServerNameEnabled = False

### Eclipse Workspace Patch 1.0
#P L2JFrozen
Index: gameserver/head-src/com/l2jfrozen/Config.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/Config.java (revision 936)
+++ gameserver/head-src/com/l2jfrozen/Config.java (working copy)

@@ -2281,6 +2287,13 @@
public static boolean ANNOUNCE_TO_ALL_SPAWN_RB;
public static boolean ANNOUNCE_TRY_BANNED_ACCOUNT;
public static String ALT_Server_Name;
+ public static boolean ENABLE_CLAN_SYSTEM;
+ public static Map CLAN_SKILLS;
+ public static byte CLAN_LEVEL;
+ public static int REPUTATION_QUANTITY;
+              public static boolean RESTART_BY_TIME_OF_DAY;
+              public static int RESTART_SECONDS;
+              public static String[] RESTART_INTERVAL_BY_TIME_OF_DAY;

+         RESTART_BY_TIME_OF_DAY = Boolean.parseBoolean(la2slipperSettings.getProperty("EnableRestartSystem", "false"));
+         RESTART_SECONDS = Integer.parseInt(la2slipperSettings.getProperty("RestartSeconds", "360"));
+         RESTART_INTERVAL_BY_TIME_OF_DAY = la2slipperSettings.getProperty("RestartByTimeOfDay", "20:00").split(",");