Jump to content

Recommended Posts

Posted

Tested:Yes

Working:Yes

 

Picture:

UEn0P.jpg

 

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

Posted

ε ναι αλλα τι διαφορα εχει το config απο το xml? Ισως να ειναι πιο ευκολο το xml αλλα εφοσον το εχεις ηδη added με config ....

Posted

apla ekana practise,kai to kana

tora esy kolas stis diafores config-me xml

 

me xml ine kalutero,eno to config ine sunithismeno

Posted

apla ekana practise,kai to kana

tora esy kolas stis diafores config-me xml

 

me xml ine kalutero,eno to config ine sunithismeno

kalutero den einai, pio advanced nai...ala kalitero oxi.Same thing.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • WoW Midnight — AFK Fishing Bot v2.0     Fully rewritten. No more pixel detection. V2 is audio-only and paired with a companion addon that handles everything inside the game — one keybind does it all.     Showcase:                  What's new in v2.0 Audio-only detection. Listens for the splash. No screen scanning, no calibration, no zone tuning. It just works anywhere. One key for everything. Same keybind casts the line and loots the catch. Bound via the included BobberAssist addon. Auto-buff system. Drop your lures, teas, potions (Haranir Phial, Sanguithorn Tea, Ominous Octopus Lure, etc.) into the addon. Set a timer. The bot refreshes them automatically before each cast. Sit-and-fish mode. Optional — bot types /sit when you start. Fewer interrupts from Root Crabs and roaming mobs. Smart anti-AFK. Fires only between catches, never mid-cast. AutoDestroy addon included. Junk items deleted automatically after every catch. VB-CABLE support. Play music, Discord, YouTube with zero interference. Randomized timing — natural 50–120 ms reactions.                       Features One-key start (F6) — press and walk away Audio isolation via VB-CABLE — play music, YouTube, Discord with zero interference Configurable consumable auto-use (lures / baits / potions / teas) with per-item timers Sit-and-fish mode to avoid ambient mob aggro Anti-AFK built in — jumps every 5 minutes in stand mode, jump + re-sit in sit mode (between catches only, never mid-cast) AutoDestroy addon included — automatically deletes junk items to keep bags clean after every catch Randomized splash→loot and loot→recast delays (natural timing, 50–120 ms reaction) Works in any zone, any fishing spot No pixel detection means no zone-specific tuning — it just works        Why v2 > v1 V1 scanned your screen for the bobber. It broke when the UI changed, the camera moved, or a new zone had different visuals. V2 only listens for the splash — nothing visual to break. Plus the new addon lets a single keybind cast, loot, and use your buffs. Way less setup, way more reliable.            Safety Runs completely external. No injection, no memory reads, no file edits. Watches nothing, listens to audio, presses one key. Use at your own risk. Automation is against Blizzard's ToS.          V1 owners Free upgrade. DM me for the new build.   One-time payment, lifetime access. DM on Discord: Nythrand
  • 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..