Package com.l2jfrozen.gameserver.handler.admincommandhandlers

Source Code of com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminMobGroup

/* 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 2, 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.handler.admincommandhandlers;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.MobGroupTable;
import com.l2jfrozen.gameserver.datatables.sql.NpcTable;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.MobGroup;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.MagicSkillUser;
import com.l2jfrozen.gameserver.network.serverpackets.SetupGauge;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;
import com.l2jfrozen.gameserver.util.Broadcast;

/**
* @author littlecrow Admin commands handler for controllable mobs
*/
public class AdminMobGroup implements IAdminCommandHandler
{
  private static final String[] ADMIN_COMMANDS =
  {
      "admin_mobmenu",
      "admin_mobgroup_list",
      "admin_mobgroup_create",
      "admin_mobgroup_remove",
      "admin_mobgroup_delete",
      "admin_mobgroup_spawn",
      "admin_mobgroup_unspawn",
      "admin_mobgroup_kill",
      "admin_mobgroup_idle",
      "admin_mobgroup_attack",
      "admin_mobgroup_rnd",
      "admin_mobgroup_return",
      "admin_mobgroup_follow",
      "admin_mobgroup_casting",
      "admin_mobgroup_nomove",
      "admin_mobgroup_attackgrp",
      "admin_mobgroup_invul",
      "admin_mobinst"
  };

  @Override
  public boolean useAdminCommand(String command, L2PcInstance activeChar)
  {
    /*
    if(!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel())){
      return false;
    }
   
    if(Config.GMAUDIT)
    {
      Logger _logAudit = Logger.getLogger("gmaudit");
      LogRecord record = new LogRecord(Level.INFO, command);
      record.setParameters(new Object[]
      {
          "GM: " + activeChar.getName(), " to target [" + activeChar.getTarget() + "] "
      });
      _logAudit.log(record);
    }
    */

    if(command.equals("admin_mobmenu"))
    {
      showMainPage(activeChar, command);
      return true;
    }
    else if(command.equals("admin_mobinst"))
    {
      showMainPage(activeChar, command);
      return true;
    }
    else if(command.equals("admin_mobgroup_list"))
    {
      showGroupList(activeChar);
    }
    else if(command.startsWith("admin_mobgroup_create"))
    {
      createGroup(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_delete") || command.startsWith("admin_mobgroup_remove"))
    {
      removeGroup(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_spawn"))
    {
      spawnGroup(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_unspawn"))
    {
      unspawnGroup(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_kill"))
    {
      killGroup(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_attackgrp"))
    {
      attackGrp(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_attack"))
    {
      if(activeChar.getTarget() instanceof L2Character)
      {
        L2Character target = (L2Character) activeChar.getTarget();
        attack(command, activeChar, target);
        target = null;
      }
    }
    else if(command.startsWith("admin_mobgroup_rnd"))
    {
      setNormal(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_idle"))
    {
      idle(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_return"))
    {
      returnToChar(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_follow"))
    {
      follow(command, activeChar, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_casting"))
    {
      setCasting(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_nomove"))
    {
      noMove(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_invul"))
    {
      invul(command, activeChar);
    }
    else if(command.startsWith("admin_mobgroup_teleport"))
    {
      teleportGroup(command, activeChar);
    }

    showMainPage(activeChar, command);

    return true;
  }

  /**
   * @param activeChar
   * @param command
   */
  private void showMainPage(L2PcInstance activeChar, String command)
  {
    String filename = "mobgroup.htm";

    if(command.contains("mobinst"))
    {
      filename = "mobgrouphelp.htm";
    }

    AdminHelpPage.showHelpPage(activeChar, filename);

    filename = null;
  }

  private void returnToChar(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Incorrect command arguments.");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.returnGroup(activeChar);

    group = null;
  }

  private void idle(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Incorrect command arguments.");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.setIdleMode();

    group = null;
  }

  private void setNormal(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Incorrect command arguments.");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.setAttackRandom();

    group = null;
  }

  private void attack(String command, L2PcInstance activeChar, L2Character target)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Incorrect command arguments.");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.setAttackTarget(target);

    group = null;
  }

  private void follow(String command, L2PcInstance activeChar, L2Character target)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Incorrect command arguments.");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.setFollowMode(target);
    group = null;
  }

  private void createGroup(String command, L2PcInstance activeChar)
  {
    int groupId;
    int templateId;
    int mobCount;

    try
    {
      String[] cmdParams = command.split(" ");

      groupId = Integer.parseInt(cmdParams[1]);
      templateId = Integer.parseInt(cmdParams[2]);
      mobCount = Integer.parseInt(cmdParams[3]);
      cmdParams = null;
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_create <group> <npcid> <count>");
      return;
    }

    if(MobGroupTable.getInstance().getGroup(groupId) != null)
    {
      activeChar.sendMessage("Mob group " + groupId + " already exists.");
      return;
    }

    L2NpcTemplate template = NpcTable.getInstance().getTemplate(templateId);

    if(template == null)
    {
      activeChar.sendMessage("Invalid NPC ID specified.");
      return;
    }

    MobGroup group = new MobGroup(groupId, template, mobCount);
    MobGroupTable.getInstance().addGroup(groupId, group);

    activeChar.sendMessage("Mob group " + groupId + " created.");

    template = null;
    group = null;
  }

  private void removeGroup(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_remove <groupId>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    doAnimation(activeChar);
    group.unspawnGroup();

    if(MobGroupTable.getInstance().removeGroup(groupId))
    {
      activeChar.sendMessage("Mob group " + groupId + " unspawned and removed.");
    }

    group = null;
  }

  private void spawnGroup(String command, L2PcInstance activeChar)
  {
    int groupId;
    boolean topos = false;
    int posx = 0;
    int posy = 0;
    int posz = 0;

    try
    {
      String[] cmdParams = command.split(" ");
      groupId = Integer.parseInt(cmdParams[1]);

      try
      {
        // we try to get a position
        posx = Integer.parseInt(cmdParams[2]);
        posy = Integer.parseInt(cmdParams[3]);
        posz = Integer.parseInt(cmdParams[4]);
        topos = true;
      }
      catch(Exception e)
      {
        // no position given
        if(Config.ENABLE_ALL_EXCEPTIONS)
          e.printStackTrace();
       
      }

      cmdParams = null;
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_spawn <group> [ x y z ]");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    doAnimation(activeChar);

    if(topos)
    {
      group.spawnGroup(posx, posy, posz);
    }
    else
    {
      group.spawnGroup(activeChar);
    }

    activeChar.sendMessage("Mob group " + groupId + " spawned.");

    group = null;
  }

  private void unspawnGroup(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_unspawn <groupId>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    doAnimation(activeChar);
    group.unspawnGroup();

    activeChar.sendMessage("Mob group " + groupId + " unspawned.");

    group = null;
  }

  private void killGroup(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_kill <groupId>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    doAnimation(activeChar);
    group.killGroup(activeChar);

    group = null;
  }

  private void setCasting(String command, L2PcInstance activeChar)
  {
    int groupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_casting <groupId>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.setCastMode();

    group = null;
  }

  private void noMove(String command, L2PcInstance activeChar)
  {
    int groupId;

    String enabled;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
      enabled = command.split(" ")[2];
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_nomove <groupId> <on|off>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    if(enabled.equalsIgnoreCase("on") || enabled.equalsIgnoreCase("true"))
    {
      group.setNoMoveMode(true);
    }
    else if(enabled.equalsIgnoreCase("off") || enabled.equalsIgnoreCase("false"))
    {
      group.setNoMoveMode(false);
    }
    else
    {
      activeChar.sendMessage("Incorrect command arguments.");
    }

    enabled = null;
  }

  private void doAnimation(L2PcInstance activeChar)
  {
    Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, 1008, 1, 4000, 0), 2250000/*1500*/);
    activeChar.sendPacket(new SetupGauge(0, 4000));
  }

  private void attackGrp(String command, L2PcInstance activeChar)
  {
    int groupId;
    int othGroupId;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
      othGroupId = Integer.parseInt(command.split(" ")[2]);
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_attackgrp <groupId> <TargetGroupId>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    MobGroup othGroup = MobGroupTable.getInstance().getGroup(othGroupId);

    if(othGroup == null)
    {
      activeChar.sendMessage("Incorrect target group.");
      return;
    }

    group.setAttackGroup(othGroup);

    group = null;
    othGroup = null;
  }

  private void invul(String command, L2PcInstance activeChar)
  {
    int groupId;

    String enabled;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
      enabled = command.split(" ")[2];
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_invul <groupId> <on|off>");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    if(enabled.equalsIgnoreCase("on") || enabled.equalsIgnoreCase("true"))
    {
      group.setInvul(true);
    }
    else if(enabled.equalsIgnoreCase("off") || enabled.equalsIgnoreCase("false"))
    {
      group.setInvul(false);
    }
    else
    {
      activeChar.sendMessage("Incorrect command arguments.");
    }

    group = null;
    enabled = null;
  }

  private void teleportGroup(String command, L2PcInstance activeChar)
  {
    int groupId;
    String targetPlayerStr = null;
    L2PcInstance targetPlayer = null;

    try
    {
      groupId = Integer.parseInt(command.split(" ")[1]);
      targetPlayerStr = command.split(" ")[2];

      if(targetPlayerStr != null)
      {
        targetPlayer = L2World.getInstance().getPlayer(targetPlayerStr);
      }

      if(targetPlayer == null)
      {
        targetPlayer = activeChar;
      }
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      activeChar.sendMessage("Usage: //mobgroup_teleport <groupId> [playerName]");
      return;
    }

    MobGroup group = MobGroupTable.getInstance().getGroup(groupId);

    if(group == null)
    {
      activeChar.sendMessage("Invalid group specified.");
      return;
    }

    group.teleportGroup(activeChar);

    group = null;
    targetPlayer = null;
    targetPlayerStr = null;
  }

  private void showGroupList(L2PcInstance activeChar)
  {
    MobGroup[] mobGroupList = MobGroupTable.getInstance().getGroups();

    activeChar.sendMessage("======= <Mob Groups> =======");

    for(MobGroup mobGroup : mobGroupList)
    {
      activeChar.sendMessage(mobGroup.getGroupId() + ": " + mobGroup.getActiveMobCount() + " alive out of " + mobGroup.getMaxMobCount() + " of NPC ID " + mobGroup.getTemplate().npcId + " (" + mobGroup.getStatus() + ")");
    }

    activeChar.sendPacket(new SystemMessage(SystemMessageId.FRIEND_LIST_FOOT));

    mobGroupList = null;
  }

  @Override
  public String[] getAdminCommandList()
  {
    return ADMIN_COMMANDS;
  }

}
TOP

Related Classes of com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminMobGroup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.