Xenokage Posted September 7, 2018 Posted September 7, 2018 how am i supposed to add a fence to a zone ? i use //spawnfence 2 2000 2000 but after restart it dissapears , anyway to save ?
0 melron Posted October 14, 2018 Posted October 14, 2018 (edited) if you are using aCis: pastebin log with your gm and spawn fences , they will be stored to db. (in case of delete some of them use //listfence and click the fence you want) Edited October 14, 2018 by melron 1
1 SweeTs Posted September 7, 2018 Posted September 7, 2018 gameserver.data.xml package. You have there sooome examples of parsing xml data.
0 Reborn12 Posted September 7, 2018 Posted September 7, 2018 27 minutes ago, Xenokage said: how am i supposed to add a fence to a zone ? i use //spawnfence 2 2000 2000 but after restart it dissapears , anyway to save ? You can save them in xml with a code...
0 Xenokage Posted September 7, 2018 Author Posted September 7, 2018 (edited) 5 minutes ago, Reborn12 said: You can save them in xml with a code... can u be specific on wich xml i have to add the location values ? would it be on the zone xml like this ? <spawnfence 2 2000 2000 X="-119418" Y="-225003" Z="-3327" /> ???? Edited September 7, 2018 by Xenokage
0 SweeTs Posted September 7, 2018 Posted September 7, 2018 More like, a custom fence xml, parsed and spawned on server load. 1
0 Xenokage Posted September 7, 2018 Author Posted September 7, 2018 (edited) some example or a hand to parse the xml on fencetable ? Edited September 7, 2018 by Xenokage
0 Kara Posted October 5, 2018 Posted October 5, 2018 On 9/7/2018 at 2:19 PM, Reborn12 said: You can save them in xml with a code... Tell me the day SQL replaced with XML to store somethin cause im sure i was SLEEPING
0 xxdem Posted October 5, 2018 Posted October 5, 2018 2 minutes ago, Kara` said: Tell me the day SQL replaced with XML to store somethin cause im sure i was SLEEPING νοτ σθρε ιφ ρεταρδεδ ορ...;
0 Kara Posted October 5, 2018 Posted October 5, 2018 22 minutes ago, xxdem said: νοτ σθρε ιφ ρεταρδεδ ορ...; [GR] ονε ηθνδρετ περψεντ ρεταρδεδ [/GR]
0 wongerlt Posted October 13, 2018 Posted October 13, 2018 crappy code but still u can see example: fencetable.java package com.l2jfrozen.gameserver.datatables; import java.util.ArrayList; import java.util.Collection; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import com.l2jfrozen.gameserver.model.L2Object; import com.l2jfrozen.gameserver.model.actor.instance.L2FenceInstance; import java.util.logging.Logger; import com.l2jfrozen.util.database.L2DatabaseFactory; import com.l2jfrozen.gameserver.idfactory.IdFactory; import com.l2jfrozen.util.CloseUtil; public class FenceTable { protected static Logger _log = Logger.getLogger(FenceTable.class.getName()); public static void fencedelsql(int type,int locx,int locy,int locz,int width,int length){ Connection con; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("DELETE FROM `fences` WHERE `type`='"+type+"' AND `locx`='"+locx+"' AND `locy`='"+locy+"' AND `locz`='"+locz+"' AND `width`='"+width+"' AND `length`='"+length+"'"); statement.execute(); statement.close(); CloseUtil.close(con); } catch (Exception e) { e.printStackTrace(); } } public static void fencetogame(){ int g=0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); ResultSet rset; PreparedStatement statement = con.prepareStatement("SELECT * FROM `fences` WHERE 1"); rset = statement.executeQuery(); int type; int width; int length; int height; int locx; int locy; int locz; String name; while (rset.next()) { g++; type = rset.getInt("type"); width = rset.getInt("width"); length = rset.getInt("length"); height = rset.getInt("height"); locx = rset.getInt("locx"); locy = rset.getInt("locy"); locz = rset.getInt("locz"); name = rset.getString("name"); // spawn fence for (int i = 0;i < height;i++) { L2FenceInstance fence = new L2FenceInstance(IdFactory.getInstance().getNextId(), type, width, length, locz, locy, name); fence.spawnMe(locx, locy, locz); addFence(fence); } // spawn fence } } catch (Exception e) { e.printStackTrace(); } finally { CloseUtil.close(con); } _log.warning("Loaded "+g+" fences to world."); } public static ArrayList<L2FenceInstance> fences = new ArrayList<>(); public static void addFence(L2FenceInstance fence) { fences.add(fence); } public static ArrayList<L2FenceInstance> getAllFences() { return fences; } public static void removeFence(L2FenceInstance fence) { if (fences.contains(fence)) fences.remove(fence); } public static boolean canSeeTarget(L2Object source, int x, int y) { Collection<L2Object> objects = source.getKnownList().getKnownObjects().values(); for (L2Object obj : objects) { if (obj instanceof L2FenceInstance) { L2FenceInstance fence = (L2FenceInstance) obj; if (fence.isBetween(source.getX(), source.getY(), x, y)) return false; } } return true; } public static boolean canSeeTarget(int x, int y, int tx, int ty) { for (L2FenceInstance fence : fences) { if (fence.isBetween(x, y, tx, ty)) return false; } return true; } } gameserver java FenceTable.fencetogame(); admin command: else if (command.startsWith("admin_spawnfence")) { StringTokenizer st = new StringTokenizer(command, " "); try { st.nextToken(); int type = Integer.parseInt(st.nextToken()); int width = Integer.parseInt(st.nextToken()); int length = Integer.parseInt(st.nextToken()); int height = 1; String name = ""; if (st.hasMoreTokens()) height = Math.min(Integer.parseInt(st.nextToken()), 3); if (st.hasMoreTokens()) name = st.nextToken(); for (int i = 0;i < height;i++) { L2FenceInstance fence = new L2FenceInstance(IdFactory.getInstance().getNextId(), type, width, length, activeChar.getX(), activeChar.getY(), name); fence.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); FenceTable.addFence(fence); fence.fencetosql(type,activeChar.getX(),activeChar.getY(),activeChar.getZ(),width,length, height,name); } } catch (Exception e) { activeChar.sendMessage("Usage: //spawnfence <type> <width> <length> [<height>]"); } } else if (command.startsWith("admin_deletefence")) { StringTokenizer st = new StringTokenizer(command, " "); st.nextToken(); int idas = Integer.parseInt(st.nextToken()); for (L2FenceInstance fencex : FenceTable.getAllFences()) { if(fencex.getObjectId()==idas) { FenceTable.fencedelsql(fencex.getType(),fencex.getX(),fencex.getY(),fencex.getZ(),fencex.getWidth(),fencex.getLength()); L2WorldRegion region = fencex.getWorldRegion(); fencex.decayMe(); region.removeVisibleObject(fencex); fencex.getKnownList().removeAllKnownObjects(); L2World.getInstance().removeObject(fencex); FenceTable.removeFence(fencex); activeChar.sendMessage("Deleted fence " + fencex.getObjectId()); listFences(activeChar); } } } else if (command.startsWith("admin_listfence")) listFences(activeChar); .... private static void listFences(L2PcInstance activeChar) { NpcHtmlMessage html = new NpcHtmlMessage(0); StringBuilder sb = new StringBuilder(); sb.append("<html><body>Total Fences: " + FenceTable.getAllFences().size() + "<br><br>"); for (L2FenceInstance fence : FenceTable.getAllFences()) sb.append("<a action=\"bypass admin_deletefence " + fence.getObjectId() + " 1\">Fence: "+fence.getNamex()+" " + fence.getObjectId() + " [" + fence.getX() + " " + fence.getY() + " " + fence.getZ() + "]</a><br>"); sb.append("</body></html>"); html.setHtml(sb.toString()); activeChar.sendPacket(html); } 1
0 Xenokage Posted October 15, 2018 Author Posted October 15, 2018 On 10/14/2018 at 3:53 AM, melron said: if you are using aCis: pastebin log with your gm and spawn fences , they will be stored to db. (in case of delete some of them use //listfence and click the fence you want) Thank you , Helpful as always :)) can lock !
Question
Xenokage
how am i supposed to add a fence to a zone ? i use //spawnfence 2 2000 2000 but after restart it dissapears , anyway to save ?
12 answers to this question
Recommended Posts