Package com.l2jfrozen.gameserver.network.clientpackets

Source Code of com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer

/*
* 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.network.clientpackets;

import java.util.logging.Level;
import java.util.logging.Logger;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.communitybbs.CommunityBoard;
import com.l2jfrozen.gameserver.datatables.sql.AdminCommandAccessRights;
import com.l2jfrozen.gameserver.handler.AdminCommandHandler;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.handler.VoicedCommandHandler;
import com.l2jfrozen.gameserver.handler.custom.CustomBypassHandler;
import com.l2jfrozen.gameserver.masteriopack.rankpvpsystem.RankPvpSystemBypass;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2SymbolMakerInstance;
import com.l2jfrozen.gameserver.model.actor.position.L2CharPosition;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.model.entity.event.L2Event;
import com.l2jfrozen.gameserver.model.entity.event.Raid;
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.event.VIP;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.util.GMAudit;

public final class RequestBypassToServer extends L2GameClientPacket
{
  private static Logger _log = Logger.getLogger(RequestBypassToServer.class.getName());

  // S
  private String _command;
 
  @Override
  protected void readImpl()
  {
    _command = readS();
  }

  @Override
  protected void runImpl()
  {
    L2PcInstance activeChar = getClient().getActiveChar();

    if(activeChar == null)
      return;

    if (!getClient().getFloodProtectors().getServerBypass().tryPerformAction(_command))
      return;
   

    try
    {
      if(_command.startsWith("admin_"))
      {
        // DaDummy: this way we log _every_ admincommand with all related info
        String command;

        if(_command.indexOf(" ") != -1)
        {
          command = _command.substring(0, _command.indexOf(" "));
        }
        else
        {
          command = _command;
        }

        IAdminCommandHandler ach = AdminCommandHandler.getInstance().getAdminCommandHandler(command);

        if(ach == null)
        {
          if(activeChar.isGM())
          {
            activeChar.sendMessage("The command " + command + " does not exists!");
          }

          _log.warning("No handler registered for admin command '" + command + "'");
          return;
        }

        if(!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel()))
        {
          activeChar.sendMessage("You don't have the access right to use this command!");
          if(Config.DEBUG)
          {
            _log.warning("Character " + activeChar.getName() + " tried to use admin command " + command + ", but doesn't have access to it!");
          }
          return;
        }

        if(Config.GMAUDIT)
        {
          GMAudit.auditGMAction(activeChar.getName()+" ["+activeChar.getObjectId()+"]", command, (activeChar.getTarget() != null?activeChar.getTarget().getName():"no-target"),_command.replace(command, ""));
         
        }

        ach.useAdminCommand(_command, activeChar);
      }
      else if(_command.equals("come_here") && activeChar.isGM())
      {
        comeHere(activeChar);
      }
      else if(_command.startsWith("player_help "))
      {
        playerHelp(activeChar, _command.substring(12));
      }
      else if(_command.startsWith("npc_"))
      {
        if(!activeChar.validateBypass(_command))
          return;

        int endOfId = _command.indexOf('_', 5);
        String id;

        if(endOfId > 0)
        {
          id = _command.substring(4, endOfId);
        }
        else
        {
          id = _command.substring(4);
        }

        try
        {
          L2Object object = L2World.getInstance().findObject(Integer.parseInt(id));

          if(_command.substring(endOfId + 1).startsWith("event_participate"))
          {
            L2Event.inscribePlayer(activeChar);
          }
          else if(_command.substring(endOfId + 1).startsWith("tvt_player_join "))
          {
            String teamName = _command.substring(endOfId + 1).substring(16);

            if(TvT.is_joining())
            {
              TvT.addPlayer(activeChar, teamName);
            }
            else
            {
              activeChar.sendMessage("The event is already started. You can not join now!");
            }
          }

          else if(_command.substring(endOfId + 1).startsWith("tvt_player_leave"))
          {
            if(TvT.is_joining())
            {
              TvT.removePlayer(activeChar);
            }
            else
            {
              activeChar.sendMessage("The event is already started. You can not leave now!");
            }
          }

          else if(_command.substring(endOfId+1).startsWith("dmevent_player_join"))
          {
            if(DM.is_joining())
              DM.addPlayer(activeChar);
            else
              activeChar.sendMessage("The event is already started. You can't join now!");
          }

          else if(_command.substring(endOfId+1).startsWith("dmevent_player_leave"))
          {
            if(DM.is_joining())
              DM.removePlayer(activeChar);
            else
              activeChar.sendMessage("The event is already started. You can't leave now!");
          }
         
          else if (_command.substring(endOfId+1).startsWith("raid_player_join"))
          {
            if (Raid._joining)
              Raid.addPlayer(activeChar);
            else
              activeChar.sendMessage("The event has already started. You cant join now!");
          }
         
          else if (_command.substring(endOfId+1).startsWith("raid_player_leave"))
          {
            if (Raid._joining)
              Raid.removePlayer(activeChar);
            else
              activeChar.sendMessage("The event has already started. You cant leave now!");
          }

          else if(_command.substring(endOfId+1).startsWith("ctf_player_join "))
          {
            String teamName = _command.substring(endOfId+1).substring(16);
            if(CTF.is_joining())
              CTF.addPlayer(activeChar, teamName);
            else
              activeChar.sendMessage("The event is already started. You can't join now!");
          }

          else if(_command.substring(endOfId+1).startsWith("ctf_player_leave"))
          {
            if(CTF.is_joining())
              CTF.removePlayer(activeChar);
            else
              activeChar.sendMessage("The event is already started. You can't leave now!");
          }

          if(_command.substring(endOfId+1).startsWith("vip_joinVIPTeam"))
          {
              VIP.addPlayerVIP(activeChar);
          }

          if(_command.substring(endOfId+1).startsWith("vip_joinNotVIPTeam"))
          {
              VIP.addPlayerNotVIP(activeChar);
          }

          if(_command.substring(endOfId+1).startsWith("vip_finishVIP"))
          {
              VIP.vipWin(activeChar);
          }

          if(_command.substring(endOfId+1).startsWith("event_participate"))
          {
            L2Event.inscribePlayer(activeChar);
          }

          else if((Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS && object instanceof L2ClassMasterInstance)
            || (object instanceof L2NpcInstance && endOfId > 0 && activeChar.isInsideRadius(object, L2NpcInstance.INTERACTION_DISTANCE, false, false)))
          {
            ((L2NpcInstance) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1));
          }

          activeChar.sendPacket(ActionFailed.STATIC_PACKET);
        }
        catch(NumberFormatException nfe)
        {
          if(Config.ENABLE_ALL_EXCEPTIONS)
            nfe.printStackTrace();
         
        }
      }
      //  Draw a Symbol
      else if(_command.equals("Draw"))
      {
        L2Object object = activeChar.getTarget();
        if(object instanceof L2NpcInstance)
        {
          ((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
        }
      }
      else if(_command.equals("RemoveList"))
      {
        L2Object object = activeChar.getTarget();
        if(object instanceof L2NpcInstance)
        {
          ((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
        }
      }
      else if(_command.equals("Remove "))
      {
        L2Object object = activeChar.getTarget();

        if(object instanceof L2NpcInstance)
        {
          ((L2SymbolMakerInstance) object).onBypassFeedback(activeChar, _command);
        }
      }
      // Navigate throught Manor windows
      else if(_command.startsWith("manor_menu_select?"))
      {
        L2Object object = activeChar.getTarget();
        if(object instanceof L2NpcInstance)
        {
          ((L2NpcInstance) object).onBypassFeedback(activeChar, _command);
        }
      }
      else if(_command.startsWith("bbs_"))
      {
        CommunityBoard.getInstance().handleCommands(getClient(), _command);
      }
      else if(_command.startsWith("_bbs"))
      {
        CommunityBoard.getInstance().handleCommands(getClient(), _command);
      }
      else if(_command.startsWith("RPS.")) // Rank PvP System by Masterio
      {
        RankPvpSystemBypass.execute(activeChar, _command);
      }
      else if (_command.startsWith("voiced_"))
      {
      String command = _command.split(" ")[0];

      IVoicedCommandHandler ach = VoicedCommandHandler.getInstance().getVoicedCommandHandler(_command.substring(7));

      if (ach == null)
      {
      activeChar.sendMessage("The command " + command.substring(7) + " does not exist!");

      _log.info("No handler registered for command '" + _command + "'");
      return;
      }
        }
      else if (_command.startsWith("voice "))
      {
         //only voice commands allowed in bypass
        if (_command.length() > 7
            && _command.charAt(6) == '.')
        {
          final String vc, vparams;
          final int endOfCommand = _command.indexOf(" ", 7);
          if (endOfCommand > 0)
          {
            vc = _command.substring(7, endOfCommand).trim();
            vparams = _command.substring(endOfCommand).trim();
          }
          else
          {
            vc = _command.substring(7).trim();
            vparams = null;
          }
          if (vc.length() > 0)
          {
            final IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(vc);
            if (vch != null)
              vch.useVoicedCommand(vc, activeChar, vparams);
          }
        }
      }
      else if(_command.startsWith("Quest "))
      {
        if(!activeChar.validateBypass(_command))
          return;

        L2PcInstance player = getClient().getActiveChar();
        if(player == null)
          return;

        String p = _command.substring(6).trim();
        int idx = p.indexOf(' ');

        if(idx < 0)
        {
          player.processQuestEvent(p, "");
        }
        else
        {
          player.processQuestEvent(p.substring(0, idx), p.substring(idx).trim());
        }
      }

      // Jstar's Custom Bypass Caller!
      else if(_command.startsWith("custom_"))
      {
        L2PcInstance player = getClient().getActiveChar();
        CustomBypassHandler.getInstance().handleBypass(player, _command);
      }
      else if (_command.startsWith("OlympiadArenaChange"))
      {
        Olympiad.bypassChangeArena(_command, activeChar);
      }
    }
    catch(Exception e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      _log.log(Level.WARNING, "Bad RequestBypassToServer: ", e);
    }
    //    finally
    //    {
    //      activeChar.clearBypass();
    //    }
  }

  /**
   * @param activeChar
   */
  private void comeHere(L2PcInstance activeChar)
  {
    L2Object obj = activeChar.getTarget();
    if(obj == null)
      return;

    if(obj instanceof L2NpcInstance)
    {
      L2NpcInstance temp = (L2NpcInstance) obj;
      temp.setTarget(activeChar);
      temp.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(activeChar.getX(), activeChar.getY(), activeChar.getZ(), 0));
      //      temp.moveTo(player.getX(),player.getY(), player.getZ(), 0 );
    }

  }

  private void playerHelp(L2PcInstance activeChar, String path)
  {
    if(path.indexOf("..") != -1)
      return;

    String filename = "data/html/help/" + path;
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile(filename);
    activeChar.sendPacket(html);
  }

  @Override
  public String getType()
  {
    return "[C] 21 RequestBypassToServer";
  }
}
TOP

Related Classes of com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer

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.