03-04-2011, 11:22 PM
|
#1 (permalink)
|
|
Banido
Registrado em: Nov 2009
Localização: Fortaleza-ce
Posts: 325
Agradecido 203 Vezes em 82 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Nome Real: Allan Alcântara de Alencar
|
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 ...
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:
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!
|
|
|