Jump to content

Teleportcustom (Voicedcommandhandlers)


Recommended Posts

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,
 

 

 

Link to comment
Share on other sites

- 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 by Tryskell
Link to comment
Share on other sites

- 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...

Link to comment
Share on other sites

Много лишней писанины. Оптимизируйте код.

Вы правы можно и в массивы запихнуть... и сделать без контрольную точку... А надо ли это всё для не профессионала? 

Link to comment
Share on other sites


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);

 

Link to comment
Share on other sites

Вы правы можно и в массивы запихнуть... и сделать без контрольную точку... А надо ли это всё для не профессионала? 

 

Это уже от вас зависит, кто вы. Очередной рукажоп или подающий надежды девелопер.

Link to comment
Share on other sites

Это уже от вас зависит, кто вы. Очередной рукажоп или подающий надежды девелопер.

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 by tomalko
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Good afternoon everyone, we’ll get a couple of strong players in the CP, more details can be found here https://mw2.community/topic/211276-awr-team/  
    • so i bought this crap of the server few years back and i just found it laying around on my pc and i thought i should share it, if i remember correctly this crap has a lot of bugs that people abuse 🙂   https://drive.google.com/file/d/13QWg8pi4BPbGbTmlygZ078LjL6Fb0J2a/view?usp=sharing source   https://drive.google.com/file/d/13QWg8pi4BPbGbTmlygZ078LjL6Fb0J2a/view?usp=sharing system    
    • Error: Unable to access jarfile libs\Geodata_Converter_v01.jar
    • Since last massive leak as explained as 07/09 (notably all development branches), I don't accept anymore financial newcomers that easily. People will have to contribute 100 cookies worth of contributions (bug reports/fixes) as a first step to be accepted as Donator. Free user can join after sharing over 200 cookies out of contributions, compared to 100 cookies before. You can say thanks to RusAcis, and notably his worthless leader, UnleashedForce. The size of users will continue to shrink if more leaks occur, until true helpers only will be left. New prices are as following : Joining price: 200€ + 100 cookies, or 200 cookies This fee has to be paid if you are joining aCis project. Next month, and all other months, you will have to donate only basic monthly donation. Monthly price: 10€ / 10 cookies This fee has to be paid every month. I won't accept any new join fee before the 100 cookies contribution. Your money will be instantly sent back. Also, in the same shape of idea, actual supporters/donators have to be active to stay in sources. It doesn't have to be a particular amount, you just have to share from time to time *anything*. I don't accept anymore silent ppl. Only useful people will be kept.
    • @Kenrix Hello. my friend bought from you the panel and he told me that he haven't recieved yet his product whats going on?.
  • Topics

×
×
  • Create New...