exity Posted July 10, 2012 Posted July 10, 2012 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
0 ^Wyatt Posted July 10, 2012 Posted July 10, 2012 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 exity Posted July 10, 2012 Author Posted July 10, 2012 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 exity Posted July 11, 2012 Author Posted July 11, 2012 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 Tryskell Posted July 12, 2012 Posted July 12, 2012 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.
0 exity Posted July 12, 2012 Author Posted July 12, 2012 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 Tryskell Posted July 13, 2012 Posted July 13, 2012 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 exity Posted July 13, 2012 Author Posted July 13, 2012 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
Question
exity
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