Package com.l2jfrozen.gameserver.model.actor.instance

Source Code of com.l2jfrozen.gameserver.model.actor.instance.L2ClanHallSiegeInfInstance

/*
* 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.model.actor.instance;

import java.text.SimpleDateFormat;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.managers.ClanHallManager;
import com.l2jfrozen.gameserver.model.L2Clan;
import com.l2jfrozen.gameserver.model.L2ClanMember;
import com.l2jfrozen.gameserver.model.entity.ClanHall;
import com.l2jfrozen.gameserver.model.entity.siege.clanhalls.BanditStrongholdSiege;
import com.l2jfrozen.gameserver.model.entity.siege.clanhalls.WildBeastFarmSiege;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;

/**
* @author MHard L2EmuRT
*/

public class L2ClanHallSiegeInfInstance extends L2NpcInstance
{
  public L2ClanHallSiegeInfInstance(int objectId, L2NpcTemplate template)
  {
    super(objectId, template);
  }

  @Override
  public void onAction(L2PcInstance player)
  {
    if(!canTarget(player))
      return;

    // Check if the L2PcInstance already target the L2NpcInstance
    if(this != player.getTarget())
    {
      // Set the target of the L2PcInstance player
      player.setTarget(this);

      // Send a Server->Client packet MyTargetSelected to the L2PcInstance
      // player
      MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
      player.sendPacket(my);

      // Send a Server->Client packet ValidateLocation to correct the
      // L2NpcInstance position and heading on the client
      player.sendPacket(new ValidateLocation(this));
    }
    else
    {
      // Calculate the distance between the L2PcInstance and the
      // L2NpcInstance
      if(!canInteract(player))
      {
        // Notify the L2PcInstance AI with AI_INTENTION_INTERACT
        player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
      }
      else
      {
        showMessageWindow(player, 0);
      }
    }
    // Send a Server->Client ActionFailed to the L2PcInstance in order to
    // avoid that the client wait another packet
    player.sendPacket(ActionFailed.STATIC_PACKET);
  }

  @Override
  public void onBypassFeedback(L2PcInstance player, String command)
  {
    if(command.startsWith("Chat"))
    {
      int val = 0;
      try
      {
        val = Integer.parseInt(command.substring(5));
      }
      catch(IndexOutOfBoundsException ioobe)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          ioobe.printStackTrace();
      }
      catch(NumberFormatException nfe)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          nfe.printStackTrace();
      }
      showMessageWindow(player, val);
    }
    else if(command.startsWith("Quest"))
    {
      String quest = "";
      try
      {
        quest = command.substring(5).trim();
      }
      catch(IndexOutOfBoundsException ioobe)
      {
        if(Config.ENABLE_ALL_EXCEPTIONS)
          ioobe.printStackTrace();
      }

      if(quest.length() == 0)
      {
        showQuestWindow(player);
      }
      else
      {
        showQuestWindow(player, quest);
      }
    }
    else if(command.startsWith("Registration"))
    {
      L2Clan playerClan = player.getClan();
      NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
      String str;
      str = "<html><body>Newspaper!<br>";

      switch(getTemplate().getNpcId())
      {
        case 35437:
          if(!BanditStrongholdSiege.getInstance().isRegistrationPeriod())
          {
            showMessageWindow(player, 3);
            return;
          }
          if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
          {
            showMessageWindow(player, 1);
            return;
          }
          if(BanditStrongholdSiege.getInstance().clanhall.getOwnerClan() == playerClan)
          {
            str += "Your clan is already registered for the siege, what more do you want from me?<br>";
            str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Add / remove a member of the siege</a><br>";
          }
          else
          {
            if(BanditStrongholdSiege.getInstance().isClanOnSiege(playerClan))
            {
              str += "Your clan is already registered for the siege, what more do you want from me?<br>";
              str += "<a action=\"bypass -h npc_%objectId%_UnRegister\">Unsubscribe</a><br>";
              str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Add / remove a member of the siege</a><br>";
            }
            else
            {
              int res = BanditStrongholdSiege.getInstance().registerClanOnSiege(player, playerClan);
              if(res == 0)
              {
                str += "Your clan : <font color=\"LEVEL\">" + player.getClan().getName() + "</font>, successfully registered for the siege clan hall.<br>";
                str += "Now you need to select no more than 18 igokov who will take part in the siege, a member of your clan.<br>";
                str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Select members of the siege</a><br>";
              }
              else if(res == 1)
              {
                str += "You have not passed the test and did not qualify for participation in the siege of Robbers<br>";
                str += "Come back when you're done.";
              }
              else if(res == 2)
              {
                str += "Unfortunately, you are late. Five tribal leaders have already filed an application for registration.<br>";
                str += "Next time be more powerful";
              }
            }
          }
          break;
        case 35627:
          if(!WildBeastFarmSiege.getInstance().isRegistrationPeriod())
          {
            showMessageWindow(player, 3);
            return;
          }
          if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
          {
            showMessageWindow(player, 1);
            return;
          }
          if(WildBeastFarmSiege.getInstance().clanhall.getOwnerClan() == playerClan)
          {
            str += "Your clan is already registered for the siege, what more do you want from me?<br>";
            str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Add / remove a member of the siege</a><br>";
          }
          else
          {
            if(WildBeastFarmSiege.getInstance().isClanOnSiege(playerClan))
            {
              str += "Your clan is already registered for the siege, what more do you want from me?<br>";
              str += "<a action=\"bypass -h npc_%objectId%_UnRegister\">Unsubscribe</a><br>";
              str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Add / remove a member of the siege</a><br>";
            }
            else
            {
              int res = WildBeastFarmSiege.getInstance().registerClanOnSiege(player, playerClan);
              if(res == 0)
              {
                str += "Your clan : <font color=\"LEVEL\">" + player.getClan().getName() + "</font>, successfully registered for the siege clan hall.<br>";
                str += "Now you need to select no more than 18 igokov who will take part in the siege, a member of your clan.<br>";
                str += "<a action=\"bypass -h npc_%objectId%_PlayerList\">Select members of the siege</a><br>";
              }
              else if(res == 1)
              {
                str += "You have not passed the test and did not qualify for participation in the siege of Robbers<br>";
                str += "Come back when you're done.";
              }
              else if(res == 2)
              {
                str += "Unfortunately, you are late. Five tribal leaders have already filed an application for registration.<br>";
                str += "Next time be more raztoropny.";
              }
            }
          }
          break;
      }

      str += "</body></html>";
      html.setHtml(str);
      html.replace("%objectId%", String.valueOf(getObjectId()));
      player.sendPacket(html);
    }
    else if(command.startsWith("UnRegister"))
    {
      L2Clan playerClan = player.getClan();
      if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
      {
        _log.warning("Attention!!! player " + player.getName() + " use packet hack, try unregister clan.");
        return;
      }
      if(!BanditStrongholdSiege.getInstance().isRegistrationPeriod())
      {
        showMessageWindow(player, 3);
        return;
      }
      NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
      String str;
      if(BanditStrongholdSiege.getInstance().isClanOnSiege(playerClan))
      {
        if(BanditStrongholdSiege.getInstance().unRegisterClan(playerClan))
        {
          str = "<html><body>Newspaper!<br>";
          str += "Your clan : <font color=\"LEVEL\">" + player.getClan().getName() + "</font>, successfully removed from the register at the siege clan hall.<br>";
          str += "</body></html>";
          html.setHtml(str);
          html.replace("%objectId%", String.valueOf(getObjectId()));
          player.sendPacket(html);
        }
      }
      else
      {
        _log.warning("Attention!!! player " + player.getName() + " use packet hack, try unregister clan.");
      }
    }
    else if(command.startsWith("PlayerList"))
    {
      L2Clan playerClan = player.getClan();
      if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
        return;
      if(!BanditStrongholdSiege.getInstance().isRegistrationPeriod())
      {
        showMessageWindow(player, 3);
        return;
      }
      if(BanditStrongholdSiege.getInstance().isClanOnSiege(playerClan))
      {
        showPlayersList(playerClan, player);
      }
    }
    else if(command.startsWith("addPlayer"))
    {
      L2Clan playerClan = player.getClan();
      if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
        return;
      if(!BanditStrongholdSiege.getInstance().isRegistrationPeriod())
      {
        showMessageWindow(player, 3);
        return;
      }
      String val = command.substring(10);
      if(playerClan.getClanMember(val) == null)
        return;
      BanditStrongholdSiege.getInstance().addPlayer(playerClan, val);
      if(BanditStrongholdSiege.getInstance().isClanOnSiege(playerClan))
      {
        showPlayersList(playerClan, player);
      }
    }
    else if(command.startsWith("removePlayer"))
    {
      L2Clan playerClan = player.getClan();
      if(playerClan == null || !playerClan.getLeaderName().equalsIgnoreCase(player.getName()) || playerClan.getLevel() < 4)
        return;
      if(!BanditStrongholdSiege.getInstance().isRegistrationPeriod())
      {
        showMessageWindow(player, 3);
        return;
      }
      String val = command.substring(13);
      if(playerClan.getClanMember(val) != null)
      {
        BanditStrongholdSiege.getInstance().removePlayer(playerClan, val);
      }
      if(BanditStrongholdSiege.getInstance().isClanOnSiege(playerClan))
      {
        showPlayersList(playerClan, player);
      }
    }
  }

  public void showPlayersList(L2Clan playerClan, L2PcInstance player)
  {
    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
    String str;
    str = "<html><body>Newspaper!<br>";
    str += "Your clan : <font color=\"LEVEL\">" + player.getClan().getName() + "</font>. select participants for the siege.<br><br>";
    str += "<img src=\"L2UI.SquareWhite\" width=280 height=1>";
    str += "<table width=280 border=0 bgcolor=\"000000\"><tr><td width=170 align=center>Register bathrooms</td><td width=110 align=center>Action</td></tr></table>";
    str += "<img src=\"L2UI.SquareWhite\" width=280 height=1>";
    str += "<table width=280 border=0>";
    for(String temp : BanditStrongholdSiege.getInstance().getRegisteredPlayers(playerClan))
    {
      str += "<tr><td width=170>" + temp + "</td><td width=110 align=center><a action=\"bypass -h npc_%objectId%_removePlayer " + temp + "\"> Remove</a></td></tr>";
    }
    str += "</table>";
    str += "<img src=\"L2UI.SquareWhite\" width=280 height=1>";
    str += "<table width=280 border=0 bgcolor=\"000000\"><tr><td width=170 align=center>Clan Members</td><td width=110 align=center>Action</td></tr></table>";
    str += "<img src=\"L2UI.SquareWhite\" width=280 height=1>";
    str += "<table width=280 border=0>";
    for(L2ClanMember temp : playerClan.getMembers())
    {
      if(!BanditStrongholdSiege.getInstance().getRegisteredPlayers(playerClan).contains(temp.getName()))
      {
        str += "<tr><td width=170>" + temp.getName() + "</td><td width=110 align=center><a action=\"bypass -h npc_%objectId%_addPlayer " + temp.getName() + "\"> Add</a></td></tr>";
      }
    }
    str += "</table>";
    str += "</body></html>";
    html.setHtml(str);
    html.replace("%objectId%", String.valueOf(getObjectId()));
    player.sendPacket(html);
  }

  public void showMessageWindow(L2PcInstance player, int val)
  {
    player.sendPacket(ActionFailed.STATIC_PACKET);
    long startSiege = 0;
    int npcId = getTemplate().getNpcId();
    String filename;
    if(val == 0)
    {
      filename = "data/html/default/" + npcId + ".htm";
    }
    else
    {
      filename = "data/html/default/" + npcId + "-" + val + ".htm";
    }
    NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
    html.setFile(filename);
    if(npcId == 35382)
    {
      //  startSiege=FortResistSiegeManager.getInstance().getSiegeDate().getTimeInMillis();
    }
    else if(npcId == 35437 || npcId == 35627)
    {
      ClanHall clanhall = null;
      String clans = "";
      clans += "<table width=280 border=0>";
      int clanCount = 0;

      switch(npcId)
      {
        case 35437:
          clanhall = ClanHallManager.getInstance().getClanHallById(35);
          startSiege = BanditStrongholdSiege.getInstance().getSiegeDate().getTimeInMillis();
          for(String a : BanditStrongholdSiege.getInstance().getRegisteredClans())
          {
            clanCount++;
            clans += "<tr><td><font color=\"LEVEL\">" + a + "</font>  (Number :" + BanditStrongholdSiege.getInstance().getPlayersCount(a) + "people.)</td></tr>";
          }
          break;
        /*case 35627:
          clanhall = ClanHallManager.getInstance().getClanHallById(63);
          startSiege=WildBeastFarmSiege.getInstance().getSiegeDate().getTimeInMillis();
          for (String a : WildBeastFarmSiege.getInstance().getRegisteredClans())
          {
            clanCount++;
            clans+="<tr><td><font color=\"LEVEL\">"+a+"</font>  (Number :"+BanditStrongholdSiege.getInstance().getPlayersCount(a)+"people.)</td></tr>";
          }
          break;*/
      }
      while(clanCount < 5)
      {
        clans += "<tr><td><font color=\"LEVEL\">**Not logged**</font>  (Quantity : people.)</td></tr>";
        clanCount++;
      }
      clans += "</table>";
      html.replace("%clan%", String.valueOf(clans));
      L2Clan clan = clanhall == null ? null : clanhall.getOwnerClan();
      String clanName;
      if(clan == null)
      {
        clanName = "NPC";
      }
      else
      {
        clanName = clan.getName();
      }
      html.replace("%clanname%", String.valueOf(clanName));
    }

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    html.replace("%SiegeDate%", String.valueOf(format.format(startSiege)));
    html.replace("%objectId%", String.valueOf(getObjectId()));
    player.sendPacket(html);
  }
}
TOP

Related Classes of com.l2jfrozen.gameserver.model.actor.instance.L2ClanHallSiegeInfInstance

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.