Voila c un de mais premier dialog que j'ai très bien fait. Sesi est un quizz simple que vous pouver amélioré. Je vous laisse découvrir la source :) :) :)
Source / Exemple :
dialog quizz {
title "Menu Quizz"
size -1 -1 400 530
option pixels
tab "Gestion du Quizz",1,-1 -1 515 610
tab "Questions - Réponses",2
button "Fermer",3,10 500 380 25,ok
button "Commencer le quizz sur le salon :",4,30 30 200 23,tab 1
button "Terminer le quizz",5,30 30 200 23,tab 1
edit "",6,240 30 100 23,autohs,tab 1
box "",7,5 60 390 30,tab 1
text "Question en cours : ",8,5 70 370 15,center,tab 1
text "",9,240 71 20 15,tab 1
button "Prec. 10",10,7 68 60 20,tab 1
button "Prec.",11,67 68 40 20,tab 1
button "Suiv.",12,293 68 40 20,tab 1
button "Suiv. 10",13,333 68 60 20,tab 1
box "Question",14,5 95 390 65,tab 1
edit "",15,15 115 375 20,autohs,read,tab 1
button "Modifier",16,15 140 50 15,tab 1
box "Réponse",17,5 170 390 65,tab 1
edit "",18,15 190 375 20,autohs,read,tab 1
button "Modifier",19,15 215 50 15,tab 1
text "Scores",20,295 247 100 15,tab 1
list 21,240 265 110 210,tab 1
list 22,345 265 42 210,tab 1
button "+ 1",23,240 460 26 23,tab 1
button "- 1",24,266 460 26 23,tab 1
button "Ajout.",25,292 460 50 23,tab 1
button "Suppr.",26,342 460 50 23,tab 1
button "=> Afficher la Question <=",27,20 255 190 25,tab 1
button "=> Afficher Réponse + Gagnant <=",28,20 280 190 25,tab 1
text "Gagnant :",29,20 315 50 15,tab 1
combo 30,75 312 135 200,drop,edit,tab 1
button "=> Afficher les Points <=",31,20 342 190 23,tab 1
text "",32,20 373 190 20,center,tab 1
box "Options",33,10 405 220 80,tab 1
check "",34,20 425 18 18,tab 1
text "Sélectionner le gagnant manuellement dans la liste du salon",35,40 420 180 40,tab 1
check "",36,20 455 18 18,tab 1
text "Annoncer qu'un quizz est en cours à chaque arrivant (en notice)",37,40 450 180 40,tab 1
box "Questions",38,5 30 390 200,tab 2
box "Réponses",39,5 245 390 200,tab 2
combo 40,15 50 370 180,tab 2
combo 41,15 265 370 180,tab 2
button "Ajouter",42,95 455 100 25,tab 2
button "Supprimer",43,205 455 100 25,tab 2
}
on 1:dialog:quizz:init:0:{
unset %quizz.br
.disable #Quizz.CheckReponse
.disable #Quizz.Annonce
set %quizz.qmodif $true
set %quizz.rmodif $true
if (%quiz.selectwinner) { did -c quizz 34 | did -b quizz 30 }
if (%quizz.encours != on) {
did -h quizz 5
did -b quizz 10,11,12,13,16,19,21,22,23,24,25,26,27,28,30,31
did -a quizz 32 Attente du début d'un Quizz
}
else {
if ($me !ison %quizz.chan) { if ($input(Vous n'êtes pas sur %quizz.chan alors qu'un quizz est commencé dessus. Voulez-vous joindre le salon maintenant ?,136,Quizz)) { join %quizz.chan } }
if (%quizz.nb != $null) { did -a quizz 9 %quizz.nb }
else { did -a quizz 9 1 }
if (%quizz.chan != $null) { did -o quizz 6 1 %quizz.chan | did -m quizz 6 | did -v quizz 5 | did -h quizz 4 }
else { did -h quizz 5 }
did -b quizz 28
did -a quizz 32 Attente de l'affichage d'une Question
quizz.quest
affichescores
}
var %i 1
while ($readini(Quizz.ini,questions,n $+ %i) != $null) { did -a quizz 40 $readini(Quizz.ini,questions,n $+ %i) | did -a quizz 41 $readini(Quizz.ini,reponses,n $+ %i) | inc %i }
}
on 1:dialog:quizz:sclick:1:quizz.quest
on 1:dialog:quizz:sclick:2:did -r quizz 40,41 | var %i 1 | while ($readini(Quizz.ini,questions,n $+ %i) != $null) { did -a quizz 40 $readini(Quizz.ini,questions,n $+ %i) | did -a quizz 41 $readini(Quizz.ini,reponses,n $+ %i) | inc %i }
on 1:dialog:quizz:sclick:40:did -c quizz 41 $did(quizz,40).sel
on 1:dialog:quizz:sclick:41:did -c quizz 40 $did(quizz,41).sel
on 1:dialog:quizz:sclick:42:{
if (($did(quizz,40,0) != $null) && ($did(quizz,41,0) != $null)) {
did -a quizz 40 $did(quizz,40,0)
did -a quizz 41 $did(quizz,41,0)
var %i 1 | while ($readini(Quizz.ini,questions,n $+ %i) != $null) { inc %i }
writeini -n Quizz.ini questions n $+ %i $did(quizz,40,0)
writeini -n Quizz.ini reponses n $+ %i $did(quizz,41,0)
did -c quizz 40,41 %i
}
}
on 1:dialog:quizz:sclick:43:{
if ($did(quizz,40).sel != $null) {
var %j $did(quizz,40).sel
remini Quizz.ini questions
remini Quizz.ini reponses
did -d quizz 40,41 %j
var %i 1
while ($did(quizz,40,%i) != $null) { writeini -n Quizz.ini questions n $+ %i $did(quizz,40,%i) | writeini -n Quizz.ini reponses n $+ %i $did(quizz,41,%i) | inc %i }
}
did -c quizz 40,41 %j
}
on 1:dialog:quizz:sclick:36: {
if ($did(quizz,36).state == 1) {
if ($left(%quizz.chan,2) == $chr(35) $+ $chr(33)) { echo -a 1*14*15* 4Cette option ne peut être engagée sur un salon public | did -u quizz 36 | halt }
.enable #Quizz.Annonce
}
else { .disable #Quizz.Annonce }
}
on 1:dialog:quizz:sclick:34:if ($did(quizz,34).state == 1) { set %quiz.selectwinner $true | did -b quizz 30 | if ($input(Pour définir le gagnant vous devez maintenant sélectionner un pseudo dans la liste du salon puis cliquer sur le bouton 'Afficher Réponse + Ganant'. $+ $crlf $+ $crlf $+ Si personne ne trouve la bonne réponse sélectionnez votre propre pseudo,68,Quizz)) { } } | else { set %quiz.selectwinner $false | did -e quizz 30 }
on 1:dialog:quizz:sclick:3:.disable #Quizz.CheckReponse | .disable #Quizz.Annonce
on 1:dialog:quizz:sclick:4:{
if ($did(quizz,6) != $null) {
if ($left($did(quizz,6),1) == $chr(35)) { set %quizz.chan $did(quizz,6) }
else { did -o quizz 6 1 $chr(35) $+ $did(quizz,6) | set %quizz.chan $did(quizz,6) }
if ($me !ison %quizz.chan) {
if ($input(Vous n'êtes pas sur %quizz.chan $+ . Voulez-vous joindre le salon maintenant ? (sinon le quizz ne sera pas commencé),136,Quizz)) { join %quizz.chan }
else { halt }
}
did -h quizz 4
did -v quizz 5
did -m quizz 6
set %quizz.nb 1
did -a quizz 9 %quizz.nb
set %quizz.encours on
quizz.quest
if ($input(Annoncer le début du Quizz sur %quizz.chan ?,136,Quizz)) { quizz.annonce }
did -e quizz 10,11,12,13,16,19,21,22,23,24,25,26,27,30,31
did -a quizz 32 Attente de l'affichage d'une Question
}
else { echo -a 1*14*15* 4Vous n'avez pas spécifié le salon }
}
on 1:dialog:quizz:sclick:5:{
var %i
while ( %i == $null) { set %i $input(Voulez-vous réellement terminer le quizz ?,168,Quizz) }
if (%i == $no) { halt }
else {
.disable #Quizz.Annonce
did -n quizz 6
did -h quizz 5
did -v quizz 4
set %quizz.encours off
did -b quizz 10,11,12,13,16,19,21,22,23,24,25,26,27,28,30,31
did -r quizz 15,18,9
unset %quizz*
did -r quizz 21,22,30
did -u quizz 36
.remove Qpoints.ini
did -a quizz 32 Attente du début d'un Quizz
}
}
on 1:dialog:quizz:sclick:10:{
if (%quizz.encours == on) {
if (%quizz.nb != $null) { set %quizz.nb $iif($calc(%quizz.nb -10) < 1,%quizz.nb,$calc(%quizz.nb -10)) }
else { set %quizz.nb 1 }
did -a quizz 9 %quizz.nb
quizz.quest
did -b quizz 28
}
}
on 1:dialog:quizz:sclick:11:{
if (%quizz.encours == on) {
if (%quizz.nb != $null) { set %quizz.nb $iif($calc(%quizz.nb -1) < 1,%quizz.nb,$calc(%quizz.nb -1)) }
else { set %quizz.nb 1 }
did -a quizz 9 %quizz.nb
quizz.quest
did -b quizz 28
}
}
on 1:dialog:quizz:sclick:12:{
if (%quizz.encours == on) {
if (%quizz.nb != $null) { set %quizz.nb $calc(%quizz.nb +1) }
else { set %quizz.nb 1 }
did -a quizz 9 %quizz.nb
quizz.quest
did -b quizz 28
}
}
on 1:dialog:quizz:sclick:13:{
if (%quizz.encours == on) {
if (%quizz.nb != $null) { set %quizz.nb $calc(%quizz.nb +10) }
else { set %quizz.nb 1 }
did -a quizz 9 %quizz.nb
quizz.quest
did -b quizz 28
}
}
on 1:dialog:quizz:sclick:16:{
if (%quizz.qmodif) { did -n quizz 15 | set %quizz.qmodif $false }
else { did -m quizz 15 | set %quizz.qmodif $true }
did -f quizz 15
}
on 1:dialog:quizz:sclick:19:{
if (%quizz.rmodif) { did -n quizz 18 | set %quizz.rmodif $false }
else { did -m quizz 18 | set %quizz.rmodif $true }
did -f quizz 18
}
on 1:dialog:quizz:edit:15:if (%quizz.nb != $null) { writeini -n quizz.ini questions n $+ %quizz.nb $did(quizz,15) }
on 1:dialog:quizz:edit:18:if (%quizz.nb != $null) { writeini -n quizz.ini reponses n $+ %quizz.nb $did(quizz,18) }
on 1:dialog:quizz:sclick:27:{
if ($me !ison %quizz.chan) {
if ($input(Vous n'êtes pas sur %quizz.chan $+ . Voulez-vous joindre le salon maintenant ?,136,Quizz)) { join %quizz.chan }
halt
}
if ($did(quizz,15) != $null) { /msg %quizz.chan 8,1Recopier le plus rapidement le mot $+ %quizz.nb :9 $did(quizz,15)
did -r quizz 30
if (<Personne> !isin $didtok(quizz,30)) { did -a quizz 30 <Personne> }
.enable #Quizz.CheckReponse
did -e quizz 28
did -a quizz 32 Attente d'une bonne réponse...
}
}
on 1:dialog:quizz:sclick:28:{
if ($me !ison %quizz.chan) {
if ($input(Vous n'êtes pas sur %quizz.chan $+ . Voulez-vous joindre le salon maintenant ?,136,Quizz)) { join %quizz.chan }
halt
}
if (%quiz.selectwinner) {
if ($sline(%quizz.chan,1) == $null) { echo -a 1*14*15* 4Veuillez sélectionner le Gagnant dans la liste du salon (ou sélectionner votre propre pseudo si personne n'a trouvé) }
elseif ($sline(%quizz.chan,1) == $me) { /msg %quizz.chan 8,1Personne n'a trouvé la bonne réponse. Il fallait répondre :9 $did(quizz,18) | halt }
else { /msg %quizz.chan 9,1 $+ $sline(%quizz.chan,1) 8a été le plus rapide à recopier le mot :9 $did(quizz,18)
var %nick $sline(%quizz.chan,1)
var %mask $address(%nick,1)
writeini -n Qpoints.ini %mask Nick %nick
if ($readini(Qpoints.ini, %mask ,Points) == $null ) { writeini -n Qpoints.ini %mask Points 1 }
else { writeini -n Qpoints.ini %mask Points $calc($readini(Qpoints.ini,%mask,Points)+1) }
affichescores
}
}
else {
if (($did(quizz,30) != $null) && ($did(quizz,30) != <Personne>) && ($did(quizz,30) ison %quizz.chan)) {
/msg %quizz.chan 9,1 $+ $did(quizz,30) 8a été le plus rapide à trouver la bonne réponse. Il fallait répondre :9 $did(quizz,18)
var %nick $did(quizz,30)
var %mask $address($did(quizz,30),1)
writeini -n Qpoints.ini %mask Nick %nick
if ($readini(Qpoints.ini, %mask ,Points) == $null ) { writeini -n Qpoints.ini %mask Points 1 }
else { writeini -n Qpoints.ini %mask Points $calc($readini(Qpoints.ini,%mask,Points)+1) }
affichescores
}
elseif ($did(quizz,30) == <Personne>) { /msg %quizz.chan 8,1Personne n'a trouvé la bonne réponse. Il fallait répondre :9 $did(quizz,18) }
elseif ($did(quizz,30) == $null) { echo -a 1*14*15* 4Veuillez sélectionner/écrire le nom du Gagnant dans la case 'Gagnant' (ou sélectionner '<Personne>' si personne n'a trouvé) | halt }
elseif ($did(quizz,30) !ison %quizz.chan) { echo -a 1*14*15*12 $did(quizz,30) 4ne se trouve pas sur %quizz.chan (ou vient de changer de pseudo) | halt }
}
.disable #Quizz.CheckReponse
did -a quizz 32 Attente de l'affichage d'une Question
unset %quizz.br
}
on 1:dialog:quizz:sclick:31:{
var %i 1
var %points 8,1Scores :
while ($did(quizz,21,%i) != $null) {
set %points %points 9,1 $+ $did(quizz,21,%i) 8:9 $did(quizz,22,%i) 4|
inc %i
}
if (%points == 8,1Scores :) { /msg %quizz.chan 8,1Personne ne possède de points pour le moment. }
else { /msg %quizz.chan $left( %points ,-2) }
}
on 1:dialog:quizz:sclick:21:did -c quizz 22 $did(quizz,21).sel
on 1:dialog:quizz:sclick:22:did -c quizz 21 $did(quizz,22).sel
on 1:dialog:quizz:sclick:23:{
set %sel $did(quizz,21).sel
if (%sel == $null) { halt }
var %nick $gettok($didtok(quizz,21,32),$did(quizz,21).sel,32)
if (%nick !ison %quizz.chan) {
var %i 1
while ($ini(Qpoints.ini,%i) != $null) { if (%nick == $readini(Qpoints.ini,$ini(Qpoints.ini,%i),Nick)) { writeini -n Qpoints.ini $ini(Qpoints.ini,%i) Points $calc($readini(Qpoints.ini,$ini(Qpoints.ini,%i),Points)+1) | break } | inc %i }
affichescores | did -c quizz 21,22 %sel | halt
}
if ($address(%nick,1) != $null) { writeini -n Qpoints.ini $address(%nick,1) Points $calc($readini(Qpoints.ini,$address(%nick,1),Points)+1) | affichescores }
}
on 1:dialog:quizz:sclick:24:{
set %sel $did(quizz,21).sel
if (%sel == $null) { halt }
var %nick $gettok($didtok(quizz,21,32),$did(quizz,21).sel,32)
if (%nick !ison %quizz.chan) {
var %i 1
while ($ini(Qpoints.ini,%i) != $null) { if (%nick == $readini(Qpoints.ini,$ini(Qpoints.ini,%i),Nick)) { writeini -n Qpoints.ini $ini(Qpoints.ini,%i) Points $calc($readini(Qpoints.ini,$ini(Qpoints.ini,%i),Points)-1) | break } | inc %i }
if ($readini(Qpoints.ini,$ini(Qpoints.ini,%i),Points) == 0) { remini Qpoints.ini $ini(Qpoints.ini,%i) }
affichescores | did -c quizz 21,22 %sel | halt
}
if ($address(%nick,1) != $null) { writeini -n Qpoints.ini $address(%nick,1) Points $calc($readini(Qpoints.ini,$address(%nick,1),Points)-1)
if ($readini(Qpoints.ini,$address(%nick,1),Points) == 0) { remini Qpoints.ini $address(%nick,1) }
affichescores
}
}
on 1:dialog:quizz:sclick:25:{
if (%quiz.selectwinner) {
if ($sline(%quizz.chan,1) == $null) { echo -a 1*14*15* 4Sélectionnez d'abord un pseudo dans la liste du salon | halt }
var %nick $sline(%quizz.chan,1)
}
else {
if ($did(quizz,30) == $null) { echo -a 1*14*15* 4Ecrivez d'abord un pseudo dans la case 'Gagnant' | halt }
var %nick $did(quizz,30)
}
if ($address(%nick,1) == $null) { .who %nick }
if (($readini(Qpoints.ini,$address(%nick,1),Nick) != $null) && ($readini(Qpoints.ini,$address(%nick,1),Nick) != $did(quizz,30))) { echo -a 1*14*15*12 %nick 4possède déjà des points (son pseudo était12 $readini(Qpoints.ini,$address(%nick,1),Nick) 4et vient d'être remis à jour) | writeini -n Qpoints.ini $address(%nick,1) Nick %nick | affichescores | halt }
if (%nick !ison %quizz.chan) { echo -a 1*14*15*12 $did(quizz,30) 4ne se trouve pas sur %quizz.chan (ou vient juste de changer de pseudo) | halt }
if ($istok($didtok(quizz,21,32),%nick,32)) { echo -a 1*14*15*12 %nick 4possède déjà des points | halt }
writeini -n Qpoints.ini $address(%nick,1) Nick %nick
writeini -n Qpoints.ini $address(%nick,1) Points 1
affichescores
}
on 1:dialog:quizz:sclick:26:{
var %sel $did(quizz,21).sel
var %nick $gettok($didtok(quizz,21,32),$did(quizz,21).sel,32)
if (%nick !ison %quizz.chan) {
var %i 1
while ($ini(Qpoints.ini,%i) != $null) { if (%nick == $readini(Qpoints.ini,$ini(Qpoints.ini,%i),Nick)) { break } | inc %i }
remini Qpoints.ini $ini(Qpoints.ini,%i) | affichescores
}
if ($address(%nick,1) != $null) { remini Qpoints.ini $address(%nick,1) | affichescores }
}
alias quizz.quest {
did -o quizz 15 1 $readini(quizz.ini,questions,n $+ %quizz.nb)
did -o quizz 18 1 $readini(quizz.ini,reponses,n $+ %quizz.nb)
did -r quizz 30
}
alias quizz.annonce {
/msg %quizz.chan 8,1 Salut à tous ! Un 9Quizz8 va commencer dans moins d'une minute. Je vous rappelle quelques règles pour que nous passions tous un bon moment.
.timer 1 8 /msg %quizz.chan 8,1 Tout d'abord, vous n'avez 9pas le droit à plus de 3 réponses par personne8 et il est bien sûr interdit de répéter plusieurs fois la même chose.
.timer 1 16 /msg %quizz.chan 8,1 Les questions seront posées et les scores comptabilisés par 9moi-même8 : si vous avez des réclamations à faire, faites-les 9en public8 tout de suite. La règle est de recopier le mot le plus rapidement possible avant tout les autres.
var %i $input(Le(s) thème(s) des questions ?,133,Quizz)
.timer 1 20 /msg %quizz.chan 8,1 $iif(%i == $null,9Pas de thème particulier 8pour les questions aujourd'hui,Les questions de ce soir seront sur le(s) thème(s) :9 %i)
.timer 1 32 /msg %quizz.chan 8,1 Sur ce, que le meilleur gagne !!! 9Le Quizz commence maintenant :)
}
#Quizz.CheckReponse off
on *:text:*:%quizz.chan:{
var %text $quizz.stripcodes($1-)
var %answer $quizz.stripcodes($readini(quizz.ini,reponses,n $+ %quizz.nb))
if ((%text == %answer) && ($istok($didtok(quizz,30,32),$nick,32) == $false)) {
did -a quizz 30 $nick
inc %quizz.br
did -a quizz 32 %quizz.br $iif(%quizz.br == 1,bonne réponse trouvée,bonnes réponses trouvées)...
}
}
#Quizz.CheckReponse end
#Quizz.Annonce off
#Quizz.Annonce end
alias quizz.stripcodes {
var %txt $strip($1-,burc)
set %txt $replace(%txt,,,<,,>,,.,,:,,\,,/,,•,,§,,©,,®,,™,,¥,,†,,‡,,¤,,*,,^,,~,,é,e,è,e,ê,e,ë,e,È,e,É,e,Ê,e,Ë,e,à,a,á,a,â,a,ã,a,ä,a,À,a,Â,a,Ä,a,î,i,ï,i,Ï,i,Î,i,ù,u,û,u,ü,u,ö,o,ô,o,-,$chr(32))
if ($left(%txt,3) == le $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,3) == la $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,4) == les $+ $chr(32)) { set %txt $right(%txt,-4) }
elseif ($left(%txt,2) == l') { set %txt $right(%txt,-2) }
elseif ($left(%txt,3) == de $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,3) == du $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,4) == des $+ $chr(32)) { set %txt $right(%txt,-4) }
elseif ($left(%txt,2) == d') { set %txt $right(%txt,-2) }
elseif ($left(%txt,5) == dans $+ $chr(32)) { set %txt $right(%txt,-5) }
elseif ($left(%txt,4) == par $+ $chr(32)) { set %txt $right(%txt,-4) }
elseif ($left(%txt,3) == un $+ $chr(32)) { set %txt $right(%txt,-3 }
elseif ($left(%txt,4) == une $+ $chr(32)) { set %txt $right(%txt,-4) }
elseif ($left(%txt,3) == en $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,3) == au $+ $chr(32)) { set %txt $right(%txt,-3) }
elseif ($left(%txt,4) == aux $+ $chr(32)) { set %txt $right(%txt,-4) }
elseif ($left(%txt,2) == a $+ $chr(32)) { set %txt $right(%txt,-2) }
elseif ($left(%txt,5) == avec $+ $chr(32)) { set %txt $right(%txt,-5) }
return %txt
}
alias affichescores {
if ($did(quizz,21,%sel) != $null) { set %selectednick $did(quizz,21,%sel) }
did -r quizz 21
did -r quizz 22
var %i 1
while ($ini(Qpoints.ini,%i) != $null) {
var %j 1
while ($readini(Qpoints.ini,$ini(Qpoints.ini,%i),Points) < $did(quizz,22,%j)) { inc %j }
did -i quizz 21 %j $readini(Qpoints.ini,$ini(Qpoints.ini,%i),Nick)
did -i quizz 22 %j $readini(Qpoints.ini,$ini(Qpoints.ini,%i),Points)
inc %i
}
if (%selectednick != $null) { did -c quizz 21,22 $didwm(quizz,21,%selectednick) }
unset %sel
unset %selectednick
}
alias quizz { dialog -m quizz quizz }
Conclusion :
Il ne vous reste que a taper /quizz pour tout configurer ( nnoublier as de copier la source dans les remote de votre mirc )
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.