Jump to content

ThelwHelpRePaidia

Members
  • Posts

    269
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by ThelwHelpRePaidia

  1. xxdem exeis kamia idea ti paizei; giati prospathw alla den
  2. change in the database the token id kai in the etcitemgrp and in itemname and you are done make it like 999999
  3. [GR] evala to && me tin logiki oti tha to piasi san adena kai tha to diamirasi sto party opws kanei kai me ta adena alla mallon htan vlakeia mou xD
  4. Hello i found something that i didnt think of and i cant fix it that when i kill a mob the drop i have put on this if it is more than 1 it has to be shared to every one in the party but i dont know how but i doesnt getting shared here is what i mean i killed this mob 3 times and http://prntscr.com/ifoopd ..i've tried changing by here but nothing. public void distributeItem(Player player, ItemInstance item) { if (item.getItemId() == 57 && item.getItemId() == 6577) { distributeAdena(player, item.getCount(), player); ItemTable.getInstance().destroyItem("Party", item, player, null); return; } and here public void distributeItem(Player player, IntIntHolder item, boolean spoil, Attackable target) { if (item == null) return; if (item.getId() == 57 && item.getId() == 6577) { distributeAdena(player, item.getValue(), target); return; }
  5. <list maintainEnchantment="true"> <npc id="32132" name="Anoilikos" title=""> <set name="usingServerSideName" val="true"/> <set name="level" val="85"/> <set name="radius" val="10.00"/> <set name="height" val="41.00"/> <set name="rHand" val="30000"/> <set name="lHand" val="0"/> <set name="type" val="Monster"/> <set name="exp" val="40000"/> <set name="sp" val="400000"/> <set name="hp" val="75000"/> <set name="mp" val="1188.8"/> <set name="hpRegen" val="350.1"/> <set name="mpRegen" val="2.7"/> <set name="pAtk" val="13000"/> <set name="pDef" val="2500.1"/> <set name="mAtk" val="397.98887"/> <set name="mDef" val="2350.1"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="42"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="100"/> <set name="runSpd" val="174"/> <set name="dropHerbGroup" val="0"/> <ai type="DEFAULT" ssCount="200" ssRate="30" spsCount="60" spsRate="0" aggro="300" clan="doom_clan" clanRange="0" canMove="true" seedable="true"/> <drops> <category id="1"> <drop itemid="weapon id" min="1" max="1" enchantmentLevel="7" chance="1000000"/> </category> </drops> </npc> </list> i tried like that but i didnt worked it was dropping +0
  6. 1st im getting 0 errors on eclipse and on gameserver 2nd i dont get the message 3rd i placed the code here public void onKillUpdatePvPKarma(Playable target) { if (target == null) return; final Player targetPlayer = target.getActingPlayer(); if (targetPlayer == null || targetPlayer == this) return; // Don't rank up the CW if it was a summon. if (isCursedWeaponEquipped() && target instanceof Player) { CursedWeaponsManager.getInstance().increaseKills(_cursedWeaponEquippedId); return; } // If in duel and you kill (only can kill l2summon), do nothing if (isInDuel() && targetPlayer.isInDuel()) return; if (EventManager.getInstance().isRunning() && EventManager.getInstance().isRegistered(this) && EventManager.getInstance().isRegistered(targetPlayer)) return; if (getParty() != null) { for (Player player : getParty().getMembers()) { if (Config.Synergy_Class.contains(player.getClassId().getId()) && player.isInCombat() && (Rnd.get(100) <= 90)) { player.sendMessage("You have earned a pvp by supporting " + target.getName()); player.setPvpKills(player.getPvpKills() + 1); } } } // If in pvp zone, do nothing. if (isInsideZone(ZoneId.PVP) && targetPlayer.isInsideZone(ZoneId.PVP)) { // Until the zone was a siege zone. Check also if victim was a player. Randomers aren't counted. if (target instanceof Player && getSiegeState() > 0 && targetPlayer.getSiegeState() > 0 && getSiegeState() != targetPlayer.getSiegeState()) { // Now check clan relations. final Clan killerClan = getClan(); if (killerClan != null) killerClan.setSiegeKills(killerClan.getSiegeKills() + 1); final Clan targetClan = targetPlayer.getClan(); if (targetClan != null) targetClan.setSiegeDeaths(targetClan.getSiegeDeaths() + 1); } return; }
  7. Hello does anyone know how can i make a mob to drop all the S grade weapons in one category and enchanted like that http://prntscr.com/ieunp1
  8. Hello i have a problem with this code i get no errors in eclipse but in game it doesnt work.. to Player.java if (getParty() != null) { for (Player p : getParty().getMembers()) { if (Config.Synergy_Class.contains(p.getClassId().getId()) && p.isInCombat() && (Rnd.get(100) <= 90)) { p.sendMessage("You have earned a pvp by supporting " + target.getName()); p.getPvpKills(); } } } and the config public static List<Integer> Synergy_Class = new ArrayList<>(); String Synergy_Class = customs.getProperty("ClassesSupp", "97"); String[] atdc_splitted = Synergy_Class.split(","); for (String s : atdc_splitted) { Synergy_Class.add(Integer.valueOf(s)); }
  9. εδω φιλε μου εχει διαφορα guides μαζεμενα και αν ψαξεις καλα θα βρεις και με videakia δες αυτα τα guides και αν δεν σε βγαλουν καπου ποσταρε εδω και θα σε βοηθησουμε οσο μπορουμε
  10. all good i fixed it like this if anyone wants it server.properties # This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave * Hostname = noip or whatismyip # Bind ip of the gameserver, use * to bind on all available IPs. GameserverHostname = * GameserverPort = 7777 # The Loginserver host and port. LoginHost = 192.168.x.x <-----IPv4 Address from your pc LoginPort = 9014 # This is the server id that the gameserver will request. RequestServerID = 1 # If set to true, the login will give an other id to the server (if the requested id is already reserved). AcceptAlternateID = True login.properties # This is transmitted to the clients, so it has to be an IP or resolvable hostname Hostname = noip or whatismyip # Bind ip of the LoginServer, use * to bind on all available IPs LoginserverHostname = * LoginserverPort = 2106 # The Loginserver host and port. LoginHostname = * LoginPort = 9014 # How many times you can provide an invalid account/pass before the IP gets banned LoginTryBeforeBan = 5 and l2.ini save it with your 192.168.xx <----- IPv4 Address from your pc not 127.0.0.1 and MAKE SURE YOU OPEN YOUR PORTS IN THIS IP
  11. i have tried too many different things nothing works i get stuck at server selection :/
  12. i dont want to run it localy i want some friends to join and me but i saw on acis forum sweets said that you cant connect from the pc that the server runs..
  13. Does anyone know when or if the external ip will be fixed? to connect with 127.0.0.1 from the same pc that server runs.. thanks!
  14. +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestRecipeShopListSet.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -62,6 +63,12 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendMessage("You cannot craft while inside Multifunction zone."); + return; + } + if (!player.isInsideZone(ZoneId.NO_STORE)) { player.sendPacket(SystemMessageId.NO_PRIVATE_WORKSHOP_HERE); +++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -56,6 +57,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.logout_zone) + { + player.sendMessage("You cannot Logout while inside a Multifunction zone."); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.NO_LOGOUT_HERE); +++java/net/sf/l2j/gameserver/model/zone/ZoneId.java DANGER_AREA(15), CAST_ON_ARTIFACT(16), NO_RESTART(17), - SCRIPT(18); + SCRIPT(18), + MULTI_FUNCTION(19); private final int _id; +++java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListBuy.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -83,6 +84,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendPacket(new PrivateStoreManageListBuy(player)); + player.sendMessage("You cannot start store while inside Multifunction zone."); + return; + } + if (!player.isInsideZone(ZoneId.NO_STORE)) { player.sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE); +++java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListSell.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -71,6 +72,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendPacket(new PrivateStoreManageListSell(player, _packageSale)); + player.sendMessage("You cannot start store while inside Multifunction zone."); + return; + } + if (!player.getAccessLevel().allowTransaction()) { player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); +++java/net/sf/l2j/gameserver/network/serverpackets/Die.java. +import net.sf.l2j.gameserver.model.zone.ZoneId; +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; public class Die extends L2GameServerPacket { private final int _charObjId; private final boolean _fake; private boolean _sweepable; + private boolean _canTeleport; private L2AccessLevel _access = AccessLevels._userAccessLevel; @@ -47,6 +50,7 @@ Player player = (Player) cha; _access = player.getAccessLevel(); _clan = player.getClan(); + _canTeleport = !(player.isInsideZone(ZoneId.MULTI_FUNCTION) && L2MultiFunctionZone.revive); @@ -86,7 +90,7 @@ } else { - writeD(0x01); // to nearest village + writeD(_canTeleport ? 0x01 : 0); // to nearest village @@ -96,7 +100,7 @@ - if (_clan != null) + if (_canTeleport && _clan != null) { ++++java/net/sf/l2j/gameserver/model/actor/instance/Player.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -4384,6 +4385,8 @@ // Add PvP point to attacker. setPvpKills(getPvpKills() + 1); + L2MultiFunctionZone.givereward(this); + // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); } ++++java/net/sf/l2j/gameserver/model/itemcontainer/ItemContainer.java { protected static final Logger _log = Logger.getLogger(ItemContainer.class.getName()); - protected final List<ItemInstance> _items; + public final List<ItemInstance> _items; protected ItemContainer() { +++java/net/sf/l2j/gameserver/model/zone/type/L2MultiFunctionZone.java CREATE NEW THIS FILE DOES NOT EXIST! package net.sf.l2j.gameserver.model.zone.type; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import net.sf.l2j.commons.concurrent.ThreadPool; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.model.itemcontainer.PcInventory; import net.sf.l2j.gameserver.model.zone.L2ZoneType; import net.sf.l2j.gameserver.model.zone.ZoneId; public class L2MultiFunctionZone extends L2ZoneType { public L2MultiFunctionZone(int id) { super(id); loadConfigs(); } public static boolean pvp_enabled, restart_zone, store_zone, logout_zone, revive_noblesse, revive_heal, revive, remove_buffs, remove_pets, give_noblesse; static int radius, enchant, revive_delay; static int[][] spawn_loc; L2Skill noblesse = SkillTable.getInstance().getInfo(1323, 1); private static List<String> items = new ArrayList<>(), classes = new ArrayList<>(), grades = new ArrayList<>(); public static List<int[]> rewards = new ArrayList<>(); static String[] gradeNames = { "", "D", "C", "B", "A", "S" }; @Override protected void onEnter(Creature character) { character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true); character.setInsideZone(ZoneId.MULTI_FUNCTION, true); if (character instanceof Player) { Player activeChar = ((Player) character); if (classes != null && classes.contains("" + activeChar.getClassId().getId())) { activeChar.teleToLocation(83597, 147888, -3405, 0); activeChar.sendMessage("Your class is not allowed in the MultiFunction zone."); return; } for (ItemInstance o : activeChar.getInventory()._items) { if (o.isEquipable() && o.isEquipped() && !checkItem(o)) { int slot = activeChar.getInventory().getSlotFromItem(o); activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot); activeChar.sendMessage(o.getItemName() + " unequiped because is not allowed inside this zone."); } } if (give_noblesse) noblesse.getEffects(activeChar, activeChar); if (pvp_enabled) activeChar.updatePvPFlag(1); activeChar.sendMessage("You entered in a MultiFunction zone."); clear(activeChar); } } @Override protected void onExit(Creature character) { character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false); character.setInsideZone(ZoneId.MULTI_FUNCTION, false); if (character instanceof Player) { Player activeChar = ((Player) character); activeChar.sendMessage("You left from a MultiFunction zone."); if (pvp_enabled) activeChar.updatePvPFlag(0); } } @Override public void onDieInside(final Creature character) { if (character instanceof Player) { final Player activeChar = ((Player) character); if (revive) { ThreadPool.schedule(new Runnable() { @Override public void run() { activeChar.doRevive(); heal(activeChar); int[] loc = spawn_loc[Rnd.get(spawn_loc.length)]; activeChar.teleToLocation(loc[0] + Rnd.get(-radius, radius), loc[1] + Rnd.get(-radius, radius), loc[2], 0); } }, revive_delay * 1000); } } } @Override public void onReviveInside(Creature character) { if (character instanceof Player) { Player activeChar = ((Player) character); if (revive_noblesse) noblesse.getEffects(activeChar, activeChar); if (revive_heal) heal(activeChar); } } static void heal(Player activeChar) { activeChar.setCurrentHp(activeChar.getMaxHp()); activeChar.setCurrentCp(activeChar.getMaxCp()); activeChar.setCurrentMp(activeChar.getMaxMp()); } private static void clear(Player player) { if (remove_buffs) { player.stopAllEffects(); if (remove_pets) { Summon pet = player.getPet(); if (pet != null) { pet.stopAllEffects(); pet.unSummon(player); } } } else { if (remove_pets) { Summon pet = player.getPet(); if (pet != null) pet.unSummon(player); } } } public static void givereward(Player player) { if (player.isInsideZone(ZoneId.MULTI_FUNCTION)) { for (int[] reward : rewards) { PcInventory inv = player.getInventory(); inv.addItem("Custom Reward", reward[0], reward[1], player, player); } } } public static boolean checkItem(ItemInstance item) { int o = item.getItem().getCrystalType().ordinal(); int e = item.getEnchantLevel(); if (enchant != 0 && e >= enchant) return false; if (grades.contains(gradeNames[o])) return false; if (items != null && items.contains("" + item.getItemId())) return false; return true; } private static void loadConfigs() { try { Properties prop = new Properties(); prop.load(new FileInputStream(new File("./config/MultiFunctionZone.properties"))); pvp_enabled = Boolean.parseBoolean(prop.getProperty("EnablePvP", "False")); spawn_loc = parseItemsList(prop.getProperty("SpawnLoc", "150111,144740,-12248")); revive_delay = Integer.parseInt(prop.getProperty("ReviveDelay", "10")); if (revive_delay != 0) revive = true; give_noblesse = Boolean.parseBoolean(prop.getProperty("GiveNoblesse", "False")); String[] propertySplit = prop.getProperty("Items", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) items.add(i); propertySplit = prop.getProperty("Grades", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) if (i.equals("D") || i.equals("C") || i.equals("B") || i.equals("A") || i.equals("S")) grades.add(i); propertySplit = prop.getProperty("Classes", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) classes.add(i); radius = Integer.parseInt(prop.getProperty("RespawnRadius", "500")); enchant = Integer.parseInt(prop.getProperty("Enchant", "0")); remove_buffs = Boolean.parseBoolean(prop.getProperty("RemoveBuffs", "False")); remove_pets = Boolean.parseBoolean(prop.getProperty("RemovePets", "False")); restart_zone = Boolean.parseBoolean(prop.getProperty("NoRestartZone", "False")); store_zone = Boolean.parseBoolean(prop.getProperty("NoStoreZone", "False")); logout_zone = Boolean.parseBoolean(prop.getProperty("NoLogoutZone", "False")); revive_noblesse = Boolean.parseBoolean(prop.getProperty("ReviveNoblesse", "False")); revive_heal = Boolean.parseBoolean(prop.getProperty("ReviveHeal", "False")); propertySplit = prop.getProperty("Rewards", "57,100000").split(";"); for (String reward : propertySplit) { String[] rewardSplit = reward.split(","); if (rewardSplit.length == 2) { try { rewards.add(new int[] { Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1]) }); } catch (NumberFormatException nfe) { } } } } catch (Exception e) { e.printStackTrace(); } } private static int[][] parseItemsList(String line) { final String[] propertySplit = line.split(";"); if (propertySplit.length == 0) return null; int i = 0; String[] valueSplit; final int[][] result = new int[propertySplit.length][]; for (String value : propertySplit) { valueSplit = value.split(","); if (valueSplit.length != 3) return null; result[i] = new int[3]; try { result[i][0] = Integer.parseInt(valueSplit[0]); } catch (NumberFormatException e) { return null; } try { result[i][1] = Integer.parseInt(valueSplit[1]); } catch (NumberFormatException e) { return null; } try { result[i][2] = Integer.parseInt(valueSplit[2]); } catch (NumberFormatException e) { return null; } i++; } return result; } } ++++java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java +import net.sf.l2j.gameserver.model.zone.ZoneId; +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -96,6 +98,12 @@ if (item == null) return; + if (getClient().getActiveChar().isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.checkItem(item)) + { + getClient().getActiveChar().sendMessage("You cannot use " +item.getName()+ " inside this zone."); + return; + } + +++java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -54,6 +55,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.restart_zone) + { + player.sendMessage("You cannot restart while inside a Multifunction zone."); + sendPacket(RestartResponse.valueOf(false)); + return; + } + if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.NO_RESTART_HERE); +++config/MultiFunctionZone.properties # --------------------------------------------------------------------------- # MultiFunctionZone # --------------------------------------------------------------------------- # This option will turn on PvP flag to all people when entering to the zone EnablePvP = True # If set to false, zone will be no-restart zone NoRestartZone = False # If set to false, zone will be no-logout zone NoLogoutZone = False # If set to false, zone will be no-store zone NoStoreZone = False # Give noblesse after revive? ReviveNoblesse = False # Heal after revive? ReviveHeal = False # Delay, in seconds, to wait before revive # 0 to disable ReviveDelay = 10 # Set the spawn points where players will be teleported on revive, if enabled # example:150111,144740,-12248;143665,144418,-12022;144443,147685,-12139 SpawnLoc = 150111,144740,-12248;143665,144418,-12022;144443,147685,-12139 # Random respawn radius RespawnRadius = 500 # If set to true, players will take noblesse blessing when entering GiveNoblesse = True # Remove buffs when entering to the zone RemoveBuffs = False # Remove pets when entering to the zone RemovePets = False # Special rewards when hunting inside this zone # example: 57,100000;14720,1 Rewards = 57,100000;14720,1 # List of Items(id's) that won't be usable inside this area and also will be unequiped when entering # (armor, weapons, scrolls, potions, etc), example: 728,7575, 6383, 1538 Items = 728,7575,6383,1538 # List of Grades that won't be usable inside this area and also will be unequiped when entering # example: D,C,B,A,S Grades = C,B,A # Items with this enchant or more won't be usable inside this area and also will be unequiped when entering # 0 to disable Enchant = 0 # Players with one of that classes won't be able to enter to the zone # example: 93,85,12 Classes = 92 \ No newline at end of file +++ data/xml/zones/MultiFunctionZone.xml <?xml version="1.0" encoding="UTF-8"?> <list> <zone type="MultiFunctionZone" shape="Cuboid" minZ="-3752" maxZ="-352"><!-- gludin_pvp --> <node X="-88411" Y="141732" /> <node X="-87429" Y="142708" /> <spawn X="-86979" Y="142402" Z="-3643" /> </zone> </list> CREDITS: ^Wyatt
  15. Hello i want to change the subclass max to 9 without asking for the elixir from 3 but i cant anyone have any idea?
  16. it's all good i fixed it it looks like this now http://prntscr.com/i6itv1
  17. i cant use code button dk why <code> if (Config.ALT_GAME_VIEWNPC) { final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/custom/mobinfo.htm"); html.replace("%class%", getClass().getSimpleName()); html.replace("%id%", getTemplate().getNpcId()); html.replace("%lvl%", getTemplate().getLevel()); html.replace("%name%", getTemplate().getName()); html.replace("%race%", getTemplate().getRace().toString()); html.replace("%tmplid%", getTemplate().getIdTemplate()); html.replace("%castle%", (getCastle() != null) ? getCastle().getName() : "none"); html.replace("%aggro%", (this instanceof Attackable) ? ((Attackable) this).getTemplate().getAggroRange() : 0); html.replace("%corpse%", getTemplate().getCorpseTime()); html.replace("%enchant%", getTemplate().getEnchantEffect()); html.replace("%hp%", (int) getCurrentHp()); html.replace("%hpmax%", getMaxHp()); html.replace("%mp%", (int) getCurrentMp()); html.replace("%mpmax%", getMaxMp()); html.replace("%patk%", getPAtk(null)); html.replace("%matk%", getMAtk(null, null)); html.replace("%pdef%", getPDef(null)); html.replace("%mdef%", getMDef(null, null)); html.replace("%accu%", getAccuracy()); html.replace("%evas%", getEvasionRate(null)); html.replace("%crit%", getCriticalHit(null, null)); html.replace("%rspd%", getMoveSpeed()); html.replace("%aspd%", getPAtkSpd()); html.replace("%cspd%", getMAtkSpd()); html.replace("%str%", getSTR()); html.replace("%dex%", getDEX()); html.replace("%con%", getCON()); html.replace("%int%", getINT()); html.replace("%wit%", getWIT()); html.replace("%men%", getMEN()); html.replace("%loc%", getX() + " " + getY() + " " + getZ()); html.replace("%dist%", (int) Math.sqrt(player.getDistanceSq(this))); html.replace("%ele_dfire%", getDefenseElementValue((byte) 2)); html.replace("%ele_dwater%", getDefenseElementValue((byte) 3)); html.replace("%ele_dwind%", getDefenseElementValue((byte) 1)); html.replace("%ele_dearth%", getDefenseElementValue((byte) 4)); html.replace("%ele_dholy%", getDefenseElementValue((byte) 5)); html.replace("%ele_ddark%", getDefenseElementValue((byte) 6)); for (final DropCategory cat : getTemplate().getDropData()) { final FastList<DropData> drops = (FastList<DropData>) cat.getAllDrops(); if (drops != null) for (final DropData drop : drops) { if (drop == null || ItemTable.getInstance().getTemplate(drop.getItemId()) == null || drop.getItemId() == 57 || drop.getItemId() == 5575) { continue; } String name = ItemTable.getInstance().getTemplate(drop.getItemId()).getName(); int countmin = ItemTable.getInstance().getTemplate(drop.getMinDrop()).getItemId(); int countmax = ItemTable.getInstance().getTemplate(drop.getMaxDrop()).getItemId(); if (drop.getChance() > 700000) { html.replace("<tr><td align=\"center\"><font color=\"0066FF\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } else if (drop.getChance() > 500000) { html.replace("<tr><td align=\"center\"><font color=\"FF99FF\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } else if (drop.getChance() > 300000) { html.replace("<tr><td align=\"center\"><font color=\"LEVEL\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } else if (drop.getChance() > 100000) { html.replace("<tr><td align=\"center\"><font color=\"666666\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } else if (drop.getChance() > 10000) { html.replace("<tr><td align=\"center\"><font color=\"FF8C00\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } else { html.replace("<tr><td align=\"center\"><font color=\"FF0000\">" + countmin + "-"+countmax+"&nbsp;"+name+"</font></td></tr>"); } } } </code>
  18. i tried to edit the npc.java but it didnt worked that's why i made voice command but it doesnt work this too im getting this error http://prntscr.com/i6grqu
  19. Hello i have this code but i cant make it work with % chance on item if anyone can help package net.sf.l2j.gameserver.handler.voicedcommandhandlers; import java.util.StringTokenizer; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.gameserver.datatables.ItemTable; import net.sf.l2j.gameserver.datatables.NpcTable; import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.model.item.DropCategory; import net.sf.l2j.gameserver.model.item.DropData; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; public class ShiftClickToNpc implements IVoicedCommandHandler { private static final int PAGE_LIMIT = 20; private static String[] _voicedCommands = { "show_droplist" }; @Override public boolean useVoicedCommand(String command, Player activeChar, String target) { final StringTokenizer st = new StringTokenizer(command, " "); st.nextToken(); if (command.startsWith("show_droplist")) { try { int npcId = Integer.parseInt(st.nextToken()); int page = (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 1; showNpcDropList(activeChar, npcId, page); } catch (Exception e) { activeChar.sendMessage("Usage: .show_droplist <npc_id> [<page>]"); } } return true; } private static void showNpcDropList(Player activeChar, int npcId, int page) { final NpcTemplate npcData = NpcTable.getInstance().getTemplate(npcId); if (npcData == null) { activeChar.sendMessage("Npc template is unknown for id: " + npcId + "."); return; } final StringBuilder sb = new StringBuilder(2000); StringUtil.append(sb, "<html><title>Show droplist page ", page, "</title><body><center><font color=\"LEVEL\">", npcData.getName(), " (", ")</font></center><br>"); if (!npcData.getDropData().isEmpty()) { sb.append("Drop type legend: <font color=\"3BB9FF\">Drop</font><br><table><tr><td width=20>item</td><td width=20>drop count</td></tr>"); int myPage = 1; int i = 0; int shown = 0; boolean hasMore = false; for (DropCategory cat : npcData.getDropData()) { if (shown == PAGE_LIMIT) { hasMore = true; break; } for (DropData drop : cat.getAllDrops()) { if (myPage != page) { i++; if (i == PAGE_LIMIT) { myPage++; i = 0; } continue; } if (shown == PAGE_LIMIT) { hasMore = true; break; } StringUtil.append(sb, "<font color=\\\"3BB9FF\\\"><tr><td>", ItemTable.getInstance().getTemplate(drop.getItemId()).getName(), " (", drop.getMinDrop(), " - ", drop.getMaxDrop(), ")</td></tr></font>"); shown++; } } sb.append("</table><table width=\"100%\" bgcolor=666666><tr>"); if (page > 1) { StringUtil.append(sb, "<td width=120><a action=\"bypass -h voiced_show_droplist ", npcId, " ", page - 1, "\">Prev Page</a></td>"); if (!hasMore) StringUtil.append(sb, "<td width=100>Page", page, "</td><td width=70></td></tr>"); } if (hasMore) { if (page <= 1) sb.append("<td width=120></td>"); StringUtil.append(sb, "<td width=100>Page ", page, "</td><td width=70><a action=\"bypass -h voiced_show_droplist ", npcId, " ", page + 1, "\">Next Page</a></td></tr>"); } sb.append("</table>"); } else sb.append("This NPC has no drops."); sb.append("</body></html>"); final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setHtml(sb.toString()); activeChar.sendPacket(html); } @Override public String[] getVoicedCommandList() { return _voicedCommands; } }
×
×
  • Create New...