Jump to content
  • 0

[SOLVED]UseItem


Question

Posted

Hey, how i can check if a player is in a specific zone ive created, i want to check the zone ID ive tried "activeChar.isInsideZone(ZONE ID)" but i dont think it work :s

 

Any help?

 

Ty in advance

9 answers to this question

Recommended Posts

  • 0
Posted

It's correct...

when the zone is added to L2Character:

/** Zone system */
public static final byte ZONE_PVP = 0;

you can check it with:

if (activeChar.isInsideZone(L2Character.ZONE_PVP))

  • 0
Posted

Ive made a code to unequip some items based on item ID, OnEnter in a zone ive created, how i can restrict it in the UseItem.java, it is not working this way :s

  • 0
Posted

Is there any way to check if player do any action, like move, or smt?

 

i can check ppl item OnEnter(), but if they enter with noob items and them equip the forbid ones it dont take action, if i could check if they move or smt it would be better..

 

any help?

  • 0
Posted

In the zone itself, you put a code to unequip stuff in onEnter section.

 

In UseItem, you put a code to return in case you use itemId = xxxx in zone xx.

 

The prob is that i cant recall the zone to UseItem, i dont know how, ive tried if(activeChar.isInsideZone(ZONEID) didnt work, can u show me how to make it? or an exemple plz..

 

thx

  • 0
Posted

isInsideZone( works with zone CATEGORIES (as shown ^Wyatt in his post), X/Y, or X/Y/Z (cf. from an Object). The complete list of possible zones categories IDs can be found on L2Character.java, for instance, on aCis (my pack) it's :

 

	/** Zone system */
public static final byte ZONE_PVP = 0;
public static final byte ZONE_PEACE = 1;
public static final byte ZONE_SIEGE = 2;
public static final byte ZONE_MOTHERTREE = 3;
public static final byte ZONE_CLANHALL = 4;
public static final byte ZONE_NOLANDING = 5;
public static final byte ZONE_WATER = 6;
public static final byte ZONE_JAIL = 7;
public static final byte ZONE_MONSTERTRACK = 8;
public static final byte ZONE_CASTLE = 9;
public static final byte ZONE_SWAMP = 10;
public static final byte ZONE_NOSUMMONFRIEND = 11;
public static final byte ZONE_NOSTORE = 12;
public static final byte ZONE_TOWN = 13;
public static final byte ZONE_SCRIPT = 14;
public static final byte ZONE_HQ = 15;
public static final byte ZONE_DANGERAREA = 16;
public static final byte ZONE_CASTONARTIFACT = 17;
public static final byte ZONE_NORESTART = 18;

 

About check on a ZONEID, and not a ZONE CATEGORY, you have to use

 

public FastList<L2ZoneType> getZones(int x, int y, int z)
{
	L2WorldRegion region = L2World.getInstance().getRegion(x, y);
	FastList<L2ZoneType> temp = new FastList<>();
	for (L2ZoneType zone : region.getZones())
	{
		if (zone.isInsideZone(x, y, z))
			temp.add(zone);
	}
	return temp;
}

 

It can then be used to find a particular area, such a town area in following method :

 

public final static L2TownZone getTown(int x, int y, int z)
{
	for (L2ZoneType temp : ZoneManager.getInstance().getZones(x, y, z))
	{
		if (temp instanceof L2TownZone)
		{
			return (L2TownZone) temp;
		}
	}
	return null;
}

 

You can retrieve a zone by its ID with

	public L2ZoneType getZoneById(int id)
{
	for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
	{
		if (map.containsKey(id))
			return map.get(id);
	}
	return null;
}

And then launch particular code from that zone.

  • 0
Posted

Still cant make it to work, i have the code "OnEnter" to unequip the items, and ye it unequip when they port in, but they can be re equiped, so i think the prob is in UseItem still cant connect the zone i want with the method, i cant figure it out, sorry bieng so noob. :s

Guest
This topic is now closed to further replies.


×
×
  • Create New...