diff --git a/dist/game/data/scripts/ai/npc/Teleports/OracleTeleport/OracleTeleport.java b/dist/game/data/scripts/ai/npc/Teleports/OracleTeleport/OracleTeleport.java index c6fcf9b9396b3e41905ea348178f4dcb8d5a6d0a..a63a82ccc02d975792b340e6ba60f524e64ed59b 100644 --- a/dist/game/data/scripts/ai/npc/Teleports/OracleTeleport/OracleTeleport.java +++ b/dist/game/data/scripts/ai/npc/Teleports/OracleTeleport/OracleTeleport.java @@ -18,8 +18,6 @@ */ package ai.npc.Teleports.OracleTeleport; -import ai.npc.AbstractNpcAI; - import com.l2jserver.gameserver.enums.QuestSound; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -30,6 +28,8 @@ import com.l2jserver.gameserver.model.quest.State; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.util.Util; +import ai.npc.AbstractNpcAI; + /** * Oracle teleport AI. * @author Charus @@ -322,7 +322,7 @@ public final class OracleTeleport extends AbstractNpcAI htmltext = "1.htm"; st.exitQuest(true); } - else if (player.getAllActiveQuests().length > 23) + else if (player.getAllActiveQuests().size() > 23) { htmltext = "1a.htm"; st.exitQuest(true); @@ -345,7 +345,7 @@ public final class OracleTeleport extends AbstractNpcAI htmltext = "ziggurat_lowlevel.htm"; st.exitQuest(true); } - else if (player.getAllActiveQuests().length > 40) + else if (player.getAllActiveQuests().size() > 40) { player.sendPacket(SystemMessageId.TOO_MANY_QUESTS); st.exitQuest(true); diff --git a/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java b/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java index 8b2a3991f5dbf288825db07fee211f4b7c442dac..8fb376f603f1ea3be51fc75e6412915188eee7e5 100644 --- a/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java +++ b/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java @@ -156,7 +156,8 @@ public class AdminShowQuests implements IAdminCommandHandler private static void showFirstQuestMenu(L2PcInstance target, L2PcInstance actor) { - StringBuilder replyMSG = new StringBuilder("<html><body><table width=270><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center>Player: " + target.getName() + "</center></td><td width=45><button value=\"Back\" action=\"bypass -h admin_admin6\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>"); + StringBuilder replyMSG = new StringBuilder("<html><body><table width=270><tr><td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td width=180><center>Player: " + target.getName() + + "</center></td><td width=45><button value=\"Back\" action=\"bypass -h admin_admin6\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>"); final NpcHtmlMessage adminReply = new NpcHtmlMessage(); int ID = target.getObjectId(); @@ -215,12 +216,15 @@ public class AdminShowQuests implements IAdminCommandHandler { continue; } - replyMSG.append("<tr><td>" + var_name + "</td><td>" + rs.getString(2) + "</td><td><edit var=\"var" + var_name + "\" width=80 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " " + var_name + " $var" + var_name + "\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><button value=\"Del\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " " + var_name + " delete\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); + replyMSG.append("<tr><td>" + var_name + "</td><td>" + rs.getString(2) + "</td><td><edit var=\"var" + var_name + "\" width=80 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " " + var_name + " $var" + + var_name + "\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><button value=\"Del\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " " + var_name + + " delete\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); } replyMSG.append("</table><br><br><table width=250><tr><td>Repeatable quest:</td><td>Unrepeatable quest:</td></tr>"); replyMSG.append("<tr><td><button value=\"Quest Complete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " state COMPLETED 1\" width=120 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"); replyMSG.append("<td><button value=\"Quest Complete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " state COMPLETED 0\" width=120 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); - replyMSG.append("</table><br><br><font color=\"ff0000\">Delete Quest from DB:</font><br><button value=\"Quest Delete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + " state DELETE\" width=120 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); + replyMSG.append("</table><br><br><font color=\"ff0000\">Delete Quest from DB:</font><br><button value=\"Quest Delete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + val[1] + + " state DELETE\" width=120 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); replyMSG.append("</center></body></html>"); break; } @@ -284,12 +288,15 @@ public class AdminShowQuests implements IAdminCommandHandler { continue; } - replyMSG.append("<tr><td>" + var_name + "</td><td>" + rs.getString(2) + "</td><td><edit var=\"var" + var_name + "\" width=80 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " " + var_name + " $var" + var_name + "\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><button value=\"Del\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " " + var_name + " delete\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); + replyMSG.append("<tr><td>" + var_name + "</td><td>" + rs.getString(2) + "</td><td><edit var=\"var" + var_name + "\" width=80 height=15></td><td><button value=\"Set\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " " + var_name + " $var" + + var_name + "\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><button value=\"Del\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " " + var_name + + " delete\" width=30 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); } replyMSG.append("</table><br><br><table width=250><tr><td>Repeatable quest:</td><td>Unrepeatable quest:</td></tr>"); replyMSG.append("<tr><td><button value=\"Quest Complete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " state COMPLETED 1\" width=100 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"); replyMSG.append("<td><button value=\"Quest Complete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " state COMPLETED 0\" width=100 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"); - replyMSG.append("</table><br><br><font color=\"ff0000\">Delete Quest from DB:</font><br><button value=\"Quest Delete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + " state DELETE\" width=100 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); + replyMSG.append("</table><br><br><font color=\"ff0000\">Delete Quest from DB:</font><br><button value=\"Quest Delete\" action=\"bypass -h admin_setcharquest " + target.getName() + " " + qname + + " state DELETE\" width=100 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); replyMSG.append("</center></body></html>"); } else @@ -324,13 +331,13 @@ public class AdminShowQuests implements IAdminCommandHandler QuestState qs = target.getQuestState(val[0]); String[] outval = new String[3]; - if (val[1].equals("state")) + if ("state".equals(val[1])) { switch (val[2]) { case "COMPLETED": { - qs.exitQuest((val[3].equals("1")) ? true : false); + qs.exitQuest("1".equals(val[3])); break; } case "DELETE": diff --git a/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java b/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java index d0159d3a6ca73808c20f2814b88d9e6b6b1e6089..4b90e9cbd7f94cf4cc84c0c39343260e63a2686e 100644 --- a/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java +++ b/dist/game/data/scripts/handlers/bypasshandlers/QuestLink.java @@ -43,6 +43,7 @@ import com.l2jserver.util.StringUtil; public class QuestLink implements IBypassHandler { + private static final int MAX_QUEST_COUNT = 40; private static final int TO_LEAD_AND_BE_LED = 118; private static final int THE_LEADER_AND_THE_FOLLOWER = 123; private static final String[] COMMANDS = @@ -199,7 +200,7 @@ public class QuestLink implements IBypassHandler if ((q.getId() >= 1) && (q.getId() < 20000)) { // Too many ongoing quests. - if (player.getAllActiveQuests().length > 40) + if (player.getAllActiveQuests().size() >= MAX_QUEST_COUNT) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/fullquest.html"); diff --git a/dist/game/data/xsd/instance.xsd b/dist/game/data/xsd/instance.xsd index e66672854e3a3c56ff095507f950527814a04df5..2b2b1b3eca072c6355adef61abd43126a72b163f 100644 --- a/dist/game/data/xsd/instance.xsd +++ b/dist/game/data/xsd/instance.xsd @@ -165,6 +165,8 @@ <xs:attribute name="x" type="xs:integer" use="required" /> <xs:attribute name="y" type="xs:integer" use="required" /> <xs:attribute name="z" type="xs:integer" use="required" /> + <xs:attribute name="areaName" type="xs:normalizedString" /> + <xs:attribute name="globalMapId" type="xs:positiveInteger" /> </xs:complexType> </xs:element> </xs:sequence>