Quizz multisalon

Soyez le premier à donner votre avis sur cette source.

Vue 13 966 fois - Téléchargée 1 154 fois

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

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
16 février 2008

meme sur un bot kedal ... meme en changeant start et stop !!!
Messages postés
3
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
16 février 2008

serieux sur mon TS modifié par un ami scripteur et codeur ... bah il marche meme pas ..
Messages postés
3
Date d'inscription
lundi 11 décembre 2006
Statut
Membre
Dernière intervention
11 décembre 2006

salut voila je ne mi connais pas grand chose en irc mais j'ai trouver un bug asser gênant :
quand on fait espace puits entrée sa nous marque qu'on a gagner donc voila on peut répété sa a l'infinie sa va marcher donc c'est asser gênant ...
Messages postés
1
Date d'inscription
dimanche 14 janvier 2007
Statut
Membre
Dernière intervention
17 janvier 2007

Moi aussi j'ai le meme problème ca se bloque a la ligne 77 :

timer 1 15 quizzposer $1

et je ne trouve pas la parade.

Je demande de l'aide

Si je ne met pas ( timer 1 15 ) ca passe mais flood et la ejection par ban pour flood
Ceci est la meme chose ligne 77 comme les suivantes.

Charles.


Merci.
Messages postés
54
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
12 mars 2006

Il y a quelque chose dans votre fichier ?...
Afficher les 19 commentaires

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.