New networking.
This commit is contained in:
@@ -31,6 +31,49 @@ GameserverHostname = 0.0.0.0
|
||||
# Default: 7777
|
||||
GameserverPort = 7777
|
||||
|
||||
# Client pool size for reading client packets.
|
||||
# Each pool is executed on a separate thread.
|
||||
# Default: 100
|
||||
ClientReadPoolSize = 100
|
||||
|
||||
# Client pool size for executing client packets.
|
||||
# Each pool is executed on a separate thread.
|
||||
# Default: 50
|
||||
ClientExecutePoolSize = 50
|
||||
|
||||
# Expected client packet count queued by the server.
|
||||
# Default: 80
|
||||
PacketQueueLimit = 80
|
||||
|
||||
# Disconnect client when queue has reached the queue packet limit.
|
||||
# Default: False
|
||||
PacketFloodDisconnect = False
|
||||
|
||||
# Drop packets when queue has reached the queue packet limit.
|
||||
# Default: False
|
||||
PacketFloodDrop = False
|
||||
|
||||
# Log message when queue has reached the queue packet limit.
|
||||
# Default: True
|
||||
PacketFloodLogged = True
|
||||
|
||||
# Nagle's algorithm tries to conserve bandwidth by minimizing the number of segments that are sent.
|
||||
# When applications wish to decrease network latency, they can disable Nagle's algorithm (by enabling TcpNoDelay).
|
||||
# Data will be sent earlier, at the cost of an increase in bandwidth consumption.
|
||||
# Default: True (disabled)
|
||||
TcpNoDelay = True
|
||||
|
||||
# Connection timeout in milliseconds.
|
||||
# Default 800
|
||||
ConnectionTimeout = 800
|
||||
|
||||
# Packet encryption.
|
||||
# By default packets sent or received are encrypted using the Blowfish algorithm.
|
||||
# Disabling this reduces the resources needed to process any packets transfered,
|
||||
# also broadcasted packets do not need to be re-encrypted for each client sent.
|
||||
# Retail: True
|
||||
PacketEncryption = False
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Database
|
||||
@@ -138,8 +181,11 @@ InstantThreadPoolCount = -1
|
||||
# Specifies how many threads will be in a single instant pool.
|
||||
ThreadsPerInstantThreadPool = 2
|
||||
|
||||
# Urgent packet thread core size.
|
||||
UrgentPacketThreadCoreSize = -1
|
||||
# Use threads to run client packets individually.
|
||||
# Less lag when using threads, but more CPU consumption.
|
||||
# Can try disabling it when server is highly populated and CPU is high.
|
||||
# Default: True
|
||||
ThreadsForClientPackets = True
|
||||
|
||||
# Use threads to decrease startup time.
|
||||
# Default: False
|
||||
|
@@ -1,31 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# Telnet Settings
|
||||
# ---------------------------------------------------------------------------
|
||||
# The defaults are set to be retail-like. If you modify any of these settings your server will deviate from being retail-like.
|
||||
# Warning:
|
||||
# Please take extreme caution when changing anything. Also please understand what you are changing before you do so on a live server.
|
||||
# ---------------------------------------------------------------------------
|
||||
# Allows text based monitoring and administration of L2J GS
|
||||
# by using a telnet client. Communication protocol is insecure
|
||||
# and you should use SSL tunnels, VPN, etc. if you plan to connect
|
||||
# over non-trusted channels.
|
||||
# Default: False
|
||||
EnableTelnet = False
|
||||
|
||||
# This is the hostname address on which telnet server will be listening.
|
||||
# Note for all adapters use: *
|
||||
# Default: 127.0.0.1
|
||||
BindAddress = 127.0.0.1
|
||||
|
||||
# This is the port L2J should listen to for incoming telnet
|
||||
# requests.
|
||||
# Default: 54321
|
||||
Port = 54321
|
||||
|
||||
# If the following is not set, a random password is generated on server startup.
|
||||
Password = somepassword
|
||||
|
||||
# This list can contain IPs or Hosts of clients you wish to allow. Hostnames must be resolvable to an IP.
|
||||
# Example: 0.0.0.0,host,0.0.0.1,host2,host3,host4,0.0.0.3
|
||||
# Default: 127.0.0.1,localhost,::1
|
||||
ListOfHosts = 127.0.0.1,localhost,::1
|
@@ -33,10 +33,10 @@ import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera;
|
||||
|
||||
@@ -878,7 +878,7 @@ public class LastImperialTomb extends AbstractInstance
|
||||
}
|
||||
}
|
||||
|
||||
void broadcastPacket(Instance world, IClientOutgoingPacket packet)
|
||||
void broadcastPacket(Instance world, ServerPacket packet)
|
||||
{
|
||||
for (Player player : world.getPlayers())
|
||||
{
|
||||
@@ -889,7 +889,7 @@ public class LastImperialTomb extends AbstractInstance
|
||||
}
|
||||
}
|
||||
|
||||
private void sendPacketX(Instance world, IClientOutgoingPacket packet1, IClientOutgoingPacket packet2, int x)
|
||||
private void sendPacketX(Instance world, ServerPacket packet1, ServerPacket packet2, int x)
|
||||
{
|
||||
for (Player player : world.getPlayers())
|
||||
{
|
||||
|
@@ -39,7 +39,6 @@ import org.l2jmobius.gameserver.handler.PunishmentHandler;
|
||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||
import org.l2jmobius.gameserver.handler.UserCommandHandler;
|
||||
import org.l2jmobius.gameserver.handler.VoicedCommandHandler;
|
||||
import org.l2jmobius.gameserver.network.telnet.TelnetServer;
|
||||
|
||||
import handlers.actionhandlers.ArtefactAction;
|
||||
import handlers.actionhandlers.DecoyAction;
|
||||
@@ -292,30 +291,6 @@ import handlers.targethandlers.affectscope.Square;
|
||||
import handlers.targethandlers.affectscope.SquarePB;
|
||||
import handlers.targethandlers.affectscope.StaticObjectScope;
|
||||
import handlers.targethandlers.affectscope.SummonExceptMaster;
|
||||
import handlers.telnethandlers.chat.Announce;
|
||||
import handlers.telnethandlers.chat.GMChat;
|
||||
import handlers.telnethandlers.chat.Msg;
|
||||
import handlers.telnethandlers.player.AccessLevel;
|
||||
import handlers.telnethandlers.player.Ban;
|
||||
import handlers.telnethandlers.player.BanChat;
|
||||
import handlers.telnethandlers.player.Enchant;
|
||||
import handlers.telnethandlers.player.GMList;
|
||||
import handlers.telnethandlers.player.Give;
|
||||
import handlers.telnethandlers.player.Jail;
|
||||
import handlers.telnethandlers.player.Kick;
|
||||
import handlers.telnethandlers.player.SendMail;
|
||||
import handlers.telnethandlers.player.Unban;
|
||||
import handlers.telnethandlers.player.UnbanChat;
|
||||
import handlers.telnethandlers.player.Unjail;
|
||||
import handlers.telnethandlers.server.ForceGC;
|
||||
import handlers.telnethandlers.server.Memusage;
|
||||
import handlers.telnethandlers.server.Performance;
|
||||
import handlers.telnethandlers.server.Purge;
|
||||
import handlers.telnethandlers.server.Reload;
|
||||
import handlers.telnethandlers.server.ServerAbort;
|
||||
import handlers.telnethandlers.server.ServerRestart;
|
||||
import handlers.telnethandlers.server.ServerShutdown;
|
||||
import handlers.telnethandlers.server.Status;
|
||||
import handlers.usercommandhandlers.ChannelDelete;
|
||||
import handlers.usercommandhandlers.ChannelInfo;
|
||||
import handlers.usercommandhandlers.ChannelLeave;
|
||||
@@ -735,35 +710,6 @@ public class MasterHandler
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.TELNET_ENABLED)
|
||||
{
|
||||
TelnetServer.getInstance().addHandler(new Announce());
|
||||
TelnetServer.getInstance().addHandler(new GMChat());
|
||||
TelnetServer.getInstance().addHandler(new Msg());
|
||||
TelnetServer.getInstance().addHandler(new AccessLevel());
|
||||
TelnetServer.getInstance().addHandler(new Ban());
|
||||
TelnetServer.getInstance().addHandler(new BanChat());
|
||||
TelnetServer.getInstance().addHandler(new Enchant());
|
||||
TelnetServer.getInstance().addHandler(new Give());
|
||||
TelnetServer.getInstance().addHandler(new GMList());
|
||||
TelnetServer.getInstance().addHandler(new Jail());
|
||||
TelnetServer.getInstance().addHandler(new Kick());
|
||||
TelnetServer.getInstance().addHandler(new Unban());
|
||||
TelnetServer.getInstance().addHandler(new UnbanChat());
|
||||
TelnetServer.getInstance().addHandler(new Unjail());
|
||||
TelnetServer.getInstance().addHandler(new ForceGC());
|
||||
TelnetServer.getInstance().addHandler(new Memusage());
|
||||
TelnetServer.getInstance().addHandler(new Performance());
|
||||
TelnetServer.getInstance().addHandler(new Purge());
|
||||
TelnetServer.getInstance().addHandler(new Reload());
|
||||
TelnetServer.getInstance().addHandler(new SendMail());
|
||||
TelnetServer.getInstance().addHandler(new ServerAbort());
|
||||
TelnetServer.getInstance().addHandler(new ServerRestart());
|
||||
TelnetServer.getInstance().addHandler(new ServerShutdown());
|
||||
TelnetServer.getInstance().addHandler(new Status());
|
||||
TelnetServer.getInstance().addHandler(new handlers.telnethandlers.server.Debug());
|
||||
}
|
||||
|
||||
for (IHandler<?, ?> loadInstance : LOAD_INSTANCES)
|
||||
{
|
||||
LOGGER.info(loadInstance.getClass().getSimpleName() + ": Loaded " + loadInstance.size() + " handlers.");
|
||||
|
@@ -1123,7 +1123,7 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
ip = client.getConnectionAddress().getHostAddress();
|
||||
ip = client.getIp();
|
||||
}
|
||||
|
||||
final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1);
|
||||
@@ -1332,7 +1332,7 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
ip = client.getConnectionAddress().getHostAddress();
|
||||
ip = client.getIp();
|
||||
if (!ip.equals(ipAdress))
|
||||
{
|
||||
continue;
|
||||
@@ -1426,7 +1426,7 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
ip = client.getConnectionAddress().getHostAddress();
|
||||
ip = client.getIp();
|
||||
if (ipMap.get(ip) == null)
|
||||
{
|
||||
ipMap.put(ip, new ArrayList<>());
|
||||
@@ -1479,7 +1479,7 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
continue;
|
||||
}
|
||||
|
||||
final IpPack pack = new IpPack(client.getConnectionAddress().getHostAddress(), client.getTrace());
|
||||
final IpPack pack = new IpPack(client.getIp(), client.getTrace());
|
||||
if (ipMap.get(pack) == null)
|
||||
{
|
||||
ipMap.put(pack, new ArrayList<>());
|
||||
|
@@ -38,11 +38,11 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExRedSky;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SunRise;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.SunSet;
|
||||
@@ -717,7 +717,7 @@ public class AdminEffects implements IAdminCommandHandler
|
||||
*/
|
||||
private void adminAtmosphere(String type, String state, int duration, Player activeChar)
|
||||
{
|
||||
IClientOutgoingPacket packet = null;
|
||||
ServerPacket packet = null;
|
||||
if (type.equals("sky"))
|
||||
{
|
||||
if (state.equals("night"))
|
||||
|
@@ -1,56 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.chat;
|
||||
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Broadcast;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Announce implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "announce";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Announce <text>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (String str : args)
|
||||
{
|
||||
sb.append(str + " ");
|
||||
}
|
||||
Broadcast.toAllOnlinePlayers(sb.toString());
|
||||
return "Announcement sent!";
|
||||
}
|
||||
}
|
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.chat;
|
||||
|
||||
import org.l2jmobius.gameserver.data.xml.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class GMChat implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "gmchat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Gmchat <text>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (String str : args)
|
||||
{
|
||||
sb.append(str + " ");
|
||||
}
|
||||
AdminData.getInstance().broadcastToGMs(new CreatureSay(null, ChatType.ALLIANCE, "Telnet GM Broadcast", sb.toString()));
|
||||
return "GMChat sent!";
|
||||
}
|
||||
}
|
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.chat;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Msg implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "msg";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Msg <player> <text>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length < 2) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[0]);
|
||||
if (player != null)
|
||||
{
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (int i = 1; i < args.length; i++)
|
||||
{
|
||||
sb.append(args[i] + " ");
|
||||
}
|
||||
player.sendPacket(new CreatureSay(null, ChatType.WHISPER, "Telnet Priv", sb.toString()));
|
||||
return "Announcement sent!";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class AccessLevel implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "accesslevel";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "AccessLevel <player name> <access level>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length < 2) || args[0].isEmpty() || !Util.isDigit(args[1]))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[0]);
|
||||
if (player != null)
|
||||
{
|
||||
final int level = Integer.parseInt(args[1]);
|
||||
player.setAccessLevel(level, true, true);
|
||||
return "Player " + player.getName() + "'s access level has been changed to: " + level;
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentTask;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Ban implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "ban";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Ban <player name> [time in minutes]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.BAN))
|
||||
{
|
||||
return "Player is already banned.";
|
||||
}
|
||||
long time = -1;
|
||||
String reason = "You have been banned by telnet admin.";
|
||||
if (args.length > 1)
|
||||
{
|
||||
final String token = args[1];
|
||||
if (Util.isDigit(token))
|
||||
{
|
||||
time = Integer.parseInt(token) * 60 * 1000;
|
||||
time += System.currentTimeMillis();
|
||||
}
|
||||
if (args.length > 2)
|
||||
{
|
||||
reason = args[2];
|
||||
for (int i = 3; i < args.length; i++)
|
||||
{
|
||||
reason += " " + args[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
PunishmentManager.getInstance().startPunishment(new PunishmentTask(objectId, PunishmentAffect.CHARACTER, PunishmentType.BAN, time, reason, "Telnet Admin"));
|
||||
return "Player has been successfully banned.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentTask;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author lion
|
||||
*/
|
||||
public class BanChat implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "ban_chat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "ban_chat <player name> [time in minutes]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN))
|
||||
{
|
||||
return "Player is already chat banned.";
|
||||
}
|
||||
long time = -1;
|
||||
String reason = "Your chat have been banned by telnet admin.";
|
||||
if (args.length > 1)
|
||||
{
|
||||
final String token = args[1];
|
||||
if (Util.isDigit(token))
|
||||
{
|
||||
time = Integer.parseInt(token) * 60 * 1000;
|
||||
time += System.currentTimeMillis();
|
||||
}
|
||||
if (args.length > 2)
|
||||
{
|
||||
reason = args[2];
|
||||
for (int i = 3; i < args.length; i++)
|
||||
{
|
||||
reason += " " + args[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
PunishmentManager.getInstance().startPunishment(new PunishmentTask(objectId, PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN, time, reason, "Telnet Admin"));
|
||||
return "Player has been successfully banned.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,198 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.GMAudit;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Enchant implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "enchant";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Enchant <player name> <item id> [item amount] [item enchant]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length < 3) || args[0].isEmpty() || !Util.isDigit(args[1]) || !Util.isDigit(args[2]))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[0]);
|
||||
if (player != null)
|
||||
{
|
||||
int itemType = Integer.parseInt(args[1]);
|
||||
int enchant = Integer.parseInt(args[2]);
|
||||
enchant = Math.min(enchant, 127);
|
||||
enchant = Math.max(enchant, 0);
|
||||
|
||||
switch (itemType)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_HEAD;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_CHEST;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_GLOVES;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_FEET;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LEGS;
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_RHAND;
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LHAND;
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LEAR;
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_REAR;
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LFINGER;
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_RFINGER;
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_NECK;
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_UNDER;
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_CLOAK;
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_BELT;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
itemType = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
final boolean success = setEnchant(player, enchant, itemType);
|
||||
return success ? "Item has been successfully enchanted." : "Failed to enchant player's item!";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
|
||||
private boolean setEnchant(Player player, int ench, int armorType)
|
||||
{
|
||||
// now we need to find the equipped weapon of the targeted character...
|
||||
int curEnchant = 0; // display purposes only
|
||||
Item itemInstance = null;
|
||||
|
||||
// only attempt to enchant if there is a weapon equipped
|
||||
Item parmorInstance = player.getInventory().getPaperdollItem(armorType);
|
||||
if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
|
||||
{
|
||||
itemInstance = parmorInstance;
|
||||
}
|
||||
else
|
||||
{
|
||||
// for bows/crossbows and double handed weapons
|
||||
parmorInstance = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
|
||||
if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == Inventory.PAPERDOLL_RHAND))
|
||||
{
|
||||
itemInstance = parmorInstance;
|
||||
}
|
||||
}
|
||||
|
||||
if (itemInstance != null)
|
||||
{
|
||||
curEnchant = itemInstance.getEnchantLevel();
|
||||
|
||||
// set enchant value
|
||||
player.getInventory().unEquipItemInSlot(armorType);
|
||||
itemInstance.setEnchantLevel(ench);
|
||||
player.getInventory().equipItem(itemInstance);
|
||||
|
||||
// send packets
|
||||
final InventoryUpdate iu = new InventoryUpdate();
|
||||
iu.addModifiedItem(itemInstance);
|
||||
player.sendPacket(iu);
|
||||
player.broadcastUserInfo();
|
||||
|
||||
// informations
|
||||
player.sendMessage("Changed enchantment of " + player.getName() + "'s " + itemInstance.getTemplate().getName() + " from " + curEnchant + " to " + ench + ".");
|
||||
player.sendMessage("Admin has changed the enchantment of your " + itemInstance.getTemplate().getName() + " from " + curEnchant + " to " + ench + ".");
|
||||
|
||||
// log
|
||||
GMAudit.auditGMAction("TelnetAdmin", "enchant", player.getName(), itemInstance.getTemplate().getName() + "(" + itemInstance.getObjectId() + ") from " + curEnchant + " to " + ench);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.data.xml.AdminData;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class GMList implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "gmlist";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "GMList";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
int i = 0;
|
||||
String gms = "";
|
||||
for (String player : AdminData.getInstance().getAllGmNames(true))
|
||||
{
|
||||
gms += player + ", ";
|
||||
i++;
|
||||
}
|
||||
if (!gms.isEmpty())
|
||||
{
|
||||
gms = gms.substring(0, gms.length() - 2) + ".";
|
||||
}
|
||||
return "There are currently " + i + " GM(s) online..." + Config.EOL + gms;
|
||||
}
|
||||
}
|
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Give implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "give";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Give <player name> <item id> [item amount] [item enchant] [donators]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length < 2) || args[0].isEmpty() || !Util.isDigit(args[1]))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[0]);
|
||||
if (player != null)
|
||||
{
|
||||
final int itemId = Integer.parseInt(args[1]);
|
||||
long amount = 1;
|
||||
int enchanted = 0;
|
||||
if (args.length > 2)
|
||||
{
|
||||
String token = args[2];
|
||||
if (Util.isDigit(token))
|
||||
{
|
||||
amount = Long.parseLong(token);
|
||||
}
|
||||
if (args.length > 3)
|
||||
{
|
||||
token = args[3];
|
||||
if (Util.isDigit(token))
|
||||
{
|
||||
enchanted = Integer.parseInt(token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Item item = ItemTable.getInstance().createItem("Telnet-Admin", itemId, amount, player, null);
|
||||
if (enchanted > 0)
|
||||
{
|
||||
item.setEnchantLevel(enchanted);
|
||||
}
|
||||
player.addItem("Telnet-Admin", item, null, true);
|
||||
return "Item has been successfully given to the player.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentTask;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Jail implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "jail";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Jail <player name> [time in minutes]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.JAIL))
|
||||
{
|
||||
return "Player is already jailed.";
|
||||
}
|
||||
String reason = "You have been jailed by telnet admin.";
|
||||
long time = -1;
|
||||
if (args.length > 1)
|
||||
{
|
||||
final String token = args[1];
|
||||
if (Util.isDigit(token))
|
||||
{
|
||||
time = Integer.parseInt(token) * 60 * 1000;
|
||||
time += System.currentTimeMillis();
|
||||
}
|
||||
if (args.length > 2)
|
||||
{
|
||||
reason = args[2];
|
||||
for (int i = 3; i < args.length; i++)
|
||||
{
|
||||
reason += " " + args[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
PunishmentManager.getInstance().startPunishment(new PunishmentTask(objectId, PunishmentAffect.CHARACTER, PunishmentType.JAIL, time, reason, "Telnet Admin"));
|
||||
return "Player has been successfully jailed.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.network.Disconnection;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Kick implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "kick";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Kick <player name>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[0]);
|
||||
if (player != null)
|
||||
{
|
||||
Disconnection.of(player).defaultSequence(LeaveWorld.STATIC_PACKET);
|
||||
return "Player has been successfully kicked.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.instancemanager.MailManager;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class SendMail implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "sendmail";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "sendmail <player name> <mail subject (use _ for spaces)> <mail message (use _ for spaces)> <item(s) (optional) e.g. 57x1000000>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length < 3) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
final Message msg = new Message(objectId, args[1].replace("_", " "), args[2].replace("_", " "), args.length > 3 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
int counter = -1;
|
||||
for (String str : args)
|
||||
{
|
||||
counter++;
|
||||
if (counter < 3)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (str.toLowerCase().contains("x"))
|
||||
{
|
||||
final String itemId = str.toLowerCase().split("x")[0];
|
||||
final String itemCount = str.toLowerCase().split("x")[1];
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Telnet-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
}
|
||||
}
|
||||
MailManager.getInstance().sendMessage(msg);
|
||||
return "An ingame mail has been sent to " + args[0] + ".";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Unban implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "unban";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Unban <player name>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (!PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.BAN))
|
||||
{
|
||||
return "Player is not banned at all.";
|
||||
}
|
||||
PunishmentManager.getInstance().stopPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.BAN);
|
||||
return "Player has been successfully unbanned.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class UnbanChat implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "unban_chat";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "unban_chat <player name>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (!PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN))
|
||||
{
|
||||
return "Player is not banned at all.";
|
||||
}
|
||||
PunishmentManager.getInstance().stopPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN);
|
||||
return "Player chat has been successfully unbanned.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.player;
|
||||
|
||||
import org.l2jmobius.gameserver.data.sql.CharNameTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
|
||||
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Unjail implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "unjail";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Unjail <player name>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int objectId = CharNameTable.getInstance().getIdByName(args[0]);
|
||||
if (objectId > 0)
|
||||
{
|
||||
if (!PunishmentManager.getInstance().hasPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.JAIL))
|
||||
{
|
||||
return "Player is not jailed at all.";
|
||||
}
|
||||
PunishmentManager.getInstance().stopPunishment(objectId, PunishmentAffect.CHARACTER, PunishmentType.JAIL);
|
||||
return "Player has been successfully unjailed.";
|
||||
}
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
}
|
@@ -1,366 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.lang.management.ThreadInfo;
|
||||
import java.lang.management.ThreadMXBean;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.GameServer;
|
||||
import org.l2jmobius.gameserver.LoginServerThread;
|
||||
import org.l2jmobius.gameserver.data.xml.AdminData;
|
||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Monster;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.AdminForgePacket;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.taskmanager.DecayTaskManager;
|
||||
import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Debug implements ITelnetCommand
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(Debug.class.getName());
|
||||
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "debug";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Debug <decay/packetsend/full>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
switch (args[0])
|
||||
{
|
||||
case "decay":
|
||||
{
|
||||
return DecayTaskManager.getInstance().toString();
|
||||
}
|
||||
case "packetsend":
|
||||
{
|
||||
if (args.length < 4)
|
||||
{
|
||||
return "Usage: debug packetsend <charName> <packetData>";
|
||||
}
|
||||
final Player player = World.getInstance().getPlayer(args[1]);
|
||||
if (player == null)
|
||||
{
|
||||
return "Couldn't find player with such name.";
|
||||
}
|
||||
|
||||
final AdminForgePacket sp = new AdminForgePacket();
|
||||
for (int i = 2; i < args.length; i++)
|
||||
{
|
||||
final String b = args[i];
|
||||
if (!b.isEmpty())
|
||||
{
|
||||
sp.addPart("C".getBytes()[0], "0x" + b);
|
||||
}
|
||||
}
|
||||
player.sendPacket(sp);
|
||||
return "Packet has been sent!";
|
||||
}
|
||||
case "full":
|
||||
{
|
||||
final Calendar cal = Calendar.getInstance();
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append(sdf.format(cal.getTime()));
|
||||
sb.append("\r\nServer");
|
||||
sb.append("\r\n");
|
||||
sb.append(getServerStatus());
|
||||
sb.append("\r\n");
|
||||
sb.append("\r\n## Java Platform Information ##");
|
||||
sb.append("\r\nJava Runtime Name: " + System.getProperty("java.runtime.name"));
|
||||
sb.append("\r\nJava Version: " + System.getProperty("java.version"));
|
||||
sb.append("\r\nJava Class Version: " + System.getProperty("java.class.version"));
|
||||
sb.append("\r\n");
|
||||
sb.append("\r\n## Virtual Machine Information ##");
|
||||
sb.append("\r\nVM Name: " + System.getProperty("java.vm.name"));
|
||||
sb.append("\r\nVM Version: " + System.getProperty("java.vm.version"));
|
||||
sb.append("\r\nVM Vendor: " + System.getProperty("java.vm.vendor"));
|
||||
sb.append("\r\nVM Info: " + System.getProperty("java.vm.info"));
|
||||
sb.append("\r\n");
|
||||
sb.append("\r\n## OS Information ##");
|
||||
sb.append("\r\nName: " + System.getProperty("os.name"));
|
||||
sb.append("\r\nArchiteture: " + System.getProperty("os.arch"));
|
||||
sb.append("\r\nVersion: " + System.getProperty("os.version"));
|
||||
sb.append("\r\n");
|
||||
sb.append("\r\n## Runtime Information ##");
|
||||
sb.append("\r\nCPU Count: " + Runtime.getRuntime().availableProcessors());
|
||||
sb.append("\r\nCurrent Free Heap Size: " + (Runtime.getRuntime().freeMemory() / 1024 / 1024) + " mb");
|
||||
sb.append("\r\nCurrent Heap Size: " + (Runtime.getRuntime().totalMemory() / 1024 / 1024) + " mb");
|
||||
sb.append("\r\nMaximum Heap Size: " + (Runtime.getRuntime().maxMemory() / 1024 / 1024) + " mb");
|
||||
sb.append("\r\n");
|
||||
sb.append("\r\n## Class Path Information ##\r\n");
|
||||
final String cp = System.getProperty("java.class.path");
|
||||
final String[] libs = cp.split(File.pathSeparator);
|
||||
for (String lib : libs)
|
||||
{
|
||||
sb.append(lib);
|
||||
sb.append("\r\n");
|
||||
}
|
||||
|
||||
sb.append("\r\n");
|
||||
sb.append("## Threads Information ##\r\n");
|
||||
final Map<Thread, StackTraceElement[]> allThread = Thread.getAllStackTraces();
|
||||
final List<Entry<Thread, StackTraceElement[]>> entries = new ArrayList<>(allThread.entrySet());
|
||||
Collections.sort(entries, (e1, e2) -> e1.getKey().getName().compareTo(e2.getKey().getName()));
|
||||
for (Entry<Thread, StackTraceElement[]> entry : entries)
|
||||
{
|
||||
final StackTraceElement[] stes = entry.getValue();
|
||||
final Thread t = entry.getKey();
|
||||
sb.append("--------------\r\n");
|
||||
sb.append(t + " (" + t.getId() + ")\r\n");
|
||||
sb.append("State: " + t.getState() + "\r\n");
|
||||
sb.append("isAlive: " + t.isAlive() + " | isDaemon: " + t.isDaemon() + " | isInterrupted: " + t.isInterrupted() + "\r\n");
|
||||
sb.append("\r\n");
|
||||
for (StackTraceElement ste : stes)
|
||||
{
|
||||
sb.append(ste.toString());
|
||||
sb.append("\r\n");
|
||||
}
|
||||
sb.append("\r\n");
|
||||
}
|
||||
|
||||
sb.append("\r\n");
|
||||
final ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
|
||||
final long[] ids = findDeadlockedThreads(mbean);
|
||||
if ((ids != null) && (ids.length > 0))
|
||||
{
|
||||
final Thread[] threads = new Thread[ids.length];
|
||||
for (int i = 0; i < threads.length; i++)
|
||||
{
|
||||
threads[i] = findMatchingThread(mbean.getThreadInfo(ids[i]));
|
||||
}
|
||||
sb.append("Deadlocked Threads:\r\n");
|
||||
sb.append("-------------------\r\n");
|
||||
for (Thread thread : threads)
|
||||
{
|
||||
System.out.println(thread);
|
||||
for (StackTraceElement ste : thread.getStackTrace())
|
||||
{
|
||||
sb.append("\t" + ste);
|
||||
sb.append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sb.append("\r\n## Thread Pool Manager Statistics ##\r\n");
|
||||
for (String line : ThreadPool.getStats())
|
||||
{
|
||||
sb.append(line);
|
||||
sb.append("\r\n");
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
File f = new File("./log/Debug-" + i + ".txt");
|
||||
while (f.exists())
|
||||
{
|
||||
i++;
|
||||
f = new File("./log/Debug-" + i + ".txt");
|
||||
}
|
||||
f.getParentFile().mkdirs();
|
||||
|
||||
try
|
||||
{
|
||||
Files.write(f.toPath(), sb.toString().getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Couldn't write packet tp.", e);
|
||||
}
|
||||
return "Debug output saved to log/" + f.getName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private long[] findDeadlockedThreads(ThreadMXBean mbean)
|
||||
{
|
||||
// JDK 1.5 only supports the findMonitorDeadlockedThreads()
|
||||
// method, so you need to comment out the following three lines
|
||||
if (mbean.isSynchronizerUsageSupported())
|
||||
{
|
||||
return mbean.findDeadlockedThreads();
|
||||
}
|
||||
return mbean.findMonitorDeadlockedThreads();
|
||||
}
|
||||
|
||||
private Thread findMatchingThread(ThreadInfo inf)
|
||||
{
|
||||
for (Thread thread : Thread.getAllStackTraces().keySet())
|
||||
{
|
||||
if (thread.getId() == inf.getThreadId())
|
||||
{
|
||||
return thread;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("Deadlocked Thread not found");
|
||||
}
|
||||
|
||||
static String getServerStatus()
|
||||
{
|
||||
int playerCount = 0;
|
||||
int objectCount = 0;
|
||||
final int max = LoginServerThread.getInstance().getMaxPlayer();
|
||||
playerCount = World.getInstance().getPlayers().size();
|
||||
objectCount = World.getInstance().getVisibleObjectsCount();
|
||||
int itemCount = 0;
|
||||
int itemVoidCount = 0;
|
||||
int monsterCount = 0;
|
||||
int minionCount = 0;
|
||||
int minionsGroupCount = 0;
|
||||
int npcCount = 0;
|
||||
int charCount = 0;
|
||||
int pcCount = 0;
|
||||
int detachedCount = 0;
|
||||
int doorCount = 0;
|
||||
int summonCount = 0;
|
||||
int aiCount = 0;
|
||||
for (WorldObject obj : World.getInstance().getVisibleObjects())
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (obj.isCreature() && ((Creature) obj).hasAI())
|
||||
{
|
||||
aiCount++;
|
||||
}
|
||||
if (obj.isItem())
|
||||
{
|
||||
if (((Item) obj).getItemLocation() == ItemLocation.VOID)
|
||||
{
|
||||
itemVoidCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
itemCount++;
|
||||
}
|
||||
}
|
||||
else if (obj.isMonster())
|
||||
{
|
||||
monsterCount++;
|
||||
if (((Monster) obj).hasMinions())
|
||||
{
|
||||
minionCount += ((Monster) obj).getMinionList().countSpawnedMinions();
|
||||
minionsGroupCount += ((Monster) obj).getMinionList().lazyCountSpawnedMinionsGroups();
|
||||
}
|
||||
}
|
||||
else if (obj.isNpc())
|
||||
{
|
||||
npcCount++;
|
||||
}
|
||||
else if (obj.isPlayer())
|
||||
{
|
||||
pcCount++;
|
||||
if ((((Player) obj).getClient() != null) && ((Player) obj).getClient().isDetached())
|
||||
{
|
||||
detachedCount++;
|
||||
}
|
||||
}
|
||||
else if (obj.isSummon())
|
||||
{
|
||||
summonCount++;
|
||||
}
|
||||
else if (obj.isDoor())
|
||||
{
|
||||
doorCount++;
|
||||
}
|
||||
else if (obj.isCreature())
|
||||
{
|
||||
charCount++;
|
||||
}
|
||||
}
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("Server Status: ");
|
||||
sb.append("\r\n ---> Player Count: " + playerCount + "/" + max);
|
||||
sb.append("\r\n ---> Offline Count: " + detachedCount + "/" + playerCount);
|
||||
sb.append("\r\n +--> Object Count: " + objectCount);
|
||||
sb.append("\r\n +--> AI Count: " + aiCount);
|
||||
sb.append("\r\n +.... Item(Void): " + itemVoidCount);
|
||||
sb.append("\r\n +.......... Item: " + itemCount);
|
||||
sb.append("\r\n +....... Monster: " + monsterCount);
|
||||
sb.append("\r\n +......... Minions: " + minionCount);
|
||||
sb.append("\r\n +.. Minions Groups: " + minionsGroupCount);
|
||||
sb.append("\r\n +........... Npc: " + npcCount);
|
||||
sb.append("\r\n +............ Player: " + pcCount);
|
||||
sb.append("\r\n +........ Summon: " + summonCount);
|
||||
sb.append("\r\n +.......... Door: " + doorCount);
|
||||
sb.append("\r\n +.......... Creature: " + charCount);
|
||||
sb.append("\r\n ---> Ingame Time: " + gameTime());
|
||||
sb.append("\r\n ---> Server Uptime: " + GameServer.getInstance().getUptime());
|
||||
sb.append("\r\n ---> GM Count: " + getOnlineGMS());
|
||||
sb.append("\r\n ---> Threads: " + Thread.activeCount());
|
||||
sb.append("\r\n RAM Used: " + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576)); // 1024 * 1024 = 1048576
|
||||
sb.append("\r\n");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static int getOnlineGMS()
|
||||
{
|
||||
return AdminData.getInstance().getAllGms(true).size();
|
||||
}
|
||||
|
||||
private static String gameTime()
|
||||
{
|
||||
final int t = GameTimeTaskManager.getInstance().getGameTime();
|
||||
final int h = t / 60;
|
||||
final int m = t % 60;
|
||||
final SimpleDateFormat format = new SimpleDateFormat("H:mm");
|
||||
final Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, h);
|
||||
cal.set(Calendar.MINUTE, m);
|
||||
return format.format(cal.getTime());
|
||||
}
|
||||
}
|
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class ForceGC implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "forcegc";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "ForceGC";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
System.gc();
|
||||
return "RAM Used: " + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576);
|
||||
}
|
||||
}
|
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Memusage implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "memusage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "MemUsage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
final double max = Runtime.getRuntime().maxMemory() / 1024; // maxMemory is the upper
|
||||
// limit the jvm can use
|
||||
final double allocated = Runtime.getRuntime().totalMemory() / 1024; // totalMemory the
|
||||
// size of the current allocation pool
|
||||
final double nonAllocated = max - allocated; // non allocated memory till jvm limit
|
||||
final double cached = Runtime.getRuntime().freeMemory() / 1024; // freeMemory the
|
||||
// unused memory in the allocation pool
|
||||
final double used = allocated - cached; // really used memory
|
||||
final double useable = max - used; // allocated, but non-used and non-allocated memory
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final DecimalFormat df = new DecimalFormat(" (0.0000'%')");
|
||||
final DecimalFormat df2 = new DecimalFormat(" # 'KB'");
|
||||
sb.append("+----" + Config.EOL); // ...
|
||||
sb.append("| Allowed Memory:" + df2.format(max) + Config.EOL);
|
||||
sb.append("| |= Allocated Memory:" + df2.format(allocated) + df.format((allocated / max) * 100) + Config.EOL);
|
||||
sb.append("| |= Non-Allocated Memory:" + df2.format(nonAllocated) + df.format((nonAllocated / max) * 100) + Config.EOL);
|
||||
sb.append("| Allocated Memory:" + df2.format(allocated) + Config.EOL);
|
||||
sb.append("| |= Used Memory:" + df2.format(used) + df.format((used / max) * 100) + Config.EOL);
|
||||
sb.append("| |= Unused (cached) Memory:" + df2.format(cached) + df.format((cached / max) * 100) + Config.EOL);
|
||||
sb.append("| Useable Memory:" + df2.format(useable) + df.format((useable / max) * 100) + Config.EOL); // ...
|
||||
sb.append("+----" + Config.EOL);
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Performance implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "performance";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Performance";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
// ThreadPoolManager.purge();
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (String line : ThreadPool.getStats())
|
||||
{
|
||||
sb.append(line + Config.EOL);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Purge implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "purge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Purge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
ThreadPool.purge();
|
||||
final StringBuilder sb = new StringBuilder("STATUS OF THREAD POOLS AFTER PURGE COMMAND:" + Config.EOL);
|
||||
for (String line : ThreadPool.getStats())
|
||||
{
|
||||
sb.append(line + Config.EOL);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@@ -1,257 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.enums.ServerMode;
|
||||
import org.l2jmobius.gameserver.cache.HtmCache;
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.data.sql.CrestTable;
|
||||
import org.l2jmobius.gameserver.data.xml.AdminData;
|
||||
import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
|
||||
import org.l2jmobius.gameserver.data.xml.ArmorSetData;
|
||||
import org.l2jmobius.gameserver.data.xml.BuyListData;
|
||||
import org.l2jmobius.gameserver.data.xml.DoorData;
|
||||
import org.l2jmobius.gameserver.data.xml.EnchantItemData;
|
||||
import org.l2jmobius.gameserver.data.xml.EnchantItemGroupsData;
|
||||
import org.l2jmobius.gameserver.data.xml.ItemCrystallizationData;
|
||||
import org.l2jmobius.gameserver.data.xml.MultisellData;
|
||||
import org.l2jmobius.gameserver.data.xml.NpcData;
|
||||
import org.l2jmobius.gameserver.data.xml.SayuneData;
|
||||
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||
import org.l2jmobius.gameserver.data.xml.TeleporterData;
|
||||
import org.l2jmobius.gameserver.data.xml.TransformData;
|
||||
import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.scripting.ScriptEngineManager;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Reload implements ITelnetCommand
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(Reload.class.getName());
|
||||
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Reload <zone/multisell/teleport/skill/npc/htm/item/config/npcwalkers/access/quests/door/primeshop/html/script>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || args[0].isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
switch (args[0])
|
||||
{
|
||||
case "config":
|
||||
{
|
||||
Config.load(ServerMode.GAME);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Configs.");
|
||||
}
|
||||
case "access":
|
||||
{
|
||||
AdminData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Access.");
|
||||
}
|
||||
case "npc":
|
||||
{
|
||||
NpcData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Npcs.");
|
||||
}
|
||||
case "quest":
|
||||
{
|
||||
if (args.length > 1)
|
||||
{
|
||||
final String value = args[1];
|
||||
if (!Util.isDigit(value))
|
||||
{
|
||||
QuestManager.getInstance().reload(value);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Quest Name:" + value + ".");
|
||||
}
|
||||
final int questId = Integer.parseInt(value);
|
||||
QuestManager.getInstance().reload(questId);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Quest ID:" + questId + ".");
|
||||
}
|
||||
QuestManager.getInstance().reloadAllScripts();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Quests.");
|
||||
}
|
||||
case "walker":
|
||||
{
|
||||
WalkingManager.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Walkers.");
|
||||
}
|
||||
case "htm":
|
||||
case "html":
|
||||
{
|
||||
if (args.length > 1)
|
||||
{
|
||||
final String path = args[1];
|
||||
final File file = new File(Config.DATAPACK_ROOT, "data/html/" + path);
|
||||
if (file.exists())
|
||||
{
|
||||
HtmCache.getInstance().reload(file);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Htm File:" + file.getName() + ".");
|
||||
}
|
||||
return "File or Directory does not exist.";
|
||||
}
|
||||
HtmCache.getInstance().reload();
|
||||
AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Htms.");
|
||||
return "Cache[HTML]: " + HtmCache.getInstance().getMemoryUsage() + " megabytes on " + HtmCache.getInstance().getLoadedFiles() + " files loaded";
|
||||
}
|
||||
case "multisell":
|
||||
{
|
||||
MultisellData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Multisells.");
|
||||
}
|
||||
case "buylist":
|
||||
{
|
||||
BuyListData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Buylists.");
|
||||
}
|
||||
case "teleport":
|
||||
{
|
||||
TeleporterData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Teleports.");
|
||||
}
|
||||
case "skill":
|
||||
{
|
||||
SkillData.getInstance().reload();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Skills.");
|
||||
}
|
||||
case "item":
|
||||
{
|
||||
ItemTable.getInstance().reload();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Items.");
|
||||
}
|
||||
case "door":
|
||||
{
|
||||
DoorData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Doors.");
|
||||
}
|
||||
case "zone":
|
||||
{
|
||||
ZoneManager.getInstance().reload();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Zones.");
|
||||
}
|
||||
case "cw":
|
||||
{
|
||||
CursedWeaponsManager.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Cursed Weapons.");
|
||||
}
|
||||
case "crest":
|
||||
{
|
||||
CrestTable.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Crests.");
|
||||
}
|
||||
case "effect":
|
||||
{
|
||||
try
|
||||
{
|
||||
ScriptEngineManager.getInstance().executeScript(ScriptEngineManager.EFFECT_MASTER_HANDLER_FILE);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded effect master handler.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Failed executing effect master handler!", e);
|
||||
return "Error reloading effect master handler: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
case "handler":
|
||||
{
|
||||
try
|
||||
{
|
||||
ScriptEngineManager.getInstance().executeScript(ScriptEngineManager.MASTER_HANDLER_FILE);
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded master handler.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Failed executing master handler!", e);
|
||||
return "Error reloading master handler: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
case "enchant":
|
||||
{
|
||||
EnchantItemGroupsData.getInstance().load();
|
||||
EnchantItemData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded item enchanting data.");
|
||||
}
|
||||
case "transform":
|
||||
{
|
||||
TransformData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded transform data.");
|
||||
}
|
||||
case "crystalizable":
|
||||
{
|
||||
ItemCrystallizationData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded item crystalization data.");
|
||||
}
|
||||
case "appearance":
|
||||
{
|
||||
AppearanceItemData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded appearance item data.");
|
||||
}
|
||||
case "sayune":
|
||||
{
|
||||
SayuneData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Sayune data.");
|
||||
}
|
||||
case "sets":
|
||||
{
|
||||
ArmorSetData.getInstance().load();
|
||||
return AdminData.getInstance().broadcastMessageToGMs("Telnet Admin: Reloaded Armor sets data.");
|
||||
}
|
||||
case "script":
|
||||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
return "Syntax: reload script <path>";
|
||||
}
|
||||
try
|
||||
{
|
||||
ScriptEngineManager.getInstance().executeScript(Paths.get(args[1]));
|
||||
return "Script " + args[1] + " has been reloaded successfuly.";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return "Couldn't reload script: " + args[1] + " err: " + e.getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.gameserver.Shutdown;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class ServerAbort implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "abort";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Abort";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
Shutdown.getInstance().abort(null);
|
||||
return "Server shutdown/restart aborted!";
|
||||
}
|
||||
}
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.gameserver.Shutdown;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class ServerRestart implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "restart";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Restart <time in seconds>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || !Util.isDigit(args[0]))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int time = Integer.parseInt(args[0]);
|
||||
Shutdown.getInstance().startShutdown(null, time, true);
|
||||
return "Server will restart in " + time + " seconds!";
|
||||
}
|
||||
}
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.gameserver.Shutdown;
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class ServerShutdown implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "shutdown";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Shutdown <time in seconds>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
if ((args.length == 0) || !Util.isDigit(args[0]))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final int time = Integer.parseInt(args[0]);
|
||||
Shutdown.getInstance().startShutdown(null, time, false);
|
||||
return "Server will shutdown in " + time + " seconds!";
|
||||
}
|
||||
}
|
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* 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 handlers.telnethandlers.server;
|
||||
|
||||
import org.l2jmobius.gameserver.network.telnet.ITelnetCommand;
|
||||
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class Status implements ITelnetCommand
|
||||
{
|
||||
@Override
|
||||
public String getCommand()
|
||||
{
|
||||
return "status";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage()
|
||||
{
|
||||
return "Status";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(ChannelHandlerContext ctx, String[] args)
|
||||
{
|
||||
return Debug.getServerStatus();
|
||||
}
|
||||
}
|
@@ -1 +1 @@
|
||||
-server -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.l2jmobius.log.ServerLogManager -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Xmx4g -Xms2g
|
||||
-server -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.l2jmobius.log.ServerLogManager -Xmx4g -Xms2g
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
-server -Dfile.encoding=UTF-8 -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Xms128m -Xmx256m
|
||||
-server -Dfile.encoding=UTF-8 -Xms128m -Xmx256m
|
Reference in New Issue
Block a user