Vkouk Posted August 1, 2011 Posted August 1, 2011 Tested:Yes Working:Yes Picture: 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 Quote
TEOGR_hItMaKeR Posted August 1, 2011 Posted August 1, 2011 Nice but i think every project has added auto announcements.. Quote
TEOGR_hItMaKeR Posted August 2, 2011 Posted August 2, 2011 ε ναι αλλα τι διαφορα εχει το config απο το xml? Ισως να ειναι πιο ευκολο το xml αλλα εφοσον το εχεις ηδη added με config .... Quote
Vkouk Posted August 2, 2011 Author Posted August 2, 2011 apla ekana practise,kai to kana tora esy kolas stis diafores config-me xml me xml ine kalutero,eno to config ine sunithismeno Quote
Vkouk Posted August 2, 2011 Author Posted August 2, 2011 maresi ta pack me xml...good kane kai ala :) xaax thanks Quote
UnixCode Posted August 3, 2011 Posted August 3, 2011 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. Quote
ExCaLiBuR® Posted August 4, 2011 Posted August 4, 2011 mprabo Ventic pou murastikes mazoi mas ton code sou Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.