:first_try, :hint, :hintrange, :rank_table, :hinted
def initialize( channel, registry )
- @registry = registry.sub_registry( channel )
+ if channel.empty?
+ @registry = registry.sub_registry( 'private' )
+ else
+ @registry = registry.sub_registry( channel )
+ end
@registry_conf = @registry.sub_registry( "config" )
# Per-channel copy of the global questions table. Acts like a shuffled queue
# and transforms the questions and fills the global question table.
#
def fetch_data( m )
- # TODO: Make this configurable, and add support for more than one file (there's a size limit in linux too ;) )
# Read the winning messages file
@win_messages = Array.new
if File.exists? "#{@bot.botclass}/quiz/win_messages"
warning( "win_messages file not found!" )
end
+ # TODO: Make this configurable, and add support for more than one file (there's a size limit in linux too ;) )
path = "#{@bot.botclass}/quiz/quiz.rbot"
debug "Fetching from #{path}"
@questions = []
# Fuse together and remove comments, then split
- data = "#{localdata}\n\n#{serverdata}".gsub( /^#.*$/, "" )
+ data = "\n\n#{localdata}\n\n#{serverdata}".gsub( /^#.*$/, "" )
entries = data.split( "\nQuestion: " )
#First entry will be empty.
entries.delete_at(0)
def say_score( m, nick )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if q.registry.has_key?( nick )
score = q.registry[nick].score
# Reimplemented from Plugin
#
def listen( m )
- return unless @quizzes.has_key?( m.target.to_s )
- q = @quizzes[m.target.to_s]
+ return unless @quizzes.has_key?( m.channel.to_s )
+ return unless m.kind_of?(PrivMessage)
+ q = @quizzes[m.channel.to_s]
return if q.question == nil
#######################################################################
def cmd_quiz( m, params )
fetch_data( m ) if @questions.empty?
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if q.question
m.reply "#{Bold}#{Color}03Current question: #{Color}#{Bold}#{q.question}"
def cmd_solve( m, params )
- return unless @quizzes.has_key?( m.target.to_s )
- q = @quizzes[m.target.to_s]
+ return unless @quizzes.has_key?( m.channel.to_s )
+ q = @quizzes[m.channel.to_s]
m.reply "The correct answer was: #{q.answer}"
def cmd_hint( m, params )
- return unless @quizzes.has_key?( m.target.to_s )
- q = @quizzes[m.target.to_s]
+ return unless @quizzes.has_key?( m.channel.to_s )
+ q = @quizzes[m.channel.to_s]
if q.question == nil
m.reply "#{m.sourcenick.to_s}: Get a question first!"
stats = PlayerStats.new( 0, 0, 0 )
end
- stats["score"] = stats.score - 1
+ stats["score"] = stats.score - 1
q.registry[m.sourcenick.to_s] = stats
calculate_ranks( m, q, m.sourcenick.to_s )
def cmd_skip( m, params )
- return unless @quizzes.has_key?( m.target.to_s )
- q = @quizzes[m.target.to_s]
+ return unless @quizzes.has_key?( m.channel.to_s )
+ q = @quizzes[m.channel.to_s]
q.question = nil
cmd_quiz( m, params )
def cmd_joker( m, params )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if q.question == nil
m.reply "#{m.sourcenick.to_s}: There is no open question."
def cmd_top5( m, params )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if q.rank_table.empty?
m.reply "There are no scores known yet!"
return
end
- m.reply "* Top 5 Players for #{m.target.to_s}:"
+ m.reply "* Top 5 Players for #{m.channel.to_s}:"
[5, q.rank_table.length].min.times do |i|
player = q.rank_table[i]
def cmd_top_number( m, params )
num = params[:number].to_i
return unless 1..50 === num
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if q.rank_table.empty?
m.reply "There are no scores known yet!"
return
end
ar = []
- m.reply "* Top #{num} Players for #{m.target.to_s}:"
+ m.reply "* Top #{num} Players for #{m.channel.to_s}:"
n = [ num, q.rank_table.length ].min
n.times do |i|
player = q.rank_table[i]
def cmd_autoask( m, params )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
if params[:enable].downcase == "on"
q.registry_conf["autoask"] = true
def cmd_transfer( m, params )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
debug q.rank_table.inspect
def cmd_del_player( m, params )
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
debug q.rank_table.inspect
nick = params[:nick]
def cmd_set_score(m, params)
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
debug q.rank_table.inspect
nick = params[:nick]
def cmd_set_jokers(m, params)
- q = create_quiz( m.target.to_s )
+ q = create_quiz( m.channel.to_s )
nick = params[:nick]
val = [params[:jokers].to_i, Max_Jokers].min