Jump to content
  • 0

Request little help


Question

Posted

What is wrong with this code

/*
* 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 teleports.GrandBossTeleporters;

import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.L2CommandChannel;
import com.l2jserver.gameserver.model.L2Party;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.zone.type.L2BossZone;
import com.l2jserver.gameserver.util.Util;

/**
* @author Plim
* Original python script by Emperorc
*/
public class GrandBossTeleporters extends Quest
{
private static final int[] NPCs = 
{ 
	13001, //Heart of Warding : Teleport into Lair of Antharas
	36600, //Heart of Volcano : Teleport into Lair of Valakas

	31859, //Teleportation Cubic : Teleport out of Lair of Antharas
	31384, //Gatekeeper of Fire Dragon : Opening some doors
	31540, //Watcher of Valakas Klein : Teleport into Hall of Flames
	31686, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31687, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31759 //Teleportation Cubic : Teleport out of Lair of Valakas
};
  
    private Quest antharasAI()
    {
        return QuestManager.getInstance().getQuest("antharas");
    }
    private Quest valakasAI()
    {
        return QuestManager.getInstance().getQuest("valakas");
    }

private static int playerCount = 0;

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
		st = newQuestState(player);

		player.teleToLocation(183813, -115157, -3303);
		st.set("allowEnter", "1");

	return htmltext;
}

@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
		return null;

	switch (npc.getNpcId())
	{
		case 13001:
			if (antharasAI() != null)
			{
				if (player.getParty() == null)
				{
					htmltext = "test.htm";
				}

				if (player.getParty().getCommandChannel() == null)
				{
					htmltext = "test.htm";
				}

				if (player.getParty().getCommandChannel().getLeader() != player)
				{
					htmltext = "test.htm";
				}

				if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
				{
					htmltext = "test.htm";
				}

				for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
				{
					if (!Util.checkIfInRange(1000, player, channelMember, true))
					{
						htmltext = "test.htm";
					}
				}
				int status = GrandBossManager.getInstance().getBossStatus(29019);
				int statusW = GrandBossManager.getInstance().getBossStatus(29066);
				int statusN = GrandBossManager.getInstance().getBossStatus(29067);
				int statusS = GrandBossManager.getInstance().getBossStatus(29068);

				if (status == 2 || statusW == 2 || statusN == 2 || statusS == 2)
					htmltext = "13001-02.htm";

				else if (status == 3 || statusW == 3 || statusN == 3 || statusS == 3)
					htmltext = "13001-01.htm";

				else if (status == 0 || status == 1) //If entrance to see Antharas is unlocked (he is Dormant or Waiting)
				{
						// st.takeItems(3865, 1); // No longer consumed in h5
						L2BossZone zone = GrandBossManager.getInstance().getZone(179700, 113800, -7709);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(179700 + getRandom(700), 113800 + getRandom(2100), -7709);
						}



						if (status == 0)
						{
							L2GrandBossInstance antharas = GrandBossManager.getInstance().getBoss(29019);
							antharasAI().notifyEvent("waiting", antharas, player);
						}
				}
			}
			break;

		case 31859:
			player.teleToLocation(79800 + getRandom(600), 151200 + getRandom(1100), -3534);
			break;

		case 31385:
			if (valakasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29028);

				if (status == 0 || status == 1)
				{
					if (playerCount >= 200)
						htmltext = "31385-03.htm";

						st.unset("allowEnter");
						L2BossZone zone = GrandBossManager.getInstance().getZone(212852, -114842, -1632);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						player.teleToLocation(204328 + getRandom(600), -111874 + getRandom(600), 70);

						playerCount++;

						if (status == 0)
						{
							L2GrandBossInstance valakas = GrandBossManager.getInstance().getBoss(29028);
							valakasAI().startQuestTimer("1001", Config.Valakas_Wait_Time, valakas, null);
							GrandBossManager.getInstance().setBossStatus(29028, 1);
						}
				}
				else if (status == 2)
					htmltext = "31385-02.htm";
				else
					htmltext = "31385-01.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 (playerCount < 50)
				htmltext = "31540-01.htm";

			else if (playerCount < 100)
				htmltext = "31540-02.htm";

			else if (playerCount < 150)
				htmltext = "31540-03.htm";

			else if (playerCount < 200)
				htmltext = "31540-04.htm";

			else
				htmltext = "31540-05.htm";
			break;

		case 31759:
			player.teleToLocation(150037 + getRandom(500), -57720 + getRandom(500), -2976);
			break;
	}

	return htmltext;
}

public GrandBossTeleporters(int questId, String name, String descr)
{
	super(questId, name, descr);

	for (int npcId : NPCs)
	{
		addStartNpc(npcId);
		addTalkId(npcId);
	}
}

public static void main(String[] args)
{
	new GrandBossTeleporters(-1, GrandBossTeleporters.class.getSimpleName(), "teleports");
}
}

 

i get this error:

Jun 21, 2012 1:32:15 AM com.l2jserver.gameserver.model.quest.Quest showError
WARNING: D:\h5 svr\game\data\scripts\teleports\GrandBossTeleporters\GrandBossTeleporters.java
java.lang.NullPointerException
at teleports.GrandBossTeleporters.GrandBossTeleporters.onTalk(GrandBossTeleporters.java:95)
at com.l2jserver.gameserver.model.quest.Quest.notifyTalk(Quest.java:636)
at handlers.bypasshandlers.QuestLink.showQuestWindow(QuestLink.java:197)
at handlers.bypasshandlers.QuestLink.useBypass(QuestLink.java:65)
at com.l2jserver.gameserver.model.actor.L2Npc.onBypassFeedback(L2Npc.java:945)
at com.l2jserver.gameserver.network.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:145)
at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:62)
at com.l2jserver.gameserver.network.L2GameClient.run(L2GameClient.java:1097)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

 

line 95: if (player.getParty().getCommandChannel() == null)

 

:o

9 answers to this question

Recommended Posts

  • 0
Posted

mhm how can i make it to be only in one npc ?

 

/*
* 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 teleports.GrandBossTeleporters;

import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.zone.type.L2BossZone;

/**
* @author Plim
* Original python script by Emperorc
*/
public class GrandBossTeleporters extends Quest
{
private static final int[] NPCs = 
{
	31384, //Gatekeeper of Fire Dragon : Opening some doors
	31540, //Watcher of Valakas Klein : Teleport into Hall of Flames
	31686, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31687, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31759 //Teleportation Cubic : Teleport out of Lair of Valakas
};
  
    private Quest antharasAI()
    {
        return QuestManager.getInstance().getQuest("antharas");
    }
    private Quest valakasAI()
    {
        return QuestManager.getInstance().getQuest("valakas");
    }

private static int playerCount = 0;

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
		st = newQuestState(player);

		player.teleToLocation(183813, -115157, -3303);
		st.set("allowEnter", "1");

	return htmltext;

}

public String onTalk(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
		return null;

	if ( event.equalsIgnoreCase("antharas") && npc.getNpcId() == 36600)
	{
			if (antharasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29019);
				int statusW = GrandBossManager.getInstance().getBossStatus(29066);
				int statusN = GrandBossManager.getInstance().getBossStatus(29067);
				int statusS = GrandBossManager.getInstance().getBossStatus(29068);

				if (player.getParty() == null)
					htmltext = "36600-03.htm";

				else if (player.getParty().getCommandChannel() == null)
					htmltext = "36600-04.htm";

				else if (player.getParty().getCommandChannel().getLeader() != player)
					htmltext = "36600-05.htm";

				else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
					htmltext = "36600-06.htm";

				else if (status == 2 || statusW == 2 || statusN == 2 || statusS == 2)
					htmltext = "36600-02.htm";

				else if (status == 3 || statusW == 3 || statusN == 3 || statusS == 3)
					htmltext = "36600-01.htm";

				else if (status == 0 || status == 1) //If entrance to see Antharas is unlocked (he is Dormant or Waiting)
				{
						L2BossZone zone = GrandBossManager.getInstance().getZone(179700, 113800, -7709);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(179700 + getRandom(700), 113800 + getRandom(2100), -7709);
						}



						if (status == 0)
						{
							L2GrandBossInstance antharas = GrandBossManager.getInstance().getBoss(29019);
							antharasAI().notifyEvent("waiting", antharas, player);
						}
				}
			}
		}
		else if ( event.equalsIgnoreCase("valakas") && npc.getNpcId() == 36600)
		{
			if (valakasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29028);

				if (status == 0 || status == 1)
				{
					if (playerCount >= 200)
						htmltext = "36601-03.htm";

						st.unset("allowEnter");
						L2BossZone zone = GrandBossManager.getInstance().getZone(212852, -114842, -1632);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						if (player.getParty() == null)
							htmltext = "36601-04.htm";

						else if (player.getParty().getCommandChannel() == null)
							htmltext = "36601-05.htm";

						else if (player.getParty().getCommandChannel().getLeader() != player)
							htmltext = "36601-06.htm";

						else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
							htmltext = "36601-07.htm";

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(204328 + getRandom(600), -111874 + getRandom(600), 70);
						}

						playerCount++;

						if (status == 0)
						{
							L2GrandBossInstance valakas = GrandBossManager.getInstance().getBoss(29028);
							valakasAI().startQuestTimer("1001", Config.Valakas_Wait_Time, valakas, null);
							GrandBossManager.getInstance().setBossStatus(29028, 1);
						}
				}
				else if (status == 2)
					htmltext = "36601-02.htm";
				else
					htmltext = "36601-01.htm";
			}

			else
				htmltext = "31385-01.htm";
		}

	switch (npc.getNpcId())
	{
		case 31859:
			player.teleToLocation(79800 + getRandom(600), 151200 + getRandom(1100), -3534);
			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 (playerCount < 50)
				htmltext = "31540-01.htm";

			else if (playerCount < 100)
				htmltext = "31540-02.htm";

			else if (playerCount < 150)
				htmltext = "31540-03.htm";

			else if (playerCount < 200)
				htmltext = "31540-04.htm";

			else
				htmltext = "31540-05.htm";
			break;

		case 31759:
			player.teleToLocation(150037 + getRandom(500), -57720 + getRandom(500), -2976);
			break;
	}

	return htmltext;
}

public GrandBossTeleporters(int questId, String name, String descr)
{
	super(questId, name, descr);

	for (int npcId : NPCs)
	{
		addStartNpc(npcId);
		addTalkId(npcId);
	}
}

public static void main(String[] args)
{
	new GrandBossTeleporters(-1, GrandBossTeleporters.class.getSimpleName(), "teleports");
}
}

 

html

<a action="bypass -h npc_%objectId%_Quest GrandBossTeleporters antharas">Antharas.</a><br>
<a action="bypass -h npc_%objectId%_Quest GrandBossTeleporters valakas">Valakas.</a>

 

when i press Antharas / Valakas i get " You are either not on a quest, . . . . . . . . . . "

  • 0
Posted

try something like that

 

/*
* 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 teleports.GrandBossTeleporters;

import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.zone.type.L2BossZone;



public class GrandBossTeleporters extends Quest
{
private static final int[] NPCs = 
{
	31384, //Gatekeeper of Fire Dragon : Opening some doors
	31540, //Watcher of Valakas Klein : Teleport into Hall of Flames
	31686, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31687, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31759 //Teleportation Cubic : Teleport out of Lair of Valakas
};
   	
private Quest antharasAI()
    	{
      		return QuestManager.getInstance().getQuest("antharas");
    	}
   	
private Quest valakasAI()
    	{
    	    return QuestManager.getInstance().getQuest("valakas");
    	}

private static int playerCount = 0;

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
	{
		st = newQuestState(player);
	}	

	if (event.equalsIgnoreCase("antharas") && npc.getNpcId() == 36600)
	{
			if (antharasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29019);
				int statusW = GrandBossManager.getInstance().getBossStatus(29066);
				int statusN = GrandBossManager.getInstance().getBossStatus(29067);
				int statusS = GrandBossManager.getInstance().getBossStatus(29068);

				if (player.getParty() == null)
					htmltext = "36600-03.htm";

				else if (player.getParty().getCommandChannel() == null)
					htmltext = "36600-04.htm";

				else if (player.getParty().getCommandChannel().getLeader() != player)
					htmltext = "36600-05.htm";

				else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
					htmltext = "36600-06.htm";

				else if (status == 2 || statusW == 2 || statusN == 2 || statusS == 2)
					htmltext = "36600-02.htm";

				else if (status == 3 || statusW == 3 || statusN == 3 || statusS == 3)
					htmltext = "36600-01.htm";

				else if (status == 0 || status == 1) //If entrance to see Antharas is unlocked (he is Dormant or Waiting)
				{
						L2BossZone zone = GrandBossManager.getInstance().getZone(179700, 113800, -7709);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(179700 + getRandom(700), 113800 + getRandom(2100), -7709);
						}



						if (status == 0)
						{
							L2GrandBossInstance antharas = GrandBossManager.getInstance().getBoss(29019);
							antharasAI().notifyEvent("waiting", antharas, player);
						}
				}
			}
		}

		else if (event.equalsIgnoreCase("valakas") && npc.getNpcId() == 36600)
		{
			if (valakasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29028);

				if (status == 0 || status == 1)
				{
					if (playerCount >= 200)
						htmltext = "36601-03.htm";

						st.unset("allowEnter");
						L2BossZone zone = GrandBossManager.getInstance().getZone(212852, -114842, -1632);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						if (player.getParty() == null)
							htmltext = "36601-04.htm";

						else if (player.getParty().getCommandChannel() == null)
							htmltext = "36601-05.htm";

						else if (player.getParty().getCommandChannel().getLeader() != player)
							htmltext = "36601-06.htm";

						else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
							htmltext = "36601-07.htm";

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(204328 + getRandom(600), -111874 + getRandom(600), 70);
						}

						playerCount++;

						if (status == 0)
						{
							L2GrandBossInstance valakas = GrandBossManager.getInstance().getBoss(29028);
							valakasAI().startQuestTimer("1001", Config.Valakas_Wait_Time, valakas, null);
							GrandBossManager.getInstance().setBossStatus(29028, 1);
						}
				}
				else if (status == 2)
					htmltext = "36601-02.htm";
				else
					htmltext = "36601-01.htm";
			}

			else
				htmltext = "31385-01.htm";
		}

		else
		{
			if (st.hasQuestItems(7267))
			{
				player.teleToLocation(183813, -115157, -3303);
				st.set("allowEnter", "1");
			}
		}

	return htmltext;

}

public String onTalk(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
	{
		return null;
	}

	switch (npc.getNpcId())
	{
		case 31859:
			player.teleToLocation(79800 + getRandom(600), 151200 + getRandom(1100), -3534);
			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 (playerCount < 50)
				htmltext = "31540-01.htm";

			else if (playerCount < 100)
				htmltext = "31540-02.htm";

			else if (playerCount < 150)
				htmltext = "31540-03.htm";

			else if (playerCount < 200)
				htmltext = "31540-04.htm";

			else
				htmltext = "31540-05.htm";
			break;

		case 31759:
			player.teleToLocation(150037 + getRandom(500), -57720 + getRandom(500), -2976);
			break;
	}

	return htmltext;
}

public GrandBossTeleporters(int questId, String name, String descr)
{
	super(questId, name, descr);

	for (int npcId : NPCs)
	{
		addStartNpc(npcId);
		addTalkId(npcId);
	}
}

public static void main(String[] args)
{
	new GrandBossTeleporters(-1, GrandBossTeleporters.class.getSimpleName(), "teleports");
}
} 

  • 0
Posted

try something like that

 

/*
* 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 teleports.GrandBossTeleporters;

import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.DoorTable;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.QuestManager;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.zone.type.L2BossZone;



public class GrandBossTeleporters extends Quest
{
private static final int[] NPCs = 
{
	31384, //Gatekeeper of Fire Dragon : Opening some doors
	31540, //Watcher of Valakas Klein : Teleport into Hall of Flames
	31686, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31687, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31759 //Teleportation Cubic : Teleport out of Lair of Valakas
};
   	
private Quest antharasAI()
    	{
      		return QuestManager.getInstance().getQuest("antharas");
    	}
   	
private Quest valakasAI()
    	{
    	    return QuestManager.getInstance().getQuest("valakas");
    	}

private static int playerCount = 0;

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
	{
		st = newQuestState(player);
	}	

	if (event.equalsIgnoreCase("antharas") && npc.getNpcId() == 36600)
	{
			if (antharasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29019);
				int statusW = GrandBossManager.getInstance().getBossStatus(29066);
				int statusN = GrandBossManager.getInstance().getBossStatus(29067);
				int statusS = GrandBossManager.getInstance().getBossStatus(29068);

				if (player.getParty() == null)
					htmltext = "36600-03.htm";

				else if (player.getParty().getCommandChannel() == null)
					htmltext = "36600-04.htm";

				else if (player.getParty().getCommandChannel().getLeader() != player)
					htmltext = "36600-05.htm";

				else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
					htmltext = "36600-06.htm";

				else if (status == 2 || statusW == 2 || statusN == 2 || statusS == 2)
					htmltext = "36600-02.htm";

				else if (status == 3 || statusW == 3 || statusN == 3 || statusS == 3)
					htmltext = "36600-01.htm";

				else if (status == 0 || status == 1) //If entrance to see Antharas is unlocked (he is Dormant or Waiting)
				{
						L2BossZone zone = GrandBossManager.getInstance().getZone(179700, 113800, -7709);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(179700 + getRandom(700), 113800 + getRandom(2100), -7709);
						}



						if (status == 0)
						{
							L2GrandBossInstance antharas = GrandBossManager.getInstance().getBoss(29019);
							antharasAI().notifyEvent("waiting", antharas, player);
						}
				}
			}
		}

		else if (event.equalsIgnoreCase("valakas") && npc.getNpcId() == 36600)
		{
			if (valakasAI() != null)
			{
				int status = GrandBossManager.getInstance().getBossStatus(29028);

				if (status == 0 || status == 1)
				{
					if (playerCount >= 200)
						htmltext = "36601-03.htm";

						st.unset("allowEnter");
						L2BossZone zone = GrandBossManager.getInstance().getZone(212852, -114842, -1632);

						if (zone != null)
							zone.allowPlayerEntry(player, 30);

						if (player.getParty() == null)
							htmltext = "36601-04.htm";

						else if (player.getParty().getCommandChannel() == null)
							htmltext = "36601-05.htm";

						else if (player.getParty().getCommandChannel().getLeader() != player)
							htmltext = "36601-06.htm";

						else if (player.getParty().getCommandChannel().getMemberCount() < 2 || player.getParty().getCommandChannel().getMemberCount() > 65)
							htmltext = "36601-07.htm";

						for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers())
						{
							channelMember.teleToLocation(204328 + getRandom(600), -111874 + getRandom(600), 70);
						}

						playerCount++;

						if (status == 0)
						{
							L2GrandBossInstance valakas = GrandBossManager.getInstance().getBoss(29028);
							valakasAI().startQuestTimer("1001", Config.Valakas_Wait_Time, valakas, null);
							GrandBossManager.getInstance().setBossStatus(29028, 1);
						}
				}
				else if (status == 2)
					htmltext = "36601-02.htm";
				else
					htmltext = "36601-01.htm";
			}

			else
				htmltext = "31385-01.htm";
		}

		else
		{
			if (st.hasQuestItems(7267))
			{
				player.teleToLocation(183813, -115157, -3303);
				st.set("allowEnter", "1");
			}
		}

	return htmltext;

}

public String onTalk(String event, L2Npc npc, L2PcInstance player)
{
	String htmltext = "";
	QuestState st = player.getQuestState(getName());

	if (st == null)
	{
		return null;
	}

	switch (npc.getNpcId())
	{
		case 31859:
			player.teleToLocation(79800 + getRandom(600), 151200 + getRandom(1100), -3534);
			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 (playerCount < 50)
				htmltext = "31540-01.htm";

			else if (playerCount < 100)
				htmltext = "31540-02.htm";

			else if (playerCount < 150)
				htmltext = "31540-03.htm";

			else if (playerCount < 200)
				htmltext = "31540-04.htm";

			else
				htmltext = "31540-05.htm";
			break;

		case 31759:
			player.teleToLocation(150037 + getRandom(500), -57720 + getRandom(500), -2976);
			break;
	}

	return htmltext;
}

public GrandBossTeleporters(int questId, String name, String descr)
{
	super(questId, name, descr);

	for (int npcId : NPCs)
	{
		addStartNpc(npcId);
		addTalkId(npcId);
	}
}

public static void main(String[] args)
{
	new GrandBossTeleporters(-1, GrandBossTeleporters.class.getSimpleName(), "teleports");
}
} 

 

 

same :'(

  • 0
Posted

I forgot it, try

 

private static final int[] NPCs = 
{
	31384, //Gatekeeper of Fire Dragon : Opening some doors
	31540, //Watcher of Valakas Klein : Teleport into Hall of Flames
	31686, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31687, //Gatekeeper of Fire Dragon : Opens doors to Heart of Volcano
	31759, //Teleportation Cubic : Teleport out of Lair of Valakas
                36600 // Custom Npc
};
   	

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Thanks for the collection and the free advertising! These files have been in the public domain for a long time — you just saved people the trouble of searching. A true fan. 😄 Just to clarify for everyone reading: these files have nothing to do with this topic. They are 10+ year old builds, and since various third-party modifications exist in the wild, we cannot guarantee what may have been added or changed in those versions. Use them at your own risk. We have absolutely no judgment toward those who are on a tight budget and can't afford our current builds — these old shared files might genuinely help you get started. Just use them carefully and at your own risk. And please don't judge developers for the mistakes they made early in their careers — every developer goes through stages of growth, and what you see in those old builds is simply a snapshot of where we were back then. We've come a long way since. If you're interested in our older builds, we have a dedicated thread for that with significantly reduced prices — very accessible for any budget. We have also recently resumed full technical support for legacy builds, handled by a separate team that doesn't interfere with our private development direction for larger projects. You can find our legacy builds here: Our OLd L2-scripts Packs Actual revisions Our current private sources are a completely different story — which is exactly what this thread is about. Too bad all your time goes into collecting other people's old code instead of developing your own project. Though judging by "L2MID is currently offline, we will come back soon in 2026" — you clearly have plenty of time on your hands. 😉
    • SHARED alreaxy! Are these files yours? https://fex.net/ru/s/kdop2z4
    • You asked for examples of coping projects, we provided them, you asked for feedback from our clients, some of them wrote their reviews on the same mmodev, what else can I prove to you? you just asked your friends from mmodev to write nasty things, they have never been our customers and never will be, because they are used to downloading only free products and hacking it. You just don't respect the work of others, this is the conclusion that can be drawn from your inflammatory topic on mmodev, where there are many people who once could not buy our assemblies or whom we kicked out of work or for some other reason. But you are completely wrong and you are behaving very lowly. But let it be on your conscience. Good luck, keep busy with your project, and don't interfere with others.
    • I will never use L2J as the basis for my project but what i saw in MMODEV was enough for me. GL    
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..