Quizz multisalon

Description

baser sur un wquizz sacrement recoder se quizz vous permet de lancer des quizz sur plusieur salon avec un seul bot et cela independament les un des autres.

il fonctionne avec les database de wquizz.

pour avoir les couleurs utiliser mon addon couleur system.

Source / Exemple :

;Quizz Multichan V1.3 par aerith "aeris_vallee@hotmail.com"
;pour une utilisation partiel ou complette dans un script me prevenir svp

on *:text:!quizz:#: quizzstart $chan
on *:text:!stop:#: quizzstop $chan

on *:text:*:*: {
  if ($readini(" $+ $mircdirquizz/chan.ini",$chan,start)) {
    if ($1 == !menuquizz) {
      notice $nick %couleur Il y a 4 %quizz.data %couleur questions dans la base
      notice $nick %couleur 4 !score <nick> %couleur pour connaitre un score
      notice $nick %couleur 4 !top10 %couleur ou 4 !top3 %couleur pour afficher le classement
      notice $nick %couleur 4 !ajouter <question>  <reponse> %couleur pour proposer une nouvelle question/réponse
      notice $nick %couleur 4 !aide %couleur pour une aide sur le quizz
    }
    elseif ($1 == !top3) { notice $nick %couleur $score($chan,1) %couleur // $score($chan,2) %couleur // $score($chan,3) }
    elseif ($1 == !top10) {
      notice $nick %couleur Classement des 10 meilleurs : $score($chan,1)
      notice $nick %couleur $score($chan,2) %couleur // $score($chan,3) %couleur // $score($chan,4)
      notice $nick %couleur $score($chan,5) %couleur // $score($chan,6) %couleur // $score($chan,7)
      notice $nick %couleur $score($chan,8) %couleur // $score($chan,9) %couleur // $score($chan,10)
    }
    elseif ($1 == !aide) {
      notice $nick %couleur Vous devez taper le premier la bonne réponse avec l'orthographe correcte. Les grands nombres, doivent être tapés avec un espace comme séparateur des milliers (ex: 35 000)
    }
    elseif ($1 == !score) {
      if ($2 == $null) { notice $nick %couleur syntax 4 !score <nick> | halt }
      var %rep = " $+ $mircdirquizz/ $+ $chan $+ .ini"
      notice $nick %couleur Score de 7 $2 %couleur : 4 $readini(%rep,$2,score)
    }
    elseif ($1- == !revoir) {
      notice $nick J'ai bien enregistré que vous me demandez de revoir la question: " $readini(" $+ $mircdirquizz"/chan.ini,$chan,question) "
      write " $+ $mircdirrequest.txt" $nick : Revoir la question " $readini(" $+ $mircdirquizz/chan.ini",$chan,question) "
    }
    elseif ($1 == !ajouter) {
      write " $+ $mircdirquestion.txt" $nick : $chan : $2-
      notice $nick %couleur OK c'est enregistré
    }
    else {
      var %text = $quizzstrip($1-)
      tokenize 32 %text
      if ($readini(" $+ $mircdirquizz/chan.ini",$chan,reponse) == %text) { quizzreponse $chan $nick }
    }
  }
}
on *:JOIN:*: {
  if ($readini(" $+ $mircdirquizz/chan.ini",$chan,start)) {
    var %rep = " $+ $mircdirquizz/ $+ $chan $+ .ini"
    if ($readini(%rep,$nick,score)) {
      writeini -n %rep $nick score 0
      notice $nick %couleur Un petit quizz est en cour, tapez 4 !menuquizz %couleur pour les commandes
    }
  }
}
on *:NICK:*: {
  if ($readini(" $+ $mircdirquizz/chan.ini",$1,start)) {
    var %rep = " $+ $mircdirquizz/ $+ $chan $+ .ini"
    var %b = $readini(%rep,$nick,score)
    writeini -n %rep $newnick score %b
    remini %rep $nick
  }
}

alias quizzstart {
  if (!$readini(" $+ $mircdirquizz/chan.ini",$1,start)) {
    var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
    writeini -n " $+ $mircdirquizz/chan.ini" $chan nonrepondu 0
    remove %rep
    var %i = 1
    :tloop
    set %temp $nick($1,%i)
    writeini -n %rep $nick($1,%i) score 0
    if (%i != $nick($1,0)) { inc %i 1 | goto tloop }
    set %quizz.data $lines(" $+ $mircdirquizz/database.txt")
    writeini -n " $+ $mircdirquizz/chan.ini" $chan start $ctime
    msg $1 %couleur Le Quizz démarre dans 4 15 %couleur secondes, préparez-vous!
    timer 1 15 quizzposer $1
  }
  else { notice $nick le quizz tourne deja sur $1 }
}
alias quizzstop {
  var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
  timerquizz $+ $1 off
  if ($readini(" $+ $mircdirquizz/chan.ini",$1,start)) {
    msg $1 %couleur Le Quizz est terminé ( actif depuis 4 $duration($calc($ctime - $readini(" $+ $mircdirquizz/chan.ini",$1,start))) %couleur )
    msg $1 %couleur Classement des 10 meilleurs : $score($1,1)
    msg $1 %couleur $score($1,2) %couleur // $score($1,3) %couleur // $score($1,4)
    timer 1 1 msg $1 %couleur $score($1,5) %couleur // $score($1,6) %couleur // $score($1,7)
    timer 1 1 msg $1 %couleur $score($1,8) %couleur // $score($1,9) %couleur // $score($1,10)
  }
  remove %rep
  remini " $+ $mircdirquizz/chan.ini" $chan
}
alias score {
  var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
  var %temp = $ini(%rep,$2)
  if (%temp != $null) { return 4 $2 $+ . 7 %temp %couleur (4 $readini(%rep,%temp,score) %couleur $+ ) }
  else { return }
}
alias cscore {
  var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
  :sloop1
  var %qa $readini(%rep,$ini(%rep,1),score)
  var %qk = 1
  var %qj = 1
  :sloop2
  if (%qa < $readini(%rep,$ini(%rep,%qj),score)) {
    var %qk = %qj
  }
  if ($ini(%rep,0) != 0) {
    if (%qj == $ini(%rep,0)) {
      var %qb = $readini(%rep,$ini(%rep,%qk),score)
      writeini -n " $+ $mircdirquizz/cnick.ini" $ini(%rep,%qk) score %qb
      remini %rep $ini(%rep,%qk)
      goto sloop1
    }
    else { inc %qj 1 | goto sloop2 }
  }
  remove %rep
  rename " $+ $mircdirquizz/cnick.ini" %rep
}
alias quizzstrip {
  var %text = $strip($1-)
  if ($left(%text,2) = d') %text = $mid(%text,3)
  if ($left(%text,2) = l') %text = $mid(%text,3)
  if ($left(%text,5) = dans $+ $chr(32)) %text = $mid(%text,6)
  if ($left(%text,5) = avec $+ $chr(32)) %text = $mid(%text,6)
  if ($left(%text,2) = à $+ $chr(32)) %text = $mid(%text,3)
  if ($left(%text,2) = a $+ $chr(32)) %text = $mid(%text,3)
  if ($left(%text,3) = de $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = un $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = du $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = le $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = la $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = au $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,3) = en $+ $chr(32)) %text = $mid(%text,4)
  if ($left(%text,4) = une $+ $chr(32)) %text = $mid(%text,5)
  if ($left(%text,4) = les $+ $chr(32)) %text = $mid(%text,5)
  if ($left(%text,4) = des $+ $chr(32)) %text = $mid(%text,5)
  if ($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))
}
alias quizzposer {
  var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
  var %quizz.q = $read(" $+ $mircdirquizz/database.txt",$rand(1,%quizz.data))
  var %question = $gettok(%quizz.q,1,92)
  writeini -n " $+ $mircdirquizz/chan.ini" $1 question %question
  var %quizz.a $strip($gettok(%quizz.q,2,92))
  if (%question == #S) {
    %question = $upper(%quizz.a)
    while (%question == %quizz.a) {
      var %temp = %question
      %question = $null
      while (%temp != $null) {
        var %rnd = $rand(1,$len(%quizz.a))
        %question = %question $+ $mid(%temp,%rnd,1)
        %temp = $left(%temp,$calc(%rnd - 1)) $+ $mid(%temp,$calc(%rnd + 1))
      }
    }
    writeini -n " $+ $mircdirquizz/chan.ini" $1 question %couleur Mot mélangé : 4 %question
  }
  writeini -n " $+ $mircdirquizz/chan.ini" $1 reponse $quizzstrip(%quizz.a)
  msg $1 4 [Question] %couleur $readini(" $+ $mircdirquizz/chan.ini",$1,question)
  timerquizz $+ $1 1 25 quizzaide $1
}
alias quizzaide {
  var %rep = quizz/ $+ $1 $+ .ini
  var %len = $len($readini(" $+ $mircdirquizz/chan.ini",$1,reponse))
  var %hint
  if (%len == 2) %len = 3
  if (%len >= 3) {
    %len = %len / 3
    if ($rand(0,1) == 0) %hint = Une petite aide : 4 $left($readini(" $+ $mircdirquizz/chan.ini",$1,reponse),%len) $+ ...
    else %hint = Une petite aide : 4 ... $+ $right($readini(" $+ $mircdirquizz/chan.ini",$1,reponse),%len)
  }
  else %hint = $null
  msg $1 %couleur Le délai est bientot écoulé! %hint
  timerquizz $+ $1 1 15 quizznr $1
}
alias quizznr {
  msg $1 %couleur Désolé, le délai est écoulé . La réponse était: 4 $readini(" $+ $mircdirquizz/chan.ini",$1,reponse)
  remini quizz/chan.ini $1 reponse
  var %nr = $readini(" $+ $mircdirquizz/chan.ini",$1,nonrepondu)
  inc %nr 1
  writeini -n " $+ $mircdirquizz/chan.ini" $1 nonrepondu %nr
  if ($readini(" $+ $mircdirquizz/chan.ini",$1,nonrepondu) == 10) {
    msg $1 %couleur Il y a eu 4 10 %couleur questions non trouvées.
    quizzstop $1
  }
  timerquizz $+ $1 1 5 quizzresume $1
}
alias quizzreponse {
  var %rep = " $+ $mircdirquizz/ $+ $1 $+ .ini"
  timerquizz $+ $1 off
  writeini -n " $+ $mircdirquizz/chan.ini" $1 nonrepondu 0
  var %win = $readini %rep $2 score
  inc %win 1
  writeini -n %rep $2 score %win
  writeini -n " $+ $mircdirquizz/chan.ini" $1 dernier $2
  msg $1 %couleur Correct 4 $2 %couleur ! La réponse est: 4 $readini(" $+ $mircdirquizz/chan.ini",$1,reponse) %couleur ( 4 %win %couleur réponse )
  cscore $1
  remini " $+ $mircdirquizz/chan.ini" $1 reponse
  quizzresume $1
}
alias quizzresume {
  if ($readini(" $+ $mircdirquizz/chan.ini",$1,classement) == 4) {
    msg $1 %couleur Classement des 3 meilleurs : $score($1,1) %couleur // $score($1,2) %couleur // $score($1,3)
  }
  elseif ($readini(" $+ $mircdirquizz/chan.ini",$1,classement) == 8) {
    msg $1 %couleur Classement des 10 meilleurs : $score($1,1)
    msg $1 %couleur $score($1,2) %couleur // $score($1,3) %couleur // $score($1,4)
    msg $1 %couleur $score($1,5) %couleur // $score($1,6) %couleur // $score($1,7)
    msg $1 %couleur $score($1,8) %couleur // $score($1,9) %couleur // $score($1,10)
    writeini -n " $+ $mircdirquizz/chan.ini" $1 classement 0
  }
  elseif ($readini(" $+ $mircdirquizz/chan.ini",$1,classement) == $null) { writeini -n " $+ $mircdirquizz/chan.ini" $1 classement 1 }
  var %c = $readini(" $+ $mircdirquizz/chan.ini",$1,classement)
  inc %c 1
  writeini -n " $+ $mircdirquizz/chan.ini" $1 classement %c
  timer 1 10 msg $1 %couleur Prochaine question dans 5 secondes. ( Dernier gagnant: 4 $readini(" $+ $mircdirquizz/chan.ini",$1,dernier) %couleur )
  timerquizz $+ $1 1 15 quizzposer $1
}

Conclusion :

correction :
1.3 : un bug sur la gestion de la database si je me souvien

1.1 : la commandes !revoir risquer pas de marcher dans cette etats c'est reparer, plus d'efficaciter pour le !stop toujour sans flooder

pour les scripteur vous pouvez modifier les commandes start et stop sont accessible a tous.

en esperant que ca resolve vos problemes, @++

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.