Matim Posted August 25, 2011 Posted August 25, 2011 Special Gatekeeper Description: Normal Gatekeeper, but with special ability, to show how many players are inside those locations. It may be easily edited, for default it has only 3 locations, without subcategories etc, but if u wish may be added. Its quest based, not an instance. Also more statistics like player killers inside etc may be added (...) Sample screenshot: package custom.SpecialGatekeeper; import com.l2jarchid.Config; import com.l2jarchid.gameserver.instancemanager.ZoneManager; import com.l2jarchid.gameserver.model.actor.L2Character; import com.l2jarchid.gameserver.model.actor.L2Npc; import com.l2jarchid.gameserver.model.actor.L2Player; import com.l2jarchid.gameserver.model.quest.Quest; import com.l2jarchid.gameserver.model.quest.QuestState; import com.l2jarchid.gameserver.model.zone.L2ZoneType; /** * @author Matim * <br>Special Gatekeeper NPC. * <br>Show current players count from zone. * <br>This code may be easily edited. * <br>By default it has few arenas teleports. */ public class SpecialGatekeeper extends Quest { protected static L2Player player; private final static String qn = "SpecialGatekeeper"; private final static int NPC = Config.SPECIAL_GK_NPC_ID; public SpecialGatekeeper(int questId, String name, String descr) { super(questId, name, descr); addFirstTalkId(NPC); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2Npc npc, L2Player player) { String htmltext = ""; if(event.equalsIgnoreCase("1")) player.teleToLocation(73890, 142656, -3778); else if (event.equalsIgnoreCase("2")) player.teleToLocation(-86979, 142402, -3643); else if (event.equalsIgnoreCase("3")) player.teleToLocation(147451, 46728, -3410); else if (event.equalsIgnoreCase("4")) player.teleToLocation(12312, 182752, -3558); else htmltext = "Error, check whole GK code!"; return htmltext; } @Override public String onFirstTalk(L2Npc npc, L2Player player) { String htmltext = ""; QuestState qs = player.getQuestState(qn); if (qs == null) qs = newQuestState(player); htmltext = "<html><title>Special Gatekeeper</title><head><body><center>" + "<br><img src=l2ui.bbs_lineage2 height=16 width=80>" + "<font color=AAAAAA>Special Gatekeeper</font><br>" + "<img src=L2UI_CH3.herotower_deco width=256 height=32>" + "Players Inside: <font color=\"LEVEL\">" + getPlayerInsideCount(11600) + "</font>" + "<button value=\"Aden\" action=\"bypass -h Quest SpecialGatekeeper 1\" back=\"L2UI_ch3.bigbutton_over\" fore=\"L2UI_ch3.bigbutton\" width=95 height=21><br>" + "Players Inside: <font color=\"LEVEL\">" + getPlayerInsideCount(10500) + "</font>" + "<button value=\"Giran\" action=\"bypass -h Quest SpecialGatekeeper 2\" back=\"L2UI_ch3.bigbutton_over\" fore=\"L2UI_ch3.bigbutton\" width=95 height=21><br>" + "Players Inside: <font color=\"LEVEL\">" + getPlayerInsideCount(11012) + "</font>" + "<button value=\"MOS\" action=\"bypass -h Quest SpecialGatekeeper 3\" back=\"L2UI_ch3.bigbutton_over\" fore=\"L2UI_ch3.bigbutton\" width=95 height=21><br>" + "Players Inside: <font color=\"LEVEL\">" + getPlayerInsideCount(11013) + "</font>" + "<button value=\"VARKA\" action=\"bypass -h Quest SpecialGatekeeper 4\" back=\"L2UI_ch3.bigbutton_over\" fore=\"L2UI_ch3.bigbutton\" width=95 height=21><br>" + "Players Inside: <font color=\"PI\">" + getPlayerInsideCount(11013) + "</font>" + "<button value=\"VARKA\" action=\"bypass -h Quest SpecialGatekeeper 4\" back=\"L2UI_ch3.bigbutton_over\" fore=\"L2UI_ch3.bigbutton\" width=95 height=21><br>" + "<font color=\"cc9900\"><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></font><br1></center></body></head></html>"; return htmltext; } /** * @param zoneId * @return player count from given zone ID */ public static int getPlayerInsideCount(int zoneId) { int i = 0; for (L2ZoneType zone : ZoneManager.getInstance().getAllZones()) if (zone.getId() == zoneId) { for (L2Character character : zone.getCharactersInside().values()) if (character instanceof L2Player) i++; return i; } return -1; } public static void main(String[] args) { new SpecialGatekeeper(-1, qn, "SpecialGatekeeper"); } } Quote
redmoon Posted August 25, 2011 Posted August 25, 2011 :O nice gk, can be very useful in pvp servers Quote
Matim Posted August 25, 2011 Author Posted August 25, 2011 sry , SpecialGatekeeper.java ? no need Scripts? custom/SpecialGatekeeper.java ? Simply look at package. Quote
`NeverMore Posted August 25, 2011 Posted August 25, 2011 haha Nice1 man ..! Good Work , Never seen again sth like that ..! Nice idea .... Quote
Magaiveris Posted August 26, 2011 Posted August 26, 2011 wtf ? [Hidden post: You need 200 posts to see it. You currently have 130.] RapBoy, Comment: nc work...nc share :) Posts: 181 ? Quote
redmoon Posted August 26, 2011 Posted August 26, 2011 wtf ? [Hidden post: You need 200 posts to see it. You currently have 130.] RapBoy, Comment: nc work...nc share :) Posts: 181 ? when the post was created, wasn't hidden at 200 post Quote
Justice Posted August 26, 2011 Posted August 26, 2011 when the post was created, wasn't hidden at 200 post true, I do it after his reply. Anyway. Matim awesome work. ;) Quote
FFs Posted August 28, 2011 Posted August 28, 2011 Great gatekeeper for a pvp server who have fram areas! :D I'll use it! thanx a lot! Quote
Discovery Posted August 30, 2011 Posted August 30, 2011 Matim, i haven't got 200 posts. Can u give me link to this share? I'll be very happy. I saw this gk 1 year ago and it was very nice. Quote
FFs Posted August 30, 2011 Posted August 30, 2011 Matim, i haven't got 200 posts. Can u give me link to this share? I'll be very happy. I saw this gk 1 year ago and it was very nice. 1 year ago and the post was created on: « on: August 25, 2011, 01:26:19 AM » Quote
Discovery Posted August 31, 2011 Posted August 31, 2011 I saw this GK on the Matim's server presentation, not here. Quote
Zake Posted September 4, 2011 Posted September 4, 2011 1 year ago and the post was created on: « on: August 25, 2011, 01:26:19 AM » he was dreaming for this Quote
Recommended Posts
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.