R
RedWine
Gast
Code:
package at.bluelife.jbot.output.plugins;
import at.bluelife.jbot.chats.IChat;
import at.bluelife.jbot.core.BotConfig;
import at.bluelife.jbot.input.messages.IMessage;
import at.bluelife.jbot.input.messages.standard.PublicMessage;
import at.bluelife.jbot.input.messages.system.WhoIsInRoomMessage;
import at.bluelife.jbot.output.AbstractOutputPlugin;
import at.bluelife.jbot.output.IOutputPluginHandler;
import at.bluelife.jbot.output.plugins.quiz.Quiz;
import at.bluelife.jbot.util.TimerThread;
import at.bluelife.util.StringTools;
import java.util.*;
public class QuizPlugin extends AbstractOutputPlugin
implements Comparator
{
public QuizPlugin()
{
ANSWER_TIMEOUT = 25;
BOLD_START_TAG = "";
BOLD_END_TAG = "";
quiz = null;
quizUsers = new TreeMap();
timer = null;
}
public void register(IOutputPluginHandler ioutputpluginhandler)
{
ioutputpluginhandler.assignPluginToEvent(at/bluelife/jbot/input/messages/system/WhoIsInRoomMessage.getName(), this);
ioutputpluginhandler.assignPluginToEvent(at/bluelife/jbot/input/messages/standard/PublicMessage.getName(), this);
reloadConfig();
quiz = new Quiz(this, conn);
}
public void reloadConfig()
{
try
{
if(config.isPropertySet("plugins.QuizPlugin.timeout"))
ANSWER_TIMEOUT = Integer.parseInt(config.getProperty("plugins.QuizPlugin.timeout"));
BOLD_START_TAG = config.getProperty("plugins.bold.start", "");
BOLD_END_TAG = config.getProperty("plugins.bold.end", "");
}
catch(Exception exception) { }
}
public void handleMessage(IMessage imessage)
{
if(imessage.getMessage().startsWith("!start"))
{
try
{
if(imessage.getMessage().length() < 6)
throw new Exception("Unzul\344ssiger Befehl ");
quizUsers = new TreeMap();
try
{
int i = Integer.parseInt(imessage.getMessage().substring(11));
if(quiz.startQuiz(i))
{
quiz.repeatQuestion();
startTimer();
}
}
catch(NumberFormatException numberformatexception)
{
if(quiz.startQuiz(imessage.getMessage().substring(11)))
{
quiz.repeatQuestion();
startTimer();
}
}
}
catch(Exception exception)
{
chat.sendMessage((new StringBuilder()).append("/m ").append(imessage.getUsername()).append(" ").append(exception.getMessage()).toString());
}
return;
}
if(imessage.getMessage().startsWith("!stop") && quiz.running())
{
startTimer(false);
chat.sendMessage(toBold("Quiz wurde gestoppt"));
quiz.endQuiz();
showResultTable();
return;
}
if(imessage.getMessage().startsWith("!help"))
{
chat.sendMessage((new StringBuilder()).append("/m ").append(imessage.getUsername()).append(" QuizPlugin 2.2 by Bernhard Froehlich ([url]http://www.bluelife.at/[/url])").toString());
chat.sendMessage((new StringBuilder()).append("/m ").append(imessage.getUsername()).append(" Befehle: !start <thema> | !list | !next | !repeat | !stop | !help").toString());
return;
}
if(imessage.getMessage().startsWith("!list"))
if(quiz.running())
{
chat.sendMessage((new StringBuilder()).append("/m ").append(imessage.getUsername()).append(" Quiz ist bereits gestartet").toString());
return;
} else
{
quiz.listTopics();
return;
}
if(imessage.getMessage().startsWith("!next") && quiz.running())
{
chat.sendMessage(toBold("n\344chste Frage"));
nextQuestion();
return;
}
if(imessage.getMessage().startsWith("!repeat") && quiz.running())
{
quiz.repeatQuestion();
startTimer();
return;
}
if(imessage.getMessage().startsWith("0answer") && quiz.running())
{
quiz.showAnswer();
nextQuestion();
return;
}
if(quiz.running())
{
if(quiz.testAnswer(imessage.getMessage()))
{
chat.sendMessage((new StringBuilder()).append(toBold("Richtige Antwort: ")).append(imessage.getUsername()).toString());
if(!quizUsers.containsKey(imessage.getUsername()))
quizUsers.put(imessage.getUsername(), "1");
else
quizUsers.put(imessage.getUsername(), (new StringBuilder()).append(Integer.parseInt((String)quizUsers.remove(imessage.getUsername())) + 1).append("").toString());
nextQuestion();
}
return;
} else
{
return;
}
}
public String toBold(String s)
{
String as[] = StringTools.split(s, ' ');
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < as.length; i++)
{
stringbuffer.append(BOLD_START_TAG);
stringbuffer.append(as[i]);
stringbuffer.append(BOLD_END_TAG);
stringbuffer.append(" ");
}
return stringbuffer.toString();
}
public void showResultTable()
{
TreeMap treemap = new TreeMap(this);
treemap.putAll(quizUsers);
Iterator iterator = treemap.entrySet().iterator();
sendMessage("/me Ergebnis in dieser Runde:");
java.util.Map.Entry entry;
for(; iterator.hasNext(); sendMessage((new StringBuilder()).append(Integer.parseInt((String)entry.getValue())).append(Integer.parseInt((String)entry.getValue()) != 1 ? " Punkte" : " Punkt").append(" ").append(toBold((String)entry.getKey())).toString()))
entry = (java.util.Map.Entry)iterator.next();
}
public void sendMessage(String s)
{
chat.sendMessage(s);
}
public int compare(Object obj, Object obj1)
{
int i = Integer.parseInt((String)quizUsers.get(obj));
int j = Integer.parseInt((String)quizUsers.get(obj1));
return i <= j ? i >= j ? ((String)obj1).compareTo((String)obj) : 1 : -1;
}
public void touch()
{
if(quiz.running())
{
quiz.showAnswer();
nextQuestion();
return;
} else
{
return;
}
}
public void startTimer()
{
startTimer(true);
}
public void startTimer(boolean flag)
{
if(timer != null)
{
timer.close();
timer = null;
}
if(flag)
timer = new TimerThread(this, "touch", ANSWER_TIMEOUT, true);
}
public void nextQuestion()
{
if(quiz.running() && quiz.nextQuestion())
{
startTimer();
} else
{
startTimer(false);
chat.sendMessage(toBold("Das Quiz wurde beendet!"));
quiz.endQuiz();
showResultTable();
}
}
private int ANSWER_TIMEOUT;
private String BOLD_START_TAG;
private String BOLD_END_TAG;
private Quiz quiz;
private TreeMap quizUsers;
private TimerThread timer;
}
sollte ich hier eine regel gebrochen haben tut es mir sehr leid, wenn das wer machen könnte wäre ich sehr dankbar da ich null ahnung davon habe
aus diesem file wird dann QuizPlugin.class
wenn ich das richtig sehe
kann mir auch gemailt werden unter joe@wcn.at
herrzlichen dank für eure hilfe