Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Npc Advanced Grand Boss Observation

Iniciado por Swarlog, Ago 11, 2022, 12:54 AM

Tema anterior - Siguiente tema

Swarlog



Con este NPC jugadores pueden hacer (configurable por el código fácilmente) 5 cosas:

• Compruebe si Gran Jefe está en línea (existe) o fuera de línea.
• Compruebe el número de jugadores se encuentran en la zona de Grand Boss & intentando matar al Gran Jefe.
• Compruebe cuántas partes se encuentran en la zona de Grand Boss & intentando matar al Gran Jefe.
• Seleccione para teletransportarse en la Zona Gran Jefe.
• Observar La Zona GrandBoss.

CitarCómo instalar:

1. Crear un nuevo archivo de java en data/scripts/custom/RaidObserver/RaidObserver.java

    package custom.RaidObserver;
    import javolution.text.TextBuilder;
    import com.l2jserver.gameserver.cache.HtmCache;
    import com.l2jserver.gameserver.instancemanager.GrandBossManager;
    import com.l2jserver.gameserver.instancemanager.ZoneManager;
    import com.l2jserver.gameserver.model.actor.L2Character;
    import com.l2jserver.gameserver.model.actor.L2Npc;
    import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    import com.l2jserver.gameserver.model.quest.Quest;
    import com.l2jserver.gameserver.model.zone.L2ZoneType;
    import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;

    /**
     * @author `Heroin
     * Made For Maxcheaters.com
     */
    public class RaidObserver extends Quest
    {
       private static final int _Baium = 29020;
       private static final int _Antharas = 29068;
       private static final int _Valakas = 29028;
       private static final int _AntQueen = 29001;
       private static final int npcid = 36650; // npc id
       private static final boolean EnableObservation = true; // Set it true to allow players to observe raidbosses
       private static final boolean EnableTeleport = true; // Set it true to allow players to teleport to raidbosses
       private static final int ObservationAdena = 5000;
       private static String htm = "data/scripts/custom/RaidObserver/1.htm"; //html location
       private int x = 0; //Dont Change
       private int y = 0;//Dont Change
       private int z = 0;//Dont Change
       
       public RaidObserver(int questId, String name, String descr)
       {
          super(questId, name, descr);
          addFirstTalkId(npcid);
          addTalkId(npcid);
          addStartNpc(npcid);
       }
       
       @Override
       public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
       {
          if (event.startsWith("Valakas"))
          {
             RaidInfo(event, npc, player, event);
          }
          if (event.startsWith("tp_Valakas"))//location of the teleport
          {
             player.teleToLocation(213447, -115136, -1636);
          }
          if (event.startsWith("Baium"))
          {
             RaidInfo(event, npc, player, event);
          }
          if (event.startsWith("tp_Baium"))
          {
             player.teleToLocation(115213, 16623, 10085);//location of the teleport
          }
          if (event.startsWith("Antharas"))
          {
             RaidInfo(event, npc, player, event);
          }
          if (event.startsWith("tp_Antharas"))
          {
             player.teleToLocation(179864, 114819, -7711);//location of the teleport
          }
          if (event.startsWith("AntQueen"))
          {
             RaidInfo(event, npc, player, event);
          }
          if (event.startsWith("tp_AntQueen"))
          {
             player.teleToLocation(-21514, 181871, -5722); //location of the teleport
          }
          if (event.startsWith("Back"))//Back Button Dont Chant
          {
             Back(event, npc, player, event);
          }
           
          return "";
       }
       
       
       private void checkxyz(String command) // Selecting Location for Observing each raidboss
       {
          if (command.equals("Baium"))
          {
             x=115213;
             y=16623;
             z = 10085;
          }
          if (command.equals("Valakas"))
          {
             x=213447;
             y=-115136;
             z = -1636;
          }
          if (command.equals("AntQueen")) // , 181871, -5722
          {
             x=-21514;
             y= 181871;
             z = -5722;
          }
          if (command.equals("Antharas"))
          {
             x=179864;
             y=114819;
             z = -7711;
          }   
       }


       private int checkppl(String command, L2PcInstance player)//Calculating players inside boss area
       {
          if (command.equals("Baium"))
          {
             int ppl = getPlayerInside(12002);
             return ppl;
          }
          if (command.equals("Valakas"))
          {
             int ppl = getPlayerInside(12010);
             return ppl;
          }
          if (command.equals("AntQueen"))
          {
             int ppl = getPlayerInside(12012);
             return ppl;
          }
          if (command.equals("Antharas"))
          {
             int ppl = getPlayerInside(12001);
             return ppl;
          }
          return 0;
         
       }
       private int checkpts(String command, L2PcInstance player)//Calculating parties inside boss area
       {
          if (command.equals("Baium"))
          {
             int pts = getPartiesInside(12002);
             return pts;
          }
          if (command.equals("Valakas"))
          {
             int pts = getPartiesInside(12010);
             return pts;
          }
          if (command.equals("AntQueen"))
          {
             int pts = getPartiesInside(12012);
             return pts;
          }
          if (command.equals("Antharas"))
          {
             int pts = getPartiesInside(12001);
             return pts;
          }
          return 0;
       }
       private boolean israidon(String name)//Checks if raid is online/offline
       {
          int id = 0;
          if (name.equals("Baium"))
             id = _Baium;
          if (name.equals("Valakas"))
             id = _Valakas;
          if (name.equals("AntQueen"))
             id = _AntQueen;
          if (name.equals("Antharas"))
             id = _Antharas;
          int status = GrandBossManager.getInstance().getBossStatus(id);
          if (status == 2)
             return false;
          else if (status == 1)
             return true;
          else
             return false;
       }

       @Override
       public String onFirstTalk(L2Npc npc, L2PcInstance player)
       {
          final int npcId = npc.getNpcId();
          if (player.getQuestState(getName()) == null)
          {
             newQuestState(player);
          }
          if (npcId == npcid)
          {
             String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), htm);
             html = html.replaceAll("%player%", player.getName());     
             html = html.replaceAll("%teleport%", EnableTeleport ? "<font color=\"00FF00\">Enabled</font>" : "<font color=\"FF0000\">Disabled</font>");
             html = html.replaceAll("%observation%", EnableObservation ? "Observation: <font color=\"00FF00\">Enabled</font><br>Observation Adena Price: <font color=\"LEVEL\">"+ObservationAdena+"</font>"
                   : "<font color=\"FF0000\">Observation: Disabled</font>");
             
             NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
             npcHtml.setHtml(html);
             player.sendPacket(npcHtml);
          }
          return "";
       }
       
       public static void main(final String[] args)
       {
          new RaidObserver(-1, RaidObserver.class.getSimpleName(), "custom");
          System.out.println("De Level Manager by `Heroin has been loaded successfully!");
       }
       private void Back(String event, L2Npc npc, L2PcInstance player, String command)
       {
         
          try
          {

                String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), htm);
                html = html.replaceAll("%player%", player.getName());     
                html = html.replaceAll("%teleport%", EnableTeleport ? "<font color=\"00FF00\">Enabled</font>" : "<font color=\"FF0000\">Disabled</font>");
                html = html.replaceAll("%observation%", EnableObservation ? "Observation: <font color=\"00FF00\">Enabled</font><br>Observation Adena Price: <font color=\"LEVEL\">"+ObservationAdena+"</font>"
                      : "<font color=\"FF0000\">Observation: Disabled</font>");
               
                NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
                npcHtml.setHtml(html);
                player.sendPacket(npcHtml);
             
          }
          catch (Exception e)
          {
             player.sendMessage("Something went wrong try again.");
          }
       }
       @SuppressWarnings("deprecation")
       public int getPlayerInside(int zoneId)//Calculating players inside party area.
        {
            int i = 0;
            for (L2ZoneType zone : ZoneManager.getInstance().getAllZones())
                if (zone.getId() == zoneId)
                {
                    for (L2Character character : zone.getCharactersInside().values())
                        if (character instanceof L2PcInstance && (!((L2PcInstance) character).getClient().isDetached()))
                            i++;
                }
    return i;
    }
       private void RaidInfo(String event, L2Npc npc, L2PcInstance player, String command)
       {
         
          try
          {
             int playersin = checkppl(command, player);
             int partiesin = checkpts(command, player);
             boolean status = israidon(command);
             checkxyz(command);
             String color = status ? "<font color=\"00FF00\">Online</font>" : "<font color=\"FF0000\">Offline</font>";
             NpcHtmlMessage nhm = new NpcHtmlMessage(5);
             TextBuilder tb = new TextBuilder("");
             tb.append("<html><head><title>"+player.getName()+"</title></head><body><center>");
             tb.append("<br><tr><td><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></td></tr><br>");//image
             tb.append("<font color=\"FFA500\">"+command+" Information</font><br>");
             tb.append("<table bgcolor=444444 width= 280>");
             tb.append("<tr><td align=center><font color=\"C0C0C0\">Players Inside "+command+" Zone: "+playersin+"</font></td></tr>");
             tb.append("<tr><td align=center><img src=\"L2UI.SquareWhite\" width=90 height=1></td></tr>");
             tb.append("<tr><td align=center><img src=\"L2UI.SquareBlank\" width=90 height=1></td></tr>");
             tb.append("<tr><td align=center><img src=\"L2UI.SquareBlank\" width=90 height=1></td></tr>");
             tb.append("<tr><td align=center><font color=\"C0C0C0\">Parties Inside "+command+" Zone: "+partiesin+"</font></td></tr>");
             tb.append("</table><br>");
             tb.append("<table width= 280>");
             tb.append("<tr><td align=center>Raid Boss Status: "+color+"</td></tr></table><br><BR>");
             tb.append("<table bgcolor=444444 width=50>");
             tb.append("<tr><td><button value=\"Teleport To "+command+
                   "\" action=\"bypass -h Quest RaidObserver tp_"+command+"\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");
             if (EnableObservation)
             {
             tb.append("<tr><td><button value=\"Observe "+command+
                   "\" action=\"bypass -h npc_"+npc.getObjectId()+"_observe "+ObservationAdena+" "+x+" "+y+" "+z+"\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");
             }
             tb.append("<tr><td><button value=\"Back\" action=\"bypass -h Quest RaidObserver Back\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");

             tb.append("</table><br><br><br><br>");
             tb.append("<tr><td><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></td></tr><br>");
             tb.append("</body></html>");
             nhm.setHtml(tb.toString());
             player.sendPacket(nhm);
          }
          catch (Exception e)
          {
             player.sendMessage("Something went wrong try again.");
          }
       }
       @SuppressWarnings("deprecation")
       public int getPartiesInside(int zoneId)//Calculating parties inside party area.
        {
            int i = 0;
            for (L2ZoneType zone : ZoneManager.getInstance().getAllZones())
                if (zone.getId() == zoneId)
                {
                    for (L2Character character : zone.getCharactersInside().values())
                        if (character instanceof L2PcInstance && (!((L2PcInstance) character).getClient().isDetached()) &&
                              ((L2PcInstance) character).getParty() != null &&
                              ((L2PcInstance) character).getParty().isLeader((L2PcInstance) character))
                            i++;
                }
            return i;
        }
    }

2.Crear un nuevo archivo htm en data/scripts/custom/RaidObserver/1.htm

    <title>%player%</title>
    <center><br>
    <tr><td><img src="L2UI_CH3.herotower_deco" width=256 height=32></td></tr><br>
    <center><font color="CC9900">Grand Raid Boss Informaton</font></text></center>
    <br>
    <table>
    <tr>
    <td align=center><img src="icon.accessory_ring_of_baium_i00" width=32 height=32>
    </td>
    <td align=center><button value="Baium" action="bypass -h Quest RaidObserver Baium" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    </td>
    <td align=center><button value="Valakas" action="bypass -h Quest RaidObserver Valakas" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    </td>
    <td align=center><img src="icon.accessory_necklace_of_valakas_i00" width=32 height=32>
    </td>
    </table>
    <br><img src="L2UI.SquareGray" width=155 height=1><br>
    <table>
    <tr>
    <td align=center><img src="icon.accessory_earring_of_antaras_i00" width=32 height=32>
    </td>
    <td align=center><button value="Antharas" action="bypass -h Quest RaidObserver Antharas" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    </td>
    <td align=center><button value="Queen Ant" action="bypass -h Quest RaidObserver AntQueen" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    </td>
    <td align=center><img src="icon.accessory_ring_of_queen_ant_i00" width=32 height=32>
    </td>
    </table><br><img src="L2UI.SquareGray" width=155 height=1><br><BR><BR>
    Teleport: %teleport%<br>
    %observation%<br>
    <tr><td><img src="L2UI_CH3.herotower_deco" width=256 height=32></td></tr><br>

3. Agregar secuencia de comandos en el archivo scripts.cfg:

    custom/RaidObserver/RaidObserver.java
4. Ejecutar esta consulta en la base de datos o instalar el NPC por ti mismo.

INSERT INTO `npc` VALUES ('36650', '13173', 'RaidObserver', '1', 'MaxCheaters.com', '1', 'LineageNPC.clear_npc', '8.00', '19.00', '85', 'male', 'L2Npc', null, null, null, null, null, '40', '43', '30', '21', '20', '20', '0', '0', null, null, null, null, '230', '1', '0', '333', '0', '0', '0', '60.00000', '120.00000', '1', '1', '0', '0');
CitarCómo modificar:

Compruebe Variables en código:

    private static final int _Baium = 29020;
    private static final int _Antharas = 29068;
    private static final int _Valakas = 29028;
    private static final int _AntQueen = 29001;
    private static final int npcid = 36650; // npc id
    private static final boolean EnableObservation = true; // Set it true to allow players to observe raidbosses
    private static final boolean EnableTeleport = true; // Set it true to allow players to teleport to raidbosses
    private static final int ObservationAdena = 5000;  //Adena required to observe a grand boss
    private static String htm = "data/scripts/custom/RaidObserver/1.htm"; //html location

CitarCómo agregar más Grandes Jefes de la lista:

    Index: L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/
    ===================================================================
    --- L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/RaidObserver.java
    +++ L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/RaidObserver.java

    @@ +142, 7 - 144 , 9 @@
       private static final int _AntQueen = 29001;
    +   private static final int _YourRaidBoss = 12345;
       private static final int npcid = 36650; // npc id


     @@ +219,8 -222 , 6 @@
                    if (event.startsWith("tp_Valakas"))//location of the teleport
          {
             player.teleToLocation(213447, -115136, -1636);
          }
    +      if (event.startsWith("YourRaidBoss"))
    +      {
    +         RaidInfo(event, npc, player, event);
    +      }
    +      if (event.startsWith("tp_YourRaidBoss"))//location of the teleport
    +      {
    +         player.teleToLocation(213447, -115136, -1636);
    +      }
                    if (event.startsWith("Baium"))
          {

    @@ +172,12 - 176, 5 @@

             y=16623;
             z = 10085;
          }
    +      if (command.equals("YourRaidBoss"))
    +      {
    +         x= YourLocationX;
    +         y=-YourLocationY;
    +         z = YourLocationZ;
    +      }
          if (command.equals("Valakas"))
          {
             x=213447;

    @@ +130, 1 - 157,9 @@
             return ppl;
          }
    +      if (command.equals("YourRaidBoss"))
    +      {
    +         int ppl = getPlayerInside(Zone Id ); //check data/zones/custom_boss_zones.xml
    +         return ppl;
    +      }
          if (command.equals("AntQueen"))
          {

    @@ +160, 2 - 177,4 @@
             return pts;
          }
    +      if (command.equals("YourRaidBoss"))
    +      {
    +         int pts = getPartiesInside(Zone Id); //check data/zones/custom_boss_zones.xml
    +         return pts;
    +      }
          if (command.equals("AntQueen"))
          {
    @@ +187, 3 - 191,5 @@
                    if (name.equals("Valakas"))
             id = _Valakas;
    +      if (name.equals("YourRaidBoss"))
    +         id = _YourRaidBoss;
          if (name.equals("AntQueen"))
             id = _AntQueen;

    Index: L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/
    ===================================================================
    --- L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/1.htm
    +++ L2J_DataPack/dist/game/data/scripts/custom/RaidObserver/1.htm

    <td align=center><img src="icon.accessory_necklace_of_valakas_i00" width=32 height=32>
    </td>
    </table>
    +<br><img src="L2UI.SquareGray" width=155 height=1><br>
    +<table>
    +<tr>
    +<td align=center><img src="icon.accessory_earring_of_antaras_i00" width=32 height=32>
    +</td>
    +<td align=center><button value="Antharas" action="bypass -h Quest RaidObserver Antharas" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    +</td>
    +<td align=center><button value="Queen Ant" action="bypass -h Quest RaidObserver AntQueen" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
    +</td>
    +<td align=center><img src="icon.accessory_ring_of_queen_ant_i00" width=32 height=32>
    +</td>
    +</table>
    +<br><img src="L2UI.SquareGray" width=155 height=1><br>
    <table>
    <tr>
    <td align=center><img src="icon.accessory_earring_of_antaras_i00" width=32 height=32>

Credits & Idea: Heroin

Post de: Death15