Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SIMPLE QUIZZ


Information sur la source

Catégorie :AddOns Classé sous : quizz, mirc, addon, bot, question Niveau : Débutant Date de création : 26/01/2008 Date de mise à jour : 27/01/2008 14:41:21 Vu / téléchargé: 6 436 / 227

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Systême de quizz simpliste.
Pour l'utiliser vous devez créer un txt nommé questions.txt avec les questions sous la forme:

Question ? Réponse
Exemple:
Combient vaut 2 + 2 ? 4

Car le script utilise la caractère "?" comme repère.

Néanmoins dans le zip j'ai ajouté la database de questions du célèbre Wquizz modifié pour qu'elle marche avec ce quizz.
 

Source

  • ;Systême de quizz simple par Kentix
  • ;Infos (si vous souhaitez modifier par la suite...)
  • ;La variable %quizzchan contient le nom du salon
  • ;La variable %questionsdir contient le chemin du fichier texte questions.txt
  • ;La hash table utilisé pour les scores est quizzscores
  • ;Commandes opérateurs
  • ;!quizz active/désactive le quizz
  • ;!quizz.reset Reset les scores
  • ;Commandes pour tout le monde
  • ;!premier affiche le meilleur score
  • ;!myscore affiche son score
  • ;Lors du chargement du script on cré la var %quizzchan qui contiendra donc le nom du salon où le quizz est exécuté + On initialise la hash table quizzscores
  • on *:LOAD:{
  • set %quizzchan $input(Insérez le nom du salon où le quizz se déroulera:,oe,Nom du salon de quizz,#exemple)
  • set %questionsdir $sfile(questions.txt,La database de questions)
  • hmake -s quizzscores 100
  • }
  • ;Lors du lancement de mirc.exe on intialise à chaque fois la hash table quizzscores
  • on *:START:{
  • hmake -s quizzscores 100
  • }
  • ;Récupération d'une question au hasard, on prend les mots avant le "?" d'une question et on stocke la question ainsi traitée dans %questionok
  • ;On récupère ainsi aussi la réponse qui correspond à la question (sur la même ligne) qu'on stocke dans %reponse
  • alias quizzget {
  • unset %reponse
  • unset %questionok
  • set %question $read(%questionsdir)
  • var %b = 1, %a = $findtok(%question,?,1,32)
  • while (%b <= %a) {
  • var %c = $gettok(%question, %b, 32)
  • set %questionok $addtok(%questionok, %c, 32)
  • inc %b
  • }
  • inc %a
  • var %d = $numtok(%question, 32)
  • while (%a <= %d) {
  • var %c = $gettok(%question, %a, 32)
  • set %reponse $addtok(%reponse, %c, 32)
  • inc %a
  • }
  • }
  • ;Dis une question récupéré avec quizzget sur le salon contenu dans la var %quizzchan
  • alias sayquestion {
  • if (%winner) {
  • unset %winner
  • quizzget
  • msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  • }
  • else {
  • msg %quizzchan Personne n'a trouvé ! La réponse était: %reponse
  • quizzget
  • .timer 1 2 msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  • }
  • }
  • ;départ du quizz si le $nick est opérateur du salon
  • on @*:TEXT:!quizz:%quizzchan:{
  • if (%quizzon) {
  • quizzlepremier
  • timerQUIZZ off
  • unset %quizzon
  • msg $chan Le quizz est désormais arrêté, le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
  • }
  • else {
  • set %winner 1
  • set %quizzon 1
  • msg $chan Quizz lancé première question dans 15 secondes préparez-vous...
  • timerQUIZZ 0 15 sayquestion
  • }
  • }
  • ;réset des scores si $nick op
  • on @*:TEXT:!quizz.reset:%quizzchan:{
  • hdel -w quizzscores *
  • msg $chan Tous les scores ont été remis à 0.
  • }
  • ;affiche son score
  • on *:text:!myscore:%quizzchan:msg $chan Tu as $iif($hget(quizzscores,$nick),$v1 points,0 point)
  • ;on extrait le premier des scores (hash quizzscores)
  • alias quizzlepremier {
  • unset %quizzlepremier %quizzlepremierstats
  • if ($hget(quizzscores,0).item) {
  • var %h = quizzscores, %max = 0, %i = 1
  • while ($hget(%h,%i).item) {
  • var %hi = $v1
  • if ($hget(%h,%hi) > %max) {
  • var %max = $v1, %nick = %hi
  • }
  • inc %i
  • }
  • set %quizzlepremier %nick
  • set %quizzlepremierstats %max
  • }
  • else {
  • set %quizzlepremier personne
  • set %quizzlepremierstats pas de
  • }
  • }
  • ;afficher le premier des scores grace à quizzlepremier
  • on *:text:!premier:%quizzchan:{
  • quizzlepremier
  • msg $chan Le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
  • }
  • ;détection des réponses si quizz activé
  • on *:TEXT:*:%quizzchan:{
  • if (%quizzon) {
  • if ($strip($1-,burc) == %reponse) {
  • hinc quizzscores $nick
  • set %winner 1
  • msg $chan Félicitations $nick ( $+ $hget(quizzscores, $nick) points) tu as trouvé la bonne réponse, qui était: %reponse (On continue...)
  • }
  • }
  • }
  • ;détection des changements de pseudo si le pseudo était un joueur alors on update son pseudo dans les quizzscores
  • on *:NICK:{
  • if ($hget(quizzscores, $nick)) {
  • hadd quizzscores $newnick $hget(quizzscores, $nick)
  • hdel quizzscores $nick
  • }
  • }
;Systême de quizz simple par Kentix

;Infos (si vous souhaitez modifier par la suite...)
;La variable %quizzchan contient le nom du salon
;La variable %questionsdir contient le chemin du fichier texte questions.txt
;La hash table utilisé pour les scores est quizzscores

;Commandes opérateurs
;!quizz active/désactive le quizz
;!quizz.reset Reset les scores

;Commandes pour tout le monde
;!premier affiche le meilleur score
;!myscore affiche son score


;Lors du chargement du script on cré la var %quizzchan qui contiendra donc le nom du salon où le quizz est exécuté + On initialise la hash table quizzscores
on *:LOAD:{
  set %quizzchan $input(Insérez le nom du salon où le quizz se déroulera:,oe,Nom du salon de quizz,#exemple)
  set %questionsdir $sfile(questions.txt,La database de questions)
  hmake -s quizzscores 100
}

;Lors du lancement de mirc.exe on intialise à chaque fois la hash table quizzscores
on *:START:{
  hmake -s quizzscores 100
}
;Récupération d'une question au hasard, on prend les mots avant le "?" d'une question et on stocke la question ainsi traitée dans %questionok
;On récupère ainsi aussi la réponse qui correspond à la question (sur la même ligne) qu'on stocke dans %reponse
alias quizzget {
  unset %reponse
  unset %questionok
  set %question $read(%questionsdir)
  var %b = 1, %a = $findtok(%question,?,1,32)
  while (%b <= %a) {
    var %c = $gettok(%question, %b, 32)
    set %questionok $addtok(%questionok, %c, 32)
    inc %b
  }
  inc %a
  var %d = $numtok(%question, 32)
  while (%a <= %d) {
    var %c = $gettok(%question, %a, 32)
    set %reponse $addtok(%reponse, %c, 32)
    inc %a
  }
} 

;Dis une question récupéré avec quizzget sur le salon contenu dans la var %quizzchan
alias sayquestion {
  if (%winner) {
    unset %winner
    quizzget
    msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  }
  else {
    msg %quizzchan Personne n'a trouvé ! La réponse était: %reponse
    quizzget
    .timer 1 2 msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  }
}

;départ du quizz si le $nick est opérateur du salon
on @*:TEXT:!quizz:%quizzchan:{
  if (%quizzon) {
    quizzlepremier
    timerQUIZZ off
    unset %quizzon
    msg $chan Le quizz est désormais arrêté, le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
  }
  else {
    set %winner 1
    set %quizzon 1
    msg $chan Quizz lancé première question dans 15 secondes préparez-vous...
    timerQUIZZ 0 15 sayquestion
  }
}



;réset des scores si $nick op
on @*:TEXT:!quizz.reset:%quizzchan:{
  hdel -w quizzscores *
  msg $chan Tous les scores ont été remis à 0.
}


;affiche son score
on *:text:!myscore:%quizzchan:msg $chan Tu as $iif($hget(quizzscores,$nick),$v1 points,0 point)

;on extrait le premier des scores (hash quizzscores)
alias quizzlepremier {
  unset %quizzlepremier %quizzlepremierstats
  if ($hget(quizzscores,0).item) { 
    var %h = quizzscores, %max = 0, %i = 1 
    while ($hget(%h,%i).item) { 
      var %hi = $v1 
      if ($hget(%h,%hi) > %max) { 
        var %max = $v1, %nick = %hi 
      } 
      inc %i 
    } 
    set %quizzlepremier %nick
    set %quizzlepremierstats %max 
  }
  else {
    set %quizzlepremier personne
    set %quizzlepremierstats pas de
  }
}

;afficher le premier des scores grace à quizzlepremier
on *:text:!premier:%quizzchan:{
  quizzlepremier
  msg $chan Le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
}
;détection des réponses si quizz activé
on *:TEXT:*:%quizzchan:{
  if (%quizzon) {
    if ($strip($1-,burc) == %reponse) {
      hinc quizzscores $nick
      set %winner 1
      msg $chan Félicitations $nick ( $+ $hget(quizzscores, $nick) points) tu as trouvé la bonne réponse, qui était: %reponse (On continue...)
    }
  }
}

;détection des changements de pseudo si le pseudo était un joueur alors on update son pseudo dans les quizzscores
on *:NICK:{
  if ($hget(quizzscores, $nick)) {
    hadd quizzscores $newnick $hget(quizzscores, $nick)
    hdel quizzscores $nick
  }
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 janvier 2008 15:26:38 :
Infos apportés en plus
27 janvier 2008 14:41:21 :
Optimisation du code + ajout database de questions

Commentaires et avis

signaler à un administrateur
Commentaire de RCA ArKanis le 26/01/2008 19:31:16

Bon, j'passe de suite à la correction et à l'optimisation du code ... mon avis viendra après

  if ($hget(quizzscores, $nick) $+ ) {
à quoi sert ce $+ si ce n'est à rien ?

;Installation
;Créer une hash nommé quizzscores: //hmake quizzscores 100 Le mieux serait de l'automatiser avec ON *:START:{ hmake quizzscores 100 }
;Mettre le salon de quizz dans la variable %quizzchan: //set %quizzchan #MonSalonDeQuizz
;Dans l'alias quizzget modifier $read(GameBot\Quizz\questions.txt) par le chemin où est contenu votre questions.txt
Pourquoi ça serait à nous de faire tout ça ?! Tu nous dis comment faire, c'est bien, mais ça aurait été très largement plus pratique si tu le faisais automatiquement ... utilise $sfile pour le fichier .txt, et un $input pour la question du salon.

  unset %quizzlepremier
  unset %quizzlepremierstats
devient unset %quizzlepremier quizzlepremierstats

  quizzlepremier
  if (%quizzlepremier) {
    msg $chan Le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
  }
  else {
    msg $chan Il n'y a pas de meilleur score pour le moment.
  }
ce else ne sert à rien ... dans aucun cas tu auras %quizzlepremier qui retournera rien du tout, vu que tu appelles l'alias quizzlepremier qui dans chaque cas aloue une valeur à cette variable.

Tu devrais plutôt utiliser des variables locales pour ça. Tu utilises des hash tables, c'est bien, mais pourquoi tu utilises des variables globales ? Tu peux tout faire en passant par hash tables tu sais ...

regroupe tes ON TEXT en un seul avec :
ON *:TEXT:*:%quizzchan:{
  if ($1 == !myscore) ...
  elseif ($1 == ...) ...
  ...
}

le !myscore est largement plus simple ainsi :
on *:text:!myscore:%quizzchan:msg $chan Tu as $iif($hget(quizzscores,$nick),$v1 points,0 point)

en regroupant dans le ON TEXT général, tu aurais donc :
  if ($1 == !myscore) msg $chan Tu as $iif($hget(quizzscores,$nick),$v1 points,0 point)
sans { } vu que tu n'as qu'une action

petit truc qui a son importance : la reconnaissance de la bonne réponse
if ($1- == %reponse) {
tu devrais utiliser $strip($1-) pour ne pas tenir compte des codes couleur.
Des fois, il serait bien utile d'enlever les articles (un, une, le, la, l', ...)

on *:TEXT:!quizz.reset:%quizzchan:{
  if ($nick isop $chan) {
    ..
simplifiable en :
ON @*:TEXT:!quizz.reset:%quizzchan:{
Note : si tu utilises un ON TEXT général, tu ne pourras plus utiliser ça

  var %a = $findtok(%question, ?, 1, 32)
  var %b = 1
devient : var %b = 1, %a = $findtok(%question,?,1,32)
(j'ai pu voir que tu l'avais fait à quelques endroits ... pourquoi pas partout ?!)

Fort dommage qu'il n'y ait pas de base de questions/réponses fournies avec mais bon ...

Mets un . devant tes timers
Le timer est très étrange ! Si je répond à la première seconde, on doit attendre 14 secondes avant la prochaine question ... Tu devrais relancer le timer avec :
  .timerQUIZZ 0 5 .timerQUIZZ 0 15 NEXTquestion
Ta variable %winner servirait alors à rien, vu que le cas où personne ne répond (nextquestion) lancerait l'alias sayquestion.

alias nextquestion {
  msg %quizzchan Personne n'a répondu, la réponse était %reponse ... Question suivante :
  sayquestion
}
alias sayquestion {
  quizzget
  .timer 1 2 msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  ;on remarquera que si quelqu'un répond en moins de 2sec, on aura tout de même ce message ...
}

Mon avis maintenant :
Codage qualifié de "débutant" par l'auteur, qui est toutefois assez encourageant ... Il est assez propre, je trouve.
L'orthographe est bonne, ce qui est vraiment très appréciable en ce moment ! ("Combien Vaut 4+4", et non "faut" :D)
Originalité ... euh, j'pense que tout le monde connait déjà un bot de quizz.
L'installation est à revoir.
Le score est stocké en fonction du nick, il aurait peut-être été plus interessant d'utiliser l'adresse.
Je te souhaite donc très sincèrement bonne continuation, et n'hésite pas à nous voir pour tout problème, conseil, avis :)

signaler à un administrateur
Commentaire de RCA ArKanis le 26/01/2008 19:32:10

wow, je suis désolé, je m'étais pas rendu compte que j'avais écris autant ... :(
Bonne lecture :/

signaler à un administrateur
Commentaire de Kentix le 27/01/2008 14:43:01

Merci ArKanis, j'ai modifié quelques trucs selon tes conseils.

signaler à un administrateur
Commentaire de meenux le 27/01/2008 14:49:15 9/10

pas mal

signaler à un administrateur
Commentaire de doob666 le 28/01/2008 21:52:38

pourquoi ne pas créer un nouvelles database? pour te démarquer de Wquizz.
Sinon comme l'as dit Arkanis, le code est propre, bonne continuation :)

signaler à un administrateur
Commentaire de alexdenazareth le 02/02/2008 15:20:11

pas mal

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Hebergeur De Bot mIRC [ par Corween ] Bonsoir :)C'est encore moi, j'avais posé une question, qui se rapprochaiy beaucoup à celle que je vais poser, mais étant nouvea usur le forum, je ne s bot ou addon badchan [ par HAAGEN ] Bonjour je voudrais savoir si il existe un addon badchan a rajouté a mon cservice ou un bot en mirc et non eggdrop ' je m'explique le robot fait un wh Problème de lag en mIRC [ par Lorya51100 ] Bonjour à tous :)Voici mon second post dans ce fofo car j'ai un nouveau soucis : le lag !En fait, je réalise un bot d'animation en mIRC, donc, quand j Shell Pour mIRC [ par Corween ] Vous aurie pas une astuce pour que le bot fonctionne même sur un BNC svp ?Et aussi, auriez vous une adresse de shell hébergent les bot's mIRC svp ?Mer Code Pour Bot /mirc en link sur 2 serveurs 2Salons Intersalon !!! HelP !!! [ par ronehp ] Voila Bonjourje me rapelle d'avoie eu ici un addons ici , pour un link entre 2 serveursje ne retrouve plus ce c nouveau quizz pour mirc [ par FiLou_47 ] je voudrais s avoir sy il y a un nouveau quizz pour mirc merci Dcc Chat pour bot mIRC [ par XavSniper ] Bonjour tout le monde.J'essai de faire un système de DCC Chat pour bot mIRC, mais comme vous vous en seriez douté, celà ne marche pas, ce qui explique serveur pour bot mIRC [ par JaMyGG ] Bonjour a tous !Voila ce que je chercher est simple mais très dificil a trouver, je m'explique, je chercher un serveur pour hebrger mon bot mIRC.Merci recherche addon pour faire parler un bot cservice [ par dj_balboa ] bonjourvoila je recherche une addon pour mon bot cservice pour le faire parler mais je ne trouve pas pourriez vous m'aidez ou me dire ou puis je trouv Cherche dévelloppeur pour un script de Quizz en tcl ! [ par Wolverine57 ] Bonjour,Je suis actuellement à la tête d'un site sur les comics marvel (Marvel-World.com) et nous disposons d'un chat  IRC avec un bot de quizz (eggdr


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.