Jump to content
  • 0

How can I edit an Admin Command?


Question

Posted

Hello averyone!

 

I want to edit an Admin command (//create_item). The problem is that only create items to me. I need that this commando be able to create the items to the target too.

Thank you!

Recommended Posts

  • 0
Posted

Okey, thanks for answer but considering that its doing nothing why is there?

 

Maybe for protection logs

  • 0
Posted

package handlers.admincommandhandlers;

import java.util.StringTokenizer;

import net.sf.l2j.gameserver.datatables.ItemTable;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.templates.item.L2Item;

/**
* This class handles following admin commands:
* - itemcreate = show menu
* - create_item <id> [num] = creates num items with respective id, if num is not specified, assumes 1.
*
* @version $Revision: 1.2.2.2.2.3 $ $Date: 2005/04/11 10:06:06 $
*/
public class AdminCreateItem implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
	"admin_itemcreate",
	"admin_create_item"
};

public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
	if (command.equals("admin_itemcreate"))
	{
		AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
	}
	else if (command.startsWith("admin_create_item"))
	{
		try
		{
			L2PcInstance p = activeChar;
			if (activeChar.getTarget() != null && instanceof L2PcInstance)
				p = activeChar.getTarget();
			String val = command.substring(17);
			StringTokenizer st = new StringTokenizer(val);
			if (st.countTokens() == 2)
			{
				String id = st.nextToken();
				int idval = Integer.parseInt(id);
				String num = st.nextToken();
				long numval = Long.parseLong(num);
				createItem(p, idval, numval);
			}
			else if (st.countTokens() == 1)
			{
				String id = st.nextToken();
				int idval = Integer.parseInt(id);
				createItem(p, idval, 1);
			}
		}
		catch (StringIndexOutOfBoundsException e)
		{
			activeChar.sendMessage("Usage: //itemcreate <itemId> [amount]");
		}
		catch (NumberFormatException nfe)
		{
			activeChar.sendMessage("Specify a valid number.");
		}
		AdminHelpPage.showHelpPage(activeChar, "itemcreation.htm");
	}
	return true;
}

public String[] getAdminCommandList()
{
	return ADMIN_COMMANDS;
}

private void createItem(L2PcInstance activeChar, int id, long num)
{
	L2Item template = ItemTable.getInstance().getTemplate(id);
	if (template == null)
	{
		activeChar.sendMessage("This item doesn't exist.");
		return;
	}
	if (num > 20)
	{
		if (!template.isStackable())
		{
			activeChar.sendMessage("This item does not stack - Creation aborted.");
			return;
		}
	}

	activeChar.getInventory().addItem("Admin", id, num, activeChar, null);

	ItemList il = new ItemList(activeChar, true);
	activeChar.sendPacket(il);

	activeChar.sendMessage("You have spawned " + num + " item(s) number " + id + " in your inventory.");
}
}

 

This will be ok

 

Thanks for help!

 

It returned an error:

js.png

 

Thanks!

  • 0
Posted

O.o wait...

activeChar.getInventory().addItem("Admin", id, num, activeChar, null);

"Admin"

 

I'm not sure what this does exacly... remove it and check if smth changed :D

 

It did not work. Thanks anyway!

  • 0
Posted

Thanks for help!

 

It returned an error:

js.png

 

Thanks!

 

That was okay, just simply do this:

This line:

    if (activeChar.getTarget() != null && instanceof L2PcInstance)

Replace with this:

    if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)

  • 0
Posted

the post is from 2009, u both got tricked by a spammer XD

 

edit: damn wifi, opened the wrong topic.. ignore what u just read >.>

  • 0
Posted

the post is from 2009, u both got tricked by a spammer XD

 

edit: damn wifi, opened the wrong topic.. ignore what u just read >.>

ahahahha

 

xdem nice baloni code :X

  • 0
Posted

 

xdem nice baloni code :X

 

nothing wrong with the code just a mistake I made cause I didnt had eclipse and wrote it here direcrtly :P

  • 0
Posted

That was okay, just simply do this:

This line:

    if (activeChar.getTarget() != null && instanceof L2PcInstance)

Replace with this:

    if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)

 

Thank you again!

Well I changed it and now I got this error:

 

udk.png

  • 0
Posted

yea you need to cast

 

this

p = activeChar.getTarget();

 

to

p = (L2PcInstance) activeChar.getTarget();

 

OR (more secure) but still you have the instanceof above =p

p = activeChar.getTarget().getActingPlayer();

  • 0
Posted

yea you need to cast

 

this

p = activeChar.getTarget();

 

to

p = (L2PcInstance) activeChar.getTarget();

 

OR (more secure) but still you have the instanceof above =p

p = activeChar.getTarget().getActingPlayer();

 

Now it works! Thank you very much, you are amazing!

 

P.D.: Is working with "p = (L2PcInstance) activeChar.getTarget();"

Guest
This topic is now closed to further replies.


×
×
  • Create New...