Trivia game(for bots) I made a few months ago u will need trivia questions(search google) put in a .txt called trivia.txt
PS: i know theres some parts that could be made more simple but idc cuase it works for the most part but there is a common bug where it adds ppl 2 times and screws up the scoring.
plz post feedback on problems u might have or suggestions.
;;;Trivia by SlipknoT aka StonedStoner;;;
;;;Commands;;;
;!trivia - Start Trivia game
;!strivia - Stop current game
;!top5 - see the top 5 of weekor month
;example: !top5 week or !top5 month
;!reset - resets score specified
;example: !reset week or !reset month
:*****DO NOT FORGET TO PUT YOUR NICK WHERE MasterNick IS!*****;
on *:TEXT:*:#Trivia: {
set %triv.text $strip($1-,c)
if (%triv.text == !trivia) {
trivia 0
}
if (%trivia == on) {
if ($1 == !top5) {
top5 $2
}
if (%triv.text == !strivia) {
set %trivia off
}
if (%triv.text == %trivia.a) {
if (%answered == yes) {
halt
}
set %answered yes
.timer 1 5 trivia.next
trivia.answered $nick
unset %trivia.a
set %trivia.qn $calc(%trivia.qn + 1)
}
}
if ($nick == MasterNick) {
if ($1 == !reset) {
reset $2
}
}
}
alias trivia.answered {
if ($1 == $null) { halt }
else {
set %trivia.week.add %trivia.week. [ $+ [ $1 ] ]
set %trivia.month.add %trivia.month. [ $+ [ $1 ] ]
set %trivia.week. [ $+ [ $1 ] ] $calc(%trivia.p + %trivia.week.add)
set %trivia.month. [ $+ [ $1 ] ] $calc(%trivia.p + %trivia.month.add)
msg #Trivia $trivtalk(CORRECT!) $+ 4 $1 $trivtalk(got the answer:) $+ 4 %trivia.a $trivtalk(In:) $+ 4 $duration($calc($ctime - %trivia.el)) $+ 14!4 $1 $trivtalk(is awarded:) $+ 4 %trivia.p 14. $trivtalk(Total Points This Week:) $+ 4 %trivia.week. [ $+ [ $1 ] ] $trivtalk(Total Points This Month:) $+ 4 %trivia.month. [ $+ [ $1 ] ]
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.1) {
if ($readini(trivia.ini, week, 1) == $1) {
set %trivia.week.1 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) {
set %trivia.week.2 %trivia.week.1
set %trivia.week.1 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 2 $readini(trivia.ini, week, 1)
writeini -s trivia.ini week 1 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this weeks) $+ 4 #1 P14layer!
top5 week
goto month
}
}
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.2) {
if ($readini(trivia.ini, week, 2) == $1) {
set %trivia.week.2 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) && ($readini(trivia.ini, week, 2) !== $1) {
set %trivia.week.3 %trivia.week.2
set %trivia.week.2 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 3 $readini(trivia.ini, week, 2)
writeini -s trivia.ini week 2 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this weeks) $+ 4 #2 P14layer!
top5 week
goto month
}
}
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.3) {
if ($readini(trivia.ini, week, 3) == $1) {
set %trivia.week.3 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) && ($readini(trivia.ini, week, 2) !== $1) && ($readini(trivia.ini, week, 3) !== $1) {
set %trivia.week.4 %trivia.week.3
set %trivia.week.3 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 4 $readini(trivia.ini, week, 3)
writeini -s trivia.ini week 3 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this weeks) $+ 4 #3 P14layer!
top5 week
goto month
}
}
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.4) {
if ($readini(trivia.ini, week, 4) == $1) {
set %trivia.week.4 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) && ($readini(trivia.ini, week, 2) !== $1) && ($readini(trivia.ini, week, 3) !== $1) && ($readini(trivia.ini, week, 4) !== $1) {
set %trivia.week.5 %trivia.week.4
set %trivia.week.4 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 5 $readini(trivia.ini, week, 4)
writeini -s trivia.ini week 4 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this weeks) $+ 4 #4 P14layer!
top5 week
goto month
}
}
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.5) {
if ($readini(trivia.ini, week, 5) == $1) {
set %trivia.week.5 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) && ($readini(trivia.ini, week, 2) !== $1) && ($readini(trivia.ini, week, 3) !== $1) && ($readini(trivia.ini, week, 4) !== $1) && ($readini(trivia.ini, week, 5) !== $1) {
set %trivia.week.6 %trivia.week.5
set %trivia.week.5 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 5 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this weeks) $+ 4 #5 P14layer!
top5 week
goto month
}
}
if (%trivia.week. [ $+ [ $1 ] ] > %trivia.week.6) {
if ($readini(trivia.ini, week, 6) !== $1) {
set %trivia.week.6 %trivia.week. [ $+ [ $1 ] ]
goto month
}
if ($readini(trivia.ini, week, 1) !== $1) && ($readini(trivia.ini, week, 2) !== $1) && ($readini(trivia.ini, week, 3) !== $1) && ($readini(trivia.ini, week, 4) !== $1) && ($readini(trivia.ini, week, 5) !== $1) && ($readini(trivia.ini, week, 6) !== $1) {
set %trivia.week.6 %trivia.week. [ $+ [ $1 ] ]
writeini -s trivia.ini week 6 $1
goto month
}
}
:month
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.1) {
if ($readini(trivia.ini, month, 1) == $1) {
set %trivia.month.1 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) {
set %trivia.month.2 %trivia.month.1
set %trivia.month.1 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 2 $readini(trivia.ini, month, 1)
writeini -s trivia.ini month 1 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this months) $+ 4 #1 P14layer!
top5 month
halt
}
}
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.2) {
if ($readini(trivia.ini, month, 2) == $1) {
set %trivia.month.2 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) && ($readini(trivia.ini, month, 2) !== $1) {
set %trivia.month.3 %trivia.month.2
set %trivia.month.2 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 3 $readini(trivia.ini, month, 2)
writeini -s trivia.ini month 2 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this months) $+ 4 #2 P14layer!
top5 month
halt
}
}
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.3) {
if ($readini(trivia.ini, month, 3) == $1) {
set %trivia.month.3 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) && ($readini(trivia.ini, month, 2) !== $1) && ($readini(trivia.ini, month, 3) !== $1) {
set %trivia.month.4 %trivia.month.3
set %trivia.month.3 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 4 $readini(trivia.ini, month, 3)
writeini -s trivia.ini month 3 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this months) $+ 4 #3 P14layer!
top5 month
halt
}
}
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.4) {
if ($readini(trivia.ini, month, 4) == $1) {
set %trivia.month.4 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) && ($readini(trivia.ini, month, 2) !== $1) && ($readini(trivia.ini, month, 3) !== $1) && ($readini(trivia.ini, month, 4) !== $1) {
set %trivia.month.5 %trivia.month.4
set %trivia.month.4 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 5 $readini(trivia.ini, month, 4)
writeini -s trivia.ini month 4 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this months) $+ 4 #4 P14layer!
top5 month
halt
}
}
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.5) {
if ($readini(trivia.ini, month, 5) == $1) {
set %trivia.month.5 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) && ($readini(trivia.ini, month, 2) !== $1) && ($readini(trivia.ini, month, 3) !== $1) && ($readini(trivia.ini, month, 4) !== $1) && ($readini(trivia.ini, month, 5) !== $1) {
set %trivia.month.6 %trivia.month.5
set %trivia.month.5 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 5 $1
msg #Trivia $trivtalk(Congrats!) $+ 4 $1 $trivtalk(is now this months) $+ 4 #5 P14layer!
top5 month
halt
}
}
if (%trivia.month. [ $+ [ $1 ] ] > %trivia.month.6) {
if ($readini(trivia.ini, month, 6) !== $1) {
set %trivia.month.6 %trivia.month. [ $+ [ $1 ] ]
halt
}
if ($readini(trivia.ini, month, 1) !== $1) && ($readini(trivia.ini, month, 2) !== $1) && ($readini(trivia.ini, month, 3) !== $1) && ($readini(trivia.ini, month, 4) !== $1) && ($readini(trivia.ini, month, 5) !== $1) && ($readini(trivia.ini, month, 6) !== $1) {
set %trivia.month.6 %trivia.month. [ $+ [ $1 ] ]
writeini -s trivia.ini month 6 $1
halt
}
}
}
}
alias trivia {
if (%trivia == on) { HALT }
else {
if ($1 == 0) {
set %trivia.max un
set %trivia on
set %trivia.qn 1
msg #Trivia $trivtalk(Trivia is now on! Get ready!)
.timer 1 5 trivia.next
}
}
}
alias trivia.next {
if (%trivia = off) {
msg #Trivia $trivtalk(End of Round! Stopping Trivia.)
halt
}
else {
set %trivia.rand $rand(1,$lines(trivia.txt))
set %trivia.n $read(trivia.txt,%trivia.rand)
set %trivia.q $gettok($read(trivia.txt,%trivia.rand),1,42)
set %trivia.a $gettok($read(trivia.txt,%trivia.rand),2,42)
set %trivia.h1 $trivhint(%trivia.a,2,*)
set %trivia.h2 $trivhint(%trivia.a,3,*)
set %trivia.h3 $trivhint(%trivia.a,4,*)
set %trivia.p $rand(15,20)
unset %trivia.n
msg #Trivia 4[15 $+ %trivia.qn $+ 4]15 4[ $+ %trivia.rand 15/4 $lines(trivia.txt) $+ 4] [15 $+ %trivia.q $+ 4] 4[ $+ $trivtalk(Worth) $+ 4 %trivia.p 4P14oints4]
set %trivia.el $ctime
unset %answered
.timerhint1 1 10 hint1
.timerhint2 1 20 hint2
.timerhint3 1 30 hint3
.timerq 1 40 trivia.unanswered
}
}
alias trivia.unanswered {
if (%answered == yes) {
halt
}
msg #trivia $trivtalk(Question unanswered Answer was:) $+ 4 %trivia.a
unset %trivia.a
set %trivia.qn $calc(%trivia.qn + 1)
.timer 1 5 trivia.next
}
alias top5 {
if ($1 == week) {
msg #trivia $trivtalk(Top 5 players of the week are 1st:) $+ 4 $readini(trivia.ini, week, 1) %trivia.week. [ $+ [ $readini(trivia.ini, week, 1) ] ] $+ , $trivtalk(2nd:) $+ 4 $readini(trivia.ini, week, 2) %trivia.week. [ $+ [ $readini(trivia.ini, week, 2) ] ] $+ , $trivtalk(3rd:) $+ 4 $readini(trivia.ini, week, 3) %trivia.week. [ $+ [ $readini(trivia.ini, week, 3) ] ] $+ , $trivtalk(4th:) $+ 4 $readini(trivia.ini, week, 4) %trivia.week. [ $+ [ $readini(trivia.ini, week, 4) ] ] $+ , $trivtalk(5th:) $+ 4 $readini(trivia.ini, week, 5) %trivia.week. [ $+ [ $readini(trivia.ini, week, 5) ] ]
}
if ($1 == month) {
msg #trivia $trivtalk(Top 5 players of the month are 1st:) $+ 4 $readini(trivia.ini, month, 1) %trivia.month. [ $+ [ $readini(trivia.ini, month, 1) ] ] $+ , $trivtalk(2nd:) $+ 4 $readini(trivia.ini, month, 2) %trivia.month. [ $+ [ $readini(trivia.ini, month, 2) ] ] $+ , $trivtalk(3rd:) $+ 4 $readini(trivia.ini, month, 3) %trivia.month. [ $+ [ $readini(trivia.ini, month, 3) ] ] $+ , $trivtalk(4th:) $+ 4 $readini(trivia.ini, month, 4) %trivia.month. [ $+ [ $readini(trivia.ini, month, 4) ] ] $+ , $trivtalk(5th:) $+ 4 $readini(trivia.ini, month, 5) %trivia.month. [ $+ [ $readini(trivia.ini, month, 5) ] ]
}
}
;Made by FiberOptics
alias trivhint {
var %a, %b = $regsub($1,/(?<=\S{ $+ $2})\S/g,$replace($$3,\,\\,$,\$),%a)
return %a
}
;
alias hint1 {
if (%answered == yes) {
halt
}
else {
msg #Trivia 4[15 $+ %trivia.qn $+ 4] $trivtalk(Hint One:) $+ 4 %trivia.h1
}
}
alias hint2 {
if (%answered == yes) {
halt
}
else {
msg #Trivia 4[15 $+ %trivia.qn $+ 4] $trivtalk(Hint Two:) $+ 4 %trivia.h2
}
}
alias hint3 {
if (%answered == yes) {
halt
}
else {
msg #Trivia 4[15 $+ %trivia.qn $+ 4] $trivtalk(Hint Three:) $+ 4 %trivia.h3
}
}
;did not make this talker;
alias trivtalk {
var %c1 4
var %c2 14
tokenize 32 $1-
var %i $0,%t,%b = $iif(%b,$chr(2)),%u = $iif(%u,$chr(31))
while %i {
var %w $ [ $+ [ %i ] ],%t = $+($chr(3),$base(%c1,10,10,2),$replace($left(%w,1),a, A,b, B,c, C,d, D,e, E,f, F,g, G,h, H,i, I,j, J,k, K,l, L,m, M,n, N,o, O,p, P,q, Q,r, R,s, S,t, T,u, U,v, V,w, W,x, X,y, Y,z, Z,[, 4[,], 4]),$chr(3),$base(%c2,10,10,2),%u,%b,$replace($mid(%w,2),:, 15:,!, 15!),$chr(15)) %t
dec %i
}
return %t
}
;not sure where i got it but if someone knows tell me and i will give credit;
alias reset {
if ($1 == week) {
.timerresetweek -o 0 604800 reset week
unset %trivia.week.*
set %trivia.week.1 0
set %trivia.week.2 0
set %trivia.week.3 0
set %trivia.week.4 0
set %trivia.week.5 0
set %trivia.week.6 0
writeini trivia.ini week 1 none
writeini trivia.ini week 2 none
writeini trivia.ini week 3 none
writeini trivia.ini week 4 none
writeini trivia.ini week 5 none
writeini trivia.ini week 6 none
}
if ($1 == month) {
unset %trivia.month.*
set %trivia.month.1 0
set %trivia.month.2 0
set %trivia.month.3 0
set %trivia.month.4 0
set %trivia.month.5 0
set %trivia.month.6 0
writeini trivia.ini month 1 none
writeini trivia.ini month 2 none
writeini trivia.ini month 3 none
writeini trivia.ini month 4 none
writeini trivia.ini month 5 none
writeini trivia.ini month 6 none
}
}
on *:JOIN:#trivia: {
if (%trivia.month. [ $+ [ $nick ] ] <= 1) {
notice $nick $trivtalk(welcome to $chan $nick $+ . it's time for you to start gettin points so get to it!)
}
elseif (%trivia.month. [ $+ [ $nick ] ] > 0) {
notice $nick $trivtalk(welcome back $nick $+ . you have) $+ 4 %trivia.week. [ $+ [ $nick ] ] $trivtalk(points this week. and) $+ 4 %trivia.month. [ $+ [ $nick ] ] $trivtalk(points this month.)
if ($readini(trivia.ini, week, 1) == $nick) {
mode # +o $nick
}
if ($readini(trivia.ini, week, 2) == $nick) {
mode # +v $nick
}
if ($readini(trivia.ini, week, 3) == $nick) {
mode # +v $nick
}
if ($readini(trivia.ini, week, 4) == $nick) {
mode # +v $nick
}
if ($readini(trivia.ini, week, 5) == $nick) {
mode # +v $nick
}
}
}
on *:disconnect: {
set %trivia off
}
on *:exit: {
set %trivia off
}
is there a way to make this accept multiple answer?
ex....
Question: Capital of New york?
nick1 - Albany
Quick typing!!! nick1 gets 7 points. (cps 3.90), (WPM 4.45) <-just for example
nick2 - Albany
nick2 gets 3 points. (cps 3.50), (WPM 2.25)
nick3 - albany
nick3 gets 2 points. (cps 2.15), (WPM 2.00)
nick4 - albany
nick4 gets 1 point (cps 1.90), (WPM 1.71)
Something like that would be nice....because if someone is very fast in typing, and the bot only accepts the first right answer.... the fastest one will only have scores(and what if the slower one plays at the same time with the faster one in an hour, the slower one will have no point if they play at the same time). at least with this, theres a complimentary points to the other people playing.
thanks
You create a text file called trivia.txt either with questions downloaded or ones you have self-researched. You save / keep the file in the same place that you would store this snippet (even if you have loaded it straight to your remotes, you will find it in the files where yours or your bots files are kept- e.g. C:/Program Files/BotName/mIRC ). Then the snippet will read the file from within the same location...
it was question*answer
the top5 wont work
if someone has some points it ist in the top5