Addition of optional range parameter to delete command.

This commit is contained in:
MobiusDevelopment
2021-07-15 00:14:03 +00:00
parent e7975fd78c
commit 02b8376575
25 changed files with 978 additions and 612 deletions

View File

@ -20,16 +20,16 @@ import org.l2jmobius.gameserver.data.sql.SpawnTable;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.instancemanager.GrandBossManager;
import org.l2jmobius.gameserver.instancemanager.RaidBossSpawnManager;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.spawn.Spawn;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.util.BuilderUtil;
import org.l2jmobius.gameserver.util.Util;
/**
* This class handles following admin commands: - delete = deletes target
* @version $Revision: 1.2.2.1.2.4 $ $Date: 2005/04/11 10:05:56 $
*/
public class AdminDelete implements IAdminCommandHandler
{
@ -41,44 +41,66 @@ public class AdminDelete implements IAdminCommandHandler
@Override
public boolean useAdminCommand(String command, PlayerInstance activeChar)
{
if (command.equals("admin_delete"))
if (command.startsWith("admin_delete"))
{
final WorldObject obj = activeChar.getTarget();
if (obj instanceof NpcInstance)
final String[] split = command.split(" ");
handleDelete(activeChar, (split.length > 1) && Util.isDigit(split[1]) ? Integer.parseInt(split[1]) : 0);
}
return true;
}
private void handleDelete(PlayerInstance activeChar, int range)
{
if (range > 0)
{
for (WorldObject target : World.getInstance().getVisibleObjects(activeChar, range))
{
final NpcInstance target = (NpcInstance) obj;
target.deleteMe();
final Spawn spawn = target.getSpawn();
if (spawn != null)
if (!target.isNpc())
{
if (GrandBossManager.getInstance().isDefined(spawn.getNpcId()))
{
BuilderUtil.sendSysMessage(activeChar, "You cannot delete a grandboss.");
return true;
}
spawn.stopRespawn();
if (RaidBossSpawnManager.getInstance().isDefined(spawn.getNpcId()))
{
RaidBossSpawnManager.getInstance().deleteSpawn(spawn, true);
}
else
{
SpawnTable.getInstance().deleteSpawn(spawn, true);
}
continue;
}
BuilderUtil.sendSysMessage(activeChar, "Deleted " + target.getName() + " from " + target.getObjectId() + ".");
deleteNpc(activeChar, (NpcInstance) target);
}
return;
}
final WorldObject obj = activeChar.getTarget();
if (obj instanceof NpcInstance)
{
deleteNpc(activeChar, (NpcInstance) obj);
}
else
{
BuilderUtil.sendSysMessage(activeChar, "Incorrect target.");
}
}
private void deleteNpc(PlayerInstance activeChar, NpcInstance target)
{
target.deleteMe();
final Spawn spawn = target.getSpawn();
if (spawn != null)
{
if (GrandBossManager.getInstance().isDefined(spawn.getNpcId()))
{
BuilderUtil.sendSysMessage(activeChar, "You cannot delete a grandboss.");
return;
}
spawn.stopRespawn();
if (RaidBossSpawnManager.getInstance().isDefined(spawn.getNpcId()))
{
RaidBossSpawnManager.getInstance().deleteSpawn(spawn, true);
}
else
{
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
SpawnTable.getInstance().deleteSpawn(spawn, true);
}
}
return true;
BuilderUtil.sendSysMessage(activeChar, "Deleted " + target.getName() + " from " + target.getObjectId() + ".");
}
@Override