Snippets Project Page
Author: entropy
Added: 3y
Updated: Never
mIRC: v7.5+
Hits: 1,158
Downloads: 78
Review: westor
Size: 12.76KB
2 0
Login to vote.
Trivia
v1.9
This is my personal Trivia game i made.
Right click popups: "Trivia".
Commands: !trivia
Note: you can only start a game if all variables are set!
I hope you enjoy this snippet!
Download
JSON
▲ Review
▼ Source
;=========================================================================================================== ; Trivia v1.9 - by entropy 2020 ;=========================================================================================================== ; Commands: !trivia <on/off> - !score <nick> - !top10 - !hint - !stats ;=========================================================================================================== ; Download the questions files here: ; 1) https://mircscripts.net/files/questions.txt ; 2) https://mircscripts.net/files/allquestions.txt ;=========================================================================================================== on *:load:{ echo $color(info) -tag * [Trivia] $chr(9679) Loaded Trivia $tversion - by entropy 2020 } on *:unload:{ if ($hget(trivia)) { hfree trivia } unset %trivia.* %trivia .timertrivia* off echo $color(info) -tag * [Trivia] $chr(9679) Unloaded Trivia $tversion - by entropy 2020 } ;=========================================================================================================== alias -l sversion { return v1.9 } alias -l sauthor { return entropy } alias -l syear { return 2020 } ;=========================================================================================================== #trivia off on *:input:%trivia.chan:{ if ($network == %trivia.network) { triviatrigger $me $1- } } on *:text:*:%trivia.chan:{ if ($network == %trivia.network) { triviatrigger $nick $1- } } #trivia end ;=========================================================================================================== menu channel,status,menubar,query { - Trivia $sversion .Status $chr(9) $replace($group(#trivia).status,o,O) { if ($group(#trivia).status == on) { .disable #trivia echo $color(info) -tag * [Trivia] Group disabled! } else { if (!%trivia.thints || !%trivia.hints || !%trivia.file || !%trivia.points || !%trivia.dec || !%trivia.chan || !%trivia.network || !%trivia.percent) { echo $color(info) -tag [Trivia] $chr(9679) Unable to comply! The variables are all not set! | return } .enable #trivia echo $color(info) -tag * [Trivia] Group enabled! } } .- .Questions File? $chr(9) $nopath(%trivia.file) ..Select { %trivia.file = $sfile($scriptdir,*.txt,Select Questions File:) | if (%trivia.file) { echo $color(info) -tag * [Trivia] Questions file $qt($nopath(%trivia.file)) selected! ( $+ $bytes($lines(%trivia.file),b) questions) } } ..- ..$iif(%trivia.file,Run $chr(9) $nopath(%trivia.file) ( $+ $bytes($lines(%trivia.file),b) questions $+ ) ) { run %trivia.file } .- .Colors? $chr(9) $iif(%trivia.colors == on,On,Off) { %trivia.colors = $iif(%trivia.colors == on,off,on) } .- .Hints? $chr(9) %trivia.hints { %trivia.hints = $input(Hints?,5) } .Hint Percent? $chr(9) %trivia.percent { %trivia.percent = $input(Hint Percent?,5) } .Time Between Hints? $chr(9) $remove($duration(%trivia.thints),$chr(32)) { %trivia.thints = $input(Time Between Hints? (in seconds),5) } .- .Trivia Channel? $chr(9) %trivia.chan { %trivia.chan = $input(Trivia Channel?,5) } .Trivia Network? $chr(9) %trivia.network { %trivia.network = $input(Network?,5) } .- .Points per question? $chr(9) %trivia.points { %trivia.points = $input(Points per correct answer?,5) } .Point Deduction per Hint? $chr(9) %trivia.dec { %trivia.dec = $input(Point Deduction per Hint?,5) } .- .Advertise { var %a = 1 while ($scon(%a)) { scid $v1 if ($network == %trivia.network && $me ison %trivia.chan) { describe %trivia.chan is using: Trivia $sversion - by $sauthor $syear } inc %a } scid -r } - } ;=========================================================================================================== on *:start:{ %trivia = off .timertrivia* off if (!$hget(trivia)) { hmake trivia 100 } if ($exists($qt($scriptdirtrivia.dat))) { hload trivia $qt($scriptdirtrivia.dat) } } on *:exit:{ hsave -o trivia $qt($scriptdirtrivia.dat) } on *:disconnect:{ if ($network == %trivia.network) { endtrivia } } ;==================================================================================================== alias -l clearit { if (!$hget(trivia)) { return } while ($hfind(trivia,streak.*,1,w).item) { hdel trivia $v1 } } alias -l cmsg { if (!$2) { return } elseif (%trivia.colors == on) { msg $1 $+($chr(3),14,$2-,$chr(3)) } else { msg $1- } } alias -l endtrivia { unset %answer %question %tpoints %askhints %streak %curtime .timertrivia* off %trivia = off clearit } alias -l nextquestion { if ($1 == yes) { cmsg %trivia.chan No one got it right! cmsg %trivia.chan [Answer] $chr(9679) The correct answer was: $qt(%answer) if (%streak) { if ($hget(trivia,$+(streak.,%streak)) > 1) { cmsg %trivia.chan [Streak] $chr(9679) So much for $+(%streak,\'s) winning streak! } hdel trivia $+(streak.,%streak) unset %streak } cmsg %trivia.chan Moving on... .timertriviaask off .timertriviadone -o 1 20 displaydone set -u20 %end $ctime } else { set -u5 %end $ctime | .timertriviadone -o 1 5 displaydone } } alias -l displaydone { %curtime = $ctime var %f = $qt(%trivia.file) var %a = $lines(%f), %b = $read(%trivia.file,n,$r(1,%a)) %question = $gettok(%b,1,42) %answer = $gettok(%b,2,42) %tpoints = %trivia.points var %z = 1, %x, %y while ($gettok(%answer,%z,32)) { %x = $str(*,$len($ifmatch)) %y = %y %x inc %z } var %h = $replace(%trivia.percent,random,$r(1,100)) var %de = $hget(trivia,currenthint) var %ans = %answer if (%tpoints == %trivia.points) { hadd trivia currenthint %y %askhints = 1 } else { var %g = $hint(%h,$iif(%y && %y != %ans,%y,$replace(%answer,a,*,b,*,c,*,d,*,e,*,f,*,g,*,h,*,i,*,j,*,k,*,l,*,m,*,n,*,o,*,p,*,q,*,r,*,s,*,t,*,u,*,v,*,w,*,x,*,y,*,z,*,0,*,1,*,2,*,3,*,4,*,5,*,6,*,7,*,8,*,9,*)),%answer) hadd trivia currenthint %g } cmsg %trivia.chan [Trivia] $chr(9679) Question: $+(\",%question,\") askhint .timertriviaask -o %trivia.hints %trivia.thints askhint } alias -l triviatrigger { if (?trivia iswm $2 && $left($2,1) isin @!. && $istok(on off,$3,32)) { if ($3 == off) { if (%trivia == on) { cmsg %trivia.chan Trivia is now: Off %trivia = off endtrivia clearit } else { cmsg %trivia.chan Trivia is already Off! } } elseif ($3 == on) { if (%trivia == off) { if (!%trivia.thints || !%trivia.hints || !%trivia.file || !%trivia.points || !%trivia.dec || !%trivia.chan || !%trivia.network || !%trivia.percent) { cmsg %trivia.chan [Trivia] $chr(9679) Unable to comply! The variables are all not set! | return } cmsg %trivia.chan Trivia is now: On %trivia = on nextquestion } else { cmsg %trivia.chan Trivia is already On! } } } elseif (?stats iswm $2 && $left($2,1) isin @!.) { cmsg %trivia.chan [Trivia] $chr(9679) Stats - Time between hints: $duration(%trivia.thints) - Hints: %trivia.hints - Questions file: $nopath(%trivia.file) ( $+ $bytes($lines(%trivia.file),b) questions) - Points per answer: $bytes(%trivia.points,b) - Points decrease: $bytes(%trivia.dec,b) - Hint Percent: %trivia.percent $+ % } elseif (?commands iswm $2 && $left($2,1) isin @!.) { cmsg %trivia.chan [Trivia Commands] $chr(9679) !trivia <on/off> $chr(9679) !score <nick> $chr(9679) !top10 $chr(9679) !hint $chr(9679) !stats } elseif (?score iswm $2 && $left($2,1) isin @!.) { var %az = $qt($scriptdirscores.txt) if (!$3) { var %n = $iif($read(%az,nw,* $1),$ord($readn)) } else { var %n = $iif($read(%az,nw,* $3),$ord($readn)) } cmsg %trivia.chan $iif($3,$3 has:,You have:) $iif($gettok($read(%az,nw,* $iif(!$3,$1,$3)),1,32),$bytes($v1,b),0) points! $iif(%n,$+($chr(40),%n,$chr(41))) } elseif (?top10 iswm $2 && $left($2,1) isin @!.) { var %az = $qt($scriptdirscores.txt) if (!$read(%az,n,1)) { cmsg %trivia.chan [Trivia] $chr(9679) No scores! | return } var %a = 1, %b, %total while (%a <= $lines(%az)) { %b = $read(%az,n,%a) var %x = $gettok(%b,1,32) var %x2 = $gettok(%b,2,32) if (%a <= 10) { %total = %total ( $+ $ord(%a) $+ ) %x2 $chr(91) $+ $bytes(%b,b) $+ $chr(93) $chr(9679) } inc %a } cmsg %trivia.chan [Trivia Top10] $chr(9679) $gettok(%total,1--1,9679) } elseif (%answer == $2- && %trivia == on) { if (%end) { return } var %t = $replace($remove($duration($calc($ctime - %curtime)),$chr(32)),wk,w,wks,w,days,d,day,d,hrs,h,hr,h,mins,m,min,m,secs,s,sec,s) tstats %tpoints $1 var %r = $bytes($gettok($read($qt($scriptdirscores.txt),nw,* $1),1,32),b) var %g = $gettok($read($qt($scriptdirscores.txt),nw,* $1),1,32) var %line = $readn var %s = $ord(%line) var %theline = $calc(%line - 1) var %xline = $gettok($read($qt($scriptdirscores.txt),n,%theline),1,32) var %xnick = $gettok($read($qt($scriptdirscores.txt),n,%theline),2,32) var %total = $calc(%xline - %g) cmsg %trivia.chan [Trivia] $chr(9679) You got it right $1 $+ ! The answer was: $qt($2-) $+ . It took you %t $+ ! You now have: %r points! ( $+ %s $+ ) $iif(%s != 1st,trailing %xnick by: $bytes(%total,b) points!) if (%streak == $1) { hinc trivia $+(streak.,$1) if ($hget(trivia,$+(streak.,$1)) > 1) { cmsg %trivia.chan [Streak] $chr(9679) $1 is on a winning streak! ( $+ $hget(trivia,$+(streak.,$1)) in a row) } } elseif (%streak) { if ($hget(trivia,$+(streak.,%streak)) > 1) { cmsg %trivia.chan [Streak] $chr(9679) So much for $+(%streak,\'s) winning streak! } hdel trivia $+(streak.,%streak) %streak = $1 } else { hadd trivia $+(streak.,$1) 1 %streak = $1 } cmsg %trivia.chan Moving on... unset %question %answer .timertrivia* off .timertrivianext -o 1 10 nextquestion } elseif (?hint iswm $2 && $left($2,1) isin @!. && %trivia == on) { askhint } } alias -l hint { ; $hint(<percent>,<hint>,<answer>) var %x = $2, %y = $ceil($calc($1 / 100 * $len($2))) if ($1 == 100 || %y >= $count($2,*)) { return $3 } while (%y) { var %z = $pos(%x,*,$r(1,$count(%x,*))), %x = $+($left(%x,$calc(%z - 1)),$mid($3,%z,1),$right(%x,- $+ %z)) dec %y } if (* !isin $hget(trivia,currenthint)) { return $replace($v2,$chr(1),$chr(44)) } return $replace(%x,$chr(1),$chr(44)) } alias -l askhint { if (%askhints > %trivia.hints || %end || !%answer) { return } var %h = $replace(%trivia.percent,random,$r(1,100)) var %de = $replace($hget(trivia,currenthint),$chr(44),$chr(1)) var %ans = %answer var %z = 1, %x, %y while ($gettok(%answer,%z,32)) { %x = $str(*,$len($ifmatch)) %y = %y %x inc %z } if (%askhints != 1) { dec %tpoints %trivia.dec hadd trivia currenthint $hint(%h,$iif(%de && %de != %ans,%de,$replace(%answer,a,*,b,*,c,*,d,*,e,*,f,*,g,*,h,*,i,*,j,*,k,*,l,*,m,*,n,*,o,*,p,*,q,*,r,*,s,*,t,*,u,*,v,*,w,*,x,*,y,*,z,*,0,*,1,*,2,*,3,*,4,*,5,*,6,*,7,*,8,*,9,*)),%answer) } else { hadd trivia currenthint %y } cmsg %trivia.chan [Hint $+ %askhints $+ ] $chr(9679) Points: %tpoints $chr(9679) Hint: $hget(trivia,currenthint) inc %askhints .timertrivianext -o 1 $calc(%trivia.thints + 10) nextquestion yes } alias -l tstats { ;/tstats <N> <nick> if ($istok(%nostats,$2,32)) { return } var %az = $qt($scriptdirscores.txt) if (!$exists(%az)) { write -c %az } var %current = $gettok($read(%az,wn,* $2),1,32) inc %current $1 if ($read(%az,wn,* $2)) { write -dl $+ $readn %az } var %a = 1, %b, %added = no, %c while ($read(%az,n,%a)) { %b = $v1 if (%current >= $gettok(%b,1,32)) { write -il $+ %a %az %current $2 | %added = yes | break } inc %a } if (%added == no) { write %az %current $2 } }
Changelog:
0
0