refert12 0 Опубликовано 30 апреля, 2015 Помогите сделать дино остров пвп зоной, у меня сборка l2j, в дате нет файла зона и я не знаю где его найти может тут не так делается подскажите кто то!? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
virusok 267 Опубликовано 30 апреля, 2015 там не файл зона, а папка зона должна быть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
2terege 67 Опубликовано 30 апреля, 2015 zone_vertices таблица у тебя есть а? и data\zones \ папка есть а? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
refert12 0 Опубликовано 30 апреля, 2015 zone_vertices таблица у тебя есть а? и data\zones \ папка есть а? таблица есть а папки нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
2terege 67 Опубликовано 30 апреля, 2015 Можешь дать ядро серва посмотреть через скайп Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
2terege 67 Опубликовано 30 апреля, 2015 /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package *.gameserver.instancemanager; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Collection; import javax.xml.parsers.DocumentBuilderFactory; import javolution.util.FastList; import javolution.util.FastMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import *.Config; import *.L2DatabaseFactory; import *.gameserver.model.L2World; import *.gameserver.model.L2WorldRegion; import *.gameserver.model.actor.L2Character; import *.gameserver.model.zone.L2ZoneForm; import *.gameserver.model.zone.L2ZoneType; import *.gameserver.model.zone.form.ZoneCuboid; import *.gameserver.model.zone.form.ZoneCylinder; import *.gameserver.model.zone.form.ZoneNPoly; import *.gameserver.model.zone.type.L2ArenaZone; import *.gameserver.model.zone.type.L2BigheadZone; import *.gameserver.model.zone.type.L2BossZone; import *.gameserver.model.zone.type.L2CastleTeleportZone; import *.gameserver.model.zone.type.L2CastleZone; import *.gameserver.model.zone.type.L2ClanHallZone; import *.gameserver.model.zone.type.L2DamageZone; import *.gameserver.model.zone.type.L2DerbyTrackZone; import *.gameserver.model.zone.type.L2FishingZone; import *.gameserver.model.zone.type.L2FortZone; import *.gameserver.model.zone.type.L2HellBoundZone; import *.gameserver.model.zone.type.L2JailZone; import *.gameserver.model.zone.type.L2LandingZone; import *.gameserver.model.zone.type.L2MotherTreeZone; import *.gameserver.model.zone.type.L2NoHqZone; import *.gameserver.model.zone.type.L2NoLandingZone; import *.gameserver.model.zone.type.L2NoStoreZone; import *.gameserver.model.zone.type.L2OlympiadStadiumZone; import *.gameserver.model.zone.type.L2PaganZone; import *.gameserver.model.zone.type.L2PeaceZone; import *.gameserver.model.zone.type.L2PoisonZone; import *.gameserver.model.zone.type.L2ScriptZone; import *.gameserver.model.zone.type.L2SwampZone; import *.gameserver.model.zone.type.L2TownZone; import *.gameserver.model.zone.type.L2WaterZone; /** * This class manages the augmentation data and can also create new augmentations. * * @author durgus */ public class ZoneManager { private final static Log _log = LogFactory.getLog(ZoneManager.class); private final FastMap<Integer, L2ZoneType> _zones = new FastMap<Integer, L2ZoneType>(); public static final ZoneManager getInstance() { return SingletonHolder._instance; } // ========================================================= // Data Field // ========================================================= // Constructor private ZoneManager() { load(); } public void reload() { // int zoneCount = 0; // Get the world regions int count = 0; L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions(); for (int x = 0; x < worldRegions.length; x++) { for (int y = 0; y < worldRegions[x].length; y++) { worldRegions[x][y].clearZones(); count++; } } GrandBossManager.getInstance().getZones().clear(); _log.info("Removed zones in " + count + " regions."); load(); } // ========================================================= // Method - Private @SuppressWarnings("unchecked") private final void load() { _log.info("Loading zones..."); Connection con = null; int zoneCount = 0; _zones.clear(); // Get the world regions L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions(); try { con = L2DatabaseFactory.getInstance().getConnection(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setIgnoringComments(true); File file = new File(Config.DATAPACK_ROOT + "/data/zones/zone.xml"); if (!file.exists()) { if (Config.DEBUG) _log.info("The zone.xml file is missing."); return; } Document doc = factory.newDocumentBuilder().parse(file); FastList[][] regZones = new FastList[worldRegions.length][]; for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling()) { if ("list".equalsIgnoreCase(n.getNodeName())) { for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("zone".equalsIgnoreCase(d.getNodeName())) { NamedNodeMap attrs = d.getAttributes(); int zoneId = Integer.parseInt(attrs.getNamedItem("id").getNodeValue()); int minZ = Integer.parseInt(attrs.getNamedItem("minZ").getNodeValue()); int maxZ = Integer.parseInt(attrs.getNamedItem("maxZ").getNodeValue()); String zoneType = attrs.getNamedItem("type").getNodeValue(); String zoneShape = attrs.getNamedItem("shape").getNodeValue(); // Create the zone L2ZoneType temp = null; if (zoneType.equals("FishingZone")) temp = new L2FishingZone(zoneId); else if (zoneType.equals("ClanHallZone")) temp = new L2ClanHallZone(zoneId); else if (zoneType.equals("PeaceZone")) temp = new L2PeaceZone(zoneId); else if (zoneType.equals("Town")) temp = new L2TownZone(zoneId); else if (zoneType.equals("OlympiadStadium")) temp = new L2OlympiadStadiumZone(zoneId); else if (zoneType.equals("CastleZone")) temp = new L2CastleZone(zoneId); else if (zoneType.equals("CastleTeleportZone")) temp = new L2CastleTeleportZone(zoneId); else if (zoneType.equals("FortZone")) temp = new L2FortZone(zoneId); else if (zoneType.equals("DamageZone")) temp = new L2DamageZone(zoneId); else if (zoneType.equals("PoisonZone")) temp = new L2PoisonZone(zoneId); else if (zoneType.equals("SwampZone")) temp = new L2SwampZone(zoneId); else if (zoneType.equals("Arena")) temp = new L2ArenaZone(zoneId); else if (zoneType.equals("MotherTree")) temp = new L2MotherTreeZone(zoneId); else if (zoneType.equals("BigheadZone")) temp = new L2BigheadZone(zoneId); else if (zoneType.equals("LandingZone")) temp = new L2LandingZone(zoneId); else if (zoneType.equals("NoLandingZone")) temp = new L2NoLandingZone(zoneId); else if (zoneType.equals("JailZone")) temp = new L2JailZone(zoneId); else if (zoneType.equals("DerbyTrackZone")) temp = new L2DerbyTrackZone(zoneId); else if (zoneType.equals("BossZone")) temp = new L2BossZone(zoneId); else if (zoneType.equals("WaterZone")) temp = new L2WaterZone(zoneId); else if (zoneType.equals("NoStoreZone")) temp = new L2NoStoreZone(zoneId); else if (zoneType.equals("PaganZone")) temp = new L2PaganZone(zoneId); else if (zoneType.equals("NoHqZone")) temp = new L2NoHqZone(zoneId); else if (zoneType.equals("HellBoundZone")) temp = new L2HellBoundZone(zoneId); else if (zoneType.equals("ScriptZone")) temp = new L2ScriptZone(zoneId); // Check for unknown type if (temp == null) { _log.warn("ZoneData: No such zone type: " + zoneType); continue; } // Get the zone shape from sql try { PreparedStatement statement = null; // Set the correct query statement = con.prepareStatement("SELECT x,y FROM zone_vertices WHERE id=? ORDER BY 'order' ASC "); statement.setInt(1, zoneId); ResultSet rset = statement.executeQuery(); // Create this zone. Parsing for cuboids is a // bit different than for other polygons // cuboids need exactly 2 points to be defined. // Other polygons need at least 3 (one per // vertex) if (zoneShape.equalsIgnoreCase("Cuboid")) { int[] x = { 0, 0 }; int[] y = { 0, 0 }; boolean successfulLoad = true; for (int i = 0; i < 2; i++) { if (rset.next()) { x = rset.getInt("x"); y = rset.getInt("y"); } else { _log.warn("ZoneData: Missing cuboid vertex in sql data for zone: " + zoneId); rset.close(); statement.close(); successfulLoad = false; break; } } if (successfulLoad) temp.setZone(new ZoneCuboid(x[0], x[1], y[0], y[1], minZ, maxZ)); else continue; } else if (zoneShape.equalsIgnoreCase("NPoly")) { FastList<Integer> fl_x = new FastList<Integer>(), fl_y = new FastList<Integer>(); while (rset.next()) { fl_x.add(rset.getInt("x")); fl_y.add(rset.getInt("y")); } // An nPoly needs to have at least 3 // vertices if ((fl_x.size() == fl_y.size()) && (fl_x.size() > 2)) { // Create arrays int[] aX = new int[fl_x.size()]; int[] aY = new int[fl_y.size()]; // This runs only at server startup so // don't complain :> for (int i = 0; i < fl_x.size(); i++) { aX = fl_x.get(i); aY = fl_y.get(i); } // Create the zone temp.setZone(new ZoneNPoly(aX, aY, minZ, maxZ)); } else { _log.warn("ZoneData: Bad sql data for zone: " + zoneId); rset.close(); statement.close(); continue; } } else if (zoneShape.equalsIgnoreCase("Cylinder")) { // A Cylinder zone requires a center point // at x,y and a radius int zoneRad = Integer.parseInt(attrs.getNamedItem("rad").getNodeValue()); if (rset.next() && zoneRad > 0) { int zoneX = rset.getInt("x"); int zoneY = rset.getInt("y"); // create the zone temp.setZone(new ZoneCylinder(zoneX, zoneY, minZ, maxZ, zoneRad)); } else { _log.warn("ZoneData: Bad sql data for zone: " + zoneId); rset.close(); statement.close(); continue; } } else { _log.warn("ZoneData: Unknown shape: " + zoneShape); rset.close(); statement.close(); continue; } rset.close(); statement.close(); } catch (Exception e) { _log.warn("ZoneData: Failed to load zone coordinates: " + e); } // Check for additional parameters for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("stat".equalsIgnoreCase(cd.getNodeName())) { attrs = cd.getAttributes(); String name = attrs.getNamedItem("name").getNodeValue(); String val = attrs.getNamedItem("val").getNodeValue(); temp.setParameter(name, val); } } addZone(zoneId, temp); L2ZoneForm form = temp.getZone(); // Register the zone into any world region it // intersects with... // currently 11136 test for each zone :> int ax, ay, bx, by; for (int x = 0; x < worldRegions.length; x++) { if (regZones[x] == null) regZones[x] = new FastList[worldRegions[x].length]; for (int y = 0; y < worldRegions[x].length; y++) { ax = (x - L2World.OFFSET_X) << L2World.SHIFT_BY; bx = ((x + 1) - L2World.OFFSET_X) << L2World.SHIFT_BY; ay = (y - L2World.OFFSET_Y) << L2World.SHIFT_BY; by = ((y + 1) - L2World.OFFSET_Y) << L2World.SHIFT_BY; if (form.intersectsRectangle(ax, bx, ay, by)) { if (Config.DEBUG) { _log.info("Zone (" + zoneId + ") added to: " + x + " " + y); } if (regZones[x][y] == null) regZones[x][y] = new FastList<L2ZoneType>(); regZones[x][y].add(temp); } } } // Special managers for granbosses... if (temp instanceof L2BossZone) GrandBossManager.getInstance().addZone((L2BossZone) temp); // Increase the counter zoneCount++; } } } } for (int x = 0; x < worldRegions.length; x++) { for (int y = 0; y < worldRegions[x].length; y++) { if (regZones[x][y] != null) worldRegions[x][y].setZones(regZones[x][y]); } } } catch (Exception e) { _log.error("Error while loading zones.", e); return; } finally { L2DatabaseFactory.close(con); } _log.info("ZoneManager: Loaded: " + zoneCount + " zones."); } /** * Add new zone * * @param zone */ public void addZone(Integer id, L2ZoneType zone) { _zones.put(id, zone); } /** * Returns all zones registered with the ZoneManager. To minimise iteration processing retrieve zones from L2WorldRegion for a specific location instead. * * @return zones */ public Collection<L2ZoneType> getAllZones() { return _zones.values(); } public L2ZoneType getZoneById(int id) { return _zones.get(id); } /** * Returns all zones from given coordinates (plane) * * @param x * @param y * @return zones */ public FastList<L2ZoneType> getZones(int x, int y) { L2WorldRegion region = L2World.getInstance().getRegion(x, y); FastList<L2ZoneType> temp = new FastList<L2ZoneType>(); for (L2ZoneType zone : region.getZones()) { if (zone.isInsideZone(x, y)) temp.add(zone); } return temp; } /** * Returns all zones from given coordinates * * @param x * @param y * @param z * @return zones */ public FastList<L2ZoneType> getZones(int x, int y, int z) { L2WorldRegion region = L2World.getInstance().getRegion(x, y); FastList<L2ZoneType> temp = new FastList<L2ZoneType>(); for (L2ZoneType zone : region.getZones()) { if (zone.isInsideZone(x, y, z)) temp.add(zone); } return temp; } public final L2ArenaZone getArena(L2Character character) { for (L2ZoneType temp : ZoneManager.getInstance().getZones(character.getX(), character.getY(), character.getZ())) { if (temp instanceof L2ArenaZone && temp.isCharacterInZone(character)) return ((L2ArenaZone) temp); } return null; } public final L2OlympiadStadiumZone getOlympiadStadium(L2Character character) { for (L2ZoneType temp : ZoneManager.getInstance().getZones(character.getX(), character.getY(), character.getZ())) { if (temp instanceof L2OlympiadStadiumZone && temp.isCharacterInZone(character)) return ((L2OlympiadStadiumZone) temp); } return null; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final ZoneManager _instance = new ZoneManager(); } } Это у меня а ты у себя в ядре глянь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
2terege 67 Опубликовано 30 апреля, 2015 http://forummaxi.ru/topic/66902-мирная-зона-на-l2jlovely/ <<<----- тока у тебя наоборот идет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты