Jump to content

Question

12 answers to this question

Recommended Posts

  • 0
Posted (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 by melron
  • Upvote 1
  • 0
Posted
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
Posted (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 by Xenokage
  • 0
Posted
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
Posted
2 minutes ago, Kara` said:

Tell me the day SQL replaced with XML to store somethin cause im sure i was SLEEPING

 

νοτ σθρε ιφ ρεταρδεδ ορ...;

  • 0
Posted

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);
	}

 

  • Upvote 1
  • 0
Posted
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 ! 

Guest
This topic is now closed to further replies.


  • Posts

    • Only 3 days left and we'll start with some events, you can check our Discord for more info!
    • Tired of frantically switching between windows trying to find that specific Warlock who should be casting saves? Forgot which server you left your Warsmith on? This mod solves these problems! What it does: Turns the boring window title into an information panel: Server Name - Character Name [Class] Real-life examples: - ServerName - HardcoreFarm [Spoilerr] (who's been spoiling for 3 months already) - ServerName - ClericHelper [Buffer] (eternal buffer on standby) - ServerName - MainChar [Gladiator] (main character who's always AFK) Why you need this: For multiboxers - to avoid confusing where the DD is and where the healer is For the forgetful - if your memory is like a goldfish For streamers - viewers immediately see who's on screen For adults - when playing at work and need to quickly hide the window DLL only - no Interface files needed Installation (more complicated than making tea): 1. Download the DLL 2. Drop it into the System folder 3. Launch the client 4. Be amazed how you lived without this before! Purchase Conditions: Price: 100$ Payment Method: USDT. How to Buy: Contact me on Telegram: @kiselevwv for a quick response. I will answer all your questions and provide additional information if needed. I guarantee functionality at the moment of sale and prompt assistance with setup after purchase.
    • I agree, l2damage crap to compare to l2java which was the father of pvp servers and till this days people playing there for good time.
    • 📝 Registration — Account Registration Creating a new player account. Usually includes: login password password confirmation email Result: a new record is created in the accounts table (loginserver). 🔑 Change Password — Password Change The player changes the password knowing the current one. Required: current password new password new password confirmation Result: the password field is updated in the accounts table. ♻️ Password Recovery — Password Reset If the player forgot the password. Implementation only via email: the player enters their login, email the system sends an email with a link or code the player opens the link / enters the code sets a new password Result: the password is updated in the accounts table.   All fields are validated (required, format, length, uniqueness, security checks).   Price: 80$   and i can rewrite script for PTS server.   Contacts:   Telegram Discord
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..