tomalko Posted June 29, 2017 Posted June 29, 2017 Teleportcustom command Easily supplemented Who is interested in Checked 99,9 dist\game\data\scripts\handlers\voicedcommandhandlers\TeleportCustom.java ======================================================================= package handlers.voicedcommandhandlers; import java.util.HashMap; import java.util.Map; import com.l2jserver.gameserver.handler.IVoicedCommandHandler; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.clientpackets.Say2; import com.l2jserver.gameserver.network.serverpackets.CreatureSay; public class TeleportCustom implements IVoicedCommandHandler { private static final String[] VOICED_COMMANDS = { "giran", "aden", "oren", "dion", "goddard", "floran", "gludin", "gludio", "rune", "heine", "dwarvenvillage", "darkelvenvillage", "elvenvillage", "orcvillage", "talkingisland", "schuttgart", "huntersvillage" }; private static final long delay = 5000; // Milisegundos private static Map<Integer, Long> _reuse = new HashMap<>(); @Override public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { if (_reuse.containsKey(activeChar.getObjectId())) { if (_reuse.get(activeChar.getObjectId()) > System.currentTimeMillis()) { activeChar.sendMessage("Lo sentimos, no puedes usar este comando. Puedes usarlo dentro de " + ((_reuse.get(activeChar.getObjectId()) - System.currentTimeMillis()) / 1000) + " segs"); return false; } } /** I do not have if (activeChar.isInJail()) { activeChar.sendMessage("Lo sentimos, no puedes usar este comando, usted esta en la carcel"); return false; } else **/ if (activeChar.isDead()) { activeChar.sendMessage("You can't teleport while you are dead."); return false; } else if (activeChar.isInOlympiadMode()) { activeChar.sendMessage("Lo sentimos, no puedes usar este comando, usted esta en la Olimpiada ahora"); return false; } else if (activeChar.isInDuel()) { activeChar.sendMessage("Lo sentimos, no puedes usar este comando, usted esta en un duelo"); return false; } else if (activeChar.isInCombat()) { activeChar.sendMessage("lo sentimos, no puedes usar este comando, usted esta en modo combate!."); return false; } else if (activeChar.getPvpFlag() > 0) { CreatureSay i = new CreatureSay(activeChar.getObjectId(), Say2.PARTY, "admin", "No Puedes Huir cuando estes flaggeado.Termina Lo Que Empesaste..."); activeChar.sendPacket(i); return false; } else if (activeChar.inObserverMode()) { activeChar.sendMessage("Lo sentimos, no puedes usar este comando, usted esta en la observacion."); return false; } else if (activeChar.getInventory().getInventoryItemCount(57, 0) < 50000) { activeChar.sendMessage("No tienes adena suficiente"); return false; } if(command.startsWith("giran")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(82337, 148602, -3467); activeChar.sendMessage("Usted ha sido transportado a Giran"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("dion")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(18492, 145386, -3118); activeChar.sendMessage("Usted ha sido transportado a Dion"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("oren")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(82769, 53573, -1498); activeChar.sendMessage("Usted ha sido transportado a Oren"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("gludio")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-12864, 122716, -3117); activeChar.sendMessage("Usted ha sido transportado a Gludio"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("gludin")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-80928, 150055, -3044); activeChar.sendMessage("Usted ha sido transportado a Gludin"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("aden")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(147361, 26953, -2205); activeChar.sendMessage("Usted ha sido transportado a Aden"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("schuttgart")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(87359, -143224, -1293); activeChar.sendMessage("Usted ha sido transportado a Schuttgart"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("orcvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-44429, -113596, -220); activeChar.sendMessage("Usted ha sido transportado a Orcvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("darkelvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(11620, 16780, -4662); activeChar.sendMessage("Usted ha sido transportado a Darkelvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("elvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(47050, 50767, -2996); activeChar.sendMessage("Usted ha sido transportado a Elvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("dwarvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(115526, -178660, -945); activeChar.sendMessage("Usted ha sido transportado a Dwarvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("heine")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(111396, 219254, -3546); activeChar.sendMessage("Usted ha sido transportado a Heine"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("huntersvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(116440, 76320, -2730); activeChar.sendMessage("Usted ha sido transportado a Huntersvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("floran")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(17144, 170156, -3502); activeChar.sendMessage("Usted ha sido transportado a Floran"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("goddard")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(147720, -55560, -2735); activeChar.sendMessage("Usted ha sido transportado a Goddard"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("rune")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(43848, -48033, -797); activeChar.sendMessage("Usted ha sido transportado a Rune"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } return true; } @Override public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } dist\game\data\scripts\handlers\MasterHandler.java =============================================================== import handlers.voicedcommandhandlers.ChatAdmin; +import handlers.voicedcommandhandlers.TeleportCustom; import handlers.voicedcommandhandlers.Debug; // Voiced Command Handlers +++++++++++++++++++++++ (Config.L2JMOD_ALLOW_CHANGE_PASSWORD ? ChangePassword.class : null), TeleportCustom.class, Quote
Tryskell Posted June 29, 2017 Posted June 29, 2017 (edited) - ConcurrentException when multiple people will use it in same time, use ConcurrentHashMap. - containsKey + x2 .get can be replaced by a single .get on the first check. - All command.startsWith are exactly the same except the Location and sent message. You can create an Enum/Map/container to store everything and shortcut the 16 commands to 1. - All "else" when there is a return false (all integrity checks basically) are useless. That's the point to return false, command execution is broken at this state therefore other operations aren't processed. Edited June 29, 2017 by Tryskell Quote
tomalko Posted June 29, 2017 Author Posted June 29, 2017 - ConcurrentException when multiple people will use it in same time, use ConcurrentHashMap. - containsKey + x2 .get can be replaced by a single .get on the first check. - All command.startsWith are exactly the same except the Location and sent message. You can create an Enum/Map/container to store everything and shortcut the 16 commands to 1. - All "else" when there is a return false (all integrity checks basically) are useless. That's the point to return false, command execution is broken at this state therefore other operations aren't processed. Thanks... will reconsider its decision... Quote
tomalko Posted July 1, 2017 Author Posted July 1, 2017 Много лишней писанины. Оптимизируйте код. Вы правы можно и в массивы запихнуть... и сделать без контрольную точку... А надо ли это всё для не профессионала? Quote
melron Posted July 1, 2017 Posted July 1, 2017 if(command.startsWith("giran")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(82337, 148602, -3467); activeChar.sendMessage("Usted ha sido transportado a Giran"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("dion")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(18492, 145386, -3118); activeChar.sendMessage("Usted ha sido transportado a Dion"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("oren")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(82769, 53573, -1498); activeChar.sendMessage("Usted ha sido transportado a Oren"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("gludio")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-12864, 122716, -3117); activeChar.sendMessage("Usted ha sido transportado a Gludio"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("gludin")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-80928, 150055, -3044); activeChar.sendMessage("Usted ha sido transportado a Gludin"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("aden")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(147361, 26953, -2205); activeChar.sendMessage("Usted ha sido transportado a Aden"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("schuttgart")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(87359, -143224, -1293); activeChar.sendMessage("Usted ha sido transportado a Schuttgart"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("orcvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(-44429, -113596, -220); activeChar.sendMessage("Usted ha sido transportado a Orcvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("darkelvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(11620, 16780, -4662); activeChar.sendMessage("Usted ha sido transportado a Darkelvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("elvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(47050, 50767, -2996); activeChar.sendMessage("Usted ha sido transportado a Elvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("dwarvenvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(115526, -178660, -945); activeChar.sendMessage("Usted ha sido transportado a Dwarvenvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("heine")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(111396, 219254, -3546); activeChar.sendMessage("Usted ha sido transportado a Heine"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("huntersvillage")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(116440, 76320, -2730); activeChar.sendMessage("Usted ha sido transportado a Huntersvillage"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("floran")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(17144, 170156, -3502); activeChar.sendMessage("Usted ha sido transportado a Floran"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("goddard")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(147720, -55560, -2735); activeChar.sendMessage("Usted ha sido transportado a Goddard"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } else if(command.startsWith("rune")) { activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(43848, -48033, -797); activeChar.sendMessage("Usted ha sido transportado a Rune"); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); } public enum Towns { giran(new Location(82337, 148602, -3467)), aden(new Location(147361, 26953, -2205)), ...... oren(new Location(82769, 53573, -1498)); private Location location; Towns(Location loc) { this.location = loc; } public Location getLocation() { return location; } } activeChar.destroyItemByItemId("consume", 57, 50000, activeChar, true); activeChar.teleToLocation(Towns.valueOf(command).getLocation(), 30); activeChar.sendMessage("Usted ha sido transportado a " + command); _reuse.put(activeChar.getObjectId(), System.currentTimeMillis() + delay); Quote
Rootware Posted July 1, 2017 Posted July 1, 2017 Вы правы можно и в массивы запихнуть... и сделать без контрольную точку... А надо ли это всё для не профессионала? Это уже от вас зависит, кто вы. Очередной рукажоп или подающий надежды девелопер. Quote
tomalko Posted July 1, 2017 Author Posted July 1, 2017 (edited) Это уже от вас зависит, кто вы. Очередной рукажоп или подающий надежды девелопер. This isn't an error... And the course not in that party... Means will be the summary as it isn't correct to do... Who isn't mistaken? Especially have already pointed a finger on a mistake, Tryskell thanks... And in fact I will agree with you... Without having made a mistake you won't understand as to correct it... It is also a syllogism... My mistake... Consists in testing alone... It is not the complaint))))) Edited July 1, 2017 by tomalko Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.