Jump to content
  • 0

Question

Posted

Hello guys, need help, how to disable grand boss quest teleport.

 

expl. When you get to baium,valakas or antharas lair, other ppl cant teleport. until rb dead or you dead, how to disable this that all ppl can tp anytime?

thanks.

3 answers to this question

Recommended Posts

  • 0
Posted

as i understand i need to remove smth from here, or add some lines, SweeTs can you give me help with it?

 

 

package net.sf.l2j.gameserver.scripting.scripts.teleports;

import java.util.List;

import net.sf.l2j.commons.math.MathUtil;
import net.sf.l2j.commons.random.Rnd;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.data.DoorTable;
import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
import net.sf.l2j.gameserver.instancemanager.ZoneManager;
import net.sf.l2j.gameserver.model.Location;
import net.sf.l2j.gameserver.model.actor.Npc;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.model.zone.type.L2BossZone;
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.QuestState;
import net.sf.l2j.gameserver.scripting.ScriptManager;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Antharas;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Baium;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Sailren;
import net.sf.l2j.gameserver.scripting.scripts.ai.individual.Valakas;

/**
 * This script leads behavior of multiple bosses teleporters.
 * <ul>
 * <li>13001, Heart of Warding : Teleport into Lair of Antharas</li>
 * <li>29055, Teleportation Cubic : Teleport out of Baium zone</li>
 * <li>31859, Teleportation Cubic : Teleport out of Lair of Antharas</li>
 * <li>31384, Gatekeeper of Fire Dragon : Opening some doors</li>
 * <li>31385, Heart of Volcano : Teleport into Lair of Valakas</li>
 * <li>31540, Watcher of Valakas Klein : Teleport into Hall of Flames</li>
 * <li>31686, Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano</li>
 * <li>31687, Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano</li>
 * <li>31759, Teleportation Cubic : Teleport out of Lair of Valakas</li>
 * <li>31862, Angelic Vortex : Baium Teleport (3 different HTMs according of situation)</li>
 * <li>32107, Teleportation Cubic : Teleport out of Sailren Nest</li>
 * <li>32109, Shilen's Stone Statue : Teleport to Sailren Nest</li>
 * </ul>
 * @author Plim, original python script by Emperorc
 */
public class GrandBossTeleporters extends Quest
{
    private static final String qn = "GrandBossTeleporters";
    
    private static final Location BAIUM_IN = new Location(113100, 14500, 10077);
    private static final Location[] BAIUM_OUT =
    {
        new Location(108784, 16000, -4928),
        new Location(113824, 10448, -5164),
        new Location(115488, 22096, -5168)
    };
    
    private static final Location SAILREN_IN = new Location(27333, -6835, -1970);
    private static final Location[] SAILREN_OUT =
    {
        new Location(10610, -24035, -3676),
        new Location(10703, -24041, -3673),
        new Location(10769, -24107, -3672)
    };
    
    private static int _valakasPlayersCount = 0;
    
    public GrandBossTeleporters()
    {
        super(-1, "teleports");
        
        addFirstTalkId(29055, 31862);
        addStartNpc(13001, 29055, 31859, 31384, 31385, 31540, 31686, 31687, 31759, 31862, 32107, 32109);
        addTalkId(13001, 29055, 31859, 31384, 31385, 31540, 31686, 31687, 31759, 31862, 32107, 32109);
    }
    
    @Override
    public String onAdvEvent(String event, Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(qn);
        if (st == null)
            st = newQuestState(player);
        
        st.setState(STATE_STARTED);
        
        if (event.equalsIgnoreCase("baium"))
        {
            // Player is mounted on a wyvern, cancel it.
            if (player.isFlying())
                htmltext = "31862-05.htm";
            // Player hasn't blooded fabric, cancel it.
            else if (!st.hasQuestItems(4295))
                htmltext = "31862-03.htm";
            // All is ok, take the item and teleport the player inside.
            else
            {
                st.takeItems(4295, 1);
                
                // allow entry for the player for the next 30 secs.
                ZoneManager.getInstance().getZoneById(110002, L2BossZone.class).allowPlayerEntry(player, 30);
                player.teleToLocation(BAIUM_IN, 0);
            }
        }
        else if (event.equalsIgnoreCase("baium_story"))
            htmltext = "31862-02.htm";
        else if (event.equalsIgnoreCase("baium_exit"))
            player.teleToLocation(Rnd.get(BAIUM_OUT), 100);
        else if (event.equalsIgnoreCase("31540"))
        {
            if (st.hasQuestItems(7267))
            {
                st.takeItems(7267, 1);
                player.teleToLocation(183813, -115157, -3303, 0);
                st.set("allowEnter", "1");
            }
            else
                htmltext = "31540-06.htm";
        }
        return htmltext;
    }
    
    @Override
    public String onFirstTalk(Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(qn);
        if (st == null)
            st = newQuestState(player);
        
        st.setState(STATE_STARTED);
        
        switch (npc.getNpcId())
        {
            case 29055:
                htmltext = "29055-01.htm";
                break;
            
            case 31862:
                final int status = GrandBossManager.getInstance().getBossStatus(29020);
                if (status == Baium.AWAKE)
                    htmltext = "31862-01.htm";
                else if (status == Baium.DEAD)
                    htmltext = "31862-04.htm";
                else
                    htmltext = "31862-00.htm";
                break;
        }
        
        return htmltext;
    }
    
    @Override
    public String onTalk(Npc npc, Player player)
    {
        String htmltext = "";
        QuestState st = player.getQuestState(getName());
        if (st == null)
            return null;
        
        st.setState(STATE_STARTED);
        
        int status;
        switch (npc.getNpcId())
        {
            case 13001:
                status = GrandBossManager.getInstance().getBossStatus(Antharas.ANTHARAS);
                if (status == Antharas.FIGHTING)
                    htmltext = "13001-02.htm";
                else if (status == Antharas.DEAD)
                    htmltext = "13001-01.htm";
                else if (status == Antharas.DORMANT || status == Antharas.WAITING)
                {
                    if (st.hasQuestItems(3865))
                    {
                        st.takeItems(3865, 1);
                        ZoneManager.getInstance().getZoneById(110001, L2BossZone.class).allowPlayerEntry(player, 30);
                        
                        player.teleToLocation(175300 + Rnd.get(-350, 350), 115180 + Rnd.get(-1000, 1000), -7709, 0);
                        
                        if (status == Antharas.DORMANT)
                        {
                            GrandBossManager.getInstance().setBossStatus(Antharas.ANTHARAS, Antharas.WAITING);
                            ScriptManager.getInstance().getQuest("Antharas").startQuestTimer("beginning", Config.WAIT_TIME_ANTHARAS, null, null, false);
                        }
                    }
                    else
                        htmltext = "13001-03.htm";
                }
                break;
            
            case 31859:
                player.teleToLocation(79800 + Rnd.get(600), 151200 + Rnd.get(1100), -3534, 0);
                break;
            
            case 31385:
                status = GrandBossManager.getInstance().getBossStatus(Valakas.VALAKAS);
                if (status == 0 || status == 1)
                {
                    if (_valakasPlayersCount >= 200)
                        htmltext = "31385-03.htm";
                    else if (st.getInt("allowEnter") == 1)
                    {
                        st.unset("allowEnter");
                        ZoneManager.getInstance().getZoneById(110010, L2BossZone.class).allowPlayerEntry(player, 30);
                        
                        player.teleToLocation(204328, -111874, 70, 300);
                        
                        _valakasPlayersCount++;
                        
                        if (status == Valakas.DORMANT)
                        {
                            GrandBossManager.getInstance().setBossStatus(Valakas.VALAKAS, Valakas.WAITING);
                            ScriptManager.getInstance().getQuest("Valakas").startQuestTimer("beginning", Config.WAIT_TIME_VALAKAS, null, null, false);
                        }
                    }
                    else
                        htmltext = "31385-04.htm";
                }
                else if (status == 2)
                    htmltext = "31385-02.htm";
                else
                    htmltext = "31385-01.htm";
                break;
            
            case 31384:
                DoorTable.getInstance().getDoor(24210004).openMe();
                break;
            
            case 31686:
                DoorTable.getInstance().getDoor(24210006).openMe();
                break;
            
            case 31687:
                DoorTable.getInstance().getDoor(24210005).openMe();
                break;
            
            case 31540:
                if (_valakasPlayersCount < 50)
                    htmltext = "31540-01.htm";
                else if (_valakasPlayersCount < 100)
                    htmltext = "31540-02.htm";
                else if (_valakasPlayersCount < 150)
                    htmltext = "31540-03.htm";
                else if (_valakasPlayersCount < 200)
                    htmltext = "31540-04.htm";
                else
                    htmltext = "31540-05.htm";
                break;
            
            case 31759:
                player.teleToLocation(150037, -57720, -2976, 250);
                break;
            
            case 32107:
                player.teleToLocation(Rnd.get(SAILREN_OUT), 100);
                break;
            
            case 32109:
                if (!player.isInParty())
                    htmltext = "32109-03.htm";
                else if (!player.getParty().isLeader(player))
                    htmltext = "32109-01.htm";
                else
                {
                    if (st.hasQuestItems(8784))
                    {
                        status = GrandBossManager.getInstance().getBossStatus(Sailren.SAILREN);
                        if (status == Sailren.DORMANT)
                        {
                            final List<Player> party = player.getParty().getMembers();
                            
                            // Check players conditions.
                            for (Player member : party)
                            {
                                if (member.getLevel() < 70)
                                    return "32109-06.htm";
                                
                                if (!MathUtil.checkIfInRange(1000, player, member, true))
                                    return "32109-07.htm";
                            }
                            
                            // Take item from party leader.
                            st.takeItems(8784, 1);
                            
                            final L2BossZone nest = ZoneManager.getInstance().getZoneById(110015, L2BossZone.class);
                            
                            // Teleport players.
                            for (Player member : party)
                            {
                                if (nest != null)
                                {
                                    nest.allowPlayerEntry(member, 30);
                                    member.teleToLocation(SAILREN_IN, 100);
                                }
                            }
                            GrandBossManager.getInstance().setBossStatus(Sailren.SAILREN, Sailren.FIGHTING);
                            ScriptManager.getInstance().getQuest("Sailren").startQuestTimer("beginning", 60000, null, null, false);
                        }
                        else if (status == Sailren.DEAD)
                            htmltext = "32109-04.htm";
                        else
                            htmltext = "32109-05.htm";
                    }
                    else
                        htmltext = "32109-02.htm";
                }
                break;
        }
        
        return htmltext;
    }
}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • https://prnt.sc/Bkkc0ShGXv9m https://prnt.sc/-JFLvZXsn27A
    • Hello guys want to sell adena in L2 Reborn Signature x1  Stock =14kk good price 
    • Hi guys, I have the following problem, I want to set up two servers on the same dedicated server and I can't.   L2jacis 409 Linux Server. The first gameserver has the following configuration: # ================================================================ # Gameserver setting # ================================================================ # This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave * Hostname = 190.25.103.103 # Bind ip of the gameserver, use * to bind on all available IPs. GameserverHostname = * GameserverPort = 7777 # The Loginserver host and port. LoginHost = 127.0.0.1 LoginPort = 9014 # This is the server id that the gameserver will request. RequestServerID = 1 # If set to true, the login will give an other id to the server (if the requested id is already reserved). AcceptAlternateID = True UseBlowfishCipher = True # ================================================================ # Database informations # ================================================================ URL = jdbc:mariadb://localhost/server1 Login = server1 Password = server1 I configured the second gameserver like this:   # ================================================================ # Gameserver setting # ================================================================ # This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave * Hostname = 0.0.0.0 # Bind ip of the gameserver, use * to bind on all available IPs. GameserverHostname = * GameserverPort = 7788 # The Loginserver host and port. LoginHost = 127.0.0.1 LoginPort = 9014 # This is the server id that the gameserver will request. RequestServerID = 2 # If set to true, the login will give an other id to the server (if the requested id is already reserved). AcceptAlternateID = True UseBlowfishCipher = True # ================================================================ # Database informations # ================================================================ URL = jdbc:mariadb://localhost/server2 Login = server2 Password = server2 apart from having tested 0.0.0.0 on the second gameserver I also tried 127.0.0.1 In both cases I see the two servers in the login when I log in, but I try to enter the one with the lowest ping and it kicks me out. The other server always appears with ping 9999 and I try to enter but it doesn't do anything and it freezes the login so I have to log in again. The hexids are in their respective folders. For server 1, it has its hexid inside the gameserver config folder, and I checked that the hexid id is the same id, for example id 1 in the gameserver is also id1 for server 1, and hexid 2 has its hexid 2 for server 2. The server ports are open and listening when I turn on both gameservers. I really don't know what could be wrong. If you could give me some help I would appreciate it. Excuse my English.
    • We have both old channels from 2006-2009 with the 3rd verification function enabled, and new ones.   For availability, please contact us below: Link - Telegram Link - Facebook WhatsApp - Click here to go to WhatsApp chat
    • You can contact me on skype: niedziolek50
  • Topics

×
×
  • Create New...