All pastes #739942 Raw Edit

WQuizz

public text v1 · immutable
·published 2007-10-17 16:12 UTC
rendered paste body
========== Aliases ==========

;-------------------------------------------------------------
; WQuizz 1.6 - Le Quizz pour mIRC par Wizou (Olivier Marcoux)
; Ce script est diffusé sous license GPL :
; Vous pouvez le modifier tant que vous laisser clairement
;  visible que ce n'est pas l'original et l'url du site
;  permettant de me contacter et de télécharger l'original
; Vous ne pouvez pas vendre ce script ou un script basé dessus
; L'auteur n'est pas responsable des dommages causé par
;  l'utilisation de ce script.
; Copyright (c) 2001 Olivier Marcoux - Tous droits réservés.
;-------------------------------------------------------------
/op /mode # +ooo $$1-
/dop /mode # -ooo $$1-
/j /join #$$1 $2-
/p /part #
/n /names #$$1
/w /whois $$1
/k /kick # $$1
/q /query $$1
/hop /part # | /join #$$1
/send /dcc send $1 $2
/chat /dcc chat $1
/ping /.msg $$1 $chr(1) $+ PING $uptime(mirc) $+ $chr(1)
/trivia_load {
  /unset %trivia.mode
  /unset %trivia.slave
  /trivia_set_database %trivia.file
  /trivia_forget_nick *
  if (#test* iswm %trivia.channel) %trivia.channel = #test $+ $rand(0,999)
  if (%trivia.prefix.question == $null) %trivia.prefix.question = 1
  if ($exists(scores) == $false) /writeini scores -main- topten 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne>
  .timer 1 1 if (#test* iswm %trivia.channel ) /trivia_set_channel $chr(35) $+ $$!?="Choisissez le salon de votre Quizz:" 
  .timer 1 2 if (($me == WQuizz) || ($me == _WQuizz_)) /nick $$!?="Choisissez le pseudonyme de votre Quizz:"
}
/trivia_init {
  /.timertrivia off
  /unset %trivia.question
  /unset %trivia.answer
  /unset %trivia.answer.plain
  /unset %trivia.last_win
  /unset %trivia.qu_unanswered
  /unset %trivia.qu_asked
  /unset %trivia.qu_found
  /unset %trivia.qu_limit
  /unset %trivia.mode
  /unset %trivia.time.*
}
/trivia_reset_scores {
  if ((%trivia.slave == 1)  && (%trivia.slave.master != $null)) /.notice %trivia.slave.master !reset_scores %trivia.channel
  /remove scores
  /writeini scores -main- topten 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne> 0:<personne>
}
/trivia_advertise {
  /msg %trivia.channel  $+ %trivia.color.winner $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold ~ $+ %trivia.color.question †  $+ %trivia.color.state $+ ¤  $+ %trivia.color.highlight $+ WQuizz $trivia_get_version  $+ %trivia.color.info $+ - $+ %trivia.color.highlight %trivia.channel  $+ %trivia.color.state $+ ¤ $+ %trivia.color.question †  $+ %trivia.color.winner $+ ~ 
  /trivia_show_basesize %trivia.channel
  /trivia_short_advertise
}
/trivia_short_advertise {
  /trivia_waiting
  /msg %trivia.channel  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ En attente de joueurs, tapez  $+ %trivia.color.state $+ !quizz $+ %trivia.color.info pour lancer le Quizz!
  /.timertrivia 1 300 /trivia_advertise
}
/trivia_waiting {
  /trivia_init
}
/trivia_show_basesize {
  /msg $1  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Il y a $+ %trivia.color.highlight %trivia.file.size  $+ %trivia.color.state $+ questions dans la base.
}
/trivia_unanswered {
  var %duration = $duration($calc($ctime - %trivia.time.start))
  /msg %trivia.channel  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Il y a eu $+ %trivia.color.state %trivia.qu_unanswered  $+ %trivia.color.info $+ questions non trouvées. $+ %trivia.color.state Le Quizz est suspendu... $+ %trivia.color.info (actif depuis %duration $+ )
  /trivia_init
  /.timertrivia 1 15 /trivia_short_advertise
}
/trivia_stop {
  var %duration = %trivia.time.start
  var %duration = $duration($calc($ctime - %duration))
  /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le Quizz est terminé pour le moment... $+ %trivia.color.info (actif depuis %duration $+ )
  /echo %trivia.channel 1,8Je suis à l'ecoute d'un !quizz pour me réactiver
  /trivia_init
  /.timertrivia 1 300 /trivia_advertise
}
/trivia_disable {
  /trivia_init
  %trivia.mode = disabled $1
  /echo %trivia.channel 1,8Quizz désactivé (ignore !quizz)
}
/trivia_start {
  /trivia_init
  /.timer 1 5 /trivia_show_top3 %trivia.channel
  %trivia.mode = running
  %trivia.time.start = $ctime
  var %text =  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le Quizz démarre dans 15 secondes, préparez-vous!
  if ($1 != $null) {
    %trivia.qu_limit = $1
    %text = %text  $+ %trivia.color.info $+ ( $+ $1 questions seront posées)
  }
  /msg %trivia.channel %text
  if ($notify(%trivia.slave.master).ison) /trivia_master_notify
  /trivia_schedule_next 15
}
/trivia_new_question {
  var %question = %trivia.next_question
  if (%question != $null) {
    unset %trivia.question.index
    /unset %trivia.next_question
  }
  else {
    %trivia.file.size = $lines(%trivia.file)
    if (%trivia.order == linear) {
      if (%trivia.order.index == %trivia.file.size) %trivia.order.index = 0
      inc %trivia.order.index
      %trivia.question.index = %trivia.order.index
    }
    elseif (%trivia.order == semi-linear) {
      if (%trivia.order.index == %trivia.file.size) %trivia.order.index = 0
      var %quart = $int($calc(%trivia.file.size / 32))
      var %index
      if (%trivia.order.index >= $calc(%quart * 32)) %index = $calc(%trivia.order.index + 1)
      else %index = $calc(((%trivia.order.index % 32) * %quart) + $int($calc(%trivia.order.index / 32)) + 1)
      inc %trivia.order.index
      %trivia.question.index = %index
    }
    else {
      var %index = %trivia.order.index
      while (%index == %trivia.order.index) {
        %index = $rand(1,%trivia.file.size)
      }
      %trivia.order.index = %index
      %trivia.question.index = %trivia.order.index
    }
    %question = $read(%trivia.file,%trivia.question.index)
  }
  /trivia_ask_question %question
}
/trivia_ask_question {
  var %question = $gettok($1-,1,92)
  var %answer = $strip($gettok($1-,2,92))
  %trivia.answer = %answer
  if (%question == #S) {
    %question = $upper(%answer)
    while (%question == %answer) {
      var %temp = %question
      %question = $null
      while (%temp != $null) {
        var %rnd = $rand(1,$len(%answer))
        %question = %question $+ $mid(%temp,%rnd,1)
        %temp = $left(%temp,$calc(%rnd - 1)) $+ $mid(%temp,$calc(%rnd + 1))
      }
    }
    %question = Mot mélangé : %question
  }
  %trivia.question = %question
  %trivia.answer.plain = $trivia_strip(%answer)
  /trivia_show_question
  if (%trivia.showanswers == 1) /echo %trivia.channel 1,8Réponse: %answer
  /.timertrivia 1 25 /trivia_show_hint
}
/trivia_show_question {
  var %qu = %trivia.question
  if (%qu == $null) /return
  var %rand = $rand(1,$len(%qu))
  %qu = $left(%qu,%rand) $+  $+ %trivia.color.question $+ $mid(%qu,$calc(%rand + 1))
  var %prefix
  if (%trivia.prefix.question == 0) %prefix = $null
  elseif (%trivia.prefix.question == 1) {
    var %ratio
    if (%trivia.qu_asked == 0) %ratio = 0
    else %ratio = %trivia.qu_found / %trivia.qu_asked
    %ratio = $calc($round(%ratio, 3) * 100 + 0.01)
    %ratio = $left(%ratio, $calc($pos(%ratio,.)+1))
    %prefix = [ $+ %trivia.color.state $+ %ratio $+ $chr(37) $+  $+ %trivia.color.highlight $+ ]:
  }
  elseif (%trivia.prefix.question == 2) %prefix = [ $+ %trivia.color.state $+ %trivia.qu_found $+  $+ %trivia.color.info $+ / $+ %trivia.color.state $+ %trivia.qu_asked $+  $+ %trivia.color.highlight $+ ]:
  elseif (%trivia.prefix.question == 3) %prefix = [ $+ %trivia.color.state $+ $chr(35) $+ $iif(%trivia.question.index,%trivia.question.index,##) $+  $+ %trivia.color.highlight $+ ]:
  elseif (%trivia.prefix.question == 4) %prefix = [ $+ %trivia.color.state $+ %trivia.file.size $+  $+ %trivia.color.info qu $+ %trivia.color.highlight $+ ]:
  elseif (%trivia.prefix.question == 5) %prefix = [ $+ %trivia.color.info $+ $duration($calc($ctime - %trivia.time.start)) $+  $+ %trivia.color.highlight $+ ]:
  elseif (%trivia.prefix.question == 6) %prefix = [ $+ %trivia.color.info $+ Question $+ %trivia.color.highlight $+ ]:
  elseif (%trivia.prefix.question !isnum) %prefix = %trivia.prefix.question
  /msg %trivia.channel  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ %prefix $+  $+ %trivia.color.question %qu
  %trivia.time.show_question = $calc($ctime + 15)
}
/trivia_show_hint {
  var %len = $len(%trivia.answer)
  var %hint
  if (%len == 2) %len = 3
  if (%len >= 3) {
    %len = %len / 3
    if ($rand(0,1) == 0) %hint =  $+ %trivia.color.info $+ Une petite aide: $+ %trivia.color.question $left(%trivia.answer,%len) $+ ...
    else %hint =   $+ %trivia.color.info $+ Une petite aide: $+ %trivia.color.question ... $+ $right(%trivia.answer,%len)
  }
  else %hint = $null
  /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le délai est bientot écoulé! %hint
  /.timertrivia 1 15 /trivia_show_answer
}
/trivia_show_answer {
  /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Désolé, le délai est écoulé pour cette question...  $+ %trivia.color.info $+ La réponse était: $+ %trivia.color.question %trivia.answer
  /trivia_end_of_question
  inc %trivia.qu_unanswered
  if (%trivia.qu_unanswered == 8) /.timertrivia 1 3 /trivia_unanswered
}
/trivia_choose_winner {
  if (%trivia.answer.plain == $null) {
    /dec %trivia.qu_asked
    /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Mmmmhh finalement je décide que $+ %trivia.color.info $1  $+ %trivia.color.state $+ a bien répondu !.....
  }
  /trivia_good_answer $1
}
/trivia_good_answer {
  /.timertrivia off
  %trivia.qu_unanswered = 0
  /inc %trivia.qu_found
  if ($trivia_nick($1) != %trivia.last_win) {
    %trivia.last_win = $trivia_nick($1)
    /writeini scores $trivia_nick($1) streak 0
  }
  var %wins    = $calc(1 + $readini(scores,$trivia_nick($1),wins))
  var %streak  = $calc(1 + $readini(scores,$trivia_nick($1),streak))
  /writeini scores $trivia_nick($1) wins %wins
  /writeini scores $trivia_nick($1) streak %streak
  var %longest  = $readini(scores,$trivia_nick($1),longest_streak)
  if (%streak > $calc(%longest + 0)) /writeini scores $trivia_nick($1) longest_streak %streak
  var %msg =  $+ %trivia.color.winner $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Correct! $+ %trivia.color.info La réponse est: $+ %trivia.color.question %trivia.answer $+  $+ %trivia.color.info $+ . Continue comme çà, $+ %trivia.color.winner %trivia.last_win  $+ %trivia.color.info $+ ! ( $+ %trivia.color.winner $+  $+ %wins $+  $+ %trivia.color.info réponse $+ $pluriel(%wins) $+ )
  if (%streak > 1) %msg = %msg dont $+ %trivia.color.winner %streak  $+ %trivia.color.info $+ d'affilée!
  /msg %trivia.channel %msg
  if ($me isop %trivia.channel) /mode %trivia.channel +v $1
  var %newtop = $deltok($sorttok($addtok($remtok($readini(scores,-main-,topten),$calc(%wins - 1) $+ : $+ $trivia_nick($1),1,32),%wins $+ : $+ $trivia_nick($1),32),32,nr),11,32)
  /writeini scores -main- topten %newtop
  if ((%trivia.slave == 1) && ($findtok(%newtop,%wins $+ : $+ $trivia_nick($1),1,32) <= 3)) /.notice %trivia.slave.master !new_score %wins $trivia_nick($1) %trivia.channel
  /trivia_end_of_question
}
/trivia_end_of_question {
  unset %trivia.answer.plain
  /inc %trivia.qu_asked
  /.timertrivia 1 5 /trivia_resume
}
/trivia_resume {
  var %count = %trivia.qu_limit
  if (%count != $null) {
    /dec %count
    if (%count == 0) {
      /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le Quizz est terminé !! $+ %trivia.color.info Voici les gagnants
      /.timer 1 5 /trivia_show_top10 %trivia.channel
      /trivia_init
      /return
    }
    %trivia.qu_limit = %count
    /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le Quizz continue dans 15 secondes... $+ %trivia.color.info (encore %count question $+ $pluriel(%count) $+ )
  }
  else  /msg %trivia.channel  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Le Quizz continue dans 15 secondes...
  /.timertrivia 1 10 /trivia_ready
  %count = %trivia.qu_asked
  if     ($calc(%count % 50)  == 0)  /.timer 1 5 /trivia_show_top10 %trivia.channel
  elseif ($calc(%count % 100) == 25) {
    if ((%trivia.slave == 1) && (%trivia.toptop3 != $null)) /.timer 1 5 /trivia_show_toptop3 %trivia.channel
    else /.timer 1 5 /trivia_show_help %trivia.channel
  }
  elseif ($calc(%count % 100) == 75) /.timer 1 5 /trivia_show_commands %trivia.channel
  elseif ($calc(%count % 5)   == 0)  /.timer 1 5 /trivia_show_top3 %trivia.channel
}
/trivia_format_toptop {
  var %top = $gettok(%trivia.toptop3,$1,32)
  return $gettok(%top,2,58)  $+ %trivia.color.info $+ de $+ %trivia.color.question $gettok(%top,3,58)  $+ %trivia.color.wins $+ ( $+ %trivia.color.winner $+ $gettok(%top,1,58) points $+ %trivia.color.wins $+ )
}
/trivia_show_toptop3 {
  if (%trivia.toptop3 == $null) {
    /echo $chan 1,8Vous devez utiliser le mode asservi avec le bot DaQuizz pour profiter du top inter-salons !
  }
  else {
    /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Les $+ %trivia.color.state meilleurs $+ %trivia.color.info des $+ %trivia.color.state meilleurs $+ %trivia.color.info : (tous salons confondus)
    /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 1. $+ %trivia.color.winner $trivia_format_toptop(1)
    /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 2. $+ %trivia.color.wins $trivia_format_toptop(2)
    /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 3. $+ %trivia.color.wins $trivia_format_toptop(3)
  }
}
/trivia_format_top {
  var %top = $gettok($readini(scores,-main-,topten),$1,32)
  return $gettok(%top,2,58)  $+ %trivia.color.wins $+ ( $+ %trivia.color.winner $+ $gettok(%top,1,58) $+  $+ %trivia.color.wins $+ )
}
/trivia_show_top3 {
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Les $+ %trivia.color.state 3 meilleurs $+ %trivia.color.info : $+ %trivia.color.highlight 1. $+ %trivia.color.winner $trivia_format_top(1) $+  $+ %trivia.color.info - 2. $+ %trivia.color.wins $trivia_format_top(2)  $+ %trivia.color.info $+ - 3. $+ %trivia.color.wins $trivia_format_top(3)
}
/trivia_show_top10 {
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Classement des $+ %trivia.color.state 10 meilleurs $+ %trivia.color.info : $+ %trivia.color.highlight 01. $+ %trivia.color.winner $trivia_format_top(1)
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 02. $+ %trivia.color.wins $trivia_format_top(2)  $+ %trivia.color.info $+ - 03. $+ %trivia.color.wins $trivia_format_top(3)  $+ %trivia.color.info $+ - 04. $+ %trivia.color.wins $trivia_format_top(4)
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 05. $+ %trivia.color.wins $trivia_format_top(5)  $+ %trivia.color.info $+ - 06. $+ %trivia.color.wins $trivia_format_top(6)  $+ %trivia.color.info $+ - 07. $+ %trivia.color.wins $trivia_format_top(7)
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ 08. $+ %trivia.color.wins $trivia_format_top(8)  $+ %trivia.color.info $+ - 09. $+ %trivia.color.wins $trivia_format_top(9)  $+ %trivia.color.info $+ - 10. $+ %trivia.color.wins $trivia_format_top(10)
}
/trivia_show_commands {
  /msg $1  $+ %trivia.color.info $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Liste des commandes disponibles pour le Quizz :
  /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+  !repete   $+ %trivia.color.wins pour répéter la question posée
  /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+  !score    $+ %trivia.color.wins pour connaitre son score ou le score d'un autre
  /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+  !top10  $+ %trivia.color.info $+ ou $+ %trivia.color.highlight !top3   $+ %trivia.color.wins pour afficher les scores des meilleurs joueurs
  /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+  !ajouter  $+ %trivia.color.wins pour proposer une nouvelle question/réponse
  /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+  !nick x   $+ %trivia.color.wins pour choisir votre nick de jeu
}
/trivia_show_help {
  /msg $1  $+ %trivia.color.winner $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold ~ $+ %trivia.color.question †  $+ %trivia.color.state $+ ¤  $+ %trivia.color.info $+ Bienvenue au  $+ %trivia.color.highlight $+ WQuizz $trivia_get_version  $+ %trivia.color.info $+ ! - script téléchargeable sur $+ %trivia.color.state http://www.efrance.fr/wquizz  $+ %trivia.color.state $+ ¤ $+ %trivia.color.question †  $+ %trivia.color.winner $+ ~ 
  var %count = $lines("aide.txt")
  var %i = 1
  while (%i <= %count) {
    /msg $1  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ $read("aide.txt",%i)
    inc %i
  }
}
/trivia_show_score {
  var %wins    = $readini(scores,$trivia_nick($1),wins)
  var %longest = $readini(scores,$trivia_nick($1),longest_streak)
  if (%wins != $null) /notice $1 Votre score: %wins réponse $+ $pluriel(%wins) correcte $+ $pluriel(%wins) $+ . Maximum d'affilée: %longest réponse $+ $pluriel(%longest)
  else /notice $1 Vous n'avez pas encore répondu correctement
}
/trivia_show_else_score {
  var %wins    = $readini(scores,$trivia_nick($2),wins)
  var %longest = $readini(scores,$trivia_nick($2),longest_streak)
  if (%wins != $null) /notice $1 Score de $trivia_nick($2) $+ : %wins réponse $+ $pluriel(%wins) correcte $+ $pluriel(%wins) $+ . Maximum d'affilée: %longest réponse $+ $pluriel(%longest)
  else /notice $1 $trivia_nick($2) n'a pas encore répondu correctement
}
/trivia_set_nick {
  %trivia.nick. [ $+ [ $1 ] ] = $2
  var %wins    = $readini(scores,$2,wins)
  var %longest = $readini(scores,$2,longest_streak)
  if (%wins != $null) /notice $1 Votre nick de jeu est maintenant $2 $+ . Votre score: %wins réponse $+ $pluriel(%wins) correcte $+ $pluriel(%wins) $+ . Maximum d'affilée: %longest réponse $+ $pluriel(%longest)
  else /notice $1 Votre nick de jeu est maintenant: $2
}
/trivia_nick {
  if (%trivia.nick. [ $+ [ $1 ] ] != $null) return %trivia.nick. [ $+ [ $1 ] ]
  return $1
}
/trivia_change_nick {
  var %nick = %trivia.nick. [ $+ [ $1 ] ]
  if (%nick != $null) {
    %trivia.nick. [ $+ [ $2 ] ] = %nick
    unset %trivia.nick. [ $+ [ $1 ] ]
  }
}
/trivia_forget_nick {
  unset %trivia.nick. [ $+ [ $1 ] ]
}
/trivia_ready {
  var %longest = $readini(scores,%trivia.last_win,longest_streak)
  var %text =  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold $+ Prochaine question dans 5 secondes...
  %trivia.time.show_question = $calc($ctime + 6)
  if (%trivia.last_win != $null) {
    %text = %text  $+ %trivia.color.info $+ (Dernier gagnant: $+ %trivia.color.wins %trivia.last_win $+  $+ %trivia.color.info
    if (%longest > 1) %text = %text Maximum: $+ %trivia.color.wins %longest d'affilée $+ %trivia.color.info
    %text = %text $+ )
  }
  /msg %trivia.channel %text
  /trivia_schedule_next 5
}
/trivia_schedule_next {
  /.timertrivia 1 $1 /trivia_new_question
  if ((%trivia.slave == 1)  && (%trivia.next_question == $null) && ($rand(0,99) < %trivia.slave.prob)) /.notice %trivia.slave.master !ready_for_next
}
/pluriel {
  if ($1 > 1) /return s
  else /return $null
}
/parenth {
  if ($1- == $null) /return $null
  else /return ( $+ $1- $+ )
}
/trivia_strip_light {
  var %text = $strip($1-)
  while ($pos(<>.:\/@™ ¥†¤*^~ $+ $chr(32),$left(%text,1)) != $null) {
    %text = $mid(%text,2)
  }
  while ($pos(<>.:\/@™ ¥†¤*^~ $+ $chr(32),$right(%text,1)) != $null) {
    %text = $left(%text,$calc($len(%text) - 1))
  }
  return %text
}
/trivia_strip {
  var %text = $trivia_strip_light($1-)
  if ($left(%text,5) = dans $+ $chr(32)) %text = $mid(%text,6)
  elseif ($left(%text,5) = avec $+ $chr(32)) %text = $mid(%text,6)
  elseif ($left(%text,2) = à $+ $chr(32)) %text = $mid(%text,3)
  elseif ($left(%text,2) = a $+ $chr(32)) %text = $mid(%text,3)
  elseif ($left(%text,3) = de $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,2) = d') %text = $mid(%text,3)
  if ($left(%text,2) = l') %text = $mid(%text,3)
  elseif ($left(%text,3) = un $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,3) = du $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,3) = le $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,3) = la $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,3) = au $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,3) = en $+ $chr(32)) %text = $mid(%text,4)
  elseif ($left(%text,4) = une $+ $chr(32)) %text = $mid(%text,5)
  elseif ($left(%text,4) = les $+ $chr(32)) %text = $mid(%text,5)
  elseif ($left(%text,4) = des $+ $chr(32)) %text = $mid(%text,5)
  elseif ($left(%text,4) = aux $+ $chr(32)) %text = $mid(%text,5)
  return $replace(%text,É,E,é,e,è,e,ê,e,à,a,â,a,ç,c,ô,o,ù,u,û,u,ï,i,î,i,-,$chr(32),',$chr(32))
}
;================================================================================================================
/trivia_master_notify {
  /trivia_master_activate
  if ((%trivia.mode == running) && (%trivia.slave.auto == 1) && (%trivia.slave != 1)) {
    /echo -abf 1,8Le WQuizz maître ( $+ %trivia.slave.master $+ ) est connecté !
    /echo -abf 1,8Passage en mode asservi ( $+ %trivia.slave.prob $+ % des questions proviendront du maître)
    %trivia.slave = 1
  }
}
/trivia_master_unotify {
  if ((%trivia.mode == running) && (%trivia.slave == 1)) /echo -abf 1,8Attention !! le WQuizz maître ( $+ %trivia.slave.master $+ ) n'est plus connecté ! Fin du mode asservi
  %trivia.slave = 0
}
/trivia_master_activate {
  /.notice %trivia.slave.master !start_slave $trivia_get_version_numeric %trivia.channel $gettok($readini(scores,-main-,topten),1-3,32)
}
/trivia_master_activated {
  if ($1 > $trivia_get_version_numeric) /echo -abf 1,8Attention !! Il existe maintenant une version $calc($1 / 1000) du WQuizz ! Allez la télécharger sur http://www.efrance.fr/WQuizz
  %trivia.toptop3 = $2 $3 $4
}
/trivia_set_slave {
  %trivia.slave = 0
  if ($1 == 1) {
    if ($notify(%trivia.slave.master).ison) {
      if (%trivia.mode == running) /echo -abf 1,8Debut du mode asservi ( $+ %trivia.slave.prob $+ % des questions proviendront du maître)
      %trivia.slave = 1
      /trivia_master_activate
    }
    else /echo -abf 1,8Le WQuizz maître ( $+ %trivia.slave.master $+ ) n'est pas connecté
  }
  else if (%trivia.mode == running) /echo -abf 1,8Fin du mode asservi
}
/trivia_set_slave_master {
  if ($1 != $null) {
    /.notify -r %trivia.slave.master
    %trivia.slave.master = $1
    if (%trivia.slave == 1) /.timer 1 2 /trivia_set_slave 1
    /.notify %trivia.slave.master
  }
}
/trivia_set_slave_prob {
  %trivia.slave.prob = $1
}
/trivia_set_slave_auto {
  %trivia.slave.auto = $1
  if (($1 == 1) && ($notify(%trivia.slave.master).ison)) /trivia_master_notify
}
;================================================================================================================
/trivia_set_channel {
  if (%trivia.channel != $1) /part %trivia.channel
  if ($chan($1) == $null) {
    /join $1
    /.timertrivia 1 5 /trivia_advertise
  }
  else /echo $1  $+ %trivia.color.state $+ , $+ %trivia.color.bkgnd $+ %trivia.color.bold Quizz prêt pour être lancé ici
  %trivia.channel = $1
}
;================================================================================================================
/trivia_set_database {
  if ($1 == $null) return
  %trivia.file = $1
  %trivia.file.size = $lines(%trivia.file)
}
;================================================================================================================
/trivia_get_version_numeric {
  /return 1600
}
/trivia_get_version {
  /return $calc($trivia_get_version_numeric / 1000)
}
;================================================================================================================
/trivia_set_running_notice {
  %trivia.running_notice = $1
}
;================================================================================================================
/trivia_set_color_bold {
  %trivia.color.bold = $1
}
/color_name {
  if ($1 == 99) /return aucune
  else /return $gettok(blanc/noir/bleu foncé/vert foncé/rouge/marron foncé/violet/orange/jaune/vert clair/gris bleu/bleu clair/bleu/rose/gris foncé/gris clair,$calc($1 + 1),47)
}
/ask_for_color {
  var %value = $?=" $1- $crlf $crlf $+ (Tapez Ctrl-K puis le nombre 0..15 correspondant à la couleur désirée, $crlf $+ ou 99 pour aucune couleur)"
  if ($mid(%value,1,1) == ) %value = $mid(%value,2)
  /return %value
}
/trivia_change_color {
  var %value = $ask_for_color($2-)
  if (%value != $null) %trivia.color. [ $+ [ $1 ] ] = $mid($calc(100 + %value),2,2)
}

========== Remotes ==========

;-------------------------------------------------------------
; WQuizz 1.6 - Le Quizz pour mIRC par Wizou (Olivier Marcoux)
; Ce script est diffusé sous license GPL :
; Vous pouvez le modifier tant que vous laisser clairement
;  visible que ce n'est pas l'original et l'url du site
;  permettant de me contacter et de télécharger l'original
; Vous ne pouvez pas vendre ce script ou un script basé dessus
; L'auteur n'est pas responsable des dommages causé par
;  l'utilisation de ce script.
; Copyright (c) 2001 Olivier Marcoux - Tous droits réservés.
;-------------------------------------------------------------
raw 403:$($me %trivia.channel *): /trivia_disable | /echo -a 1,8Vous n'êtes pas dans le channel de quizz actuellement réglé ( $+ %trivia.channel $+ ) ! Pour fixer un nouveau channel de Quizz, utilisez le menu contextuel Changer le salon de quizz
raw 404:$($me %trivia.channel *): /trivia_disable | /echo -a 1,8Vous n'êtes pas dans le channel de quizz actuellement réglé ( $+ %trivia.channel $+ ) ! Pour fixer un nouveau channel de Quizz, utilisez le menu contextuel Changer le salon de quizz
on 1:CONNECT:/trivia_load
on 1:TEXT:*:?:{
  var %text = $trivia_strip_light($1-)
  tokenize 32 %text
  if ($1- = !ajouter) {
    /msg $nick Tapez maintenant la question
    %trivia.player. [ $+ [ $nick ] $+ .adding ] = _
  }
  elseif (($1- == !commandes) || ($1- == !commande)) /trivia_show_commands $nick
  elseif ($1- == !aide)      /trivia_show_help $nick
  elseif ($1- == !top3)      /trivia_show_toptop3 $nick
  elseif ($1- == !top10)     /trivia_show_top10 $nick
  elseif ($1- == !taille)    /trivia_show_basesize $nick
  elseif ($1- == !score)     /trivia_show_score $nick
  elseif ($1  == !score)     /trivia_show_else_score $nick $2
  elseif ($1- == !join) {
    if ($nick == %trivia.who_closed_me) {
      /join %trivia.channel 
      /timer 1 5 /trivia_advertise
    }
    else /msg $nick J'ai été viré par %trivia.who_closed_me
  }
  else {
    var %adding = %trivia.player. [ $+ [ $nick ] $+ .adding ]
    if (%adding != $null) {
      if (%adding == _) {
        %trivia.player. [ $+ [ $nick ] $+ .adding ] = %text
        /msg $nick Ok pour la question, tapez maintenant la réponse
      }
      else {
        unset %trivia.player. [ $+ [ $nick ] $+ .adding ]
        /write requests.txt *** $nick : Proposition de question/réponse
        /write requests.txt %adding
        /write requests.txt %text
        /msg $nick Merci, j'ai bien enregistré votre proposition. (tapez ici !ajouter pour en rajouter d'autres)
      }
    }
  }
}
on 1:JOIN:%trivia.channel:{
  if ($nick == $me) /trivia_forget_nick *
  if ((%trivia.mode == running) && (%trivia.running_notice == 1)) {
    /.timer 1 3 /.notice $nick Un Quizz est en cours !! Tape !aide pour obtenir de l'aide  :-)
  }
  /trivia_forget_nick $nick
}
on 1:ACTION:*:%trivia.channel:{
  var %text = $trivia_strip_light($1-)
  if (($trivia_strip(%text) == %trivia.answer.plain) && (%trivia.answer.plain != $null)) {
    if (%trivia.mode == running) {
      /trivia_good_answer $nick
    }
  }
}
on 1:TEXT:*:%trivia.channel:{
  var %text = $trivia_strip_light($1-)
  tokenize 32 %text
  if ($nick isop %trivia.channel) {
    if ($1- == !listen) {
      /trivia_waiting
      /notice $nick Quizz prêt... Je suis à l'écoute d'un !quizz pour démarrer
    }
    elseif ($1- == !disable) {
      /trivia_disable $2
      /notice $nick Quizz désactivé
    }
    elseif ($1- == !close) {
      /trivia_disable all
      %trivia.who_closed_me = $nick
      /notice $nick Quizz désactivé. Je pars du channel %trivia.channel
      /part %trivia.channel
    }
    elseif ($1- == !reconnect) {
      /trivia_disable all
      %trivia.who_closed_me = $nick
      /quit  $+ %trivia.color.highlight $+ , $+ %trivia.color.bkgnd $+ Bougez pas, je reviens dans $+ %trivia.color.state 30 $+ %trivia.color.highlight secondes
      /timer -o 1 60 /server $2
    }
    elseif (($1- = !stop) && (%trivia.mode == running)) {
      /trivia_stop
      /halt
    }
  }
  if (%trivia.mode == disabled all) /halt
  if ($1 == !quizz) {
    if (%trivia.mode == $null) /trivia_start $2
    elseif (%trivia.mode == disabled) /notice $nick Le Quizz est désactivé pour le moment
    /halt
  }
  elseif ($1- = !stop) {
    if (%trivia.mode != running) {
      /notice $nick OK, j'arrête la pub
      /.timertrivia off
    }
    else /notice $nick [pour arreter le quizz, il suffit qu'un op tape !stop ou que personne ne reponde à 8 questions consécutives]
  }
  elseif (($1- = !reset_scores) && ($nick isop %trivia.channel)) {
    /trivia_reset_scores
    /notice $nick Tous les scores des joueurs ont été remis à zéro
  }
  elseif (($trivia_strip(%text) == %trivia.answer.plain) && (%trivia.answer.plain != $null)) {
    if (%trivia.mode == running) {
      /trivia_good_answer $nick
    }
  }
  elseif ($1- == !ping)      /.msg $nick $chr(1) $+ PING $uptime(mirc) $+ $chr(1)
  elseif ($1- == !commandes) /trivia_show_commands $nick
  elseif ($1- == !aide)      /trivia_show_help $nick
  elseif ($1- == !top3)      /trivia_show_toptop3 $nick
  elseif ($1- == !top10)     /trivia_show_top10 $nick
  elseif ($1- == !taille)    /trivia_show_basesize $nick
  elseif ($1- == !score)     /trivia_show_score $nick
  elseif (($1 == !score) && ($0 == 2)) /trivia_show_else_score $nick $2
  elseif (($1 == !nick)  && ($0 == 2)) /trivia_set_nick $nick $2
  elseif (($1- == !repeter) || ($1- = !repete)) {
    if ($ctime >= %trivia.time.show_question) /trivia_show_question
  }
  elseif ($1- == !revoir) {
    /msg $nick J'ai bien enregistré que vous me demandez de revoir la formulation de la question: " $+ %trivia.question $+ "
    /write requests.txt *** $nick : Revoir la question " $+ %trivia.question $+ "
  }
  elseif ($1- == !ajouter) {
    /msg $nick Vous voulez ajouter une question/réponse au quizz...
    /msg $nick Ne tapez pas n'importe quoi, vos suggestions sont vérifiées avant d'être ajoutées
    /msg $nick Tapez maintenant la question
    %trivia.player. [ $+ [ $nick ] $+ .adding ] = _
  }
}
on 1:KICK:%trivia.channel:{
  /trivia_forget_nick $nick
  if ($knick == $me) %trivia.who_closed_me = $nick
}
on ^300:NOTICE:!start_master *:?:/trivia_master_activated $2- | /haltdef
on ^300:NOTICE:!start_slave *:?:/haltdef
on ^300:NOTICE:!new_score *:?:/haltdef
on ^300:NOTICE:!new_toptop3 *:?:%trivia.toptop3 = $2 $3 $4 | /haltdef
on ^300:NOTICE:!ready_for_next:?:/.notice $nick !next $read(%trivia.file) | /haltdef
on ^300:NOTICE:!ready_for_next *:?:/.notice $nick !next $read(%trivia.file,$2) | /haltdef
on ^300:NOTICE:!stats:?:/.notice $nick $trivia_get_version_numeric - $crc($alias(aliases.ini)) - $crc($script(script.ini)) - $lines(%trivia.file) - %trivia.slave.master - %trivia.slave.prob - %trivia.slave.auto | /haltdef
on ^300:NOTICE:!next *:?: if ((%trivia.slave == 1) && ($nick == %trivia.slave.master) && (%trivia.next_question == $null)) %trivia.next_question = $2- | /haltdef
on 1:CTCPREPLY:PING *:/notice $nick 15(Power-Ping) 11Tu lag très précisement de04 $calc(($uptime(mirc)-$2)/1000) 11secondes | /halt
on 1:INPUT:#:if ($1 == !quizz) /echo $chan 1,8Les commandes !xyz ne peuvent pas être utilisées ici, elles sont utilisées par les autres chatteurs. En tant qu'animateur du Quizz, vous l'animez grâce aux menus déroulant que vous trouverez, soit en haut de cette fenetre (<< WQuizz $trivia_get_version >>), soit en cliquant dans la fenêtre avec le bouton droit de la souris
on 1:NOTIFY: if ($nick == %trivia.slave.master) /trivia_master_notify
on 1:UNOTIFY: if ($nick == %trivia.slave.master) /trivia_master_unotify
on 1:NICK:/trivia_change_nick $nick $newnick
on 1:PART:%trivia.channel:/trivia_forget_nick $nick
on 1:QUIT:%trivia.channel:/trivia_forget_nick $nick