С помощью этой команды игроки с вашего сервера смогут проголосовать за рестарт сервера.
Создайте новый файл с названием ServerRestartVote.java в net.sf.l2j.gameserver.commandhandler.voicedcommands и вставьте:
Создайте новый файл VoteVariable.java в net.sf.l2j.gameserver.model.actor.entity и вставьте:
Создайте файл RestartTheServer.java в net.sf.l2j.gameserver.model.actor.entity и вставьте:
Код:
Index: D:/Games/Server/WorkSpace/GameServer/java/config/Mods.properties
===================================================================
--- D:/Games/Server/WorkSpace/GameServer/java/config/Mods.properties (revision 194)
+++ D:/Games/Server/WorkSpace/GameServer/java/config/Mods.properties (working copy)
@@ -227,3 +227,12 @@
# Announce Level Settings
MinLevelToAnnounce = 1
MaxLevelToAnnounce = 80
+
+# ========================== #
+# Server Restart Voting #
+# ========================== #
+# Enable Server Restart Command
+AllowServerRestartCommand = False
+
+# Votes For Restart
+VotesNeededForRestart = 20
Index: D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/Config.java
===================================================================
--- D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/Config.java (revision 194)
+++ D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/Config.java (working copy)
@@ -960,6 +960,10 @@
public static int NPC_ANNOUNCER_MIN_LVL_TO_ANNOUNCE;
public static int NPC_ANNOUNCER_MAX_LVL_TO_ANNOUNCE;
public static boolean NPC_ANNOUNCER_DONATOR_ONLY;
+
+ /** Server Restart */
+ public static boolean ALLOW_SERVER_RESTART_COMMAND;
+ public static int VOTES_NEEDED_FOR_RESTART;
/** Event Automation */
public static int TIME_BETWEEN_EVENTS;
@@ -2091,6 +2095,9 @@
NPC_ANNOUNCER_MAX_ANNOUNCES_PER_DAY = Integer.parseInt(Mods.getProperty("AnnouncesPerDay", "20"));
NPC_ANNOUNCER_MIN_LVL_TO_ANNOUNCE = Integer.parseInt(Mods.getProperty("MinLevelToAnnounce", "0"));
NPC_ANNOUNCER_MAX_LVL_TO_ANNOUNCE = Integer.parseInt(Mods.getProperty("MaxLevelToAnnounce", "80"));
+
+ ALLOW_SERVER_RESTART_COMMAND = Boolean.parseBoolean(Mods.getProperty("AllowServerRestartCommand", "False"));
+ VOTES_NEEDED_FOR_RESTART = Integer.parseInt(Mods.getProperty("VotesNeededForRestart", "20"));
}
catch (Exception e)
{
Index: D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 196)
+++ D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -617,6 +617,9 @@
public boolean _inEventVIP = false;
public boolean _isNotVIP = false, _isTheVIP = false;
public int _originalNameColourVIP, _originalKarmaVIP;
+
+ /** Server Restart Vote Parameters */
+ public boolean _voteRestart = false;
/** new loto ticket **/
private int _loto[] = new int[5];
Index: D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/GameServer.java (revision 189)
+++ D:/Games/Server/WorkSpace/GameServer/java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -204,6 +204,7 @@
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.JoinVIP;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.OnlinePlayers;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.PmOff;
+import net.sf.l2j.gameserver.handler.voicedcommandhandlers.ServerRestartVote;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.TradeOff;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.VoiceInfo;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Wedding;
@@ -620,6 +621,9 @@
_voicedCommandHandler.registerVoicedCommandHandler(new BuyRec());
_voicedCommandHandler.registerVoicedCommandHandler(new JoinVIP());
+
+ if(Config.ALLOW_SERVER_RESTART_COMMAND)
+ _voicedCommandHandler.registerVoicedCommandHandler(new ServerRestartVote());
_log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers.");
Создайте новый файл с названием ServerRestartVote.java в net.sf.l2j.gameserver.commandhandler.voicedcommands и вставьте:
Код:
/*
* 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 net.sf.l2j.gameserver.handler.voicedcommandhandlers;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.entity.RestartVoteVariable;
/**
* @author SkyLanceR
*/
public class ServerRestartVote implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS = {"vote_restart"};
/**
*
* @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, net.sf.l2j.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
RestartVoteVariable e = new RestartVoteVariable();
if(command.startsWith("vote_restart"))
{
if (activeChar._voteRestart == false)
{
e.increaseVoteCount("restart");
activeChar._voteRestart = true;
activeChar.sendMessage("You succesfully voted for the server restart. Votes For The Moment: " + e.getVoteCount("tvt") + ".");
Announcements.getInstance().announceToAll("Player: "+activeChar.getName()+" has voted for server restart. If you whant to support him type .vote_restart !");
}
else
{
activeChar.sendMessage("You have already voted for an server restart.");
}
}
return false;
}
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
Создайте новый файл VoteVariable.java в net.sf.l2j.gameserver.model.actor.entity и вставьте:
Код:
/*
* 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 net.sf.l2j.gameserver.model.entity;
/**
*@author SkyLanceR
*/
public class RestartVoteVariable
{
public int _voteCountRestart = 0;
private int _voteCount = 0;
public int getVoteCount(String name)
{
if (name == "restart")
{
_voteCount = _voteCountRestart;
}
return _voteCount;
}
public void increaseVoteCount(String name)
{
if (name == "restart")
{
_voteCountRestart = _voteCountRestart+1;
}
}
}
Создайте файл RestartTheServer.java в net.sf.l2j.gameserver.model.actor.entity и вставьте:
Код:
/*
* 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 net.sf.l2j.gameserver.model.entity;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.Shutdown;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
/**
* @author SkyLanceR
*/
public class RestartTheServer
{
public static void playerRestart(L2PcInstance activeChar, boolean restart)
{
RestartVoteVariable e = new RestartVoteVariable();
if (e.getVoteCount("restart") > Config.VOTES_NEEDED_FOR_RESTART)
{
Shutdown.getInstance().startShutdown(activeChar, 60, restart);
}
}
}