I have this Fam Feud script that's working pretty neatly until my computer lost power and then when I restarted the bot, apparently it did not save the scores and had to start all over again. I am not sure how to check but I do see a buildscore alias that I thought should store the score somewhere but idk. i am still new to scripting and I couldn't figure this out yet.

Appreciate any help from yall big-time scripters! smile

Code
;Family Feud 
;Runs a channel-wide game of Family Feud with questions and answers specified in a txt file (Default .txt file name is FamFeud.txt)
;Fam Feud text File: https://drive.google.com/file/d/1lTvLQ0Yi3W4FkTXs-0WBCCllLQ-p_dnj/view?usp=sharing
;Enjoy :D

/*
-------------
Commands:
!start number
-------------
Starts the game
"!start 1" starts a 1 round game, "!start unlimited or !start" starts an unlimited game
-------------
!stop -- Stops the game
-------------
!score -- Notices a user his/her score
-------------
!scores -- Messages the scores to the channel (Also messaged at the end of each round)
-------------
*/

;Reads from a text file and grabs a random line's Question and answers in the format: Question*Answer1-Answer2-Answer3-Answer4-Answer5-Answer6-Answer7-Answer8

on *:LOAD:/FFsetchan $?="Type the name of the channel you would like Family Feud to be active in (Including #)"

menu nicklist,channel,status,menubar,query {
  Family Feud
  .$iif(%FF.on != 2,Start):/FFStart $me $chan $?="How many rounds? For unlimited rounds say unlimited."
  .$iif(%FF.on == 2,Stop):/FFStop $me $chan
  .Set Family Feud Channel:/FFsetchan $?="Type the name of the channel you would like Family Feud to be active in (Including #)"
}

alias FFsetchan { set %chanFF $1 } 

alias question {
  set %FF.line $read(FamFeud.txt)
  set %FF.num $pos(%FF.line, *, 1)
  set %FF.length $len(%FF.line)
  set %FF.numA %FF.length - %FF.num
  set %FF.numQ %FF.num - 1
  set %FF.dashes $count(%FF.line, -)

  set %FF.answers $right(%FF.line, %FF.numA)
  set %FF.question $left(%FF.line, %FF.numQ)

  set %FF.numcom $pos(%FF.answers, -, 1) - 1
  set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
  set %FF.a1 $left(%FF.answers, %FF.numcom)
  set %FF.answers $right(%FF.answers, %FF.numcom2)
  if ( %FF.dashes > 0 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a2 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }
  if ( %FF.dashes > 1 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a3 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }
  if ( %FF.dashes > 2 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a4 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }
  if ( %FF.dashes > 3 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a5 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }
  if ( %FF.dashes > 4 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a6 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }
  if ( %FF.dashes > 5 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a7 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }

  if ( %FF.dashes == 0 ) { set %FF.a1 %FF.answers }
  if ( %FF.dashes == 1 ) { set %FF.a2 %FF.answers }
  if ( %FF.dashes == 2 ) { set %FF.a3 %FF.answers }
  if ( %FF.dashes == 3 ) { set %FF.a4 %FF.answers }
  if ( %FF.dashes == 4 ) { set %FF.a5 %FF.answers }
  if ( %FF.dashes == 5 ) { set %FF.a6 %FF.answers }
  if ( %FF.dashes == 6 ) { set %FF.a7 %FF.answers }
  if ( %FF.dashes == 7 ) { set %FF.a8 %FF.answers }
  if ( %FF.dashes > 7 ) {
    set %FF.numcom $pos(%FF.answers, -, 1) - 1
    set %FF.numcom2 $len(%FF.answers) - $pos(%FF.answers, -, 1)
    set %FF.a8 $left(%FF.answers, %FF.numcom)
    set %FF.answers $right(%FF.answers, %FF.numcom2)
  }

  inc %FF.dashes

  ;I was having issues with my other answer variables and timers so I just made a second set for the check alias.
  set %FF.answerz 0
  set %FF.a12 %FF.a1
  set %FF.a22 %FF.a2
  set %FF.a32 %FF.a3
  set %FF.a42 %FF.a4
  set %FF.a52 %FF.a5
  set %FF.a62 %FF.a6
  set %FF.a72 %FF.a7
  set %FF.a82 %FF.a8
  if (%FF.roundsplayed != $null) { msg %chanFF 10Round %FF.roundsplayed / %FF.rounds $+ 8 $chr(124) $+ $chr(124) 10Question ( $+ $readn $+ / $+ $lines(FamFeud.txt) $+ ):4 %FF.question }
  else { msg %chanFF 10Question ( $+ $readn $+ / $+ $lines(FamFeud.txt) $+ ):4 %FF.question }
  msg %chanFF 10There are4 %FF.dashes 10answers!
}

alias game {
  if (%FF.roundsplayed == $null || %FF.roundsplayed <= %FF.rounds) {
    question
    .timer1 1 60 game2
    .timer3 1 40 remaining
  }
  else { FFstop }
}

alias game2 {
  if ( %FF.dashes == 1 ) { msg %chanFF 10That's it!  The answer was:4 %FF.a12 }
  if ( %FF.dashes == 2 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 and %FF.a22 }
  if ( %FF.dashes == 3 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , and %FF.a32 }
  if ( %FF.dashes == 4 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , %FF.a32 $+ , and %FF.a42 }
  if ( %FF.dashes == 5 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , %FF.a32 $+ , %FF.a42 $+ , and %FF.a52 }
  if ( %FF.dashes == 6 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , %FF.a32 $+ , %FF.a42 $+ , %FF.a52 $+ , and %FF.a62 }
  if ( %FF.dashes == 7 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , %FF.a32 $+ , %FF.a42 $+ , %FF.a52 $+ , %FF.a62 $+ , and %FF.a72 }
  if ( %FF.dashes == 8 ) { msg %chanFF 10That's it!  The answers were (in order):4 %FF.a12 $+ , %FF.a22 $+ , %FF.a32 $+ , %FF.a42 $+ , %FF.a52 $+ , %FF.a62 $+ , %FF.a72 $+ , and %FF.a82 }
  buildscores
  if (%FF.roundsplayed != $null) { inc %FF.roundsplayed }
  unset %FF.a*
  if (%FF.roundsplayed > %FF.rounds) { FFstop }
  if (%FF.on == 2) { msg %chanFF %FF.scoreoutput }
  if (%FF.on == 2) { .timer2 1 10 game }
  ;7 second delay between questions.
}

alias remaining {
  set %FF.remain 10The remaining answers are:4
  if ( %FF.a1 != $null ) { set %FF.remain %FF.remain #1 }
  if ( %FF.a2 != $null ) { set %FF.remain %FF.remain #2 }
  if ( %FF.a3 != $null ) { set %FF.remain %FF.remain #3 }
  if ( %FF.a4 != $null ) { set %FF.remain %FF.remain #4 }
  if ( %FF.a5 != $null ) { set %FF.remain %FF.remain #5 }
  if ( %FF.a6 != $null ) { set %FF.remain %FF.remain #6 }
  if ( %FF.a7 != $null ) { set %FF.remain %FF.remain #7 }
  if ( %FF.a8 != $null ) { set %FF.remain %FF.remain #8 }
  msg %chanFF %FF.remain
}

on *:TEXT:!start*:%chanFF:{ 
  if ($2 != $null) { FFstart $nick $chan $2 }
  else { FFstart $nick $chan unlimited }
}

alias FFstart {
  if ( %FF.on != 2 ) {
    msg %chanFF 10,1A game has been started by $1
    msg %chanFF 10,1Game commands: 4,1!start <number> 10,1"8,1!start 110,1" starts a 1 round game, "4,1!start unlimited10,1 or 4,1!start10,1" starts an unlimited game ; 4,1!stop 10,1- Stops the game ; 4,1!score 10,1- Notices a user his/her score ; 4,1!scores 10,1- Messages the scores to the channel (Also messages at the end of each round)
    set %FF.answerz 0
    set %FF.on 2
    set %FF.roundsplayed 1
    if ($3 == unlimited) { unset %FF.roundsplayed }
    else { set %FF.rounds $3 }
    game
  }
  else { .notice $1 The game's already going, maybe you should try answering some questions now. }
}

on *:TEXT:!stop:%chanFF:{ FFstop $nick $chan }

alias FFstop { 
  if ( %FF.on == 2 ) {
    if ($1 != $null) msg %chanFF 10Game stopped by $1 $+ .
    else msg %chanFF 10Game over!
    buildscores
    msg %chanFF %FF.scoreoutput
    .timer1 off
    .timer2 off
    .timer3 off
    unset %FF.*
  }
  else { .notice $1 Stop what? }
}

on *:TEXT:!score:%chanFF:{
  if ( %FF.on == 2 && %chanFF == $chan ) {
    if ( %FF.score. [ $+ [ $nick ] ] != $null ) {
      .notice $nick Your score is %FF.score. [ $+ [ $nick ] ] $+ .
    }
    else {
      .notice $nick Your score is 0.
    }
  }
  else {
    .notice $nick There's no game going on, dumbass.
  }
}

;Text events for all 8 answers

on *:TEXT:%FF.a1:%chanFF:{
  msg %chanFF 10Survey says,4 50 points10!4 $nick 10got the 4#1 10answer,4 %FF.a1 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 50
  unset %FF.a1
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a2:%chanFF:{
  msg %chanFF 10Survey says,4 35 points10!4 $nick 10got the 4#2 10answer,4 %FF.a2 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 35
  unset %FF.a2
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a3:%chanFF:{
  msg %chanFF 10Survey says,4 28 points10!4 $nick 10got the 4#3 10answer,4 %FF.a3 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 28
  unset %FF.a3
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a4:%chanFF:{
  msg %chanFF 10Survey says,4 20 points10!4 $nick 10got the 4#4 10answer,4 %FF.a4 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 20
  unset %FF.a4
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a5:%chanFF:{
  msg %chanFF 10Survey says,4 15 points10!4 $nick 10got the 4#5 10answer,4 %FF.a5 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 15
  /unset %FF.a5
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a6:%chanFF:{
  msg %chanFF 10Survey says,4 10 points10!4 $nick 10got the 4#6 10answer,4 %FF.a6 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 10
  unset %FF.a6
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a7:%chanFF:{
  msg %chanFF 10Survey says,4 8 points10!4 $nick 10got the 4#7 10answer,4 %FF.a7 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 8
  unset %FF.a7
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

on *:TEXT:%FF.a8:%chanFF:{
  msg %chanFF 10Survey says,4 5 points10!4 $nick 10got the 4#8 10answer,4 %FF.a8 $+ 10!
  inc %FF.score. [ $+ [ $nick ] ] 5
  unset %FF.a8
  set %FF.answerz %FF.answerz + 1
  check %FF.answerz
}

alias buildscores {
  set %FF.count 0
  set %FF.added 0
  set %FF.totalnicks $nick(%chanFF,0,a)
  set %FF.highest 0
  set %FF.highestnick $me
  set %FF.x $var(%FF.score.*, 0)
  set %FF.scoreoutput 10Scores:
  while (%FF.added < %FF.x) {
    while (%FF.count <= %FF.totalnicks) {
      set %FF.testnick $nick(%chanFF,%FF.count,a)
      if (%FF.score. [ $+ [ %FF.testnick ] ] != $null) && (%FF.score. [ $+ [ %FF.testnick ] ] >= %FF.highest) && (%FF.testnick !isin %FF.scoreoutput) {
        set %FF.highest %FF.score. [ $+ [ %FF.testnick ] ]
        set %FF.highestnick %FF.testnick
      }
      inc %FF.count
    }
    if (%FF.highest != 0) { set %FF.scoreoutput %FF.scoreoutput 04 $+ %FF.highestnick $+ 10:04 %FF.highest 08 $+ $chr(124) }
    set %FF.highest 0
    set %FF.highesttnick $me
    inc %FF.added
    set %FF.count 0
  }
  set %FF.chop $calc($len(%FF.scoreoutput) - 1)
  set %FF.scoreoutput $left(%FF.scoreoutput,%FF.chop)
  if (%FF.scoreoutput == 10Scores:) set %FF.scoreoutput 10Nobody has any points!
}

;Checks to see if all answers have been said before time limit is up
alias check {
  if ( $1 == %FF.dashes ) { 
    .timer1 off
    .timer3 off
    game2 
  }
}

;Accounts for nickname changes mid-game.
on *:NICK:{
  if ( %FF.score. [ $+ [ $nick ] ] != $null ) {
    set %FF.score. [ $+ [ $newnick ] ] %FF.score. [ $+ [ $nick ] ]
    unset %FF.score. [ $+ [ $nick ] ]
  }
}

;Notices the scores of players in the channel in order to the person that said !scores
on *:TEXT:!scores:%chanFF:{
  buildscores
  .notice $nick %FF.scoreoutput
}
ON *:TEXT:!famfeudhelp*:#: {
  if ($nick isop #) && ($me isop #) {
    timer 1 2 msg # Family Feud Commands:
    timer 1 3 msg # !start number - Starts the game (!start 1 starts a 1 round game, while !start unlimited or !start starts an unlimited game)
    timer 1 4 msg # !stop - Stops the game
  timer 1 5 msg # !score - Notices a user his/her score ; !scores - Messages the scores to the channel (Also messaged at the end of each round) }
}


JilValentine | (Read error: EOF from client) | https://jilvalentine.de