Package com.l2jfrozen.gameserver.handler.admincommandhandlers

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

/*
* 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gameserver.handler.admincommandhandlers;

import java.util.StringTokenizer;

import javolution.text.TextBuilder;

import com.l2jfrozen.gameserver.datatables.sql.ClanTable;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.managers.FortManager;
import com.l2jfrozen.gameserver.model.L2Clan;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.siege.Fort;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;

/**
* This class handles all siege commands: Todo: change the class name, and neaten it up
*
* @author programmos
*/
public class AdminFortSiege implements IAdminCommandHandler
{
  //private static Logger _log = Logger.getLogger(AdminFortSiege.class.getName());

  private static final String[] ADMIN_COMMANDS =
  {
      "admin_fortsiege",
      "admin_add_fortattacker",
      "admin_add_fortdefender",
      "admin_add_fortguard",
      "admin_list_fortsiege_clans",
      "admin_clear_fortsiege_list",
      "admin_move_fortdefenders",
      "admin_spawn_fortdoors",
      "admin_endfortsiege",
      "admin_startfortsiege",
      "admin_setfort",
      "admin_removefort"
  };

  @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, " ");
    command = st.nextToken(); // Get actual command

    // Get fort
    Fort fort = null;

    if(st.hasMoreTokens())
    {
      fort = FortManager.getInstance().getFort(st.nextToken());
    }

    // Get fort
//    String val = "";
//
//    if(st.hasMoreTokens())
//    {
//      val = st.nextToken();
//    }
//
//    val = null;

    // No fort specified
    if(fort == null || fort.getFortId() < 0)
    {
      showFortSelectPage(activeChar);
    }
    else
    {
      L2Object target = activeChar.getTarget();
      L2PcInstance player = null;

      if(target instanceof L2PcInstance)
      {
        player = (L2PcInstance) target;
      }

      target = null;

      if(command.equalsIgnoreCase("admin_add_fortattacker"))
      {
        if(player == null)
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT));
        }
        else
        {
          fort.getSiege().registerAttacker(player, true);
        }
      }
      else if(command.equalsIgnoreCase("admin_add_fortdefender"))
      {
        if(player == null)
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT));
        }
        else
        {
          fort.getSiege().registerDefender(player, true);
        }
      }
      // FIXME
      //            else if (command.equalsIgnoreCase("admin_add_guard"))
      //            {
      //                try
      //                {
      //                    int npcId = Integer.parseInt(val);
      //                    fort.getSiege().getFortSiegeGuardManager().addFortSiegeGuard(activeChar, npcId);
      //                }
      //                catch (Exception e)
      //                {
      //                    activeChar.sendMessage("Usage: //add_guard npcId");
      //                }
      //            }
      else if(command.equalsIgnoreCase("admin_clear_fortsiege_list"))
      {
        fort.getSiege().clearSiegeClan();
      }
      else if(command.equalsIgnoreCase("admin_endfortsiege"))
      {
        fort.getSiege().endSiege();
      }
      else if(command.equalsIgnoreCase("admin_list_fortsiege_clans"))
      {
        fort.getSiege().listRegisterClan(activeChar);

        return true;
      }
      else if(command.equalsIgnoreCase("admin_move_fortdefenders"))
      {
        activeChar.sendMessage("Not implemented yet.");
      }
      else if(command.equalsIgnoreCase("admin_setfort"))
      {
        if(player == null || player.getClan() == null)
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT));
        }
        else
        {
          fort.setOwner(player.getClan());
        }
      }
      else if(command.equalsIgnoreCase("admin_removefort"))
      {
        L2Clan clan = ClanTable.getInstance().getClan(fort.getOwnerId());

        if(clan != null)
        {
          fort.removeOwner(clan);
        }
        else
        {
          activeChar.sendMessage("Unable to remove fort");
        }

        clan = null;
      }
      else if(command.equalsIgnoreCase("admin_spawn_fortdoors"))
      {
        fort.spawnDoor();
      }
      else if(command.equalsIgnoreCase("admin_startfortsiege"))
      {
        fort.getSiege().startSiege();
      }

      showFortSiegePage(activeChar, fort.getName());

      player = null;
    }

    return true;
  }

  private void showFortSelectPage(L2PcInstance activeChar)
  {
    int i = 0;

    NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
    adminReply.setFile("data/html/admin/forts.htm");
    TextBuilder cList = new TextBuilder();

    for(Fort fort : FortManager.getInstance().getForts())
    {
      if(fort != null)
      {
        String name = fort.getName();
        cList.append("<td fixwidth=90><a action=\"bypass -h admin_fortsiege " + name + "\">" + name + "</a></td>");
        name = null;
        i++;
      }

      if(i > 2)
      {
        cList.append("</tr><tr>");
        i = 0;
      }
    }

    adminReply.replace("%forts%", cList.toString());
    activeChar.sendPacket(adminReply);

    cList = null;
    adminReply = null;
  }

  private void showFortSiegePage(L2PcInstance activeChar, String fortName)
  {
    NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
    adminReply.setFile("data/html/admin/fort.htm");
    adminReply.replace("%fortName%", fortName);
    activeChar.sendPacket(adminReply);

    adminReply = null;
  }

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

}
TOP

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

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.