Tópico: [L2JServer] Quiz Event
Ver um Único Post
Antigo 03-04-2011, 11:22 PM   #1 (permalink)
allanalcantara
Banido
 
Avatar de allanalcantara
 
Registrado em: Nov 2009
Localização: Fortaleza-ce
Posts: 325
Agradeceu: 125
Agradecido 203 Vezes em 82 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Enviar mensagem via Windows Live Messenger para allanalcantara Enviar mensagem via Skype para allanalcantara
Nome Real: Allan Alcântara de Alencar

Inventório de allanalcantara

Icon14 Quiz Event

bom estou aqui mais uma vez, disponibilizando mais outro MOD, sendo que esse é um evento.
depois que o ví achei meio que estranho ... mas bem enteressante. kkkkkk
evento quiz. - ele funcionano epilogue mas com adaptações ele possa funcionar para interlude.

então ai vai ...

Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
if (command.equalsIgnoreCase("3") && QuizEvent._quizRunning)
      {
         QuizEvent.setAnswer(activeChar, 3);
      }
      return true;
   }
   
   /**
    * 
    * @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
    */
   public String[] getVoicedCommandList()
   {
      new QuizEvent();
      return _voicedCommands;
   }
}
next code:

Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
package custom.QuizEvent;

import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.Announcements;
import javolution.util.FastMap;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.util.Rnd;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;


import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import java.io.File;
import com.l2jserver.Config;




/**
 * 
 * @author Rizel
 *
 */
public class QuizEvent
{
   public static boolean                      _quizRunning;
   private static String                      _question;
   private static String                      _answer1;
   private static String                      _answer2;
   private static String                      _answer3;
   private static int                         _rightanswer;
   private static FastMap<L2PcInstance,Integer>    _players;
   private static int                         status;
   private static int                         announced;
   private static ThreadPoolManager             tpm;
   private static AutoEventTask               task;
   private static String[][]                   _questions;
   private static int i = 0;
   private static final int STATUS_NOT_IN_PROGRESS = 0;
   private static final int STATUS_ASK = 1;
   private static final int STATUS_ANSWER = 2;
   private static final int STATUS_END = 3;
   
   //----------------------------------------------------------------------------
   //------------------------------ CONFIG --------------------------------------
   //----------------------------------------------------------------------------
   
   //Number of questions per event
   private static int _questionNumber = 3;
   
   //The Item ID of the reward
   private static int _rewardID = 57;
   
   //The ammount of the reward
   private static int _rewardCount = 1000;
   
   //Wait for the first event after the server start (in seconds)
   private static int _initWait = 60;
   
   //Time for answer the question (in seconds)
   private static int _answerTime = 10;
   
   //Time between two event (in seconds)
   private static int _betweenTime = 60;
   
   
   
   public QuizEvent()
   {
      tpm = ThreadPoolManager.getInstance();
      status = STATUS_NOT_IN_PROGRESS;
      task = new AutoEventTask();
      announced = 0;
      _quizRunning = false;
      _question = "";
      _answer1 = "";
      _answer2 = "";
      _answer3 = "";
      _rightanswer = 0;
      _players = new FastMap<L2PcInstance,Integer>(100);
      _questions = new String[20][];
      includeQuestions();
      tpm.scheduleGeneral(task, _initWait*1000);
      
   }
         
   
   
   private void includeQuestions()
   {
      
      
      File questionFile = new File(Config.DATAPACK_ROOT, "data/scripts/custom/QuizEvent/QuizEvent.xml");
      Document doc = null;
      try
      {
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         dbf.setIgnoringComments(true);
         dbf.setValidating(false);
         DocumentBuilder db = dbf.newDocumentBuilder();
         doc = db.parse(questionFile);
         
         for (Node root = doc.getFirstChild(); root != null; root = root.getNextSibling())
         {
            if ("list".equalsIgnoreCase(root.getNodeName()))
            {
               
               for (Node child = root.getFirstChild(); child != null; child = child.getNextSibling())
               {
            
                  if ("question".equalsIgnoreCase(child.getNodeName()))
                  {
                     int id, correct;
                     String ask, answer1, answer2, answer3;
                     NamedNodeMap attrs = child.getAttributes();
                     
                     id = Integer.parseInt(attrs.getNamedItem("id").getNodeValue());
                     correct = Integer.parseInt(attrs.getNamedItem("correct").getNodeValue());
                     ask = attrs.getNamedItem("ask").getNodeValue();
                     answer1 = attrs.getNamedItem("answer1").getNodeValue();
                     answer2 = attrs.getNamedItem("answer2").getNodeValue();
                     answer3 = attrs.getNamedItem("answer3").getNodeValue();
                     
                     _questions[id] = new String[]{ ask, answer1, answer2, answer3, ""+correct }; 
                     i++;
                  
                     
                  }
               }
            }
         }
      }
      catch (Exception e)
      {
         
      }
   }
   
   
   
   
   
   
   private class AutoEventTask implements Runnable
   {
      @Override
      public void run()
      {
         switch (status)
         {
         case STATUS_NOT_IN_PROGRESS:
            announceStart();
            break;
         case STATUS_ASK:   
               if (announced < _questionNumber)
               {
               announceQuestion();
               }
               else
               {
               status = STATUS_END;
               tpm.scheduleGeneral(task, 3000);
               }
            break;
         case STATUS_ANSWER:
            announceCorrect();
            break;
         case STATUS_END:
            endEvent();
            break;
         default:
            break;
            
         }
      }
   }
   
   
   
   //Get a random question from the quiz_event table   
   private static void selectQuestion()
   {
      int id = Rnd.get(i)+1;
      _question = _questions[id][0];      
      _answer1 = _questions[id][1];
      _answer2 = _questions[id][2];
      _answer3 = _questions[id][3];
      _rightanswer = Integer.parseInt(""+_questions[id][4]);
   }
   
   
   
   //Announce the question
   private static void announceQuestion()
   {

      selectQuestion();
      Announcements.getInstance().announceToAll("-----------------");
      Announcements.getInstance().announceToAll("Question: "+_question);
      Announcements.getInstance().announceToAll("-----------------");
      Announcements.getInstance().announceToAll("1: "+_answer1);
      Announcements.getInstance().announceToAll("2: "+_answer2);
      Announcements.getInstance().announceToAll("3: "+_answer3);
      Announcements.getInstance().announceToAll("-----------------");
      
      status = STATUS_ANSWER;
      tpm.scheduleGeneral(task, _answerTime*1000);
   }
   
   
   
   //Announce the correct answer
   private static void announceCorrect()
   {
      Announcements.getInstance().announceToAll("-----------------");
      Announcements.getInstance().announceToAll("The correct answer was: "+_rightanswer);
      Announcements.getInstance().announceToAll("-----------------");
      announced++;
      giveReward();
      status = STATUS_ASK;
      tpm.scheduleGeneral(task, 5000);
   }
   
   
   private static void announceStart()
   {
      _quizRunning = true;
      _players.clear();
      Announcements.getInstance().announceToAll("Quiz Event begins! "+_questionNumber+" questions. "+_answerTime+" secs for answer each. ");
      Announcements.getInstance().announceToAll("Type . and the number of the correct answer to the chat. (Like: .1)");
      Announcements.getInstance().announceToAll("Get Ready!");
            
      status = STATUS_ASK;
      tpm.scheduleGeneral(task, 5000);
   }
   
   //Add a player and its answer
   public static void setAnswer(L2PcInstance player, int answer)
   {
      if( _players.containsKey(player) )
         player.sendMessage("You already choosen an aswer!: "+_players.get(player));
      else
      _players.put(player, answer);
   }
   
   
   private static void endEvent()
   {
      _quizRunning = false;
      Announcements.getInstance().announceToAll("The Quiz Event is over!");
      announced = 0;
      status = STATUS_NOT_IN_PROGRESS;
      tpm.scheduleGeneral(task, _betweenTime*1000);
   }
   
   
   
   private static void giveReward()
   {      
      for( L2PcInstance p: _players.keySet())
      {
         if(_players.get(p) == _rightanswer)
            {
            p.sendMessage("Your answer was correct!");
            p.addItem("Quiz", _rewardID, _rewardCount, p, true);
            }
            else
            {
            p.sendMessage("Your answer was not correct!");
            }

         
      }
      _players.clear();
   }
}
bom ... eu não tenho muitas informações sobre ele, mas creio que seja bem legal!

Arquivos Anexados
Tipo de Arquivo: txt Quiz Event.txt (8.8 KB, 26 visualizações) Baixar
allanalcantara está offline  
Links Patrocinados