Advertisement
Axelut

Auto Restart Acis 401+

May 9th, 2023 (edited)
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff --git a/config/CustomMods/SpecialMods.ini b/config/CustomMods/SpecialMods.ini
  2. index b2640c6..5464546 100644
  3. --- a/config/CustomMods/SpecialMods.ini
  4. +++ b/config/CustomMods/SpecialMods.ini
  5. @@ -4,3 +4,17 @@
  6. #Start with the super rod skill activated?
  7. GMStartupSuperHaste = True
  8.  
  9. +#======================================================
  10. +# Auto Restart
  11. +#======================================================
  12. +# Enable / Disable Restart Auto
  13. +EnableRestartSystem = True
  14. +
  15. +# If EnableRestartSystem = True hours of the day
  16. +# Example: 22:00,23:00 (hh:mm,hh:mm...)
  17. +# NOTE: Separate ":" mm:hh and "," others restart time
  18. +RestartByTimeOfDay = 00:00
  19. +
  20. +# Seconds to restart the server ( 360 = 5 Minutos )
  21. +# default = 30, Max 360
  22. +RestartSeconds = 30
  23. \ No newline at end of file
  24. diff --git a/java/net/sf/l2j/Config.java b/java/net/sf/l2j/Config.java
  25. index a8aca42..61cacdf 100644
  26. --- a/java/net/sf/l2j/Config.java
  27. +++ b/java/net/sf/l2j/Config.java
  28. @@ -157,6 +157,9 @@
  29. public static String DISABLE_BOW_CLASSES_STRING;
  30. public static ArrayList<Integer> DISABLE_BOW_CLASSES = new ArrayList<>();
  31. public static boolean GM_SUPER_HASTE;
  32. + public static boolean RESTART_BY_TIME_OF_DAY;
  33. + public static int RESTART_SECONDS;
  34. + public static String[] RESTART_INTERVAL_BY_TIME_OF_DAY;
  35. // --------------------------------------------------
  36. // Events settings
  37. // --------------------------------------------------
  38. @@ -1217,6 +1220,9 @@
  39. private static final void loadSpecial()
  40. {
  41. final ExProperties Special = initProperties(SPECIAL_MODS);
  42. + RESTART_BY_TIME_OF_DAY = Boolean.parseBoolean(Special.getProperty("EnableRestartSystem", "false"));
  43. + RESTART_SECONDS = Integer.parseInt(Special.getProperty("RestartSeconds", "360"));
  44. + RESTART_INTERVAL_BY_TIME_OF_DAY = Special.getProperty("RestartByTimeOfDay", "20:00").split(",");
  45. GM_SUPER_HASTE = Boolean.parseBoolean(Special.getProperty("GMStartupSuperHaste", "true"));
  46. ANNOUNCE_PVP_KILL = Boolean.parseBoolean(Special.getProperty("AnnouncePvPKill", "false"));
  47. ANNOUNCE_PK_KILL = Boolean.parseBoolean(Special.getProperty("AnnouncePkKill", "false"));
  48. diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java
  49. index a829cab..33aa989 100644
  50. --- a/java/net/sf/l2j/gameserver/GameServer.java
  51. +++ b/java/net/sf/l2j/gameserver/GameServer.java
  52. @@ -151,6 +151,12 @@
  53. HtmCache.getInstance();
  54. CrestCache.getInstance();
  55.  
  56. + LOGGER.info("Restart Manager");
  57. + if(Config.RESTART_BY_TIME_OF_DAY)
  58. + Restart.getInstance().StartCalculationOfNextRestartTime();
  59. + else
  60. + LOGGER.info("# Auto Restart System is Disabled #");
  61. +
  62. StringUtil.printSection("World");
  63. World.getInstance();
  64. MapRegionData.getInstance();
  65. diff --git a/java/net/sf/l2j/gameserver/Restart.java b/java/net/sf/l2j/gameserver/Restart.java
  66. new file mode 100644
  67. index 0000000..8c1d2fc
  68. --- /dev/null
  69. +++ b/java/net/sf/l2j/gameserver/Restart.java
  70. @@ -0,0 +1,115 @@
  71. /*
  72. * This program is free software: you can redistribute it and/or modify it under
  73. * the terms of the GNU General Public License as published by the Free Software
  74. * Foundation, either version 3 of the License, or (at your option) any later
  75. * version.
  76. *
  77. * This program is distributed in the hope that it will be useful, but WITHOUT
  78. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  79. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  80. * details.
  81. *
  82. * You should have received a copy of the GNU General Public License along with
  83. * this program. If not, see <http://www.gnu.org/licenses/>.
  84. */
  85. package net.sf.l2j.gameserver;
  86.  
  87. import java.text.SimpleDateFormat;
  88. import java.util.Calendar;
  89. import java.util.logging.Logger;
  90.  
  91. import net.sf.l2j.commons.pool.ThreadPool;
  92.  
  93. import net.sf.l2j.Config;
  94.  
  95. public class Restart
  96. {
  97. //Variaveis globais
  98. private static Restart _instance = null;
  99. protected static final Logger _log = Logger.getLogger(Restart.class.getName());
  100. private Calendar NextRestart;
  101. private SimpleDateFormat format = new SimpleDateFormat("HH:mm");
  102.  
  103. //Singleton
  104. public static Restart getInstance()
  105. {
  106. if(_instance == null)
  107. _instance = new Restart();
  108. return _instance;
  109. }
  110.  
  111. public String getRestartNextTime()
  112. {
  113. if(NextRestart.getTime() != null)
  114. return format.format(NextRestart.getTime());
  115. else
  116. return "Erro";
  117. }
  118.  
  119. //Connstrutor
  120. private Restart()
  121. {
  122. //:D
  123. }
  124.  
  125. public void StartCalculationOfNextRestartTime()
  126. {
  127. _log.info("#####################################");
  128. _log.info("#[Restart System]: System actived...#");
  129. _log.info("#####################################");
  130. try
  131. {
  132. Calendar currentTime = Calendar.getInstance();
  133. Calendar testStartTime = null;
  134. long flush2 = 0,timeL = 0;
  135. int count = 0;
  136.  
  137. for (String timeOfDay : Config.RESTART_INTERVAL_BY_TIME_OF_DAY)
  138. {
  139. testStartTime = Calendar.getInstance();
  140. testStartTime.setLenient(true);
  141. String[] splitTimeOfDay = timeOfDay.split(":");
  142. testStartTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(splitTimeOfDay[0]));
  143. testStartTime.set(Calendar.MINUTE, Integer.parseInt(splitTimeOfDay[1]));
  144. testStartTime.set(Calendar.SECOND, 00);
  145. //Verifica a validade to tempo
  146. if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
  147. {
  148. testStartTime.add(Calendar.DAY_OF_MONTH, 1);
  149. }
  150.  
  151. //TimeL Recebe o quanto falta de milisegundos para o restart
  152. timeL = testStartTime.getTimeInMillis() - currentTime.getTimeInMillis();
  153.  
  154. //Verifica qual horario sera o proximo restart
  155. if(count == 0){
  156. flush2 = timeL;
  157. NextRestart = testStartTime;
  158. }
  159.  
  160. if(timeL < flush2){
  161. flush2 = timeL;
  162. NextRestart = testStartTime;
  163. }
  164.  
  165. count ++;
  166. }
  167. _log.info("[AutoRestart]: Next Restart Time: " + NextRestart.getTime().toString());
  168. ThreadPool.schedule(new StartRestartTask(), flush2);
  169. }
  170. catch (Exception e)
  171. {
  172. System.out.println("[AutoRestart]: The restart automated server presented error in load restarts period config !");
  173. }
  174. }
  175.  
  176. class StartRestartTask implements Runnable
  177. {
  178. @Override
  179. public void run()
  180. {
  181. _log.info("Start automated restart GameServer.");
  182. Shutdown.getInstance().autoRestart(Config.RESTART_SECONDS);
  183. }
  184. }
  185. }
  186. \ No newline at end of file
  187. diff --git a/java/net/sf/l2j/gameserver/Shutdown.java b/java/net/sf/l2j/gameserver/Shutdown.java
  188. index 440d9aa..07d2932 100644
  189. --- a/java/net/sf/l2j/gameserver/Shutdown.java
  190. +++ b/java/net/sf/l2j/gameserver/Shutdown.java
  191. @@ -369,4 +369,16 @@
  192. {
  193. protected static final Shutdown INSTANCE = new Shutdown();
  194. }
  195. +
  196. + public void autoRestart(int time)
  197. + {
  198. + _secondsShut = time;
  199. +
  200. + countdown();
  201. +
  202. + _shutdownMode = GM_RESTART;
  203. +
  204. + SingletonHolder.INSTANCE.setMode(GM_RESTART);
  205. + System.exit(2);
  206. + }
  207. }
  208. \ No newline at end of file
  209. diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java b/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  210. index 717e11a..3e30838 100644
  211. --- a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  212. +++ b/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  213. @@ -3,6 +3,7 @@
  214. import java.util.Map.Entry;
  215.  
  216. import net.sf.l2j.Config;
  217. +import net.sf.l2j.gameserver.Restart;
  218. import net.sf.l2j.gameserver.communitybbs.manager.MailBBSManager;
  219. import net.sf.l2j.gameserver.data.SkillTable;
  220. import net.sf.l2j.gameserver.data.SkillTable.FrequentSkill;
  221. @@ -230,6 +231,10 @@
  222. {
  223. Olympiad.olympiadEnd(player);
  224. }
  225. + if(Config.RESTART_BY_TIME_OF_DAY)
  226. + {
  227. + ShowNextRestart(player);
  228. + }
  229. // Means that it's not ok multiBox situation, so logout
  230. if (!player.checkMultiBox())
  231. {
  232. @@ -305,7 +310,17 @@
  233.  
  234. player.sendPacket(ActionFailed.STATIC_PACKET);
  235. }
  236. -
  237. + /**
  238. + * Envia mensagem para o player do proximo restart
  239. + * NOTE: RESTART_BY_TIME_OF_DAY = TRUE
  240. + *
  241. + * @param activeChar
  242. + */
  243. + private static void ShowNextRestart(Player activeChar)
  244. + {
  245. + activeChar.sendMessage("Next Restart: " + Restart.getInstance().getRestartNextTime());
  246. + }
  247. +
  248. @Override
  249. protected boolean triggersOnActionRequest()
  250. {
  251.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement