;Now with multiscore! ;to ensure IAL is updated on 1:JOIN:*:if ((# == %quizchan) && ($dialog(1) == Quiz)) whois $nick ;-------------LOAD------------ on *:LOAD:{ if (!$isfile(%qoptioncongrats)) set %qoptioncongrats $sfile($mircdir,Choose congratulations file (optional),Set File) if (!$isdir(%qoptionqdir)) { set %qoptionqdir $mircdir set %qoptionqdir $sdir($mircdir,Choose question file directory) } if (!$isfile(%qoptionhelp)) set %qoptionhelp $sfile($mircdir,Choose help file (optional),Set File) } ;-------------OPTIONS-------------- alias quizsetup { dialog -i quiz dialog -m qop quizoptions filloptions } alias defaultoptions { if (!%qoptionq) set %qoptionq Q $chr(37) $+ quizqnum $chr(36) $+ + : if (!%qoptiona) set %qoptiona A $chr(37) $+ quizqnum $chr(36) $+ + : if (!%qoptionh) set %qoptionh Hint: if (!%qoptionn) set %qoptionn Notice: if (!%qoptionm) set %qoptionm One attempt per person only if (!%qoptionu) set %qoptionu Scores are being amended if (!%qoptionqdir) set %qoptionqdir $mircdir if (!%qoptionmax) set %qoptionmax 10 if (!%qoptionend) set %qoptionend notice if (!%qoptionlengths) set %qoptionlengths off if (!%qoptiontable) set %qoptiontable 1 if (!%qoptiondouble) set %qoptiondouble enable if (!%qoptiondelay) set %qoptiondelay 200 if (!%qoptiondelayuse) set %qoptiondelayuse on if ((!%qoptionmask) && (%qoptionmask != 0)) set %qoptionmask 3 if (!%qoptionnoscoring) set %qoptionnoscoring off } dialog quizoptions { title "Quiz Options" size -1 -1 158 171 option dbu button "Done", 11, 114 152 33 12, ok button "Cancel", 12, 79 152 33 12, cancel button "Restore", 13, 9 152 33 12 tab "Quiz", 20, 8 4 139 139 text "Quiz Channel:", 3, 18 26 35 8, tab 20 text "File:", 6, 17 42 10 8, tab 20 button "Reset", 10, 108 55 22 10, tab 20 button %quizline, 9, 80 55 22 10, tab 20 button %qoptionmax, 5, 57 70 17 10, tab 20 text "Question File Line No:", 8, 17 56 55 8, tab 20 button %qoptionqfile, 7, 28 41 102 10, tab 20 check "On Score:", 4, 17 70 35 10, tab 20 combo 2, 57 24 73 69, tab 20 drop check "Use Congrats text file", 31, 17 127 68 10, tab 20 radio "Get Notice", 34, 81 70 50 10, group tab 20 radio "End Quiz", 35, 81 81 50 10, tab 20 check "Show lengths of answer in question", 36, 17 111 110 10, tab 20 text "Score table:", 42, 17 96 30 8, tab 20 radio "Basic", 43, 56 95 27 10, group tab 20 radio "Classic", 44, 89 95 34 10, tab 20 tab "General", 21 text "Default Quiz Folder:", 28, 19 26 51 8, tab 21 text "Congrats Text File (%nicks,$1):", 29, 18 51 100 8, tab 21 button "Button", 30, 18 36 119 11, tab 21 button "Button", 32, 18 61 119 11, tab 21 check "Button Hide Time in milliseconds:", 47, 18 79 87 10, tab 21 edit "", 48, 113 79 24 10, tab 21 combo 51, 73 96 64 47, tab 21 size drop text "Mask Type (default 3)", 52, 17 97 54 8, tab 21 button "Jumble a Question File", 1, 18 112 119 11, tab 21 button "Create a jumble quiz from a list of words in a file", 14, 18 127 119 11, tab 21 tab "Labels", 27 text "Use @ where you want the question number", 16, 16 24 123 8, tab 27 text "Control codes possible, colours not recommended", 22, 16 32 123 8, tab 27 text "Question:", 15, 16 51 26 8, tab 27 text "Answer:", 17, 16 63 26 8, tab 27 text "Hint:", 18, 16 75 26 8, tab 27 text "Notice:", 19, 16 87 26 8, tab 27 edit "", 23, 46 50 92 10, tab 27 edit "", 24, 46 62 92 10, tab 27 edit "", 25, 46 74 92 10, tab 27 edit "", 26, 46 86 92 10, tab 27 text "Remember to use Ctrl-O at the end if codes are used", 37, 15 40 124 8, tab 27 edit "", 39, 14 109 124 10, tab 27 autohs text "Question notice:", 38, 15 101 89 8, tab 27 check "Give undo score notice:", 40, 15 120 68 10, tab 27 edit "", 41, 14 129 124 10, tab 27 autohs tab "Control", 45 radio "Use Channel Ops", 49, 17 27 53 10, group tab 45 radio "Use Z Control", 50, 80 27 50 10, tab 45 text "Control Title / Reason 1", 53, 17 42 57 8, tab 45 edit "", 55, 76 41 57 10, tab 45 edit "", 56, 16 52 117 10, tab 45 radio "Channel", 63, 16 127 38 10, group tab 45 radio "Notice", 64, 58 127 33 10, tab 45 text "Warning method:", 66, 16 117 50 8, tab 45 edit "", 59, 76 66 57 10, tab 45 edit "", 61, 16 77 117 10, tab 45 edit "", 60, 76 91 57 10, tab 45 text "Control Title / Reason 3", 58, 17 93 57 8, tab 45 text "Control Title / Reason 2", 57, 17 68 57 8, tab 45 edit "", 62, 16 103 117 10, tab 45 radio "Message", 65, 100 127 38 10, tab 45 text "THIS TAB NOT YET ENABLED", 54, 31 19 85 8, tab 45 center tab "Score", 67 check "Disable double-clicking to award points", 46, 17 25 109 10, tab 67 check "Disable scoring altogether", 68, 17 38 78 10, tab 67 button "Defaults", 33, 44 152 33 12 } alias filloptions { var %chan 1 while (%chan <= $chan(0)) { did -a qop 2 $chan(%chan) if ($chan(%chan) == %quizchan) did -c qop 2 %chan inc %chan } did -o qop 7 1 %qoptionqfile did -o qop 9 1 %quizline did -o qop 5 1 %qoptionmax did $iif(x isin %qoptionend,-u,-c) qop 4 did $iif(notice isin %qoptionend,-c,-u) qop 34 did $iif(end isin %qoptionend,-c,-u) qop 35 did $iif(%qoptiontable == 1,-c,-u) qop 44 did $iif(%qoptiontable == 2,-c,-u) qop 43 did $iif(%qoptionlengths == on,-c,-u) qop 36 did $iif(%qoptioncongratsuse == on,-c,-u) qop 31 did -o qop 23 1 $replace( [ [ %qoptionq ] ] ,1,@,2,@,3,@,4,@,5,@,6,@,7,@,8,@,9,@,0,@,@@@@,@@@,@@@,@@,@@,@) did -o qop 24 1 $replace( [ [ %qoptiona ] ] ,1,@,2,@,3,@,4,@,5,@,6,@,7,@,8,@,9,@,0,@,@@@@,@@@,@@@,@@,@@,@) did -o qop 25 1 $replace( [ [ %qoptionh ] ] ,1,@,2,@,3,@,4,@,5,@,6,@,7,@,8,@,9,@,0,@,@@@@,@@@,@@@,@@,@@,@) did -o qop 26 1 $replace( [ [ %qoptionn ] ] ,1,@,2,@,3,@,4,@,5,@,6,@,7,@,8,@,9,@,0,@,@@@@,@@@,@@@,@@,@@,@) did -o qop 30 1 %qoptionqdir did -o qop 32 1 %qoptioncongrats did -o qop 39 1 %qoptionm did $iif(%qoptionuuse == on,-c,-u) qop 40 did -o qop 41 1 %qoptionu did $iif(%qoptiondouble == disable,-c,-u) qop 46 did $iif(%qoptionnoscoring == on,-c,-u) qop 68 did $iif(%qoptiondelayuse == on,-c,-u) qop 47 did -o qop 48 1 %qoptiondelay did -a qop 51 0 *!user@host did -a qop 51 1 *!*user@host did -a qop 51 2 *!*@host did -a qop 51 3 *!*user@*.host did -a qop 51 4 *!*@*.host did -c qop 51 $calc(%qoptionmask + 1) } alias saveoptions { set %quizchan $did(qop,2) set %quizserv $scid($cid).server set %qoptionqfile $did(qop,7) set %quizline $did(qop,9) set %qoptionmax $did(qop,5) set %qoptionend $iif($did(qop,4).state == 0,x) $+ $iif($did(qop,34).state == 1,notice,end) set %qoptiontable $iif($did(qop,44).state == 1,1,2) set %qoptionlengths $iif($did(qop,36).state == 1,on,off) set %qoptioncongratsuse $iif($did(qop,31).state == 1,on,off) set %qoptionq $label($did(qop,23)) set %qoptiona $label($did(qop,24)) set %qoptionh $label($did(qop,25)) set %qoptionn $label($did(qop,26)) set %qoptionqdir $did(qop,30) set %qoptioncongrats $did(qop,32) set %qoptionm $did(qop,39) set %qoptionu $did(qop,41) set %qoptionuuse $iif($did(qop,40).state == 1,on,off) set %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] %quizline set %qoptiondouble $iif($did(qop,46).state == 1,disable,enable) set %qoptionnoscoring $iif($did(qop,68).state == 1,on,off) set %qoptiondelayuse $iif($did(qop,47).state == 1,on,off) set %qoptiondelay $did(qop,48) set %qoptionmask $gettok($did(qop,51),1,32) } on 1:DIALOG:qop:sclick:13:filloptions on 1:DIALOG:qop:sclick:33:unset %qoption* | defaultoptions | filloptions on 1:DIALOG:qop:sclick:12:dialog -e quiz | preview on 1:DIALOG:qop:sclick:11:saveoptions | preview | dialog -e quiz on 1:DIALOG:qop:sclick:7:{ did -o qop 7 1 $$sfile(%qoptionqdir,Choose quiz file,Set File) did -o qop 9 1 1 if (%line [ $+ [ $remove($did(qop,7),$chr(32)) ] ] ) did -o qop 9 1 %line [ $+ [ $remove($did(qop,7),$chr(32)) ] ] } on 1:DIALOG:qop:sclick:9:did -o qop 9 1 $$?="Quizline" on 1:DIALOG:qop:sclick:10:did -o qop 9 1 1 on 1:DIALOG:qop:sclick:5:did -o qop 5 1 $$?="Max Score" on 1:DIALOG:qop:sclick:30:did -o qop 30 1 $sdir($mircdir,Choose Question directory) on 1:DIALOG:qop:sclick:32:did -o qop 32 1 $sfile($mircdir,Choose congratulations file (optional),Set File) on 1:DIALOG:qop:sclick:1:jumble on 1:DIALOG:qop:sclick:14:wordjumble alias label { var %pos $pos($$1,@,1) return $replace($$1,$chr(32),$chr(32) $chr(36) $+ chr(32) $chr(32),$chr(35),$ascchr(35) $chr(32),@,$chr(32) $chr(36) $+ + $chr(37) $+ quizqnum $chr(36) $+ + $chr(32)) } alias ascchr return $chr(32) $chr(36) $+ + $chr(36) $+ chr( $+ $$1 $+ ) $chr(36) $+ + alias jumble { set %filejumble $$iif(($1),$1,$sfile(%qoptionqdir,File to jumble (Computer will hang for short time),Jumble!)) set %copyline 1 set %qjumble [ %qoptionqdir $+ [ $remove($nopath(%filejumble),.txt) ] $+ Jumbled.txt ] write -c %qjumble while (%copyline < $lines(%filejumble)) { copyline } unset %qjumble unset %filejumble } alias copyline { set %pasteline $calc(2*$rand(0,$calc($lines(%qjumble) / 2 )) + 1) write -il [ $+ [ %pasteline ] ] %qjumble $read(%filejumble,%copyline) inc %copyline inc %pasteline write -il [ $+ [ %pasteline ] ] %qjumble $read(%filejumble,%copyline) inc %copyline } alias wordjumble { set %wordjumble $$sfile(%qoptionqdir,File of words to jumble (Computer will hang for short time),Jumble!) set %wordjumblenew [ %qoptionqdir $+ [ $remove($nopath(%wordjumble),.txt) ] $+ Word.txt ] set %wordline 1 while (%wordline <= $lines(%wordjumble)) { write %wordjumblenew Unjumble the word: $jumbleword write %wordjumblenew %wordq $read(%wordjumble,%wordline) inc %wordline unset %wordnew } jumble %wordjumblenew .remove %wordjumblenew unset %word* } alias jumbleword { set %wordold $lower($read(%wordjumble,%wordline)) set %wordnumber 1 set %wordoldlength $len(%wordold) while (%wordnumber <= %wordoldlength) { jumbleletter inc %wordnumber } return %wordnew } alias jumbleletter { set %wordrand $rand(1,$len(%wordold)) set %wordletter $mid(%wordold,%wordrand,1) set %wordleft $left(%wordold,$calc(%wordrand - 1)) set %wordright $right(%wordold,$calc($len(%wordold) - %wordrand)) set %wordold %wordleft $+ %wordright set %wordnew %wordnew $+ %wordletter } ;--------------POPUPS--------------- menu nicklist,query { - It's called lag: notice $$1 Its called lag. What you say comes up on your screen immediately, but it takes time to reach the questioner. Whoever comes up on the questioner's screen first gets the point and that is final. Please do not make a fuss over it, everyone experiences lag, do not cut and paste and do not reply to this notice. } menu channel { - - $iif(($dialog(quiz)),$style(2)) Start Quiz: { defaultoptions unset %quiz* set %quizqnum 0 set %quizchan # set %quizserv $scid($cid).server if (!$chan(#).ial) who # set %quizline 1 if ( %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] ) set %quizline %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] dialog -mod Quiz Quiz preview did -i quiz 1 1 < Quiz started in %quizchan > } $iif((!%quizscoretally) || ($dialog(quiz)),$style(2)) Continue Quiz: { defaultoptions set %quizchan # set %quizserv $scid($cid).server if (!$chan(#).ial) who # dialog -mod Quiz quiz if (!%quizrepeata) answersetup preview did -i quiz 1 1 < Quiz continued in %quizchan > } $iif(($dialog(quiz)),$style(2)) Clear Quiz: unset %quiz* } ;--------------ALIAS------------------- alias quizline return $read(%qoptionqfile,$calc(%quizline + $1)) alias questions return $round($calc($$1 / 2),0) alias correct { set %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] %quizline if (%quizline >= $calc($lines(%qoptionqfile) - 1)) unset %line [ $+ [ %qoptionqfile ] ] set %quizaddress $address($$1,%qoptionmask) set %quiz [ $+ [ %quizaddress ] ] $$1 if (!%quizscorehigh) set %quizscorehigh 0 set %quizoldsc %quizscorehigh set %quiznewsc $calc(%quizscorehigh + $$2) while (%quizoldsc >= 1) { if ($istok(%quizscore [ $+ [ %quizoldsc ] ] ,%quizaddress,32)) { scoresetup | return } dec %quizoldsc dec %quiznewsc } set %quizscore [ $+ [ $$2 ] ] $addtok(%quizscore [ $+ [ $$2 ] ] ,%quizaddress,32) set %quiznewsc $$2 if (%quizscorehigh < $$2) set %quizscorehigh $$2 scoreupdate } alias scoresetup { set %quizscore [ $+ [ %quizoldsc ] ] $remtok(%quizscore [ $+ [ %quizoldsc ] ] ,%quizaddress,1,32) | set %quizscore [ $+ [ %quiznewsc ] ] $addtok(%quizscore [ $+ [ %quiznewsc ] ] ,%quizaddress,32) if (%quiznewsc > %quizscorehigh) set %quizscorehigh %quiznewsc if ((%quiznewsc >= %qoptionmax) && (%qoptionend == notice)) { did -o quiz 5 1 MAX SCORE REACHED | beep } scoreupdate } alias scoreupdate { if (!%quizscorehigh) halt unset %quizscoretally set %quizsc 1 set %quizf %quizscorehigh :scoreloop set %quizt 1 while (%quizt <= $numtok(%quizscore [ $+ [ %quizsc ] ] ,32)) { if ($ial($gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick) set %quizupdate [ $+ [ %quizsc ] ] $addtok(%quizupdate [ $+ [ %quizsc ] ] ,$chr(32) $+ $ial($gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick,44) else set %quizupdate [ $+ [ %quizsc ] ] $addtok(%quizupdate [ $+ [ %quizsc ] ] ,$chr(32) $+ %quiz [ $+ [ $gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] ,44) inc %quizt } inc %quizsc if (%quizsc <= %quizscorehigh) goto scoreloop while (%quizsc > 1) { dec %quizsc if (%quizupdate [ $+ [ %quizsc ] ]) set %quizscoretally $addtok(%quizscoretally,$chr(40) $+ %quizsc $+ $chr(41) $+ $chr(60) $+ $right(%quizupdate [ $+ [ %quizsc ] ] ,-1) $+ $chr(62),32) } unset %quizupdate* } ;------------------ final scores ------------------- alias finalscores { if (!%quizscorehigh) halt set %quizsc 1 set %quizf %quizscorehigh :finalloop set %quizt 1 while (%quizt <= $numtok(%quizscore [ $+ [ %quizsc ] ] ,32)) { tablenicks [ $+ [ %qoptiontable ] ] $ial($gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick inc %quizt } inc %quizsc if (%quizsc != $calc(%quizscorehigh + 1)) goto finalloop table [ $+ [ %qoptiontable ] ] unset %quizfinal* set %quizqnum 0 did -r quiz 1 did -a quiz 1 < Quiz completed > if (!%quizcontinue) { unset %quizscore* } } alias tablenicks1 { if ($ial($gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32)).nick) set %quizfinal [ $+ [ %quizsc ] ] $addtok(%quizfinal [ $+ [ %quizsc ] ] , < $+ $$1 $+ > $+ $chr(32),32) else set %quizfinal [ $+ [ %quizsc ] ] $addtok(%quizfinal [ $+ [ %quizsc ] ] , < $+ %quiz [ $+ [ $gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] $+ > $+ $chr(32),32) } alias table1 { describe %quizchan   POSITION  $chr(124)  SCORE  $chr(124)          PLAYERS             while (%quizf > 0) { if (%quizfinal [ $+ [ %quizf ] ] ) describe %quizchan $position $+ $chr(124) $centre(%quizf,7) $chr(124) %quizfinal [ $+ [ %quizf ] ] dec %quizf } } alias tablenicks2 { if ($ial($gettok(%quizscore [ $+ [ %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(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] ,44) } alias table2 { describe %quizchan - FINAL SCORES - describe %quizchan SCORE ---- NICKS while (%quizf > 0) { if (%quizfinal [ $+ [ %quizf ] ] ) describe %quizchan < %quizf > $str(-,$calc(5 - $len(%quizf))) %quizfinal [ $+ [ %quizf ] ] dec %quizf } } alias centre { if ($len($$1) >= $$2) return $3 $+ $$1 $+ $3 var %left $round($calc(($$2 - $len($$1))/2),0) var %right $calc($$2 - $len($$1) - %left) return $str( $+ $3 $+ $chr(32),%left) $$1 $str( $+ $3 $+ $chr(32),%right) } alias textright { if ($len($$1) >= $$2) return $3 $+ $$1 $+ $3 var %left $calc($$2 - $len($$1)) return $str( $+ $3 $+ $chr(32),%left) $$1 } alias position { if (%quizfinalnum) inc %quizfinalpos %quizfinalnum else set %quizfinalpos 1 set %quizfinalnum $numtok(%quizfinal [ $+ [ %quizf ] ] ,32) if (%quizfinalpos == 1) return $centre($iif(%quizfinalnum > 1,Winners,Winner),12) else return $textright($iif(%quizfinalnum > 1,=) $+ $ord(%quizfinalpos),8)     } '------- extras -------- alias q { describe # Q: $replace($$1-,/,÷,*,×) } alias h { describe # H: $$1- } alias a { describe # A: $$1- if (%quizscoretally) { correct $mid($$1-,$calc($pos($$1-,wd,1) + 3),9) } } alias newquiz { set %quiznew $$?1="Name of the new quiz" write %qoptionqdir $+ %quiznew $+ .txt a run %qoptionqdir $+ %quiznew $+ .txt } alias editquiz { run %qoptionqdir $+ $$?1="Name of the quiz to edit" $+ .txt } ;--------------REMOTES----------- on 1:NOTICE:q*:#quiz:editbox -p # $chr(47) $+ msg $nick #groupquiz off on 1:ACTION:*Q *:#quiz:join #quiz on 1:ACTION:*(Q)*:#quiz:join #quiz on 1:ACTION:*Q*:#quiz:if (%questioner == $nick) { join #quiz } #groupquiz end ;------------------DIALOG---------------- ;----dialog table----- dialog quiz { title "Quiz by dodgo" size -1 -1 634 326 list 1, 5 9 240 233, size extsel button "End Question", 2, 538 18 82 24 button "Ask Question", 3, 262 18 82 24 edit "", 10, 262 45 359 50, multi vsbar edit "", 11, 262 95 359 23, autohs button "Skip Q/A", 14, 355 121 82 24 button "Delete Line", 15, 261 121 82 24 button "Close Dialog", 19, 536 294 90 24, ok button "End Quiz", 20, 551 212 72 24 button "Ask && Notice", 4, 354 18 82 24 edit "", 5, 296 148 324 37, multi autovs button "Hint", 6, 263 151 32 30 button "Show Scores", 7, 478 212 72 24 button "Edit Scores", 12, 405 212 72 24 button "Restore Q/A", 18, 448 121 82 24 button "Standard Hint", 16, 446 18 82 24 button "Save Q/A", 8, 539 121 82 24 edit "", 22, 14 289 85 23 radio "Swearing", 23, 111 257 120 20 radio "Flooding", 24, 111 275 120 20 radio "Lame/Annoying", 25, 111 293 120 20 button "Kick", 26, 241 277 69 19 button "Ban", 27, 241 296 69 19 button "Get Ops", 28, 16 262 80 22 text "Question Number:", 31, 428 272 88 16 text "num", 33, 517 272 35 16, center text "out of", 34, 549 272 32 16, center text "num", 35, 580 272 35 16, center text "File", 36, 453 254 170 16, center button "Options", 37, 429 294 90 24 button "Mode", 38, 324 294 90 24 button "Undo Score", 13, 332 212 72 24 button "Quick File Load", 17, 324 257 90 24 text "File:", 30, 428 254 23 16 button "Lag Notice", 32, 241 258 69 19 button "Award", 39, 259 212 72 24 box "Scoring", 9, 253 197 376 46 box "Asking", 21, 253 3 376 190 box "Control", 29, 6 247 308 72 } alias preview { if (%quizline >= $lines(%qoptionqfile)) { set %quizline 1 | unset %line [ $+ [ %qoptionqfile ] ] | beep } did -r quiz 10 did -r quiz 11 did -a quiz 10 $quizline did -a quiz 11 $quizline(1) did -o quiz 33 1 $iif(%quizoptionprogress == lines,%quizline,$questions(%quizline)) did -o quiz 35 1 $iif(%quizoptionprogress == lines,$lines(%qoptionqfile),$questions($lines(%qoptionqfile))) did -o quiz 36 1 $nopath(%qoptionqfile) } alias answersetup { set %quizanswer $did(quiz,11) if ($did(quiz,11)) inc %quizline 2 if (!$did(quiz,11)) dec %quizqnum preview set %quizrepeata on unset %quizrepeatq did -b quiz 2 did -e quiz 14 did -e quiz 15 did -b quiz 8 did -b quiz 18 did -e quiz 13 did -b quiz 16 did -e quiz 20 } alias questionsetup { inc %quizqnum unset %quiznumhint did -r quiz 1 did -r quiz 5 set %quizrepeatq on unset %quizrepeata did -e quiz 2 did -b quiz 14 did -b quiz 15 did -b quiz 13 did -e quiz 16 did -b quiz 20 } alias hintbutton { $iif(%quiznumhint >= 0,inc %quiznumhint,$iif(%qoptionlengths == on,set %quiznumhint 1,set %quiznumhint 0)) .timerhint -m 1 700 makehint %quiznumhint $iif($chr(40) isin $did(quiz,11),$remove($left($did(quiz,11),$pos($did(quiz,11),$chr(40),1)),$chr(40)),$did(quiz,11)) } alias makehint { set %quizhintcnt 0 if (- isin $$2-) set %ch . else set %ch - if ($$1 == 0) { set %quizhinthint $replace($$2-,a,%ch,b,%ch,c,%ch,d,%ch,e,%ch,f,%ch,g,%ch,h,%ch,i,%ch,j,%ch,k,%ch,l,%ch,m,%ch,n,%ch,o,%ch,p,%ch,q,%ch,r,%ch,s,%ch,t,%ch,u,%ch,v,%ch,w,%ch,x,%ch,y,%ch,z,%ch,0,%ch,1,%ch,2,%ch,3,%ch,4,%ch,5,%ch,6,%ch,7,%ch,8,%ch,9,%ch,0,%ch) | givehint | halt } while (%quizhintcnt < $numtok($$2-,32)) { inc %quizhintcnt set %quizhintletters $left($gettok($$2-,%quizhintcnt,32),$$1) if ($$1 < $len($gettok($$2-,%quizhintcnt,32))) { set %quizhintblanks $replace($right($gettok($$2-,%quizhintcnt,32),$calc(-1*$$1)),a,%ch,b,%ch,c,%ch,d,%ch,e,%ch,f,%ch,g,%ch,h,%ch,i,%ch,j,%ch,k,%ch,l,%ch,m,%ch,n,%ch,o,%ch,p,%ch,q,%ch,r,%ch,s,%ch,t,%ch,u,%ch,v,%ch,w,%ch,x,%ch,y,%ch,z,%ch,0,%ch,1,%ch,2,%ch,3,%ch,4,%ch,5,%ch,6,%ch,7,%ch,8,%ch,9,%ch,0,%ch) } elseif ($$1 >= $len($gettok($$2-,%quizhintcnt,32))) { unset %quizhintblanks } set %quizhinthint $instok(%quizhinthint,%quizhintletters $+ %quizhintblanks,%quizhintcnt,32) } givehint } alias givehint { describe %quizchan [ [ %qoptionh ] ] %quizhinthint did -a quiz 1 < Hint: %quizhinthint > unset %quizhint* unset %ch } alias lengths { unset %quizlength* set %quizlengthcount 1 while (%quizlengthcount <= $numtok($did(11),32)) { set %quizlengths $instok(%quizlengths,$len($gettok($did(11),%quizlengthcount,32)),100,44) inc %quizlengthcount } return $chr(40) $+ %quizlengths $+ $chr(41) } alias undo { set %quizscore [ $+ [ %quiznewsc ] ] $remtok(%quizscore [ $+ [ %quiznewsc ] ] ,%quizaddress,1,32) if (%quiznewsc != 1) set %quizscore [ $+ [ %quizoldsc ] ] $addtok(%quizscore [ $+ [ %quizoldsc ] ] ,%quizaddress,32) if (%qoptionuuse == on) describe %quizchan [ [ %qoptionn ] ] %qoptionu dec %quizline 2 preview unset %quizrepeata set %quizrepeatq on did -b quiz 14 did -b quiz 15 did -e quiz 2 did -e quiz 16 did -b quiz 13 did -o quiz 1 %quizcorrectline $left($did(quiz,1,%quizcorrectline),-18) did -d quiz 1 $calc(%quizcorrectline + 1) } alias quickload { set %qoptionqfile $$sfile(%qoptionqdir,Choose quiz file,Start Asking!) set %quizline 1 if ( %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] ) set %quizline %line [ $+ [ $remove(%qoptionqfile,$chr(32)) ] ] preview } alias congrats { set %nicks $$1 if (%qoptioncongratsuse == on) return $read(%qoptioncongrats) else return Well done $$1 $+ ! } alias temphide { if (%qoptiondelayuse = off) return did -h quiz $$1 .timer -m 1 %qoptiondelay did -v quiz $$1 } ;----dialog remotes----- on *:TEXT:*:%quizchan:if (($dialog(quiz)) && (< Question isin $did(quiz,1,1)) && ($scid($cid).server == %quizserv)) { did -a quiz 1 $nick -> $strip($$1-) } 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 } } on 1:DIALOG:quiz:init:0:{ if ($me !isop %quizchan) disablecontrol else did -b quiz 28 $iif(%modequiz == normal,normalmode,$iif(%modequiz == help,helpmode,intromode)) did -b quiz 2 did -b quiz 8 did -b quiz 18 did -b quiz 13 if (!%quizrepeatq) did -b quiz 16 } on 1:DIALOG:quiz:sclick:3:{ temphide $did if (!%quizrepeatq) questionsetup did -a quiz 1 < Question asked > describe %quizchan [ [ %qoptionq ] ] $did(10,1) $+ $did(10,2) $+ $did(10,3) $+ $did(10,4) $+ $did(10,5) $+ $did(10,6) $iif(%qoptionlengths == on,$lengths) did -f quiz 5 } on 1:DIALOG:quiz:sclick:4:{ temphide $did if (!%quizrepeatq) questionsetup did -a quiz 1 < Question / Notice > describe %quizchan [ [ %qoptionq ] ] $did(10,1) $+ $did(10,2) $+ $did(10,3) $+ $did(10,4) $+ $did(10,5) $+ $did(10,6) $iif(%qoptionlengths == on,$lengths) describe %quizchan [ [ %qoptionn ] ] %qoptionm did -f quiz 5 } on 1:DIALOG:quiz:sclick:2:{ temphide $did did -a quiz 1 < Question skipped > describe %quizchan Question over, answer was: $did(11) answersetup } on 1:DIALOG:quiz:dclick:1:{ if (%qoptiondouble == disable) halt set %quizcorrect $gettok($did(1).seltext,1,32) set %quizcorrectline $did(1).sel if (%quizcorrect != <) { if (!%quizrepeata) answersetup did -o quiz 1 %quizcorrectline $did(1).seltext < Point awarded > did -i quiz 1 $calc(%quizcorrectline + 1) < Answer: %quizanswer > describe %quizchan [ [ %qoptiona ] ] %quizanswer $chr(124) $congrats(%quizcorrect) correct %quizcorrect 1 if (%qoptionnoscoring == on) halt describe %quizchan SCORES: %quizscoretally if ((%quizscorehigh >= %qoptionmax) && (%qoptionend == end)) { finalscores | halt } } } on 1:DIALOG:quiz:sclick:39:{ temphide $did unset %quizcorrect unset %quizcorrectlines set %count 1 if (!%quizrepeata) answersetup if ($did(quiz,1,0).sel > 3) set %countlimit 3 | else set %countlimit $did(quiz,1,0).sel while (%count <= %countlimit) { correct $gettok($did(quiz,1,$did(quiz,1,%count).sel),1,32) $calc(4 - %count) set %quizcorrect $addtok(%quizcorrect,$chr(32) $+ $gettok($did(quiz,1,$did(quiz,1,%count).sel),1,32),44) set %quizcorrectlines $addtok(%quizcorrectlines,$did(quiz,1,%count).sel,32) inc %count } set %count 1 while (%count <= %countlimit) { did -o quiz 1 $gettok(%quizcorrectlines,%count,32) $did(1,$gettok(%quizcorrectlines,%count,32)) < Point awarded > inc %count } describe %quizchan [ [ %qoptiona ] ] %quizanswer $chr(124) $congrats(%quizcorrect) if (%qoptionnoscoring == on) halt describe %quizchan SCORES: %quizscoretally if ((%quizscorehigh >= %qoptionmax) && (%qoptionend == end)) { finalscores | halt } } on 1:DIALOG:quiz:sclick:19:unset %quizchan | if ($dialog(editscores)) dialog -x editscores on 1:DIALOG:quiz:edit:5:did -t quiz 6 on 1:DIALOG:quiz:sclick:6:{ temphide $did | describe %quizchan [ [ %qoptionh ] ] $did(5) $+ $did(5,2) $+ $did(5,3) | did -a quiz 1 < Hint: $did(5) $+ $did(5,2) $+ $did(5,3) > | did -r quiz 5 | did -f quiz 5 } on 1:DIALOG:quiz:edit:10:{ did -t quiz 3 | did -e quiz 8 | did -e quiz 18 } on 1:DIALOG:quiz:edit:11:{ did -t quiz 3 | did -e quiz 8 | did -e quiz 18 } on 1:DIALOG:quiz:sclick:16:hintbutton on 1:DIALOG:quiz:sclick:20:{ temphide $did | finalscores } on 1:DIALOG:quiz:sclick:15:{ temphide $did | write -dl $+ %quizline %qoptionqfile | preview } on 1:DIALOG:quiz:sclick:7: temphide $did | scoreupdate | describe %quizchan SCORES: %quizscoretally on 1:DIALOG:quiz:sclick:12:{ did -b quiz 13 | editscores } on 1:DIALOG:quiz:sclick:18:{ preview | did -b quiz 8 | did -b quiz 18 } on 1:DIALOG:quiz:sclick:14:{ temphide $did | inc %quizline 2 | preview } on 1:DIALOG:quiz:sclick:8:{ write -l $+ %quizline %qoptionqfile $did(10) $+ $did(10,2) $+ $did(10,3) $+ $did(10,4) $+ $did(10,5) | write -l $+ $calc(%quizline + 1) %qoptionqfile $did(11) | did -b quiz 8 | did -b quiz 18 } on 1:DIALOG:quiz:sclick:13:undo on 1:DIALOG:quiz:sclick:17:quickload on 1:DIALOG:quiz:sclick:37:quizsetup on 1:DIALOG:quiz:sclick:32:temphide $did | if ($did(22)) notice $did(22) Its called lag. What you say comes up on your screen immediately, but it takes time to reach the questioner. Whoever comes up on the questioner's screen first gets the point and that is final. Please do not make a fuss over it, everyone experiences lag, do not cut and paste and do not reply to this notice. ;control on 1:OP:%quizchan:if (($opnick == $me) && ($dialog(quiz))) { enablecontrol | did -b quiz 28 } on 1:DEOP:%quizchan:if (($opnick == $me) && ($dialog(quiz))) { disablecontrol | did -e quiz 28 } on 1:DIALOG:quiz:sclick:28: temphide $did | msg z op %quizchan $me on 1:DIALOG:quiz:sclick:1:if ($gettok($did(1).seltext,1,32) != <) did -o quiz 22 1 $gettok($did(1).seltext,1,32) on 1:DIALOG:quiz:sclick:23:set %quizreason No swearing on 1:DIALOG:quiz:sclick:24:set %quizreason No flooding on 1:DIALOG:quiz:sclick:25:set %quizreason No lameness or being annoying on 1:DIALOG:quiz:sclick:26:kick %quizchan $did(22) Warning: %quizreason on 1:DIALOG:quiz:sclick:27:{ ban %quizchan $did(22) 2 | kick %quizchan $did(22) %quizreason } alias enablecontrol { did -e quiz 23 did -e quiz 24 did -e quiz 25 did -e quiz 26 did -e quiz 27 } alias disablecontrol { did -b quiz 23 did -b quiz 24 did -b quiz 25 did -b quiz 26 did -b quiz 27 } ;------edit scores dialog dialog editscores { title "Edit Score Board" size -1 -1 129 167 option dbu list 1, 3 4 73 159, size text "#", 2, 90 23 22 7, center button "Done", 5, 81 144 42 18, ok text "Nick", 6, 80 11 42 7, center box "", 7, 80 99 44 22 box "", 8, 80 40 44 22 text "Rapid Increase", 9, 89 46 25 14, center text "Rapid Decrease", 10, 89 105 25 14, center button "Increase", 3, 80 62 44 20 button "Decrease", 4, 80 82 44 20 } alias scorenick return $ial($gettok(%quizscore [ $+ [ $$1 ] ] ,$$2,32)).nick alias editscores { dialog -mo editscores editscores dialog -i quiz set %quizsc $calc(%quizscorehigh + 1) set %quiznick 0 if (!%quizscorehigh) set %quizscorehigh 0 while (%quizsc > 0) { dec %quizsc set %quizt 0 while (%quizt < $numtok(%quizscore [ $+ [ %quizsc ] ] ,32)) { inc %quizt if ($scorenick(%quizsc,%quizt)) did -a editscores 1 %quizsc $iif(%quizsc >= 10,$iif(%quizsc >= 100,-,---),-----) $scorenick(%quizsc,%quizt) -------------------------------------- $gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) else did -a editscores 1 %quizsc $iif(%quizsc >= 10,$iif(%quizsc >= 100,-,---),-----) %quiz [ $+ [ $gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) ] ] -------------------------------------- $gettok(%quizscore [ $+ [ %quizsc ] ] ,%quizt,32) } } while (%quiznick < $nick(%quizchan,0)) { inc %quiznick if (($nick(%quizchan,%quiznick) !isin $didtok(editscores,1,32)) && ($nick(%quizchan,%quiznick) != $me) && ($nick(%quizchan,%quiznick) != Z )) { did -a editscores 1 0 ----- $nick(%quizchan,%quiznick) -------------------------------------- $address($nick(%quizchan,%quiznick),%qoptionmask) } } } on 1:dialog:editscores:sclick:1:{ did -o editscores 2 1 $gettok($did(1).seltext,1,32) | did -o editscores 6 1 $gettok($did(1).seltext,3,32) | set %quizaddress $gettok($did(1).seltext,5,32) | set %quiznick $gettok($did(1).seltext,3,32) | set %quizeditline $did(1,1).sel | set %quiz [ $+ [ %quizaddress ] ] %quiznick } on 1:dialog:editscores:sclick:0:{ if (($did(2) != $chr(35)) && ($inrect($mouse.x,$mouse.y,161,86,85,45))) { increase | .timerquick -m 0 50 increase } if (($did(2) != $chr(35)) && ($inrect($mouse.x,$mouse.y,161,204,85,45))) { decrease | .timerquick -m 0 50 decrease } } on 1:dialog:editscores:uclick:0:.timerquick off on 1:dialog:editscores:sclick:3:increase over on 1:dialog:editscores:sclick:4:decrease on 1:dialog:editscores:sclick:5: { if ((%quizscorehigh >= %qoptionmax) && (%qoptionend == end)) finalscores if ((%quizscorehigh >= %qoptionmax) && (%qoptionend == notice)) { did -i quiz 1 2 < - > | did -i quiz 1 2 < MAX SCORE REACHED > | did -i quiz 1 2 < - > } dialog -e quiz } alias decrease { if ($did(editscores,2) != 0) setscore %quizaddress $did(editscores,2) $calc($did(editscores,2) - 1) %quiznick %quizeditline } alias increase { if (($did(editscores,2) != %qoptionmax) || ($$1 == over)) setscore %quizaddress $did(editscores,2) $calc($did(editscores,2) + 1) %quiznick %quizeditline } alias setscore { set %quizscore [ $+ [ $$2 ] ] $remtok(%quizscore [ $+ [ $$2 ] ] ,$$1,1,32) set %quizscore [ $+ [ $$3 ] ] $addtok(%quizscore [ $+ [ $$3 ] ] ,$$1,32) did -o editscores 2 1 $$3 did -o editscores 1 $$5 $$3 $iif($$3 >= 10,$iif($$3 >= 100,-,---),-----) %quiznick -------------------------------------- $$1 did -c editscores 1 $$5 if ($$3 > %quizscorehigh) set %quizscorehigh $$3 } ;---- mode ---- on 1:DIALOG:quiz:sclick:38:$iif(%modequiz == normal,intromode,$iif(%modequiz == intro,helpmode,normalmode)) alias helpmode { set %modequiz help did -o quiz 38 1 Mode: Help .enable #help did -o quiz 1 1 Mode not for quizzing, Move mouse over controls did -o quiz 1 2 Mode not for quizzing, Move mouse over controls did -v quiz 4 did -v quiz 8 did -v quiz 14 did -v quiz 15 did -v quiz 16 did -v quiz 18 did -v quiz 22 did -v quiz 23 did -v quiz 24 did -v quiz 25 did -v quiz 26 did -v quiz 27 did -v quiz 28 did -v quiz 29 did -v quiz 32 did -v quiz 37 } alias normalmode { set %modequiz normal did -o quiz 38 1 Mode: Normal .disable #help } alias intromode { set %modequiz intro .disable #help did -o quiz 38 1 Mode: Intro did -h quiz 4 did -h quiz 8 did -h quiz 14 did -h quiz 15 did -h quiz 16 did -h quiz 18 did -h quiz 22 did -h quiz 23 did -h quiz 24 did -h quiz 25 did -h quiz 26 did -h quiz 27 did -h quiz 28 did -h quiz 29 did -h quiz 32 did -h quiz 37 } #help on on 1:DIALOG:quiz:mouse:*: did -o quiz 1 2 $read(%qoptionhelp,s,$did) #help end ;works better if overwriting in listbox instead of hintbox, dunno why ;-------------not yet in use and other commands------------ ;tug of war style scoring alias saveoptions { var %count 1 while (%count <= $var(%line*,0)) { writeini quizoptions.ini Lines $remove($var(%line*,%count),$chr(37) $+ line) $var(%line*,%count).value inc %count } }