Package com.l2jfrozen.gameserver.handler.admincommandhandlers

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

package com.l2jfrozen.gameserver.handler.admincommandhandlers;

import java.util.StringTokenizer;

import javolution.text.TextBuilder;

import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.L2Effect;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;

/**
* @author ProGramMoS
*/

public class AdminBuffs implements IAdminCommandHandler
{
  private static final String[] ADMIN_COMMANDS =
  {
      "admin_getbuffs", "admin_stopbuff", "admin_stopallbuffs", "admin_areacancel"
  };

  private enum CommandEnum
  {
    admin_getbuffs,
    admin_stopbuff,
    admin_stopallbuffs,
    admin_areacancel
  }

  @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);
    }
    */
   
    StringTokenizer st = new StringTokenizer(command," ");

    CommandEnum comm = CommandEnum.valueOf(st.nextToken());
   
    if(comm == null)
      return false;
   
    switch(comm)
    {
      case admin_getbuffs:
        if(st.hasMoreTokens())
        {
          L2PcInstance player = null;
          String playername = st.nextToken();
          st = null;

          player = L2World.getInstance().getPlayer(playername);
         
          if(player != null)
          {
            showBuffs(player, activeChar);
            playername = null;
            return true;
          }
          activeChar.sendMessage("The player " + playername + " is not online");
          playername = null;
          return false;
        }
        else if(activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)
        {
          showBuffs((L2PcInstance) activeChar.getTarget(), activeChar);
          return true;
        }
        else
          return true;
       
      case admin_stopbuff:
        if(st.hasMoreTokens())
        {
          String playername = st.nextToken();

          if(st.hasMoreTokens()){
           
            int SkillId = 0;
           
            try{
              SkillId = Integer.parseInt(st.nextToken());

            }catch(NumberFormatException e){
           
             
              activeChar.sendMessage("Usage: //stopbuff <playername> [skillId] (skillId must be a number)");
              return false;
             
            }
           
            if(SkillId>0)
              removeBuff(activeChar, playername, SkillId);
            else{
              activeChar.sendMessage("Usage: //stopbuff <playername> [skillId] (skillId must be a number > 0)");
              return false;
            }
           
            st = null;
            playername = null;

            return true;
           
           
          }
          activeChar.sendMessage("Usage: //stopbuff <playername> [skillId]");
          return false;
        }
        activeChar.sendMessage("Usage: //stopbuff <playername> [skillId]");
        return false;
       
      case admin_stopallbuffs:
       
        if(st.hasMoreTokens())
        {
          String playername = st.nextToken();

          if(playername != null)
          {
            removeAllBuffs(activeChar, playername);
            playername = null;
            st = null;
            return true;
          }
          activeChar.sendMessage("Usage: //stopallbuffs <playername>");
         
          st = null;
          return false;
        }
        activeChar.sendMessage("Usage: //stopallbuffs <playername>");
        return false;
      case admin_areacancel:

        if(st.hasMoreTokens())
        {
          String val = st.nextToken();

          int radius = 0;
         
          try
          {
            radius = Integer.parseInt(val);

          }
          catch(NumberFormatException e)
          {
            activeChar.sendMessage("Usage: //areacancel <radius> (integer value > 0)");
            st = null;
            val = null;

            return false;
          }
         

          if(radius>0){
            for(L2Character knownChar : activeChar.getKnownList().getKnownCharactersInRadius(radius))
            {
              if(knownChar instanceof L2PcInstance && !knownChar.equals(activeChar))
              {
                knownChar.stopAllEffects();
              }
            }

            activeChar.sendMessage("All effects canceled within raidus " + radius);
            st = null;
            val = null;
            return true;
          }
          activeChar.sendMessage("Usage: //areacancel <radius> (integer value > 0)");
          st = null;
          val = null;
          return false;
         
        }
        activeChar.sendMessage("Usage: //areacancel <radius>");
        return false;
    }

    comm = null;
    st = null;

    return true;
  }

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

  public void showBuffs(L2PcInstance player, L2PcInstance activeChar)
  {
    TextBuilder html = new TextBuilder();

    html.append("<html><center><font color=\"LEVEL\">Effects of " + player.getName() + "</font><center><br>");
    html.append("<table>");
    html.append("<tr><td width=200>Skill</td><td width=70>Action</td></tr>");

    L2Effect[] effects = player.getAllEffects();

    for(L2Effect e : effects)
    {
      if(e != null)
      {
        html.append("<tr><td>" + e.getSkill().getName() + "</td><td><button value=\"Remove\" action=\"bypass -h admin_stopbuff " + player.getName() + " " + String.valueOf(e.getSkill().getId()) + "\" width=60 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td></tr>");
      }
    }

    html.append("</table><br>");
    html.append("<button value=\"Remove All\" action=\"bypass -h admin_stopallbuffs " + player.getName() + "\" width=60 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
    html.append("</html>");

    NpcHtmlMessage ms = new NpcHtmlMessage(1);
    ms.setHtml(html.toString());

    activeChar.sendPacket(ms);

    html = null;
    ms = null;
    effects = null;
  }

  private void removeBuff(L2PcInstance remover, String playername, int SkillId)
  {
    L2PcInstance player = L2World.getInstance().getPlayer(playername);

    if(player != null && SkillId > 0)
    {
      L2Effect[] effects = player.getAllEffects();

      for(L2Effect e : effects)
      {
        if(e != null && e.getSkill().getId() == SkillId)
        {
          e.exit(true);
          remover.sendMessage("Removed " + e.getSkill().getName() + " level " + e.getSkill().getLevel() + " from " + playername);
        }
      }
      showBuffs(player, remover);

      player = null;
      effects = null;
    }
  }

  private void removeAllBuffs(L2PcInstance remover, String playername)
  {
    L2PcInstance player = L2World.getInstance().getPlayer(playername);
   
    if(player != null)
    {
      player.stopAllEffects();
      remover.sendMessage("Removed all effects from " + playername);
      showBuffs(player, remover);
    }
    else
    {
      remover.sendMessage("Can not remove effects from " + playername + ". Player appears offline.");
    }
   
   
  }

}
TOP

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

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.