rendered paste bodymenu channel {
-
Start Unique: {
dialog -mod unique unique
set %uchan #
set %uline 1
unset %uscore*
if (!$chan(#).ial) who #
did -a unique 10 $read(%ufile,%uline)
}
}
dialog Unique {
title "Unique Quiz by dodgo"
size -1 -1 161 160
option dbu
list 1, 4 5 95 124, size extsel
button "Ask Question", 2, 106 29 50 12
button "Description", 3, 106 6 50 12
button "Award Selected", 4, 106 57 50 12
edit "", 5, 135 77 21 10, center
text "Time Limit:", 6, 107 79 28 8
button "Quit", 7, 106 117 50 12, ok
button "End Quiz", 8, 106 89 50 12
button "Load File", 9, 106 103 50 12
text "", 10, 4 132 151 28
button "Stop", 12, 135 43 21 12
text "time", 13, 110 45 17 8, center
}
on 1:DIALOG:unique:init:0:unset %quizscorehigh
on 1:DIALOG:unique:sclick:3:describe %uchan This is a unique quiz. Points are awarded for each first unique answer. Answers MUST be prefixed by '-' or '='. ONE ATTEMPT per person ONLY.
on 1:DIALOG:unique:sclick:2:uask
on 1:DIALOG:unique:sclick:4:uaward
on 1:DIALOG:unique:sclick:8:uend
on 1:DIALOG:unique:sclick:9:uload
on 1:DIALOG:unique:sclick:12:ustop
on 1:DIALOG:unique:sclick:7:timertime off
on *:TEXT:*:%uchan: if ((%uask == on) && (($left($$1,1) == -) || ($left($$1,1) == =)) && ($nick !isin %uanswered)) { did -a unique 1 $nick -> $right($$1-,-1) | set %uanswered $addtok(%uanswered,$nick,32) }
on *:NICK:{
if (!$dialog(quiz)) halt
var %nickchange 1
while (%nickchange <= $did(quiz,1).lines) {
if ($gettok($did(quiz,1,%nickchange),1,32) != <) did -o quiz 1 %nickchange $replace($did(quiz,1,%nickchange),$nick,$newnick)
inc %nickchange
}
}
alias uask {
unset %uanswered
unset %ucorrect
describe %uchan Q: $read(%ufile,%uline)
inc %uline
did -b unique 2
set %uask on
did -b unique 4
unset %utime
did -o unique 13 1 0
.timertime 0 1 utimer
did -r unique 10
did -a unique 10 $read(%ufile,%uline)
inc %uline
did -b unique 8
}
alias utimer {
inc %utime
did -o unique 13 1 %utime
if (%utime == $did(unique,5)) ustop
}
alias ustop {
.timertime off
set %uask stop
did -e unique 4
describe %uchan Time Up ( $+ %utime seconds)
}
alias uaward {
if (%uask == off) {
inc %uline 2
did -r unique 10
did -a unique 10 $read(%ufile,%uline)
halt
}
var %count 1
while (%count <= $did(unique,1,0).sel) {
ucorrect $did(unique,1,$did(unique,1,%count).sel)
set %ucorrect $addtok(%ucorrect,$chr(32) $+ $gettok($did(unique,1,$did(unique,1,%count).sel),1,32),44)
inc %count
}
did -r unique 1
did -r unique 10
did -a unique 10 $read(%ufile,%uline)
uscoreupdate
describe %uchan Congrats: %ucorrect
describe %uchan SCORES: %uscoretally
unset %quizupdate*
set %uask off
did -e unique 2
did -e unique 8
}
alias ucorrect {
set %quizaddress $address($$1,3)
set %quiz [ $+ [ %quizaddress ] ] $$1
if (!%uscorehigh) set %uscorehigh 0
set %quizoldsc %uscorehigh
set %quiznewsc $calc(%uscorehigh + 1)
while (%quizoldsc >= 1) {
if ($istok(%uscore [ $+ [ %quizoldsc ] ] ,%quizaddress,32)) { scoresetup | return }
dec %quizoldsc
dec %quiznewsc
}
set %uscore1 $addtok(%uscore1,%quizaddress,32)
set %quiznewsc 1
if (%uscorehigh == 0) set %uscorehigh 1
}
alias scoresetup {
set %uscore [ $+ [ %quizoldsc ] ] $remtok(%uscore [ $+ [ %quizoldsc ] ] ,%quizaddress,1,32) | set %uscore [ $+ [ %quiznewsc ] ] $addtok(%uscore [ $+ [ %quiznewsc ] ] ,%quizaddress,32)
if (%quiznewsc > %uscorehigh) set %uscorehigh %quiznewsc
}
alias uscoreupdate {
if (!%uscorehigh) return
unset %uscoretally
set %quizsc 1
set %quizf %uscorehigh
:scoreloop
set %quizt 1
while (%quizt <= $numtok(%uscore [ $+ [ %quizsc ] ] ,32)) {
if ($ial($gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick) set %quizupdate [ $+ [ %quizsc ] ] $addtok(%quizupdate [ $+ [ %quizsc ] ] ,$chr(32) $+ $iif($ial($gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32),1).nick isin %ucorrect,+) $+ $ial($gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick $+ ,44)
else set %quizupdate [ $+ [ %quizsc ] ] $addtok(%quizupdate [ $+ [ %quizsc ] ] ,$chr(32) $+ %quiz [ $+ [ $gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] ,44)
inc %quizt
}
inc %quizsc
if (%quizsc != $calc(%uscorehigh + 1)) goto scoreloop
while (%quizsc > 1) {
dec %quizsc
if (%quizupdate [ $+ [ %quizsc ] ]) set %uscoretally $addtok(%uscoretally,$chr(40) $+ %quizsc $+ $chr(41) $+ $chr(60) $+ $right(%quizupdate [ $+ [ %quizsc ] ] ,-1) $+ $chr(62),32)
}
}
alias uend {
if (!%uscorehigh) halt
set %quizsc 1
set %quizf %uscorehigh
:finalloop
set %quizt 1
while (%quizt <= $numtok(%uscore [ $+ [ %quizsc ] ] ,32)) {
tablenicks $ial($gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick
inc %quizt
}
inc %quizsc
if (%quizsc != $calc(%uscorehigh + 1)) goto finalloop
table
}
alias tablenicks {
if ($ial($gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick) set %quizfinal [ $+ [ %quizsc ] ] $addtok(%quizfinal [ $+ [ %quizsc ] ] , $chr(32) $+ $$1 ,44)
else set %quizfinal [ $+ [ %quizsc ] ] $addtok(%quizfinal [ $+ [ %quizsc ] ] , $chr(32) $+ %quiz [ $+ [ $gettok(%uscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] ,44)
}
alias table {
describe %uchan - FINAL SCORES -
describe %uchan SCORE ---- NICKS
.timershow -m 0 250 show
}
alias show {
if (%quizfinal [ $+ [ %quizf ] ] ) describe %uchan < %quizf > $str(-,$calc(5 - $len(%quizf))) %quizfinal [ $+ [ %quizf ] ]
dec %quizf
if (%quizf == 0) {
.timershow off
unset %quizfinal*
did -r unique 1
unset %uscore*
}
}
alias uload {
set %ufile $$sfile($mircdir,Choose quiz file,Start Asking!)
set %uline 1
did -a unique 10 $read(%ufile,%uline)
}