Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 13.05.2013, 00:00   #1
Заблокирован
 Сержант
Аватар для Kuodo
 
Kuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе ценуKuodo знает себе цену
Регистрация: 02.06.2010
Сообщений: 104
Популярность: 4862
Сказал(а) спасибо: 91
Поблагодарили 56 раз(а) в 50 сообщениях
Отправить сообщение для Kuodo с помощью ICQ Отправить сообщение для Kuodo с помощью Skype™
 
По умолчанию AutoAnnounce - XML

Полностью рабочий авто-анонсер.
Код:
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="тут и !"/>
+	<message text="тут писать текст)"/>
+</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.");
Автор скрипта :Ventic.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:36.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net