Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Lineage 2 > Lin2 Guides & Templates
You last visited: Today at 15:22

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Share]AutoAnnounce - XML

Discussion on [Share]AutoAnnounce - XML within the Lin2 Guides & Templates forum part of the Lineage 2 category.

Reply
 
Old   #1
 
Vεntic's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 4
Received Thanks: 1
[Share]AutoAnnounce - XML

I just remembered that feature for l2j,and since i was practising with xml-java i started doing it.I havent test it,but i guess works.Feedback plz

Tested:Yes
Working:Yes

Code:
Index: data/xml/autoannounce.xml
===================================================================
--- data/xml/autoannounce.xml	(revision 0)
+++ data/xml/autoannounce.xml	(revision 0)
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list>
+	<message text="By Ventic!"/>
+	<message text="Kisses!"/>
+</list>
Index: java/net/sf/l2j/gameserver/datatables/xml/AutoAnnounce.java
===================================================================
--- java/net/sf/l2j/gameserver/datatables/xml/AutoAnnounce.java	(revision 0)
+++ java/net/sf/l2j/gameserver/datatables/xml/AutoAnnounce.java	(revision 0)
@@ -0,0 +1,107 @@
+/*
+ * 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 net.sf.l2j.gameserver.datatables.xml;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.logging.Logger;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import javolution.util.FastList;
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.ThreadPoolManager;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+/**
+ * @author  Ventic
+ */
+
+public class AutoAnnounce
+{
+	private static final Logger log = Logger.getLogger(AutoAnnounce.class.getName());
+	private FastList<String> messages = new FastList<String>();
+	
+	private class AutoAnnounceTask implements Runnable
+	{
+		@SuppressWarnings("synthetic-access")
+		public void run()
+		{
+			loadData();
+		}
+	}
+	
+	private void loadData()
+	{
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setValidating(false);
+		factory.setIgnoringComments(true);
+		File f = new File(Config.DATAPACK_ROOT + "/data/xml/autoannounce.xml");
+		
+		if (!f.exists())
+		{
+			log.warning("autoannounce.xml could not be loaded: file not found");
+			return;
+		}
+		try
+		{
+			InputSource in = new InputSource(new InputStreamReader(new FileInputStream(f), "UTF-8"));
+			in.setEncoding("UTF-8");
+			Document doc = factory.newDocumentBuilder().parse(f);
+			for (Node na = doc.getFirstChild(); na != null; na = na.getNextSibling())
+			{
+				if(na.getNodeName().equalsIgnoreCase("list"))
+				{
+					for (Node n = na.getFirstChild(); n != null; n = n.getNextSibling())
+					{
+						if (n.getNodeName().equals("message"))
+						{
+							NamedNodeMap ndm = n.getAttributes();
+							String message = ndm.getNamedItem("text").getNodeValue();
+							if (!messages.contains(message))
+							{
+								messages.add(message);
+							}
+							Announcements.getInstance().announceToAll(message);
+						}
+					}
+				}
+			}
+		}
+		catch (Exception e)
+		{}
+	}
+	
+	public static AutoAnnounce getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
+	private static class SingletonHolder
+	{
+		@SuppressWarnings("synthetic-access")
+		protected static final AutoAnnounce _instance = new AutoAnnounce();
+	}
+	
+	@SuppressWarnings("synthetic-access")
+	private AutoAnnounce()
+	{
+		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoAnnounceTask(), 120000, 120000);
+	}
+}
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 73)
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -51,6 +51,7 @@
 import net.sf.l2j.gameserver.datatables.sql.SpawnTable;
 import net.sf.l2j.gameserver.datatables.xml.ArmorSetsTable;
 import net.sf.l2j.gameserver.datatables.xml.AugmentationData;
+import net.sf.l2j.gameserver.datatables.xml.AutoAnnounce;
 import net.sf.l2j.gameserver.datatables.xml.CharTemplateTable;
 import net.sf.l2j.gameserver.datatables.xml.FishTable;
 import net.sf.l2j.gameserver.datatables.xml.HelperBuffTable;
@@ -247,6 +248,7 @@
 	 	AdminCommandAccessRights.getInstance();
 		L2World.getInstance();
 		ZoneManager.getInstance();
+		AutoAnnounce.getInstance();
         SpawnTable.getInstance();
         RaidBossSpawnManager.getInstance();
         _log.config("GrandBossManager: Loaded " + GrandBossManager.getInstance().size() + " GrandBosses instances.");
Credits Me
Vεntic is offline  
Reply


Similar Threads Similar Threads
[S] Rapids/Netload/Ul.to/Share.cx/Share-Online Acc [B] e*gold
06/16/2011 - elite*gold Trading - 4 Replies
Servus, ich suche Premium Accounts von den oben genannten Diensten. Schreibt mir wieviel Tage ihr habt und wieviel eg ihr wollt.
[S] Netload/Share.cx/Share-Online Premium Account [B] e*gold, PSC, PP. Rapids
06/14/2011 - elite*gold Trading - 10 Replies
Hallo, Ich suche Netload/Share.cx/Share-Online Premium Accounts. Diese sollten mindestens 3 Tage laufen und maximal 1 Jahr. Ich bezahle via e*gold (werde dann ggf. welches kaufen), PaySafeCard, Rapids oder PayPal (am liebsten). Schreibt mir eure Gebote. Grüße
[S] Share.cx/Share-Online Account/Mituseservice [B] e*gold
05/29/2011 - elite*gold Trading - 3 Replies
Hallo, Ich suche für einen Download (5GB) einen Share.cx/Share-Online Account oder Mituseservice. Biete euch e*gold. Schreibt mir einfach mal eure Angebote :D



All times are GMT +1. The time now is 15:22.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.