Package com.l2jfrozen.gameserver.handler.admincommandhandlers

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

package com.l2jfrozen.gameserver.handler.admincommandhandlers;

import java.util.StringTokenizer;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.xml.ExperienceData;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;

public class AdminLevel implements IAdminCommandHandler
{
  private static final String[] ADMIN_COMMANDS =
  {
      "admin_add_level", "admin_set_level"
  };
 
  @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);
    }
    */

    L2Object targetChar = activeChar.getTarget();
    StringTokenizer st = new StringTokenizer(command, " ");
    String actualCommand = st.nextToken(); // Get actual command

    String val = "";
    if(st.countTokens() >= 1)
    {
      val = st.nextToken();
    }
   
    if(actualCommand.equalsIgnoreCase("admin_add_level"))
    {
      try
      {
        if(targetChar instanceof L2PlayableInstance)
        {
          ((L2PlayableInstance) targetChar).getStat().addLevel(Byte.parseByte(val));
        }
      }
      catch(NumberFormatException e)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          e.printStackTrace();
       
        activeChar.sendMessage("Wrong Number Format");
      }
    }
    else if(actualCommand.equalsIgnoreCase("admin_set_level"))
    {
      try
      {
        if(targetChar == null || !(targetChar instanceof L2PlayableInstance))
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT)); // incorrect
          return false;
        }

        final L2PlayableInstance targetPlayer = (L2PlayableInstance) targetChar;

        final byte lvl = Byte.parseByte(val);
        int max_level = ExperienceData.getInstance().getMaxLevel();

        if(targetChar instanceof L2PcInstance && ((L2PcInstance) targetPlayer).isSubClassActive())
        {
          max_level = Config.MAX_SUBCLASS_LEVEL;
        }

        if(lvl >= 1 && lvl <= max_level)
        {
          final long pXp = targetPlayer.getStat().getExp();
          final long tXp = ExperienceData.getInstance().getExpForLevel(lvl);

          if(pXp > tXp)
          {
            targetPlayer.getStat().removeExpAndSp(pXp - tXp, 0);
          }
          else if(pXp < tXp)
          {
            targetPlayer.getStat().addExpAndSp(tXp - pXp, 0);
          }
        }
        else
        {
          activeChar.sendMessage("You must specify level between 1 and " + ExperienceData.getInstance().getMaxLevel() + ".");
          return false;
        }
      }
      catch(final NumberFormatException e)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          e.printStackTrace();
       
        activeChar.sendMessage("You must specify level between 1 and " + ExperienceData.getInstance().getMaxLevel() + ".");
        return false;
      }
    }
    return true;
  }
 
  @Override
  public String[] getAdminCommandList()
  {
    return ADMIN_COMMANDS;
  }
}
TOP

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

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.