menu 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) }