@Override public boolean useBypass(String command, L2PcInstance activeChar, L2Character target) { if (!target.isNpc()) { return false; } final L2Npc npc = (L2Npc) target; final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); { if (npc.getCastle().getOwnerId() > 0) { html.setFile(activeChar.getHtmlPrefix(), "data/html/territorystatus.htm"); L2Clan clan = ClanTable.getInstance().getClan(npc.getCastle().getOwnerId()); html.replace("%clanname%", clan.getName()); html.replace("%clanleadername%", clan.getLeaderName()); } else { html.setFile(activeChar.getHtmlPrefix(), "data/html/territorynoclan.htm"); } } html.replace("%castlename%", npc.getCastle().getName()); html.replace("%taxpercent%", "" + npc.getCastle().getTaxPercent()); html.replace("%objectId%", String.valueOf(npc.getObjectId())); { if (npc.getCastle().getResidenceId() > 6) { html.replace("%territory%", "The Kingdom of Elmore"); } else { html.replace("%territory%", "The Kingdom of Aden"); } } activeChar.sendPacket(html); return true; }
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED) @RegisterType(ListenerRegisterType.GLOBAL) public void OnPlayerLevelChanged(OnPlayerLevelChanged event) { final L2PcInstance player = event.getActiveChar(); final int oldLevel = event.getOldLevel(); final int newLevel = event.getNewLevel(); if (((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL)) && (player.getLevel() <= MAX_LEVEL) && !(player.getRace() == Race.ERTHEIA)) { final QuestState qs = getQuestState(player, false); if (qs == null) { final NpcHtmlMessage html = new NpcHtmlMessage(0, 0); html.setHtml( HtmCache.getInstance() .getHtm( player.getHtmlPrefix(), "scripts/quests/Q10390_KekropusLetter/" + "Announce_" + player.getRace().name() + ".html")); player.sendPacket(html); // todo: get proper announce html && handle it } return; } }
private void showFortSelectPage(L2PcInstance activeChar) { int i = 0; final NpcHtmlMessage adminReply = new NpcHtmlMessage(); adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/forts.htm"); final List<Fort> forts = FortManager.getInstance().getForts(); final StringBuilder cList = new StringBuilder(forts.size() * 100); for (Fort fort : forts) { if (fort != null) { // L2JTW uses fort.getCName() instead of fort.getName() StringUtil.append( cList, "<td fixwidth=90><a action=\"bypass -h admin_fortsiege ", String.valueOf(fort.getResidenceId()), "\">", fort.getName(), " id: ", String.valueOf(fort.getResidenceId()), "</a></td>"); i++; } // L2JTW: if (i > 0) if (i > 2) { cList.append("</tr><tr>"); i = 0; } } adminReply.replace("%forts%", cList.toString()); activeChar.sendPacket(adminReply); }
private void showSiegeTimePage(L2PcInstance activeChar) { final NpcHtmlMessage adminReply = new NpcHtmlMessage(); adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/territorywartime.htm"); adminReply.replace( "%time%", TerritoryWarManager.getInstance().getTWStart().getTime().toString()); activeChar.sendPacket(adminReply); }
private void showFortSiegePage(L2PcInstance activeChar, Fort fort) { final NpcHtmlMessage adminReply = new NpcHtmlMessage(); adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/fort.htm"); // L2JTW uses fort.getCName() instead of fort.getName() adminReply.replace("%fortName%", fort.getName()); adminReply.replace("%fortId%", String.valueOf(fort.getResidenceId())); activeChar.sendPacket(adminReply); }
@Override public boolean useBypass(String command, L2PcInstance activeChar, L2Character target) { String htmlPath = command.substring(4).trim(); if (htmlPath.isEmpty()) { _log.warning("Player " + activeChar.getName() + " sent empty link html!"); return false; } if (htmlPath.contains("..")) { _log.warning("Player " + activeChar.getName() + " sent invalid link html: " + htmlPath); return false; } String filename = "html/" + htmlPath; final NpcHtmlMessage html = new NpcHtmlMessage(target != null ? target.getObjectId() : 0); html.setFile(activeChar.getHtmlPrefix(), filename); html.replace("%objectId%", String.valueOf(target != null ? target.getObjectId() : 0)); activeChar.sendPacket(html); return true; }
@Override public void showChatWindow(L2PcInstance player, int val) { player.sendPacket(ActionFailed.STATIC_PACKET); String filename = "data/html/castlemagician/magician-no.htm"; int condition = validateCondition(player); if (condition > COND_ALL_FALSE) { if (condition == COND_BUSY_BECAUSE_OF_SIEGE) filename = "data/html/castlemagician/magician-busy.htm"; // Busy because of siege else if (condition == COND_OWNER) // Clan owns castle { if (val == 0) filename = "data/html/castlemagician/magician.htm"; else filename = "data/html/castlemagician/magician-" + val + ".htm"; } } NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), filename); html.replace("%objectId%", String.valueOf(getObjectId())); player.sendPacket(html); }
private final String funcConfirmHtml( final L2PcInstance player, final L2Npc npc, final Castle castle, final int func, final int level) { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final NpcHtmlMessage html; final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; if (level == 0) { html = getHtmlPacket(player, npc, "castleresetdeco.html"); html.replace("%AgitDecoSubmit%", Integer.toString(func)); } else if ((castle.getFunction(func) != null) && (castle.getFunction(func).getLvl() == level)) { html = getHtmlPacket(player, npc, "castledecoalreadyset.html"); html.replace("%AgitDecoEffect%", "<fstring p1=\"" + level + "\">" + fstring + "</fstring>"); } else { html = getHtmlPacket(player, npc, "castledeco-0" + func + ".html"); html.replace( "%AgitDecoCost%", "<fstring p1=\"" + getFunctionFee(func, level) + "\" p2=\"" + (getFunctionRatio(func) / 86400000) + "\">6</fstring>"); html.replace("%AgitDecoEffect%", "<fstring p1=\"" + level + "\">" + fstring + "</fstring>"); html.replace("%AgitDecoSubmit%", func + " " + level); } player.sendPacket(html); return null; } return "chamberlain-21.html"; }
@Override public void onBypassFeedback(L2PcInstance player, String command) { if (command.startsWith("1stClass")) { showHtmlMenu(player, getObjectId(), 1); } else if (command.startsWith("2ndClass")) { showHtmlMenu(player, getObjectId(), 2); } else if (command.startsWith("3rdClass")) { showHtmlMenu(player, getObjectId(), 3); } else if (command.startsWith("change_class")) { int val = Integer.parseInt(command.substring(13)); if (checkAndChangeClass(player, val)) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/ok.htm"); html.replace("%name%", CharTemplateTable.getInstance().getClassNameById(val)); player.sendPacket(html); } } else if (command.startsWith("become_noble")) { if (!player.isNoble()) { player.setNoble(true); player.sendPacket(new UserInfo(player)); player.sendPacket(new ExBrExtraUserInfo(player)); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nobleok.htm"); player.sendPacket(html); } } else if (command.startsWith("learn_skills")) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true); } else if (command.startsWith("increase_clan_level")) { if (player.getClan() == null || !player.isClanLeader()) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/noclanleader.htm"); player.sendPacket(html); } else if (player.getClan().getLevel() >= 5) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/noclanlevel.htm"); player.sendPacket(html); } else { player.getClan().changeLevel(5); } } else { super.onBypassFeedback(player, command); } }
public boolean action(L2PcInstance activeChar, L2Object target, boolean interact) { if (activeChar.getAccessLevel().isGm()) { NpcHtmlMessage html = new NpcHtmlMessage(target.getObjectId()); final String html1 = StringUtil.concat( "<html><body><center><font color=\"LEVEL\">Item Info</font></center><br><table border=0>", "<tr><td>Object ID: </td><td>", String.valueOf(target.getObjectId()), "</td></tr><tr><td>Item ID: </td><td>", String.valueOf(((L2ItemInstance) target).getItemId()), "</td></tr><tr><td>Owner ID: </td><td>", String.valueOf(((L2ItemInstance) target).getOwnerId()), "</td></tr><tr><td>Location: </td><td>", String.valueOf(((L2ItemInstance) target).getLocation()), "</td></tr><tr><td><br></td></tr><tr><td>Class: </td><td>", target.getClass().getSimpleName(), "</td></tr></table></body></html>"); html.setHtml(html1); activeChar.sendPacket(html); } return true; }
/** * this displays PledgeSkillList to the player. * * @param player */ public static final void showPledgeSkillList(L2PcInstance player) { if (player.getClan() == null || !player.isClanLeader()) { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/NotClanLeader.htm"); player.sendPacket(html); player.sendPacket(ActionFailed.STATIC_PACKET); return; } L2PledgeSkillLearn[] skills = SkillTreeTable.getInstance().getAvailablePledgeSkills(player); AcquireSkillList asl = new AcquireSkillList(AcquireSkillList.SkillType.Clan); int counts = 0; for (L2PledgeSkillLearn s : skills) { int cost = s.getRepCost(); int itemCount = s.getItemCount(); counts++; asl.addSkill(s.getId(), s.getLevel(), s.getLevel(), cost, itemCount); } if (counts == 0) { if (player.getClan().getLevel() < 8) { SystemMessage sm = new SystemMessage(SystemMessageId.DO_NOT_HAVE_FURTHER_SKILLS_TO_LEARN); if (player.getClan().getLevel() < 5) sm.addNumber(5); else sm.addNumber(player.getClan().getLevel() + 1); player.sendPacket(sm); } else { NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/NoMoreSkills.htm"); player.sendPacket(html); } } else player.sendPacket(asl); player.sendPacket(ActionFailed.STATIC_PACKET); }
private final void funcReplace( final Castle castle, final NpcHtmlMessage html, final int func, final String str) { final CastleFunction function = castle.getFunction(func); if (function == null) { html.replace("%" + str + "Depth%", "<fstring>4</fstring>"); html.replace("%" + str + "Cost%", ""); html.replace("%" + str + "Expire%", "<fstring>4</fstring>"); html.replace("%" + str + "Reset%", ""); } else { final String fstring = ((func == Castle.FUNC_SUPPORT) || (func == Castle.FUNC_TELEPORT)) ? "9" : "10"; final Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(function.getEndTime()); html.replace( "%" + str + "Depth%", "<fstring p1=\"" + function.getLvl() + "\">" + fstring + "</fstring>"); html.replace( "%" + str + "Cost%", "<fstring p1=\"" + function.getLease() + "\" p2=\"" + (function.getRate() / 86400000) + "\">6</fstring>"); html.replace( "%" + str + "Expire%", "<fstring p1=\"" + calendar.get(Calendar.DATE) + "\" p2=\"" + (calendar.get(Calendar.MONTH) + 1) + "\" p3=\"" + calendar.get(Calendar.YEAR) + "\">5</fstring>"); html.replace( "%" + str + "Reset%", "[<a action=\"bypass -h Quest CastleChamberlain " + str + " 0\">Deactivate</a>]"); } }
/** * Sends the given html to the player. * * @param activeChar * @param html */ public static void sendHtml(L2PcInstance activeChar, String html) { NpcHtmlMessage npcHtml = new NpcHtmlMessage(0); npcHtml.setHtml(html); activeChar.sendPacket(npcHtml); }
private NpcHtmlMessage getHtmlPacket(L2PcInstance player, L2Npc npc, String htmlFile) { final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId()); packet.setHtml(getHtm(player.getHtmlPrefix(), htmlFile)); return packet; }
public void showHtmlFile(L2PcInstance player, String file, L2Npc npc) { NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(player.getHtmlPrefix(), file); html.replace("%npc_name%", npc.getName()); player.sendPacket(html); }
@Override public void onBypassFeedback(L2PcInstance player, String command) { String[] commandStr = command.split(" "); String actualCommand = commandStr[0]; // Get actual command String cmdParams = ""; String cmdParams2 = ""; if (commandStr.length >= 2) cmdParams = commandStr[1]; if (commandStr.length >= 3) cmdParams2 = commandStr[2]; if (actualCommand.equalsIgnoreCase("create_clan")) { if (cmdParams.isEmpty()) return; ClanTable.getInstance().createClan(player, cmdParams); } else if (actualCommand.equalsIgnoreCase("create_academy")) { if (cmdParams.isEmpty()) return; createSubPledge(player, cmdParams, null, L2Clan.SUBUNIT_ACADEMY, 5); } else if (actualCommand.equalsIgnoreCase("rename_pledge")) { if (cmdParams.isEmpty() || cmdParams2.isEmpty()) return; renameSubPledge(player, Integer.valueOf(cmdParams), cmdParams2); } else if (actualCommand.equalsIgnoreCase("create_royal")) { if (cmdParams.isEmpty()) return; createSubPledge(player, cmdParams, cmdParams2, L2Clan.SUBUNIT_ROYAL1, 6); } else if (actualCommand.equalsIgnoreCase("create_knight")) { if (cmdParams.isEmpty()) return; createSubPledge(player, cmdParams, cmdParams2, L2Clan.SUBUNIT_KNIGHT1, 7); } else if (actualCommand.equalsIgnoreCase("assign_subpl_leader")) { if (cmdParams.isEmpty()) return; assignSubPledgeLeader(player, cmdParams, cmdParams2); } else if (actualCommand.equalsIgnoreCase("create_ally")) { if (cmdParams.isEmpty()) return; if (player.getClan() == null) player.sendPacket(new SystemMessage(SystemMessageId.ONLY_CLAN_LEADER_CREATE_ALLIANCE)); else player.getClan().createAlly(player, cmdParams); } else if (actualCommand.equalsIgnoreCase("dissolve_ally")) { player.getClan().dissolveAlly(player); } else if (actualCommand.equalsIgnoreCase("dissolve_clan")) { dissolveClan(player, player.getClanId()); } else if (actualCommand.equalsIgnoreCase("change_clan_leader")) { if (cmdParams.isEmpty()) return; changeClanLeader(player, cmdParams); } else if (actualCommand.equalsIgnoreCase("recover_clan")) { recoverClan(player, player.getClanId()); } else if (actualCommand.equalsIgnoreCase("increase_clan_level")) { if (player.getClan().levelUpClan(player)) { player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 0, 0)); player.broadcastPacket(new MagicSkillLaunched(player, 5103, 1)); } } else if (actualCommand.equalsIgnoreCase("learn_clan_skills")) { showPledgeSkillList(player); } else if (command.startsWith("Subclass")) { // Subclasses may not be changed while a skill is in use. if (player.isCastingNow() || player.isAllSkillsDisabled()) { player.sendPacket( new SystemMessage(SystemMessageId.SUBCLASS_NO_CHANGE_OR_CREATE_WHILE_SKILL_IN_USE)); return; } NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); if (player.getTransformation() != null) { html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_NoTransformed.htm"); player.sendPacket(html); return; } int cmdChoice = 0; int paramOne = 0; int paramTwo = 0; try { cmdChoice = Integer.parseInt(command.substring(9, 10).trim()); int endIndex = command.indexOf(' ', 11); if (endIndex == -1) endIndex = command.length(); paramOne = Integer.parseInt(command.substring(11, endIndex).trim()); if (command.length() > endIndex) paramTwo = Integer.parseInt(command.substring(endIndex).trim()); } catch (Exception NumberFormatException) { } switch (cmdChoice) { case 0: // Subclass change menu html.setFile(player.getHtmlPrefix(), getSubClassMenu(player.getRace())); break; case 1: // Add Subclass - Initial // Avoid giving player an option to add a new sub class, if they have three already. if (player.getTotalSubClasses() >= Config.MAX_SUBCLASS) { html.setFile(player.getHtmlPrefix(), getSubClassFail()); break; } html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_Add.htm"); final StringBuilder content1 = StringUtil.startAppend(200); Set<PlayerClass> subsAvailable = getAvailableSubClasses(player); if (subsAvailable != null && !subsAvailable.isEmpty()) { for (PlayerClass subClass : subsAvailable) { StringUtil.append( content1, "<a action=\"bypass -h npc_%objectId%_Subclass 4 ", String.valueOf(subClass.ordinal()), "\" msg=\"1268;", formatClassForDisplay(subClass), "\">", formatClassForDisplay(subClass), "</a><br>"); } } else { // TODO: Retail message player.sendMessage("There are no sub classes available at this time."); return; } html.replace("%list%", content1.toString()); break; case 2: // Change Class - Initial if (player.getSubClasses().isEmpty()) html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ChangeNo.htm"); else { final StringBuilder content2 = StringUtil.startAppend(200); if (checkVillageMaster(player.getBaseClass())) { StringUtil.append( content2, "<a action=\"bypass -h npc_%objectId%_Subclass 5 0\">", CharTemplateTable.getInstance().getClassNameById(player.getBaseClass()), "</a><br>"); } for (Iterator<SubClass> subList = iterSubClasses(player); subList.hasNext(); ) { SubClass subClass = subList.next(); if (checkVillageMaster(subClass.getClassDefinition())) { StringUtil.append( content2, "<a action=\"bypass -h npc_%objectId%_Subclass 5 ", String.valueOf(subClass.getClassIndex()), "\">", formatClassForDisplay(subClass.getClassDefinition()), "</a><br>"); } } if (content2.length() > 0) { html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_Change.htm"); html.replace("%list%", content2.toString()); } else html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ChangeNotFound.htm"); } break; case 3: // Change/Cancel Subclass - Initial if (player.getSubClasses() == null || player.getSubClasses().isEmpty()) { html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyEmpty.htm"); break; } // custom value if (player.getTotalSubClasses() > 3) { html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyCustom.htm"); final StringBuilder content3 = StringUtil.startAppend(200); int classIndex = 1; for (Iterator<SubClass> subList = iterSubClasses(player); subList.hasNext(); ) { SubClass subClass = subList.next(); StringUtil.append( content3, "Sub-class ", String.valueOf(classIndex++), "<br>", "<a action=\"bypass -h npc_%objectId%_Subclass 6 ", String.valueOf(subClass.getClassIndex()), "\">", CharTemplateTable.getInstance().getClassNameById(subClass.getClassId()), "</a><br>"); } html.replace("%list%", content3.toString()); } else { // retail html contain only 3 subclasses html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_Modify.htm"); if (player.getSubClasses().containsKey(1)) html.replace( "%sub1%", CharTemplateTable.getInstance() .getClassNameById(player.getSubClasses().get(1).getClassId())); else html.replace( "<a action=\"bypass -h npc_%objectId%_Subclass 6 1\">%sub1%</a><br>", ""); if (player.getSubClasses().containsKey(2)) html.replace( "%sub2%", CharTemplateTable.getInstance() .getClassNameById(player.getSubClasses().get(2).getClassId())); else html.replace( "<a action=\"bypass -h npc_%objectId%_Subclass 6 2\">%sub2%</a><br>", ""); if (player.getSubClasses().containsKey(3)) html.replace( "%sub3%", CharTemplateTable.getInstance() .getClassNameById(player.getSubClasses().get(3).getClassId())); else html.replace( "<a action=\"bypass -h npc_%objectId%_Subclass 6 3\">%sub3%</a><br>", ""); } break; case 4: // Add Subclass - Action (Subclass 4 x[x]) /* * If the character is less than level 75 on any of their previously chosen * classes then disallow them to change to their most recently added sub-class choice. */ if (!player.getFloodProtectors().getSubclass().tryPerformAction("add subclass")) { _log.warning( "Player " + player.getName() + " has performed a subclass change too fast"); return; } boolean allowAddition = true; if (player.getTotalSubClasses() >= Config.MAX_SUBCLASS) allowAddition = false; if (player.getLevel() < 75) allowAddition = false; if (allowAddition) { if (!player.getSubClasses().isEmpty()) { for (Iterator<SubClass> subList = iterSubClasses(player); subList.hasNext(); ) { SubClass subClass = subList.next(); if (subClass.getLevel() < 75) { allowAddition = false; break; } } } } /* * If quest checking is enabled, verify if the character has completed the Mimir's Elixir (Path to Subclass) * and Fate's Whisper (A Grade Weapon) quests by checking for instances of their unique reward items. * * If they both exist, remove both unique items and continue with adding the sub-class. */ if (allowAddition && !Config.ALT_GAME_SUBCLASS_WITHOUT_QUESTS) allowAddition = checkQuests(player); if (allowAddition && isValidNewSubClass(player, paramOne)) { if (!player.addSubClass(paramOne, player.getTotalSubClasses() + 1)) return; player.setActiveClass(player.getTotalSubClasses()); html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_AddOk.htm"); player.sendPacket( new SystemMessage(SystemMessageId.ADD_NEW_SUBCLASS)); // Subclass added. } else html.setFile(player.getHtmlPrefix(), getSubClassFail()); break; case 5: // Change Class - Action /* * If the character is less than level 75 on any of their previously chosen * classes then disallow them to change to their most recently added sub-class choice. * * Note: paramOne = classIndex */ if (!player.getFloodProtectors().getSubclass().tryPerformAction("change class")) { _log.warning( "Player " + player.getName() + " has performed a subclass change too fast"); return; } if (player.getClassIndex() == paramOne) { html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_Current.htm"); break; } if (paramOne == 0) { if (!checkVillageMaster(player.getBaseClass())) return; } else { try { if (!checkVillageMaster(player.getSubClasses().get(paramOne).getClassDefinition())) return; } catch (NullPointerException e) { return; } } player.setActiveClass(paramOne); player.sendPacket( new SystemMessage( SystemMessageId.SUBCLASS_TRANSFER_COMPLETED)); // Transfer completed. return; case 6: // Change/Cancel Subclass - Choice // validity check if (paramOne < 1 || paramOne > Config.MAX_SUBCLASS) return; subsAvailable = getAvailableSubClasses(player); // another validity check if (subsAvailable == null || subsAvailable.isEmpty()) { // TODO: Retail message player.sendMessage("There are no sub classes available at this time."); return; } final StringBuilder content6 = StringUtil.startAppend(200); for (PlayerClass subClass : subsAvailable) { StringUtil.append( content6, "<a action=\"bypass -h npc_%objectId%_Subclass 7 ", String.valueOf(paramOne), " ", String.valueOf(subClass.ordinal()), "\" msg=\"1445;", "\">", formatClassForDisplay(subClass), "</a><br>"); } switch (paramOne) { case 1: html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyChoice1.htm"); break; case 2: html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyChoice2.htm"); break; case 3: html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyChoice3.htm"); break; default: html.setFile( player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyChoice.htm"); } html.replace("%list%", content6.toString()); break; case 7: // Change Subclass - Action /* * Warning: the information about this subclass will be removed from the * subclass list even if false! */ if (!player.getFloodProtectors().getSubclass().tryPerformAction("change class")) { _log.warning( "Player " + player.getName() + " has performed a subclass change too fast"); return; } if (!isValidNewSubClass(player, paramTwo)) return; if (player.modifySubClass(paramOne, paramTwo)) { player.abortCast(); player .stopAllEffectsExceptThoseThatLastThroughDeath(); // all effects from old subclass // stopped! player.stopCubics(); player.setActiveClass(paramOne); html.setFile(player.getHtmlPrefix(), "data/html/villagemaster/SubClass_ModifyOk.htm"); html.replace("%name%", CharTemplateTable.getInstance().getClassNameById(paramTwo)); player.sendPacket( new SystemMessage(SystemMessageId.ADD_NEW_SUBCLASS)); // Subclass added. } else { /* * This isn't good! modifySubClass() removed subclass from memory * we must update _classIndex! Else IndexOutOfBoundsException can turn * up some place down the line along with other seemingly unrelated * problems. */ player.setActiveClass( 0); // Also updates _classIndex plus switching _classid to baseclass. player.sendMessage( "The sub class could not be added, you have been reverted to your base class."); return; } break; } html.replace("%objectId%", String.valueOf(getObjectId())); player.sendPacket(html); } else { // this class dont know any other commands, let forward // the command to the parent class super.onBypassFeedback(player, command); } }
private static final void showHtmlMenu(L2PcInstance player, int objectId, int level) { NpcHtmlMessage html = new NpcHtmlMessage(objectId); if (!Config.ALLOW_CLASS_MASTERS) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/disabled.htm"); } else if (!Config.CLASS_MASTER_SETTINGS.isAllowed(level)) { int jobLevel = player.getClassId().level(); final StringBuilder sb = new StringBuilder(100); sb.append("<html><body>"); switch (jobLevel) { case 0: if (Config.CLASS_MASTER_SETTINGS.isAllowed(1)) sb.append("Come back here when you reached level 20 to change your class.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(2)) sb.append("Come back after your first occupation change.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back after your second occupation change.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 1: if (Config.CLASS_MASTER_SETTINGS.isAllowed(2)) sb.append("Come back here when you reached level 40 to change your class.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back after your second occupation change.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 2: if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back here when you reached level 76 to change your class.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 3: sb.append("There is no class change available for you anymore.<br>"); break; } sb.append("</body></html>"); html.setHtml(sb.toString()); } else { final ClassId currentClassId = player.getClassId(); if (currentClassId.level() >= level) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nomore.htm"); } else { final int minLevel = getMinLevel(currentClassId.level()); if (player.getLevel() >= minLevel || Config.ALLOW_ENTIRE_TREE) { final StringBuilder menu = new StringBuilder(100); for (ClassId cid : ClassId.values()) { if (cid == ClassId.inspector && player.getTotalSubClasses() < 2) continue; if (validateClassId(currentClassId, cid) && cid.level() == level) { StringUtil.append( menu, "<a action=\"bypass -h npc_%objectId%_change_class ", String.valueOf(cid.getId()), "\">", CharTemplateTable.getInstance().getClassNameById(cid.getId()), "</a><br>"); } } if (menu.length() > 0) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/template.htm"); html.replace( "%name%", CharTemplateTable.getInstance().getClassNameById(currentClassId.getId())); html.replace("%menu%", menu.toString()); } else { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/comebacklater.htm"); html.replace("%level%", String.valueOf(getMinLevel(level - 1))); } } else { if (minLevel < Integer.MAX_VALUE) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/comebacklater.htm"); html.replace("%level%", String.valueOf(minLevel)); } else html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nomore.htm"); } } } html.replace("%objectId%", String.valueOf(objectId)); html.replace("%req_items%", getRequiredItems(level)); player.sendPacket(html); }
@Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { if (command.equals("admin_show_spawns")) { AdminHtml.showAdminHtml(activeChar, "spawns.htm"); } else if (command.equalsIgnoreCase("admin_spawn_debug_menu")) { AdminHtml.showAdminHtml(activeChar, "spawns_debug.htm"); } else if (command.startsWith("admin_spawn_debug_print")) { StringTokenizer st = new StringTokenizer(command, " "); L2Object target = activeChar.getTarget(); if (target instanceof L2Npc) { try { st.nextToken(); int type = Integer.parseInt(st.nextToken()); printSpawn((L2Npc) target, type); if (command.contains("_menu")) { AdminHtml.showAdminHtml(activeChar, "spawns_debug.htm"); } } catch (Exception e) { } } else { activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); } } else if (command.startsWith("admin_spawn_index")) { StringTokenizer st = new StringTokenizer(command, " "); try { st.nextToken(); int level = Integer.parseInt(st.nextToken()); int from = 0; try { from = Integer.parseInt(st.nextToken()); } catch (NoSuchElementException nsee) { } showMonsters(activeChar, level, from); } catch (Exception e) { AdminHtml.showAdminHtml(activeChar, "spawns.htm"); } } else if (command.equals("admin_show_npcs")) { AdminHtml.showAdminHtml(activeChar, "npcs.htm"); } else if (command.startsWith("admin_npc_index")) { StringTokenizer st = new StringTokenizer(command, " "); try { st.nextToken(); String letter = st.nextToken(); int from = 0; try { from = Integer.parseInt(st.nextToken()); } catch (NoSuchElementException nsee) { } showNpcs(activeChar, letter, from); } catch (Exception e) { AdminHtml.showAdminHtml(activeChar, "npcs.htm"); } } else if (command.startsWith("admin_instance_spawns")) { StringTokenizer st = new StringTokenizer(command, " "); try { st.nextToken(); int instance = Integer.parseInt(st.nextToken()); if (instance >= 300000) { final StringBuilder html = StringUtil.startAppend( 500 + 1000, "<html><table width=\"100%\"><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>", "<font color=\"LEVEL\">Spawns for " + String.valueOf(instance) + "</font>", "</td><td width=45><button value=\"Back\" action=\"bypass -h admin_current_player\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br>", "<table width=\"100%\"><tr><td width=200>NpcName</td><td width=70>Action</td></tr>"); int counter = 0; int skiped = 0; Instance inst = InstanceManager.getInstance().getInstance(instance); if (inst != null) { for (L2Npc npc : inst.getNpcs()) { if (!npc.isDead()) { // Only 50 because of client html limitation if (counter < 50) { StringUtil.append( html, "<tr><td>" + npc.getName() + "</td><td>", "<a action=\"bypass -h admin_move_to " + npc.getX() + " " + npc.getY() + " " + npc.getZ() + "\">Go</a>", "</td></tr>"); counter++; } else { skiped++; } } } StringUtil.append( html, "<tr><td>Skipped:</td><td>" + String.valueOf(skiped) + "</td></tr></table></body></html>"); final NpcHtmlMessage ms = new NpcHtmlMessage(); ms.setHtml(html.toString()); activeChar.sendPacket(ms); } else { activeChar.sendMessage("Cannot find instance " + instance); } } else { activeChar.sendMessage("Invalid instance number."); } } catch (Exception e) { activeChar.sendMessage("Usage //instance_spawns <instance_number>"); } } else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers( SystemMessage.getSystemMessage(SystemMessageId.NPC_SERVER_NOT_OPERATING)); RaidBossSpawnManager.getInstance().cleanUp(); DayNightSpawnManager.getInstance().cleanUp(); L2World.getInstance().deleteVisibleNpcSpawns(); AdminTable.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); } else if (command.startsWith("admin_spawnday")) { DayNightSpawnManager.getInstance().spawnDayCreatures(); } else if (command.startsWith("admin_spawnnight")) { DayNightSpawnManager.getInstance().spawnNightCreatures(); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { // make sure all spawns are deleted RaidBossSpawnManager.getInstance().cleanUp(); DayNightSpawnManager.getInstance().cleanUp(); L2World.getInstance().deleteVisibleNpcSpawns(); // now respawn all NpcData.getInstance().load(); SpawnTable.getInstance().load(); RaidBossSpawnManager.getInstance().load(); AutoSpawnHandler.getInstance().reload(); SevenSigns.getInstance().spawnSevenSignsNPC(); QuestManager.getInstance().reloadAllScripts(); AdminTable.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); } else if (command.startsWith("admin_spawn_monster") || command.startsWith("admin_spawn")) { StringTokenizer st = new StringTokenizer(command, " "); try { String cmd = st.nextToken(); String id = st.nextToken(); int respawnTime = 0; int mobCount = 1; if (st.hasMoreTokens()) { mobCount = Integer.parseInt(st.nextToken()); } if (st.hasMoreTokens()) { respawnTime = Integer.parseInt(st.nextToken()); } if (cmd.equalsIgnoreCase("admin_spawn_once")) { spawnMonster(activeChar, id, respawnTime, mobCount, false); } else { spawnMonster(activeChar, id, respawnTime, mobCount, true); } } catch (Exception e) { // Case of wrong or missing monster data AdminHtml.showAdminHtml(activeChar, "spawns.htm"); } } else if (command.startsWith("admin_list_spawns") || command.startsWith("admin_list_positions")) { int npcId = 0; int teleportIndex = -1; try { // admin_list_spawns x[xxxx] x[xx] String[] params = command.split(" "); Pattern pattern = Pattern.compile("[0-9]*"); Matcher regexp = pattern.matcher(params[1]); if (regexp.matches()) { npcId = Integer.parseInt(params[1]); } else { params[1] = params[1].replace('_', ' '); npcId = NpcData.getInstance().getTemplateByName(params[1]).getId(); } if (params.length > 2) { teleportIndex = Integer.parseInt(params[2]); } } catch (Exception e) { activeChar.sendMessage("Command format is //list_spawns <npcId|npc_name> [tele_index]"); } if (command.startsWith("admin_list_positions")) { findNPCInstances(activeChar, npcId, teleportIndex, true); } else { findNPCInstances(activeChar, npcId, teleportIndex, false); } } return true; }
public synchronized void start(L2PcInstance player, byte type, L2Npc npc) { boolean canPass = true; if (!player.isInParty()) { showHtmlFile(player, "data/html/seven_signs/rift/NoParty.htm", npc); return; } if (player.getParty().getPartyLeaderOID() != player.getObjectId()) { showHtmlFile(player, "data/html/seven_signs/rift/NotPartyLeader.htm", npc); return; } if (player.getParty().isInDimensionalRift()) { handleCheat(player, npc); return; } if (player.getParty().getMemberCount() < Config.RIFT_MIN_PARTY_SIZE) { NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/seven_signs/rift/SmallParty.htm"); html.replace("%npc_name%", npc.getName()); html.replace("%count%", Integer.toString(Config.RIFT_MIN_PARTY_SIZE)); player.sendPacket(html); return; } // max parties inside is rooms count - 1 if (!isAllowedEnter(type)) { player.sendMessage("Rift is full. Try later."); return; } for (L2PcInstance p : player.getParty().getPartyMembers()) if (!checkIfInPeaceZone(p.getX(), p.getY(), p.getZ())) { canPass = false; break; } if (!canPass) { showHtmlFile(player, "data/html/seven_signs/rift/NotInWaitingRoom.htm", npc); return; } L2ItemInstance i; int count = getNeededItems(type); for (L2PcInstance p : player.getParty().getPartyMembers()) { i = p.getInventory().getItemByItemId(DIMENSIONAL_FRAGMENT_ITEM_ID); if (i == null) { canPass = false; break; } if (i.getCount() > 0) { if (i.getCount() < getNeededItems(type)) { canPass = false; break; } } else { canPass = false; break; } } if (!canPass) { NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/seven_signs/rift/NoFragments.htm"); html.replace("%npc_name%", npc.getName()); html.replace("%count%", Integer.toString(count)); player.sendPacket(html); return; } for (L2PcInstance p : player.getParty().getPartyMembers()) { i = p.getInventory().getItemByItemId(DIMENSIONAL_FRAGMENT_ITEM_ID); if (!p.destroyItem("RiftEntrance", i, count, null, false)) { NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/seven_signs/rift/NoFragments.htm"); html.replace("%npc_name%", npc.getName()); html.replace("%count%", Integer.toString(count)); player.sendPacket(html); return; } } byte room; FastList<Byte> emptyRooms; do { emptyRooms = getFreeRooms(type); room = emptyRooms.get(Rnd.get(1, emptyRooms.size()) - 1); } // find empty room while (_rooms.get(type).get(room).ispartyInside()); new DimensionalRift(player.getParty(), type, room); }
@Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { StringTokenizer st = new StringTokenizer(command); command = st.nextToken(); if (command.equals("admin_territory_war")) { showMainPage(activeChar); } else if (command.equalsIgnoreCase("admin_territory_war_time")) { if (st.hasMoreTokens()) { final Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(TerritoryWarManager.getInstance().getTWStartTimeInMillis()); final String val = st.nextToken(); if ("month".equals(val)) { int month = cal.get(Calendar.MONTH) + Integer.parseInt(st.nextToken()); if ((cal.getActualMinimum(Calendar.MONTH) > month) || (cal.getActualMaximum(Calendar.MONTH) < month)) { activeChar.sendMessage( "Unable to change Siege Date - Incorrect month value only " + cal.getActualMinimum(Calendar.MONTH) + "-" + cal.getActualMaximum(Calendar.MONTH) + " is accepted!"); return false; } cal.set(Calendar.MONTH, month); } else if ("day".equals(val)) { int day = Integer.parseInt(st.nextToken()); if ((cal.getActualMinimum(Calendar.DAY_OF_MONTH) > day) || (cal.getActualMaximum(Calendar.DAY_OF_MONTH) < day)) { activeChar.sendMessage( "Unable to change Siege Date - Incorrect day value only " + cal.getActualMinimum(Calendar.DAY_OF_MONTH) + "-" + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + " is accepted!"); return false; } cal.set(Calendar.DAY_OF_MONTH, day); } else if ("hour".equals(val)) { int hour = Integer.parseInt(st.nextToken()); if ((cal.getActualMinimum(Calendar.HOUR_OF_DAY) > hour) || (cal.getActualMaximum(Calendar.HOUR_OF_DAY) < hour)) { activeChar.sendMessage( "Unable to change Siege Date - Incorrect hour value only " + cal.getActualMinimum(Calendar.HOUR_OF_DAY) + "-" + cal.getActualMaximum(Calendar.HOUR_OF_DAY) + " is accepted!"); return false; } cal.set(Calendar.HOUR_OF_DAY, hour); } else if ("min".equals(val)) { int min = Integer.parseInt(st.nextToken()); if ((cal.getActualMinimum(Calendar.MINUTE) > min) || (cal.getActualMaximum(Calendar.MINUTE) < min)) { activeChar.sendMessage( "Unable to change Siege Date - Incorrect minute value only " + cal.getActualMinimum(Calendar.MINUTE) + "-" + cal.getActualMaximum(Calendar.MINUTE) + " is accepted!"); return false; } cal.set(Calendar.MINUTE, min); } if (cal.getTimeInMillis() < Calendar.getInstance().getTimeInMillis()) { activeChar.sendMessage("Unable to change TW Date!"); } else if (cal.getTimeInMillis() != TerritoryWarManager.getInstance().getTWStartTimeInMillis()) { TerritoryWarManager.getInstance().setTWStartTimeInMillis(cal.getTimeInMillis()); GlobalVariablesManager.getInstance() .set(TerritoryWarManager.GLOBAL_VARIABLE, cal.getTimeInMillis()); } } showSiegeTimePage(activeChar); } else if (command.equalsIgnoreCase("admin_territory_war_start")) { TerritoryWarManager.getInstance().setTWStartTimeInMillis(System.currentTimeMillis()); } else if (command.equalsIgnoreCase("admin_territory_war_end")) { TerritoryWarManager.getInstance() .setTWStartTimeInMillis(System.currentTimeMillis() - TerritoryWarManager.WARLENGTH); } else if (command.equalsIgnoreCase("admin_territory_wards_list")) { // build beginning of html page final NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0, 1); StringBuilder sb = new StringBuilder(); sb.append( "<html><title>Territory War</title><body><br><center><font color=\"LEVEL\">Active Wards List:</font></center>"); // get,build & send current Wards list if (TerritoryWarManager.getInstance().isTWInProgress()) { List<TerritoryWard> territoryWardList = TerritoryWarManager.getInstance().getAllTerritoryWards(); for (TerritoryWard ward : territoryWardList) { if (ward.getNpc() != null) { sb.append("<table width=270><tr>"); sb.append("<td width=135 ALIGN=\"LEFT\">" + ward.getNpc().getName() + "</td>"); sb.append( "<td width=135 ALIGN=\"RIGHT\"><button value=\"TeleTo\" action=\"bypass -h admin_move_to " + ward.getNpc().getX() + " " + ward.getNpc().getY() + " " + ward.getNpc().getZ() + "\" width=50 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td>"); sb.append("</tr></table>"); } else if (ward.getPlayer() != null) { sb.append("<table width=270><tr>"); sb.append( "<td width=135 ALIGN=\"LEFT\">" + ward.getPlayer().getActiveWeaponInstance().getItemName() + " - " + ward.getPlayer().getName() + "</td>"); sb.append( "<td width=135 ALIGN=\"RIGHT\"><button value=\"TeleTo\" action=\"bypass -h admin_move_to " + ward.getPlayer().getX() + " " + ward.getPlayer().getY() + " " + ward.getPlayer().getZ() + "\" width=50 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td>"); sb.append("</tr></table>"); } } sb.append( "<br><center><button value=\"Back\" action=\"bypass -h admin_territory_war\" width=50 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); npcHtmlMessage.setHtml(sb.toString()); activeChar.sendPacket(npcHtmlMessage); } else { sb.append("<br><br><center>The Ward List is empty!<br>TW has probably NOT started!"); sb.append( "<br><button value=\"Back\" action=\"bypass -h admin_territory_war\" width=50 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); npcHtmlMessage.setHtml(sb.toString()); activeChar.sendPacket(npcHtmlMessage); } } return true; }
public void showHeroDiary(L2PcInstance activeChar, int heroclass, int charid, int page) { final int perpage = 10; if (_herodiary.containsKey(charid)) { List<StatsSet> _mainlist = _herodiary.get(charid); final NpcHtmlMessage DiaryReply = new NpcHtmlMessage(); final String htmContent = HtmCache.getInstance() .getHtm(activeChar.getHtmlPrefix(), "data/html/olympiad/herodiary.htm"); if ((htmContent != null) && _heroMessage.containsKey(charid)) { DiaryReply.setHtml(htmContent); DiaryReply.replace("%heroname%", CharNameTable.getInstance().getNameById(charid)); DiaryReply.replace("%message%", _heroMessage.get(charid)); DiaryReply.disableValidation(); if (!_mainlist.isEmpty()) { FastList<StatsSet> _list = FastList.newInstance(); _list.addAll(_mainlist); Collections.reverse(_list); boolean color = true; final StringBuilder fList = new StringBuilder(500); int counter = 0; int breakat = 0; for (int i = ((page - 1) * perpage); i < _list.size(); i++) { breakat = i; StatsSet _diaryentry = _list.get(i); StringUtil.append(fList, "<tr><td>"); if (color) { StringUtil.append(fList, "<table width=270 bgcolor=\"131210\">"); } else { StringUtil.append(fList, "<table width=270>"); } StringUtil.append( fList, "<tr><td width=270><font color=\"LEVEL\">" + _diaryentry.getString("date") + ":xx</font></td></tr>"); StringUtil.append( fList, "<tr><td width=270>" + _diaryentry.getString("action") + "</td></tr>"); StringUtil.append(fList, "<tr><td> </td></tr></table>"); StringUtil.append(fList, "</td></tr>"); color = !color; counter++; if (counter >= perpage) { break; } } if (breakat < (_list.size() - 1)) { DiaryReply.replace( "%buttprev%", "<button value=\"Prev\" action=\"bypass _diary?class=" + heroclass + "&page=" + (page + 1) + "\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); } else { DiaryReply.replace("%buttprev%", ""); } if (page > 1) { DiaryReply.replace( "%buttnext%", "<button value=\"Next\" action=\"bypass _diary?class=" + heroclass + "&page=" + (page - 1) + "\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); } else { DiaryReply.replace("%buttnext%", ""); } DiaryReply.replace("%list%", fList.toString()); FastList.recycle(_list); } else { DiaryReply.replace("%list%", ""); DiaryReply.replace("%buttprev%", ""); DiaryReply.replace("%buttnext%", ""); } activeChar.sendPacket(DiaryReply); } } }
public void showHeroFights(L2PcInstance activeChar, int heroclass, int charid, int page) { final int perpage = 20; int _win = 0; int _loss = 0; int _draw = 0; if (_herofights.containsKey(charid)) { List<StatsSet> _list = _herofights.get(charid); final NpcHtmlMessage FightReply = new NpcHtmlMessage(); final String htmContent = HtmCache.getInstance() .getHtm(activeChar.getHtmlPrefix(), "data/html/olympiad/herohistory.htm"); if (htmContent != null) { FightReply.setHtml(htmContent); FightReply.replace("%heroname%", CharNameTable.getInstance().getNameById(charid)); if (!_list.isEmpty()) { if (_herocounts.containsKey(charid)) { StatsSet _herocount = _herocounts.get(charid); _win = _herocount.getInt("victory"); _loss = _herocount.getInt("loss"); _draw = _herocount.getInt("draw"); } boolean color = true; final StringBuilder fList = new StringBuilder(500); int counter = 0; int breakat = 0; for (int i = ((page - 1) * perpage); i < _list.size(); i++) { breakat = i; StatsSet fight = _list.get(i); StringUtil.append(fList, "<tr><td>"); if (color) { StringUtil.append(fList, "<table width=270 bgcolor=\"131210\">"); } else { StringUtil.append(fList, "<table width=270>"); } StringUtil.append( fList, "<tr><td width=220><font color=\"LEVEL\">" + fight.getString("start") + "</font> " + fight.getString("result") + "</td><td width=50 align=right>" + (fight.getInt("classed") > 0 ? "<font color=\"FFFF99\">cls</font>" : "<font color=\"999999\">non-cls<font>") + "</td></tr>"); StringUtil.append( fList, "<tr><td width=220>vs " + fight.getString("oponent") + " (" + fight.getString("oponentclass") + ")</td><td width=50 align=right>(" + fight.getString("time") + ")</td></tr>"); StringUtil.append(fList, "<tr><td colspan=2> </td></tr></table>"); StringUtil.append(fList, "</td></tr>"); color = !color; counter++; if (counter >= perpage) { break; } } if (breakat < (_list.size() - 1)) { FightReply.replace( "%buttprev%", "<button value=\"Prev\" action=\"bypass _match?class=" + heroclass + "&page=" + (page + 1) + "\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); } else { FightReply.replace("%buttprev%", ""); } if (page > 1) { FightReply.replace( "%buttnext%", "<button value=\"Next\" action=\"bypass _match?class=" + heroclass + "&page=" + (page - 1) + "\" width=60 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"); } else { FightReply.replace("%buttnext%", ""); } FightReply.replace("%list%", fList.toString()); } else { FightReply.replace("%list%", ""); FightReply.replace("%buttprev%", ""); FightReply.replace("%buttnext%", ""); } FightReply.replace("%win%", String.valueOf(_win)); FightReply.replace("%draw%", String.valueOf(_draw)); FightReply.replace("%loos%", String.valueOf(_loss)); activeChar.sendPacket(FightReply); } } }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { final Castle castle = npc.getCastle(); final StringTokenizer st = new StringTokenizer(event, " "); String htmltext = null; switch (st.nextToken()) { case "chamberlain-01.html": case "manor-help-01.html": case "manor-help-02.html": case "manor-help-03.html": case "manor-help-04.html": { htmltext = event; break; } case "fort_status": { if (npc.isMyLord(player)) { final StringBuilder sb = new StringBuilder(); final List<Integer> fort = FORTRESS.get(castle.getResidenceId()); for (int id : fort) { final Fort fortress = FortManager.getInstance().getFortById(id); final int fortId = fortress.getResidenceId(); final String fortType = (fortId < 112) ? "1300133" : "1300134"; final String fortStatus; switch (fortress.getFortState()) { case 1: fortStatus = "1300122"; break; case 2: fortStatus = "1300124"; break; default: fortStatus = "1300123"; break; } sb.append("<fstring>1300" + fortId + "</fstring>"); sb.append(" (<fstring>" + fortType + "</fstring>)"); sb.append( " : <font color=\"00FFFF\"><fstring>" + fortStatus + "</fstring></font><br>"); } final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-28.html"); html.replace("%list%", sb.toString()); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "siege_functions": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else if (!isDomainFortressInContractStatus(castle.getResidenceId())) { htmltext = "chamberlain-27.html"; } else if (!SevenSigns.getInstance().isCompResultsPeriod()) { htmltext = "chamberlain-26.html"; } else { htmltext = "chamberlain-12.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "manage_doors": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { if (st.hasMoreTokens()) { final StringBuilder sb = new StringBuilder(); final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-13.html"); html.replace("%type%", st.nextToken()); while (st.hasMoreTokens()) { sb.append(" " + st.nextToken()); } html.replace("%doors%", sb.toString()); player.sendPacket(html); } else { htmltext = npc.getId() + "-du.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_doors": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final int type = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken()); final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-14.html"); html.replace("%gate_price%", Integer.toString(getDoorUpgradePrice(type, level))); html.replace("%event%", event.substring("upgrade_doors".length() + 1)); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_doors_confirm": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { final int type = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken()); final int price = getDoorUpgradePrice(type, level); final int[] doors = new int[2]; for (int i = 0; i <= st.countTokens(); i++) { doors[i] = Integer.parseInt(st.nextToken()); } final L2DoorInstance door = castle.getDoor(doors[0]); if (door != null) { final int currentLevel = door.getStat().getUpgradeHpRatio(); if (currentLevel >= level) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-15.html"); html.replace("%doorlevel%", Integer.toString(currentLevel)); player.sendPacket(html); } else if (player.getAdena() >= price) { takeItems(player, Inventory.ADENA_ID, price); for (int doorId : doors) { castle.setDoorUpgrade(doorId, level, true); } htmltext = "chamberlain-16.html"; } else { htmltext = "chamberlain-09.html"; } } } } else { htmltext = "chamberlain-21.html"; } break; } case "manage_trap": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { if (st.hasMoreTokens()) { final NpcHtmlMessage html; if (castle.getName().equalsIgnoreCase("aden")) { html = getHtmlPacket(player, npc, "chamberlain-17a.html"); } else { html = getHtmlPacket(player, npc, "chamberlain-17.html"); } html.replace("%trapIndex%", st.nextToken()); player.sendPacket(html); } else { htmltext = npc.getId() + "-tu.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_trap": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final String trapIndex = st.nextToken(); final int level = Integer.parseInt(st.nextToken()); final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-18.html"); html.replace("%trapIndex%", trapIndex); html.replace("%level%", Integer.toString(level)); html.replace("%dmgzone_price%", Integer.toString(getTrapUpgradePrice(level))); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_trap_confirm": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { final int trapIndex = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken()); final int price = getTrapUpgradePrice(level); final int currentLevel = castle.getTrapUpgradeLevel(trapIndex); if (currentLevel >= level) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-19.html"); html.replace("%dmglevel%", Integer.toString(currentLevel)); player.sendPacket(html); } else if (player.getAdena() >= price) { takeItems(player, Inventory.ADENA_ID, price); castle.setTrapUpgrade(trapIndex, level, true); htmltext = "chamberlain-20.html"; } else { htmltext = "chamberlain-09.html"; } } } else { htmltext = "chamberlain-21.html"; } break; } case "receive_report": { if (npc.isMyLord(player)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-07.html"; } else { final L2Clan clan = ClanTable.getInstance().getClan(castle.getOwnerId()); final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-02.html"); html.replace("%clanleadername%", clan.getLeaderName()); html.replace("%clanname%", clan.getName()); html.replace("%castlename%", String.valueOf(1001000 + castle.getResidenceId())); switch (SevenSigns.getInstance().getCurrentPeriod()) { case SevenSigns.PERIOD_COMP_RECRUITING: html.replace("%ss_event%", "1000509"); break; case SevenSigns.PERIOD_COMPETITION: html.replace("%ss_event%", "1000507"); break; case SevenSigns.PERIOD_SEAL_VALIDATION: case SevenSigns.PERIOD_COMP_RESULTS: html.replace("%ss_event%", "1000508"); break; } html.replace("%ss_avarice%", getSealOwner(1)); html.replace("%ss_gnosis%", getSealOwner(2)); html.replace("%ss_strife%", getSealOwner(3)); player.sendPacket(html); } } else { htmltext = "chamberlain-21.html"; } break; } case "manage_tax": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlesettaxrate.html"); html.replace("%tax_rate%", Integer.toString(castle.getTaxPercent())); html.replace("%next_tax_rate%", "0"); // TODO: Implement me! html.replace("%tax_limit%", Integer.toString(getTaxLimit())); player.sendPacket(html); } } else if (isOwner(player, npc)) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-03.html"); html.replace("%tax_rate%", Integer.toString(castle.getTaxPercent())); html.replace("%next_tax_rate%", "0"); // TODO: Implement me! player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "set_tax": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { final NpcHtmlMessage html; final int tax = (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 0; final int taxLimit = getTaxLimit(); if (tax > taxLimit) { html = getHtmlPacket(player, npc, "castletoohightaxrate.html"); html.replace("%tax_limit%", Integer.toString(taxLimit)); } else { castle.setTaxPercent(tax); html = getHtmlPacket(player, npc, "castleaftersettaxrate.html"); html.replace("%next_tax_rate%", Integer.toString(tax)); } player.sendPacket(html); } } else { htmltext = "chamberlain-21.html"; } break; } case "manage_vault": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) { long seedIncome = 0; if (Config.ALLOW_MANOR) { for (SeedProduction sp : CastleManorManager.getInstance() .getSeedProduction(castle.getResidenceId(), false)) { final long diff = sp.getStartAmount() - sp.getAmount(); if (diff != 0) { seedIncome += diff * sp.getPrice(); } } } final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html"); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income_reserved%", "0"); // TODO: Implement me! html.replace("%seed_income%", Util.formatAdena(seedIncome)); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "deposit": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) { final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; if ((amount > 0) && (amount < Inventory.MAX_ADENA)) { if (player.getAdena() >= amount) { takeItems(player, Inventory.ADENA_ID, amount); castle.addToTreasuryNoTax(amount); } else { player.sendPacket(SystemMessageId.YOU_NOT_ENOUGH_ADENA); } } htmltext = "chamberlain-01.html"; } else { htmltext = "chamberlain-21.html"; } break; } case "withdraw": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) { final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; if (amount <= castle.getTreasury()) { castle.addToTreasuryNoTax((-1) * amount); giveAdena(player, amount, false); htmltext = "chamberlain-01.html"; } else { final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlenotenoughbalance.html"); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%withdraw_amount%", Util.formatAdena(amount)); player.sendPacket(html); } } else { htmltext = "chamberlain-21.html"; } break; } case "manage_functions": { if (!isOwner(player, npc)) { htmltext = "chamberlain-21.html"; } else if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { htmltext = "chamberlain-23.html"; } break; } case "banish_foreigner_show": { if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_DISMISS)) { htmltext = "chamberlain-21.html"; } else if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { htmltext = "chamberlain-10.html"; } break; } case "banish_foreigner": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_DISMISS)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { castle.banishForeigners(); htmltext = "chamberlain-11.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "doors": { if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) { htmltext = "chamberlain-21.html"; } else if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { htmltext = npc.getId() + "-d.html"; } break; } case "operate_door": { if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) { htmltext = "chamberlain-21.html"; } else if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { final boolean open = (Integer.parseInt(st.nextToken()) == 1); while (st.hasMoreTokens()) { castle.openCloseDoor(player, Integer.parseInt(st.nextToken()), open); } htmltext = (open ? "chamberlain-05.html" : "chamberlain-06.html"); } break; } case "additional_functions": { htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; break; } case "recovery": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html"); funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP"); funcReplace(castle, html, Castle.FUNC_RESTORE_MP, "MP"); funcReplace(castle, html, Castle.FUNC_RESTORE_EXP, "XP"); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "other": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html"); funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP"); funcReplace(castle, html, Castle.FUNC_SUPPORT, "BF"); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "HP": { final int level = Integer.parseInt(st.nextToken()); htmltext = funcConfirmHtml(player, npc, castle, Castle.FUNC_RESTORE_HP, level); break; } case "MP": { final int level = Integer.parseInt(st.nextToken()); htmltext = funcConfirmHtml(player, npc, castle, Castle.FUNC_RESTORE_MP, level); break; } case "XP": { final int level = Integer.parseInt(st.nextToken()); htmltext = funcConfirmHtml(player, npc, castle, Castle.FUNC_RESTORE_EXP, level); break; } case "TP": { final int level = Integer.parseInt(st.nextToken()); htmltext = funcConfirmHtml(player, npc, castle, Castle.FUNC_TELEPORT, level); break; } case "BF": { final int level = Integer.parseInt(st.nextToken()); htmltext = funcConfirmHtml(player, npc, castle, Castle.FUNC_SUPPORT, level); break; } case "set_func": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) { final int func = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken()); if (level == 0) { castle.updateFunctions(player, func, level, 0, 0, false); } else if (!castle.updateFunctions( player, func, level, getFunctionFee(func, level), getFunctionRatio(func), castle.getFunction(func) == null)) { htmltext = "chamberlain-09.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "functions": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { final CastleFunction HP = castle.getFunction(Castle.FUNC_RESTORE_HP); final CastleFunction MP = castle.getFunction(Castle.FUNC_RESTORE_MP); final CastleFunction XP = castle.getFunction(Castle.FUNC_RESTORE_EXP); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledecofunction.html"); html.replace("%HPDepth%", (HP == null) ? "0" : Integer.toString(HP.getLvl())); html.replace("%MPDepth%", (MP == null) ? "0" : Integer.toString(MP.getLvl())); html.replace("%XPDepth%", (XP == null) ? "0" : Integer.toString(XP.getLvl())); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "teleport": { if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { htmltext = "chamberlain-21.html"; } else if (castle.getFunction(Castle.FUNC_TELEPORT) == null) { htmltext = "castlefuncdisabled.html"; } else { htmltext = npc.getId() + "-t" + castle.getFunction(Castle.FUNC_TELEPORT).getLvl() + ".html"; } break; } case "goto": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { final int locId = Integer.parseInt(st.nextToken()); final L2TeleportLocation list = TeleportLocationTable.getInstance().getTemplate(locId); if (list != null) { if (takeItems(player, list.getItemId(), list.getPrice())) { player.teleToLocation(list.getLocX(), list.getLocY(), list.getLocZ()); } } } else { htmltext = "chamberlain-21.html"; } break; } case "buffer": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { if (castle.getFunction(Castle.FUNC_SUPPORT) == null) { htmltext = "castlefuncdisabled.html"; } else { final NpcHtmlMessage html = getHtmlPacket( player, npc, "castlebuff-0" + castle.getFunction(Castle.FUNC_SUPPORT).getLvl() + ".html"); html.replace("%MPLeft%", Integer.toString((int) npc.getCurrentMp())); player.sendPacket(html); } } else { htmltext = "chamberlain-21.html"; } break; } case "cast_buff": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { if (castle.getFunction(Castle.FUNC_SUPPORT) == null) { htmltext = "castlefuncdisabled.html"; } else { final int index = Integer.parseInt(st.nextToken()); if (BUFFS.length > index) { final NpcHtmlMessage html; final SkillHolder holder = BUFFS[index]; if (holder.getSkill().getMpConsume() < npc.getCurrentMp()) { npc.setTarget(player); npc.doCast(holder.getSkill()); html = getHtmlPacket(player, npc, "castleafterbuff.html"); } else { html = getHtmlPacket(player, npc, "castlenotenoughmp.html"); } html.replace("%MPLeft%", Integer.toString((int) npc.getCurrentMp())); player.sendPacket(html); } } } else { htmltext = "chamberlain-21.html"; } break; } case "list_siege_clans": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) { castle.getSiege().listRegisterClan(player); } else { htmltext = "chamberlain-21.html"; } break; } case "list_territory_clans": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) { player.sendPacket(new ExShowDominionRegistry(castle.getResidenceId(), player)); } else { htmltext = "chamberlain-21.html"; } break; } case "manor": { if (Config.ALLOW_MANOR) { htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANOR_ADMIN)) ? "manor.html" : "chamberlain-21.html"; } else { player.sendMessage("Manor system is deactivated."); } break; } case "products": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-22.html"); html.replace("%npcId%", Integer.toString(npc.getId())); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "buy": { if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_USE_FUNCTIONS)) { ((L2MerchantInstance) npc).showBuyWindow(player, Integer.parseInt(st.nextToken())); } else { htmltext = "chamberlain-21.html"; } break; } case "give_crown": { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else if (npc.isMyLord(player)) { if (hasQuestItems(player, CROWN)) { htmltext = "chamberlain-24.html"; } else { final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-25.html"); html.replace("%owner_name%", String.valueOf(player.getName())); html.replace( "%feud_name%", String.valueOf(String.valueOf(1001000 + castle.getResidenceId()))); player.sendPacket(html); giveItems(player, CROWN, 1); } } else { htmltext = "chamberlain-21.html"; } break; } case "manors_cert": { if (npc.isMyLord(player)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { if ((SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) == SevenSigns.CABAL_DAWN) && SevenSigns.getInstance().isCompetitionPeriod()) { final int ticketCount = castle.getTicketBuyCount(); if (ticketCount < (Config.SSQ_DAWN_TICKET_QUANTITY / Config.SSQ_DAWN_TICKET_BUNDLE)) { final NpcHtmlMessage html = getHtmlPacket(player, npc, "ssq_selldawnticket.html"); html.replace( "%DawnTicketLeft%", String.valueOf( Config.SSQ_DAWN_TICKET_QUANTITY - (ticketCount * Config.SSQ_DAWN_TICKET_BUNDLE))); html.replace("%DawnTicketBundle%", String.valueOf(Config.SSQ_DAWN_TICKET_BUNDLE)); html.replace( "%DawnTicketPrice%", String.valueOf(Config.SSQ_DAWN_TICKET_PRICE * Config.SSQ_DAWN_TICKET_BUNDLE)); player.sendPacket(html); } else { htmltext = "ssq_notenoughticket.html"; } } else { htmltext = "ssq_notdawnorevent.html"; } } } else { htmltext = "chamberlain-21.html"; } break; } case "manors_cert_confirm": { if (npc.isMyLord(player)) { if (castle.getSiege().isInProgress()) { htmltext = "chamberlain-08.html"; } else { if ((SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) == SevenSigns.CABAL_DAWN) && SevenSigns.getInstance().isCompetitionPeriod()) { final int ticketCount = castle.getTicketBuyCount(); if (ticketCount < (Config.SSQ_DAWN_TICKET_QUANTITY / Config.SSQ_DAWN_TICKET_BUNDLE)) { final long totalCost = Config.SSQ_DAWN_TICKET_PRICE * Config.SSQ_DAWN_TICKET_BUNDLE; if (player.getAdena() >= totalCost) { takeItems(player, Inventory.ADENA_ID, totalCost); giveItems( player, Config.SSQ_MANORS_AGREEMENT_ID, Config.SSQ_DAWN_TICKET_BUNDLE); castle.setTicketBuyCount(ticketCount + 1); } else { htmltext = "chamberlain-09.html"; } } else { htmltext = "ssq_notenoughticket.html"; } } else { htmltext = "ssq_notdawnorevent.html"; } } } else { htmltext = "chamberlain-21.html"; } break; } } return htmltext; }
private void showMenu(L2PcInstance activeChar) { final NpcHtmlMessage html = new NpcHtmlMessage(); String content = getHtm(activeChar.getHtmlPrefix(), "admin_menu.htm"); html.setHtml(content); activeChar.sendPacket(html); }