deyvsonn
Membro-
Total de itens
29 -
Registro em
-
Última visita
deyvsonn's Achievements
Aprendiz de Novato (1/14)
2
Reputação
-
<zone id='11034' type='Town' shape="NPoly" minZ="-3800" maxZ="-3400"> <stat name='name' val='Heine'/> <stat name='noPeace' val='true'/> <stat name='townId' val='15'/> <stat name='redirectTownId' val='16'/> <stat name='taxById' val='6'/> <spawn X='110727' Y='219641' Z='-3674'/> <spawn X='110723' Y='220670' Z='-3674'/> <spawn X='112053' Y='220711' Z='-3674'/> <spawn X='112049' Y='219605' Z='-3674'/> <spawn X='107737' Y='218347' Z='-3678'/> <spawn X='107970' Y='218106' Z='-3678'/> <spawn X='111386' Y='219079' Z='-3546'/> <spawn X='111320' Y='221398' Z='-3611'/> <spawn X='110006' Y='219309' Z='-3482'/> <spawn X='112616' Y='219451' Z='-3546'/> Basta add a linha: <stat name='noPeace' val='true'/> E mudar o shape="NPoly" para shape="Cuboid" Tenta isso amigo
-
Bom dia Galera Estou com um Servidor Gracia Final e estou colocando um set Exclusivo para Hero porem quando coloco a condição so para hero não proibi nada o ppl continua usando mesmo sem ser heroi . EX: <item id="43050" name="Infinity Breastplate"> <cond msgId="1518"> <player isHero="true"/> <player races="Human,Elf,DarkElf,Orc,Dwarf" /> </cond> <for> <add val="330" order="0x10" stat="pDef"/> <add val='2000' order='0x40' stat='maxHp' /> <add val='1500' order='0x40' stat='maxCp' /> <enchant val='0' order='0x0C' stat='pDef' /> <basemul val='0.25' order='0x40' stat='pAtk'/> <basemul val='0.05' order='0x40' stat='pDef'/> </for> </item> eu vi que no servidor que baixei tem um Scripit para as armas Hero tentei alterar mais nada feito :(
-
Boa tarde Galera estou com um problema no meu servidor estou montando ele e no momento não consigo editar para um Raid boss dropar Reputação de clan Como posso resolver isso se alguém souber Fivo Muio agradecido mesmo a minha versão e H5
-
Fala Galera Bomm Dia Estou com um Problema em trocar os itens do npc do castelo O que da a coroa e a capa Gostaria de trocar os items que entrega aos ppls mais não encontro o multisell sei que a coroa e um script do java so mais os Generais itens não encontro em canto nenhum se alguém poder ma ajudar fico super grato mesmo vlw. e gostaria de colocar a capa de giram para entregar junto com a coroa .vou por o script do java pra ver se alguém consegue desenrolar essa guerra o item e a quantidade que entrega da coroa esta de vermelho para ajudar encontrar vlw Ha uso a versão HIgh Five /* * Copyright © 2004-2013 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack 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. * * L2J DataPack 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 <[Hidden Content];. */ package ai.npc.CastleChamberlain; import java.util.Arrays; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import ai.npc.AbstractNpcAI; import com.l2jserver.Config; import com.l2jserver.gameserver.SevenSigns; import com.l2jserver.gameserver.datatables.ClanTable; import com.l2jserver.gameserver.datatables.TeleportLocationTable; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.instancemanager.FortManager; import com.l2jserver.gameserver.model.L2Clan; import com.l2jserver.gameserver.model.L2TeleportLocation; import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance; import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.Castle; import com.l2jserver.gameserver.model.entity.Castle.CastleFunction; import com.l2jserver.gameserver.model.entity.Fort; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.itemcontainer.PcInventory; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ExShowCropSetting; import com.l2jserver.gameserver.network.serverpackets.ExShowDominionRegistry; import com.l2jserver.gameserver.network.serverpackets.ExShowSeedInfo; import com.l2jserver.gameserver.network.serverpackets.ExShowSeedSetting; import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; import com.l2jserver.gameserver.util.Util; /** * Castle Chamberlain AI. * @author malyelfik */ public class CastleChamberlain extends AbstractNpcAI { // NPCs private static final int[] NPC = { 35100, // Sayres 35142, // Crosby 35184, // Saul 35226, // Brasseur 35274, // Logan 35316, // Neurath 35363, // Alfred 35509, // Frederick 35555, // August }; // Item private static final int CROWN = 6841; // Fortress private static final Map<Integer, List<Integer>> FORTRESS = new HashMap<>(); static { FORTRESS.put(1, Arrays.asList(101, 102, 112, 113)); // Gludio Castle FORTRESS.put(2, Arrays.asList(103, 112, 114, 115)); // Dion Castle FORTRESS.put(3, Arrays.asList(104, 114, 116, 118, 119)); // Giran Castle FORTRESS.put(4, Arrays.asList(105, 113, 115, 116, 117)); // Oren Castle FORTRESS.put(5, Arrays.asList(106, 107, 117, 118)); // Aden Castle FORTRESS.put(6, Arrays.asList(108, 119)); // Innadril Castle FORTRESS.put(7, Arrays.asList(109, 117, 120)); // Goddard Castle FORTRESS.put(8, Arrays.asList(110, 120, 121)); // Rune Castle FORTRESS.put(9, Arrays.asList(111, 121)); // Schuttgart Castle } // Buffs private static final SkillHolder[] BUFFS = { new SkillHolder(4342, 2), // Wind Walk Lv.2 new SkillHolder(4343, 3), // Decrease Weight Lv.3 new SkillHolder(4344, 3), // Shield Lv.3 new SkillHolder(4346, 4), // Mental Shield Lv.4 new SkillHolder(4345, 3), // Might Lv.3 new SkillHolder(4347, 2), // Bless the Body Lv.2 new SkillHolder(4349, 1), // Magic Barrier Lv.1 new SkillHolder(4350, 1), // Resist Shock Lv.1 new SkillHolder(4348, 2), // Bless the Soul Lv.2 new SkillHolder(4351, 2), // Concentration Lv.2 new SkillHolder(4352, 1), // Berserker Spirit Lv.1 new SkillHolder(4353, 2), // Bless Shield Lv.2 new SkillHolder(4358, 1), // Guidance Lv.1 new SkillHolder(4354, 1), // Vampiric Rage Lv.1 new SkillHolder(4347, 6), // Bless the Body Lv.6 new SkillHolder(4349, 2), // Magic Barrier Lv.2 new SkillHolder(4350, 4), // Resist Shock Lv.4 new SkillHolder(4348, 6), // Bless the Soul Lv.6 new SkillHolder(4351, 6), // Concentration Lv.6 new SkillHolder(4352, 2), // Berserker Spirit Lv.2 new SkillHolder(4353, 6), // Bless Shield Lv.6 new SkillHolder(4358, 3), // Guidance Lv.3 new SkillHolder(4354, 4), // Vampiric Rage Lv.4 new SkillHolder(4355, 1), // Acumen Lv.1 new SkillHolder(4356, 1), // Empower Lv.1 new SkillHolder(4357, 1), // Haste Lv.1 new SkillHolder(4359, 1), // Focus Lv.1 new SkillHolder(4360, 1), // Death Whisper Lv.1 }; private CastleChamberlain(String name, String descr) { super(name, descr); addStartNpc(NPC); addTalkId(NPC); addFirstTalkId(NPC); } private final String funcConfirmHtml(final L2PcInstance player, final L2Npc npc, final Castle castle, final int func, final int level) { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; if (level == 0) { html.setHtml(getHtm(player.getHtmlPrefix(), "castleresetdeco.html")); html.replace("%AgitDecoSubmit%", Integer.toString(func)); } else if ((castle.getFunction(func) != null) && (castle.getFunction(func).getLvl() == level)) { html.setHtml(getHtm(player.getHtmlPrefix(), "castledecoalreadyset.html")); html.replace("%AgitDecoEffect%", "<fstring p1=\"" + level + "\">" + fstring + "</fstring>"); } else { html.setHtml(getHtm(player.getHtmlPrefix(), "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"; } 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>]"); } } private final int getFunctionFee(final int func, final int level) { int fee = 0; switch (func) { case Castle.FUNC_RESTORE_EXP: fee = (level == 45) ? Config.CS_EXPREG1_FEE : Config.CS_EXPREG2_FEE; break; case Castle.FUNC_RESTORE_HP: fee = (level == 300) ? Config.CS_HPREG1_FEE : Config.CS_HPREG2_FEE; break; case Castle.FUNC_RESTORE_MP: fee = (level == 40) ? Config.CS_MPREG1_FEE : Config.CS_MPREG2_FEE; break; case Castle.FUNC_SUPPORT: fee = (level == 5) ? Config.CS_SUPPORT1_FEE : Config.CS_SUPPORT2_FEE; break; case Castle.FUNC_TELEPORT: fee = (level == 1) ? Config.CS_TELE1_FEE : Config.CS_TELE2_FEE; break; } return fee; } private final long getFunctionRatio(final int func) { long ratio = 0; switch (func) { case Castle.FUNC_RESTORE_EXP: ratio = Config.CS_EXPREG_FEE_RATIO; break; case Castle.FUNC_RESTORE_HP: ratio = Config.CS_HPREG_FEE_RATIO; break; case Castle.FUNC_RESTORE_MP: ratio = Config.CS_MPREG_FEE_RATIO; break; case Castle.FUNC_SUPPORT: ratio = Config.CS_SUPPORT_FEE_RATIO; break; case Castle.FUNC_TELEPORT: ratio = Config.CS_TELE_FEE_RATIO; break; } return ratio; } private final int getDoorUpgradePrice(final int type, final int level) { int price = 0; switch (type) { case 1: // Outer Door { switch (level) { case 2: price = Config.OUTER_DOOR_UPGRADE_PRICE2; break; case 3: price = Config.OUTER_DOOR_UPGRADE_PRICE3; break; case 5: price = Config.OUTER_DOOR_UPGRADE_PRICE5; break; } break; } case 2: // Inner Door { switch (level) { case 2: price = Config.INNER_DOOR_UPGRADE_PRICE2; break; case 3: price = Config.INNER_DOOR_UPGRADE_PRICE3; break; case 5: price = Config.INNER_DOOR_UPGRADE_PRICE5; break; } break; } case 3: // Wall { switch (level) { case 2: price = Config.WALL_UPGRADE_PRICE2; break; case 3: price = Config.WALL_UPGRADE_PRICE3; break; case 5: price = Config.WALL_UPGRADE_PRICE5; break; } break; } } switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE)) { case SevenSigns.CABAL_DUSK: price *= 3; break; case SevenSigns.CABAL_DAWN: price *= 0.8; break; } return price; } private final String getSealOwner(final int seal) { String npcString; switch (SevenSigns.getInstance().getSealOwner(seal)) { case SevenSigns.CABAL_DAWN: npcString = "1000511"; break; case SevenSigns.CABAL_DUSK: npcString = "1000510"; break; default: npcString = "1000512"; break; } return npcString; } private final int getTaxLimit() { final int taxLimit; switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE)) { case SevenSigns.CABAL_DAWN: taxLimit = 25; break; case SevenSigns.CABAL_DUSK: taxLimit = 5; break; default: taxLimit = 15; break; } return taxLimit; } private final int getTrapUpgradePrice(final int level) { int price = 0; switch (level) { case 1: price = Config.TRAP_UPGRADE_PRICE1; break; case 2: price = Config.TRAP_UPGRADE_PRICE2; break; case 3: price = Config.TRAP_UPGRADE_PRICE3; break; case 4: price = Config.TRAP_UPGRADE_PRICE4; break; } switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE)) { case SevenSigns.CABAL_DUSK: price *= 3; break; case SevenSigns.CABAL_DAWN: price *= 0.8; break; } return price; } private final boolean hasPrivilege(final L2PcInstance player, final int privilege) { return ((player.getClanPrivileges() & privilege) == privilege); } private final boolean isDomainFortressInContractStatus(final int castleId) { final int numFort = ((castleId == 1) || (castleId == 5)) ? 2 : 1; final List<Integer> fortList = FORTRESS.get(castleId); for (int i = 0; i < numFort; i++) { final Fort fortress = FortManager.getInstance().getFortById(fortList.get(i)); if (fortress.getFortState() == 2) { return true; } } return false; } private final boolean isOwner(final L2PcInstance player, final L2Npc npc) { return player.canOverrideCond(PcCondOverride.CASTLE_CONDITIONS) || npc.isMyLord(player) || (player.getClanId() == npc.getCastle().getOwnerId()); } @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.getCastleId()); for (int id : fort) { final Fort fortress = FortManager.getInstance().getFortById(id); final int fortId = fortress.getFortId(); 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 = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-28.html")); html.replace("%list%", sb.toString()); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "siege_functions": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { if (castle.getSiege().getIsInProgress()) { htmltext = "chamberlain-08.html"; } else if (!isDomainFortressInContractStatus(castle.getCastleId())) { 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) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { if (st.hasMoreTokens()) { final StringBuilder sb = new StringBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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.getNpcId() + "-du.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_doors": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { final int type = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken()); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { if (castle.getSiege().getIsInProgress()) { return "chamberlain-08.html"; } 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 = Integer.parseInt(st.nextToken()); } final L2DoorInstance door = castle.getDoor(doors[0]); if (door == null) { return null; } final int currentLevel = door.getStat().getUpgradeHpRatio(); if (currentLevel >= level) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-15.html")); html.replace("%doorlevel%", Integer.toString(currentLevel)); player.sendPacket(html); } else if (player.getAdena() >= price) { takeItems(player, PcInventory.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) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { if (st.hasMoreTokens()) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); if (castle.getName().equalsIgnoreCase("aden")) { html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-17a.html")); } else { html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-17.html")); } html.replace("%trapIndex%", st.nextToken()); player.sendPacket(html); } else { htmltext = npc.getNpcId() + "-tu.html"; } } else { htmltext = "chamberlain-21.html"; } break; } case "upgrade_trap": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { final String trapIndex = st.nextToken(); final int level = Integer.parseInt(st.nextToken()); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { if (castle.getSiege().getIsInProgress()) { return "chamberlain-08.html"; } 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 = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-19.html")); html.replace("%dmglevel%", Integer.toString(currentLevel)); player.sendPacket(html); } else if (player.getAdena() >= price) { takeItems(player, PcInventory.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().getIsInProgress()) { htmltext = "chamberlain-07.html"; } else { final L2Clan clan = ClanTable.getInstance().getClan(castle.getOwnerId()); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-02.html")); html.replace("%clanleadername%", clan.getLeaderName()); html.replace("%clanname%", clan.getName()); html.replace("%castlename%", String.valueOf(1001000 + castle.getCastleId())); switch (SevenSigns.getInstance().getCurrentPeriod()) { case SevenSigns.PERIOD_SEAL_VALIDATION: case SevenSigns.PERIOD_COMP_RECRUITING: html.replace("%ss_event%", "1000509"); break; case SevenSigns.PERIOD_COMPETITION: html.replace("%ss_event%", "1000507"); break; 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) && hasPrivilege(player, L2Clan.CP_CS_TAXES)) { if (castle.getSiege().getIsInProgress()) { htmltext = "chamberlain-08.html"; } else { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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 = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_TAXES)) { if (castle.getSiege().getIsInProgress()) { htmltext = "chamberlain-08.html"; } else { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); final int tax = (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 0; final int taxLimit = getTaxLimit(); if (tax > taxLimit) { html.setHtml(getHtm(player.getHtmlPrefix(), "castletoohightaxrate.html")); html.replace("%tax_limit%", Integer.toString(taxLimit)); } else { castle.setTaxPercent(tax); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_TAXES)) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "castlemanagevault.html")); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income_reserved%", "0"); // TODO: Implement me! html.replace("%seed_income%", "0"); // TODO: Implement me! player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "deposit": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_TAXES)) { final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; if ((amount > 0) && (amount < PcInventory.MAX_ADENA)) { if (player.getAdena() >= amount) { takeItems(player, PcInventory.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) && hasPrivilege(player, L2Clan.CP_CS_TAXES)) { final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; if (amount <= castle.getTreasury()) { castle.addToTreasuryNoTax((-1) * amount); giveAdena(player, amount, false); return "chamberlain-01.html"; } final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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": { htmltext = (isOwner(player, npc)) ? (castle.getSiege().getIsInProgress()) ? "chamberlain-08.html" : "chamberlain-23.html" : "chamberlain-21.html"; break; } case "banish_foreigner_show": { htmltext = (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_DISMISS)) ? (castle.getSiege().getIsInProgress()) ? "chamberlain-08.html" : "chamberlain-10.html" : "chamberlain-21.html"; break; } case "banish_foreigner": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_DISMISS)) { if (castle.getSiege().getIsInProgress()) { return "chamberlain-08.html"; } castle.banishForeigners(); htmltext = "chamberlain-11.html"; } else { htmltext = "chamberlain-21.html"; } break; } case "doors": { htmltext = (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_OPEN_DOOR)) ? (castle.getSiege().getIsInProgress()) ? "chamberlain-08.html" : npc.getNpcId() + "-d.html" : "chamberlain-21.html"; break; } case "operate_door": { if (castle.getSiege().getIsInProgress()) { htmltext = "chamberlain-08.html"; } else if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_OPEN_DOOR)) { 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"; } else { htmltext = "chamberlain-21.html"; } break; } case "additional_functions": { htmltext = (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; break; } case "recovery": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_SET_FUNCTIONS)) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_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) && hasPrivilege(player, L2Clan.CP_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 = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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": { htmltext = (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_USE_FUNCTIONS)) ? (castle.getFunction(Castle.FUNC_TELEPORT) == null) ? "castlefuncdisabled.html" : npc.getNpcId() + "-t" + castle.getFunction(Castle.FUNC_TELEPORT).getLvl() + ".html" : "chamberlain-21.html"; break; } case "goto": { if ((isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_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) && hasPrivilege(player, L2Clan.CP_CS_USE_FUNCTIONS))) { if (castle.getFunction(Castle.FUNC_SUPPORT) == null) { htmltext = "castlefuncdisabled.html"; } else { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_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) { return null; } final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); final SkillHolder holder = BUFFS[index]; if (holder.getSkill().getMpConsume() < npc.getCurrentMp()) { npc.setTarget(player); npc.doCast(holder.getSkill()); html.setHtml(getHtm(player.getHtmlPrefix(), "castleafterbuff.html")); } else { html.setHtml(getHtm(player.getHtmlPrefix(), "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) && hasPrivilege(player, L2Clan.CP_CS_MANAGE_SIEGE)) { castle.getSiege().listRegisterClan(player); } else { htmltext = "chamberlain-21.html"; } break; } case "list_territory_clans": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_MANAGE_SIEGE)) { player.sendPacket(new ExShowDominionRegistry(castle.getCastleId(), player)); } else { htmltext = "chamberlain-21.html"; } break; } case "manor": { htmltext = (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_MANOR_ADMIN)) ? "manor.html" : "chamberlain-21.html"; break; } case "seed_status": { player.sendPacket(new ExShowSeedInfo(castle.getCastleId(), CastleManager.getInstance().getCastleById(castle.getCastleId()).getSeedProduction(0))); break; } case "seed_setup": { if (castle.isNextPeriodApproved()) { player.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_6_AM_AND_8_PM); } else { player.sendPacket(new ExShowSeedSetting(castle.getCastleId())); } break; } case "crop_setup": { if (castle.isNextPeriodApproved()) { player.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_6_AM_AND_8_PM); } else { player.sendPacket(new ExShowCropSetting(castle.getCastleId())); } break; } case "products": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_USE_FUNCTIONS)) { final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-22.html")); html.replace("%npcId%", Integer.toString(npc.getNpcId())); player.sendPacket(html); } else { htmltext = "chamberlain-21.html"; } break; } case "buy": { if (isOwner(player, npc) && hasPrivilege(player, L2Clan.CP_CS_USE_FUNCTIONS)) { ((L2MerchantInstance) npc).showBuyWindow(player, Integer.parseInt(st.nextToken())); } else { htmltext = "chamberlain-21.html"; } break; } case "give_crown": { if (castle.getSiege().getIsInProgress()) { htmltext = "chamberlain-08.html"; } else if (npc.isMyLord(player)) { if (hasQuestItems(player, CROWN)) { return "chamberlain-24.html"; } final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "chamberlain-25.html")); html.replace("%owner_name%", String.valueOf(player.getName())); html.replace("%feud_name%", String.valueOf(String.valueOf(1001000 + castle.getCastleId()))); player.sendPacket(html); giveItems(player, CROWN, 1); } else { htmltext = "chamberlain-21.html"; } break; } case "manors_cert": { if (npc.isMyLord(player)) { if (castle.getSiege().getIsInProgress()) { 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 = new NpcHtmlMessage(npc.getObjectId()); html.setHtml(getHtm(player.getHtmlPrefix(), "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().getIsInProgress()) { 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, PcInventory.ADENA_ID, totalCost); giveItems(player, Config.SSQ_MANORS_AGREEMENT_ID, Config.SSQ_DAWN_TICKET_BUNDLE); castle.setTicketBuyCount(ticketCount + 1); return null; } htmltext = "chamberlain-09.html"; } else { htmltext = "ssq_notenoughticket.html"; } } else { htmltext = "ssq_notdawnorevent.html"; } } } else { htmltext = "chamberlain-21.html"; } break; } } return htmltext; } @Override public String onFirstTalk(L2Npc npc, L2PcInstance player) { return (isOwner(player, npc)) ? "chamberlain-01.html" : "chamberlain-04.html"; } public static void main(String[] args) { new CastleChamberlain(CastleChamberlain.class.getSimpleName(), "ai/npc"); } }
-
Galera Boa tarde Gostaria de saber como consigo alterar os itens que vendo no npc do castelo onde pega a coroa no General itens quem souber agradeço muito .
-
Galera Boa tarde Gostaria de uma ajuda estou com problemas para trocar os dizeres de tela Welcome Multilinguagem se alguem souber por favor me da uma ajuda
-
Galera Boa tarde gostaria de saber como alterar o Welcome Multiliguagem um atela que aparece uso cliente H5 quem souber ajuda ai agradeço de verdade .
-
galera gostaria de saber como alterar o Welcome Multiliguagem uma tela que aparece dizendo as regras do servidor no gandalf quem souber da um help ai vlw .
-
mais onde fica esse Pcbank Points ?
-
Nada amigo tentei mais não deu certo Assim que passo o Mouse em cima dela ja aparece que ela e um Shield e não um Gloves ta osso :( pow amigão encontrei o problema Tinha adicionado um item novo no servidor e não percebi que estava com o mesmo ID da luva Muito obrigado mesmo
-
Pessoal estou louco pra arrumar isso ,Aluva de um set do meu servidor esta como Shield e não consigo fazer ela volta se eu colocar o mouse em cima dela mostra que ela e shield e não Gloves . por favor quem souber como resolver da uma ajuda agradeço muuuito mesmo .
-
Galeta tenho um pedido a fazer uma luva de um set esta como shild e esta indo para o local do shild onde deveria ir para o gloves como posso resolver ? se souberem me ajude por favor agradeço muito. uso cliente H5
-
Atualizações Recentes de Status
-
Lineage 2 Classic/Essence/Legacy/Main Ru-Eu-Na Geodata [Protocol 464] - available!!!· 0 respostas