Autor Tema: [Evento] Trivial  (Leído 1005 veces)

Mayo 10, 2014, 03:27:01 pm

Conectado swarlog

  • Desarrollador
  • Usuario
  • *
  • Mensajes: 1.585
  • Karma: 3
  • Sexo: Masculino
    • U3Games
Código: You are not allowed to view links. Register or Login
### Eclipse Workspace Patch 1.0
#P gameserver
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java (revision 36)
+++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -101,6 +101,7 @@
 import net.sf.l2j.gameserver.model.PartyMatchWaitingList;
 import net.sf.l2j.gameserver.model.entity.Castle;
 import net.sf.l2j.gameserver.model.entity.Hero;
+import net.sf.l2j.gameserver.model.entity.TriviaEventManager;
 import net.sf.l2j.gameserver.model.olympiad.Olympiad;
 import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
 import net.sf.l2j.gameserver.model.votereward.VoteMain;
@@ -271,6 +272,8 @@
  OlympiadGameManager.getInstance();
  Olympiad.getInstance();
  Hero.getInstance();
+
+ TriviaEventManager.getInstance();
 
  Util.printSection("Four Sepulchers");
  FourSepulchersManager.getInstance().init();
Index: java/net/sf/l2j/gameserver/model/entity/Trivia.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/Trivia.java (revision 0)
+++ java/net/sf/l2j/gameserver/model/entity/Trivia.java (revision 0)
@@ -0,0 +1,216 @@
+package net.sf.l2j.gameserver.model.entity;
+
+
+import java.io.File;
+import java.util.logging.Logger;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import javolution.util.FastMap;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.clientpackets.Say2;
+import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
+import net.sf.l2j.util.Rnd;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+public class Trivia
+{
+ enum EventState
+ {
+ INACTIVE,
+ ASKING,
+ ANSWERING,
+ CORRECT,
+ REWARDING,
+ ENDING
+ }
+ protected static final Logger _log = Logger.getLogger(Trivia.class.getName());
+ private static EventState _state = EventState.INACTIVE;
+ //ID of the reward
+ private static int _rewardID = 9142;
+ //Ammount of the reward
+ private static int _rewardCount = 1;
+ private static long questionTime=0;
+ private static FastMap<String,String> q_a = new FastMap<String,String>();
+ public static int asked=0;
+ private static String question,answer;
+
+ private Trivia()
+ {
+
+ }
+ public static void init()
+ {
+ setState(EventState.INACTIVE);
+ getQuestions();
+ }
+ private static void getQuestions()
+ {
+ File file = new File("config/Trivia.xml");
+ String ask, answer;
+ try
+ {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+    DocumentBuilder db = dbf.newDocumentBuilder();
+    Document doc = db.parse(file);
+    doc.getDocumentElement().normalize();
+    NodeList trvLst = doc.getElementsByTagName("trivia");
+   for (int s = 0; s < trvLst.getLength(); s++)
+   {
+     Node trvNode = trvLst.item(s);
+      if (trvNode.getNodeType() == Node.ELEMENT_NODE)
+      {
+                     Element triviaElement = (Element)trvNode;
+                     NodeList trvList = triviaElement.getElementsByTagName("question");
+                     Element questionElement = (Element)trvList.item(0);
+
+                     NodeList textQsList = questionElement.getChildNodes();
+                     ask = ((Node)textQsList.item(0)).getNodeValue().trim();
+
+                     NodeList answerList = triviaElement.getElementsByTagName("answer");
+                     Element answerElement = (Element)answerList.item(0);
+
+                     NodeList textAnList = answerElement.getChildNodes();
+                     answer = ((Node)textAnList.item(0)).getNodeValue().trim();
+         q_a.put(ask, answer);
+      }
+
+   }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ public static void handleAnswer(String s,L2PcInstance pi)
+ {
+ if(s.equalsIgnoreCase(answer))
+ {
+ pi.sendPacket(new CreatureSay(12345, Say2.TELL, "Trivia", "Correct!"));
+ setState(EventState.REWARDING);
+ Announcements.announceToAll("Winner is "+pi.getName()+"! He answered in "+(System.currentTimeMillis()-questionTime)/1000+" seconds!");
+ announceCorrect();
+ pi.addItem("Trivia", _rewardID, _rewardCount, pi, true);
+ }
+ else
+ pi.sendPacket(new CreatureSay(1234, 2, "Trivia", "Wrong answer."));
+
+ }
+ public static void startTrivia()
+ {
+ Announcements.announceToAll("Trivia Event begins! You have to PM Trivia with your answer, get ready!");
+ setState(EventState.ASKING);
+ }
+ public static void askQuestion()
+ {
+ pickQuestion();
+ Announcements.announceToAll("Question: "+question);
+ questionTime=System.currentTimeMillis();
+ setState(EventState.ANSWERING);
+ }
+ public static void announceCorrect()
+ {
+ setState(EventState.CORRECT);
+ Announcements.announceToAll("The correct answer was: "+answer);
+ asked++;
+ setState(EventState.ASKING);
+ }
+ public static void endEvent()
+ {
+ setState(EventState.INACTIVE);
+ asked = 0;
+ }
+ private static void pickQuestion()
+ {
+   int roll=Rnd.get(q_a.size())+1;
+   int i=0;
+   for(String q:q_a.keySet())
+   {
+    ++i;
+    if(i==roll)
+    {
+     answer=q_a.get(q);
+     question=q;
+     return;
+    }
+   }
+ }
+ public static boolean isInactive()
+ {
+      boolean isInactive;
+ synchronized (_state)
+ {
+ isInactive = _state == EventState.INACTIVE;
+ }
+ return isInactive;
+ }
+ public static boolean isAnswering()
+ {
+ boolean isAnswering;
+ synchronized (_state)
+ {
+ isAnswering = _state == EventState.ANSWERING;
+ }
+ return isAnswering;
+ }
+ public static boolean isEnding()
+ {
+ boolean isEnding;
+ synchronized (_state)
+ {
+ isEnding = _state == EventState.ENDING;
+ }
+ return isEnding;
+ }
+ public static boolean isCorrect()
+ {
+ boolean isCorrect;
+ synchronized (_state)
+ {
+ isCorrect = _state == EventState.CORRECT;
+ }
+ return isCorrect;
+ }
+ public static boolean isRewarding()
+ {
+ boolean isRewarding;
+ synchronized (_state)
+ {
+ isRewarding = _state == EventState.REWARDING;
+ }
+ return isRewarding;
+ }
+ public static boolean isAsking()
+ {
+ boolean isAsking;
+ synchronized (_state)
+ {
+ isAsking = _state == EventState.ASKING;
+ }
+ return isAsking;
+ }
+ private static void setState(EventState state)
+ {
+ synchronized (_state)
+ {
+ _state = state;
+ }
+ }
+ public static Trivia getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final Trivia _instance = new Trivia();
+ }
+
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/model/entity/TriviaEventManager.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/TriviaEventManager.java (revision 0)
+++ java/net/sf/l2j/gameserver/model/entity/TriviaEventManager.java (revision 0)
@@ -0,0 +1,189 @@
+package net.sf.l2j.gameserver.model.entity;
+
+
+import java.util.Calendar;
+import java.util.concurrent.ScheduledFuture;
+import java.util.logging.Logger;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.ThreadPoolManager;
+
+
+public class TriviaEventManager
+{
+ protected static final Logger _log = Logger.getLogger(TriviaEventManager.class.getName());
+
+ /** Task for event cycles<br> */
+ private TriviaStartTask _task;
+
+ /**
+ * New instance only by getInstance()<br>
+ */
+ private TriviaEventManager()
+ {
+ if (Config.TRIVIA_ENABLED)
+ {
+ Trivia.init();
+ this.scheduleEventStart();
+ _log.warning("TriviaEventEngine[TriviaManager.TriviaManager()]: Started.");
+ }
+ else
+ {
+ _log.warning("TriviaEventEngine[TriviaManager.TriviaManager()]: Engine is disabled.");
+ }
+ }
+ public static TriviaEventManager getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ /**
+ * Starts the event
+ */
+ public void scheduleEventStart()
+ {
+ try
+ {
+ Calendar currentTime = Calendar.getInstance();
+ Calendar nextStartTime = null;
+ Calendar testStartTime = null;
+ for (String timeOfDay : Config.TRIVIA_INTERVAL)
+ {
+ // Creating a Calendar object from the specified interval value
+ testStartTime = Calendar.getInstance();
+ testStartTime.setLenient(true);
+ String[] splitTimeOfDay = timeOfDay.split(":");
+ testStartTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(splitTimeOfDay[0]));
+ testStartTime.set(Calendar.MINUTE, Integer.parseInt(splitTimeOfDay[1]));
+ // If the date is in the past, make it the next day (Example: Checking for "1:00", when the time is 23:57.)
+ if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
+ {
+ testStartTime.add(Calendar.DAY_OF_MONTH, 1);
+ }
+ // Check for the test date to be the minimum (smallest in the specified list)
+ if (nextStartTime == null || testStartTime.getTimeInMillis() < nextStartTime.getTimeInMillis())
+ {
+ nextStartTime = testStartTime;
+ }
+ }
+ _task = new TriviaStartTask(nextStartTime.getTimeInMillis());
+ ThreadPoolManager.getInstance().executeTask(_task);
+ }
+ catch (Exception e)
+ {
+ _log.warning("TriviaEventEngine[TriviaManager.scheduleEventStart()]: Error figuring out a start time. Check TriviaEventInterval in config file.");
+ }
+ }
+
+ class TriviaStartTask implements Runnable
+ {
+ private long _startTime;
+ public ScheduledFuture<?> nextRun;
+
+ public TriviaStartTask(long startTime)
+ {
+ _startTime = startTime;
+ }
+
+ public void setStartTime(long startTime)
+ {
+ _startTime = startTime;
+ }
+
+ /**
+ * @see java.lang.Runnable#run()
+ */
+ public void run()
+ {
+ int delay = (int) Math.round((_startTime - System.currentTimeMillis()) / 1000.0);
+ int nextMsg = 0;
+ if (delay > 3600)
+ {
+ nextMsg = delay - 3600;
+ }
+ else if (delay > 1800)
+ {
+ nextMsg = delay - 1800;
+ }
+ else if (delay > 900)
+ {
+ nextMsg = delay - 900;
+ }
+ else if (delay > 600)
+ {
+ nextMsg = delay - 600;
+ }
+ else if (delay > 300)
+ {
+ nextMsg = delay - 300;
+ }
+ else if (delay > 60)
+ {
+ nextMsg = delay - 60;
+ }
+ else if (delay > 5)
+ {
+ nextMsg = delay - 5;
+ }
+ else if (delay > 0)
+ {
+ nextMsg = delay;
+ }
+ else
+ {
+ if (Trivia.isInactive())
+ {
+ startTrivia();
+ }
+ else if(Trivia.isAsking())
+ {
+ if(Trivia.asked<Config.TRIVIA_TO_ASK)
+ {
+ startQuestion();
+ }
+ else
+ {
+ endTrivia();
+ }
+ }
+ else if(Trivia.isAnswering())
+ {
+ announceAnswer();
+ }
+ }
+
+ if (delay > 0)
+ {
+ nextRun = ThreadPoolManager.getInstance().scheduleGeneral(this, nextMsg * 1000);
+ }
+ }
+ }
+ public void startTrivia()
+ {
+ Trivia.startTrivia();
+ _task.setStartTime(System.currentTimeMillis() + 1000L *10);
+ ThreadPoolManager.getInstance().executeTask(_task);
+ }
+ public void startQuestion()
+ {
+ Trivia.askQuestion();
+ _task.setStartTime(System.currentTimeMillis() + 1000L *Config.TRIVIA_ANSWER_TIME);
+ ThreadPoolManager.getInstance().executeTask(_task);
+ }
+ public void endTrivia()
+ {
+ Trivia.endEvent();
+ this.scheduleEventStart();
+ }
+ public void announceAnswer()
+ {
+ Trivia.announceCorrect();
+ _task.setStartTime(System.currentTimeMillis() +1000L *10);
+ ThreadPoolManager.getInstance().executeTask(_task);
+ }
+ @SuppressWarnings("synthetic-access")
+ private static class SingletonHolder
+ {
+ protected static final TriviaEventManager _instance = new TriviaEventManager();
+ }
+}
\ No newline at end of file
Index: config/Trivia.xml
===================================================================
--- config/Trivia.xml (revision 0)
+++ config/Trivia.xml (revision 0)
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<event>         
+  <trivia>
+    <question>What current branch of the U.S. military was a corps of only 50 soldiers when World War I broke out</question>
+    <answer>The U.S. Air Force</answer>
+  </trivia>
+
+  <trivia>
+    <question>What game was created by French mathematician Blaise Pascal, which he discovered when doing experiments into perpetual motion?</question>
+    <answer>The Game of Roulette</answer>
+  </trivia>
+
+  <trivia>
+    <question>Who said: &quot; I'm the president of the United States and I'm not going to eat any more broccoli &quot;?</question>
+    <answer>George Bush</answer>
+  </trivia>
+
+  <trivia>
+    <question>What future Soviet dictator was training to be a priest when he got turned on to Marxism?</question>
+    <answer>Joseph Stalin</answer>
+  </trivia>
+
+  <trivia>
+    <question>What election year saw bumper stickers reading &quot;Wallace, Wallace, Uber Alles&quot;</question>
+    <answer>1968</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which is the last NPC you have to talk to, to obtain a Portal Stone?</question>
+    <answer>Theodoric</answer>
+  </trivia>
+
+  <trivia>
+    <question>What color Soul Crystal do you need to have for Acumen SA on Arcana mace?</question>
+    <answer>Red</answer>
+  </trivia>
+
+  <trivia>
+    <question>How many rooms do the 4 Sepulchers have in total?</question>
+    <answer>4</answer>
+  </trivia>
+
+  <trivia>
+    <question>When does the Merchant of Mammon appear in Catacombs?</question>
+    <answer>Never</answer>
+  </trivia>
+
+  <trivia>
+    <question>How many A-grade grandboss jewels exists?</question>
+    <answer>3</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is the name of the only B-grade grandboss jewel?</question>
+    <answer>Ring of queen ant</answer>
+  </trivia>
+
+  <trivia>
+    <question>How many Olympiad points does a Noblesse character have at the end of each month, if he does not compete?</question>
+    <answer>18</answer>
+  </trivia>
+
+  <trivia>
+    <question>When creating a character, you can choose to be a mage or fighter. There is one race that doesn't offer this choice. Which race is that?</question>
+    <answer>Dwarf</answer>
+  </trivia>
+
+  <trivia>
+    <question>What TV show lost Jim Carrey when he stepped into the movies?</question>
+    <answer>In Living Color</answer>
+  </trivia>
+
+  <trivia>
+    <question>At which level can you make the Hatchling quest?</question>
+    <answer>35</answer>
+  </trivia>
+
+  <trivia>
+    <question>What's the name of the item you need to get your clan to level 4?</question>
+    <answer>Alliance Manifesto</answer>
+  </trivia>
+
+  <trivia>
+    <question>What level does your clan have to be in order to start an Alliance?</question>
+    <answer>5</answer>
+  </trivia>
+
+  <trivia>
+    <question>Baium is the father of...</question>
+    <answer>Frintezza</answer>
+  </trivia>
+
+  <trivia>
+    <question>What are the names of the two &quot;teams&quot; on the Seven Signs Quest?</question>
+    <answer>Dawn and Dusk</answer>
+  </trivia>
+
+  <trivia>
+    <question>How many servers are there on the offical lineage II?</question>
+    <answer>8</answer>
+  </trivia>
+
+  <trivia>
+    <question>as a fighter, what is the first level when you can learn your first skills?</question>
+    <answer>5</answer>
+  </trivia>
+
+  <trivia>
+    <question>In what level can you create a clan?</question>
+    <answer>10</answer>
+  </trivia>
+
+  <trivia>
+    <question>What so-called &quot;war&quot; spawned the dueling slogans &quot;Better Dead Than RED&quot; and &quot;Better Red Than Dead&quot; in the 1950's?</question>
+    <answer>The Cold War</answer>
+  </trivia>
+
+  <trivia>
+    <question>What president was shot  while walking to California Governor Jerry Brown' office?</question>
+    <answer>Gerald Ford</answer>
+  </trivia>
+
+  <trivia>
+    <question>What modern vehicle was invented to circumvent trench warfare?</question>
+    <answer>Tank</answer>
+  </trivia>
+
+  <trivia>
+    <question>What congressional award was Dr. Mary Edwards Walker the first woman to receive?</question>
+    <answer>Medal of Honor</answer>
+  </trivia>
+
+  <trivia>
+    <question>What congressional award was Dr. Mary Edwards Walker the first woman to receive?</question>
+    <answer>Medal of Honor</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which television series did Roger Moore star from 1962 to 1970?</question>
+    <answer>The Saint</answer>
+  </trivia>
+
+  <trivia>
+    <question>Who introduced the Betamax video cassette system?</question>
+    <answer>Sony</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is Bugs Bunny's catchphrase?</question>
+    <answer>Eh, whats up Doc?</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which Hollywood film maker produced a string of films in the 1950s and 1960s using animals as actors in a drama?</question>
+    <answer>Walt Disney</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which character made his debut in the silent film Plane Crazy in 1928?</question>
+    <answer>Mickey Mouse</answer>
+  </trivia>
+
+  <trivia>
+    <question>How did James Dean die?</question>
+    <answer>In a car accident</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which world-famous cartoon cat was created in 1920 by Pat Sullivan?</question>
+    <answer>Felix the Cat</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which group flew into the Hotel California?</question>
+    <answer>The Eagles</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which all time great band featured Harrison and Starkey?</question>
+    <answer>The Beatles</answer>
+  </trivia>
+
+  <trivia>
+    <question>Arnold Schwarzenegger married the niece of which US president?</question>
+    <answer>John F. Kennedy</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which city did Steve McQueen take part in the car chase in Bullitt?</question>
+    <answer>San Francisco</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which movie did Alex Guinness first appear as Ben Obi Wan Kenobi?</question>
+    <answer>Star Wars</answer>
+  </trivia>
+
+  <trivia>
+    <question>Marlon and Tito were two members of which famous family group?</question>
+    <answer>Jackson Five</answer>
+  </trivia>
+
+  <trivia>
+    <question>Where did Crazy For You lose half a million dollars before finding success on Broadway?</question>
+    <answer>Washington</answer>
+  </trivia>
+
+  <trivia>
+    <question>Leslie Rogge was the first person to be arrested due to what?</question>
+    <answer>The Internet</answer>
+  </trivia>
+
+  <trivia>
+    <question>In 1908 Wilbur Wright traveled what record-breaking number of miles in 2 hours 20 minutes?</question>
+    <answer>77</answer>
+  </trivia>
+
+  <trivia>
+    <question>How long did Bleriot's first flight across the English Channel last?</question>
+    <answer>43 minutes</answer>
+  </trivia>
+
+  <trivia>
+    <question>What nationality of plane first broke the 100mph sound barrier?</question>
+    <answer>French</answer>
+  </trivia>
+
+  <trivia>
+    <question>The first air collision took place over which country?</question>
+    <answer>Austria</answer>
+  </trivia>
+
+  <trivia>
+    <question>How long did the record-breaking space walk from space shuttle Endeavor last in 1993?</question>
+    <answer>Five hours</answer>
+  </trivia>
+
+  <trivia>
+    <question>Where did the European space probe Ulysses set off for in 1991?</question>
+    <answer>The Sun</answer>
+  </trivia>
+
+  <trivia>
+    <question>What was the name of the first probe to send back pictures from Mars?</question>
+    <answer>Viking</answer>
+  </trivia>
+
+  <trivia>
+    <question>Who was the second Soviet cosmonaut?</question>
+    <answer>Titov</answer>
+  </trivia>
+
+  <trivia>
+    <question>Who said, &quot;All I need to make a comedy is a park, a policeman and a pretty girl?&quot;</question>
+    <answer>Charlie Chaplin</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which country did Steve McQueen die?</question>
+    <answer>Mexico</answer>
+  </trivia>
+
+  <trivia>
+    <question>In 1998 who did Vanity Fair describe as &quot;simply the world's biggest heart throb?&quot;</question>
+    <answer>Leonardo DiCaprio</answer>
+  </trivia>
+
+  <trivia>
+    <question>In 1998 who did Vanity Fair describe as &quot;simply the world's biggest heart throb?&quot;</question>
+    <answer>Leonardo DiCaprio</answer>
+  </trivia>
+
+  <trivia>
+    <question>How many friends are there in Friends?</question>
+    <answer>Six</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which magazine did The Addams Family first appear?</question>
+    <answer>New Yorker</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is Alpha World?</question>
+    <answer>Multi user game</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is a MUD?</question>
+    <answer>Multi User Computer Game</answer>
+  </trivia>
+
+  <trivia>
+    <question>In which European country is the theme park De Efteling?</question>
+    <answer>The Netherlands</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which ethnic group popularized salsa dancing in New York in the 1980s?</question>
+    <answer>Puerto Ricans</answer>
+  </trivia>
+
+  <trivia>
+    <question>Which Russian city was famous for its State Circus?</question>
+    <answer>Moscow</answer>
+  </trivia>
+
+  <trivia>
+    <question>Pokemon is an abbreviation of what?</question>
+    <answer>Pocket Monster</answer>
+  </trivia>
+
+  <trivia>
+    <question>Who is the Princess in the Super Mario Gang?</question>
+    <answer>Daisy</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is russian's favourite gambling game?</question>
+    <answer>Russian Roulette</answer>
+  </trivia>
+
+
+  <trivia>
+    <question>What is russian's favourite drink?</question>
+    <answer>Vodka</answer>
+  </trivia>
+
+  <trivia>
+    <question>What is the quest item used to make a level 5 clan</question>
+    <answer>Seal of aspiration</answer>
+  </trivia>
+
+</event>
\ No newline at end of file
Index: build.xml
===================================================================
--- build.xml (revision 5)
+++ build.xml (working copy)
@@ -99,6 +99,7 @@
  <copy todir="${build.dist.game}/config">
  <fileset dir="config">
  <include name="*.properties" />
+ <include name="*.xml" />
  <exclude name="loginserver.properties" />
  </fileset>
  <fileset dir="config">
Index: config/events.properties
===================================================================
--- config/events.properties (revision 5)
+++ config/events.properties (working copy)
@@ -256,3 +256,19 @@
 AltFishChampionshipReward3 = 300000
 AltFishChampionshipReward4 = 200000
 AltFishChampionshipReward5 = 100000
+
+#Trivia event will occur those times
+#Default = 22:00,22:15,22:30
+TriviaInterval = 21:40,22:40,22:45,22:50,23:40
+
+#Time allowed to answer a question in seconds
+#Default = 30
+TriviaAnswerTime = 60
+
+#Trivia event enabled?
+#Default = True
+TriviaEnabled = True
+
+#Each event will have a number of questions.Decide how many to ask
+#Default = 1
+TriviaAsk = 1
Index: java/net/sf/l2j/gameserver/handler/chathandlers/ChatTell.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/chathandlers/ChatTell.java (revision 5)
+++ java/net/sf/l2j/gameserver/handler/chathandlers/ChatTell.java (working copy)
@@ -18,6 +18,7 @@
 import net.sf.l2j.gameserver.model.BlockList;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.entity.Trivia;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
 
@@ -39,10 +40,30 @@
  @Override
  public void handleChat(int type, L2PcInstance activeChar, String target, String text)
  {
+
  // Return if no target is set.
  if (target == null)
  return;
 
+ if(target.equalsIgnoreCase("trivia"))
+ {
+ if(Trivia.isInactive())
+ {
+ activeChar.sendMessage("Trivia event is not currently running.");
+ return;
+ }
+ else if(!Trivia.isAnswering() || Trivia.isCorrect() || Trivia.isRewarding())
+ {
+ activeChar.sendMessage("You cannot answer now.");
+ return;
+ }
+ else
+ {
+ Trivia.handleAnswer(text,activeChar);
+ return;
+ }
+ }
+
  final L2PcInstance receiver = L2World.getInstance().getPlayer(target);
  if (receiver != null)
  {
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 35)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -18,8 +18,10 @@
 import gnu.trove.map.hash.TIntObjectHashMap;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -57,6 +59,8 @@
  public static final String SIEGE_FILE = "./config/siege.properties";
  public static final String ELFOCRASH_FILE = "./config/elfocrash.properties";
 
+
+   
  // --------------------------------------------------
  // Clans settings
  // --------------------------------------------------
@@ -139,6 +143,13 @@
  // Events settings
  // --------------------------------------------------
 
+
+
+    public static ArrayList<String>TRIVIA_INTERVAL = new ArrayList<String>();
+    public static int TRIVIA_ANSWER_TIME;
+    public static boolean TRIVIA_ENABLED;
+    public static int TRIVIA_TO_ASK;
+   
  /** Olympiad */
  public static int ALT_OLY_START_TIME;
  public static int ALT_OLY_MIN;
@@ -839,6 +850,13 @@
 
  // Events config
  ExProperties events = load(EVENTS_FILE);
+ String [] times=events.getProperty("TriviaInterval", "22:00,22:15,:22:30").split(",");
+ TRIVIA_INTERVAL = new ArrayList<String>();
+ for(String t:times)
+ TRIVIA_INTERVAL.add(t);
+ TRIVIA_ANSWER_TIME = Integer.parseInt(events.getProperty("TriviaAnswerTime", "30"));
+     TRIVIA_ENABLED = Boolean.parseBoolean(events.getProperty("TriviaEnabled", "true"));
+     TRIVIA_TO_ASK = Integer.parseInt(events.getProperty("TriviaAsk", "1"));
  ALT_OLY_START_TIME = events.getProperty("AltOlyStartTime", 18);
  ALT_OLY_MIN = events.getProperty("AltOlyMin", 0);
  ALT_OLY_CPERIOD = events.getProperty("AltOlyCPeriod", 21600000);