# ACAK -100 by Roney #

# Default Settings
set ACAKChannel 	"#misteri"
set ACAKPointsName 	"Points"
set ACAKPointsPerAnswer 5
set ACAKQuestionTime 	60
set ACAKMarker 		"*"
set ACAKAskedFile	"scripts/acak.asked"
set ACAKQuestionFile	"scripts/acak.db"
set ACAKCFGFile		"scripts/acak.cfg"

# Channel Triggers
#bind pub m !ulang ACAK_Repeat
#bind pub m !help ACAKCmds
#bind pub m !asked ACAK_ShowAsked
#bind pub - !game ACAK_Start
#bind pub m !berhenti ACAK_Stop

# Global Variables
set ACAKRunning 0
set ACAKAllAnswered 0
set ACAKRoundOver 0
set ACAKQNumber 0
set ACAKQuestion ""
set ACAKQuestions(0) ""
set ACAKAsked ""
set ACAKQCount 0
set ACAKAnswerCount 0
set ACAKDisplayNum 0
set ACAKNumAnswered 0
set ACAKForced 0
set ACAKForcedQuestion ""
set ACAKAutoStart 0
set ACAKtimeanswer 1

# Scores And Ads
set ACAKAdNumber 0
set ACAKAd(0) "$botnick"
set ACAKAd(1) "$botnick"
set ACAKAd(2) "$botnick"

# Timers
set ACAKAdTimer ""
set ACAKQuestionTimer ""

# Version
set KDebug 0
set ACAKVersion "0.91.0"

#
# Start ACAK
#
proc ACAK_Start {nick uhost hand chan args} {
 global ACAKChannel ACAKRunning ACAKQCount ACAKQNumber ACAKQuestionFile ACAKAdNumber ACAKVersion KDebug

 if {($chan != $ACAKChannel)||($ACAKRunning != 0)} {return}

 set ACAKQCount 0
 set ACAKAdNumber 0

 ACAK_ReadCFG

 if {![file exist $ACAKQuestionFile]} {
   putcmdlog "\[ACAK\] Question File: $ACAKQuestionFile Unreadable Or Does Not Exist"
   return 0
 }

 set ACAKQCount [ACAK_ReadQuestionFile]

 if {$ACAKQCount < 2} {
   putcmdlog "\[ACAK\] Not Enough Questions in Question File $ACAKQuestionFile"
   return 0
 }

 set ACAKAskedFileLen [ACAK_ReadAskedFile]

 if {$ACAKAskedFileLen >= $ACAKQCount} {
#   ACAKmsg "[ACAK] [kcr] All Questions Asked: Resetting \003"
   ACAK_ResetAsked
   return 0
 }

 set ACAKRunning 1


 bind pubm - "*" ACAKCheckGuess

 ACAKAskQuestion

 return 1
}

#
# Stop ACAK
#
proc ACAK_Stop {nick uhost hand chan args} {
 global ACAKChannel ACAKRunning ACAKQuestionTimer ACAKAdTimer

 if {($chan != $ACAKChannel)||($ACAKRunning != 1)} {return}

 set ACAKRunning 0

 catch {killutimer $ACAKQuestionTimer}
 catch {killutimer $ACAKAdTimer}

 catch {unbind pubm - "*" ACAKCheckGuess}

 ACAKmsg "\00306Game is stopped by \00304\[\00312$nick!$uhost\00304\]"
 return 1
}

#
# Pick Question
#
proc ACAKPickQuestion {} {
 global ACAKAsked ACAKQCount KDebug
 set ACAKUnasked [expr ($ACAKQCount - [llength $ACAKAsked])]
 if {$ACAKUnasked < 1} {
#   ACAKmsg "[ACAK] [kcr] All Questions Asked: Resetting \003"
   ACAK_ResetAsked
 }
 set pickdone 0
 while {$pickdone == 0} {
  set kidx 0
  set foundinasked 0
  set pick [rand $ACAKQCount]
  while {[lindex $ACAKAsked $kidx] != ""} {
    if {[lindex $ACAKAsked $kidx] == $pick} {
     set foundinasked 1
     # ACAKlog "ACAK" "Found Pick:$pick in Asked"
     break
    }
    incr kidx
  }
  if {$foundinasked == 0} {incr pickdone}
 }
 # ACAKlog "ACAK" "Picked Question:$pick"
 ACAK_AddAsked $pick
 return $pick
}

#
# Parse Question
#
proc ACAKParseQuestion {QNum} {
 global ACAKMarker ACAKQuestions ACAKQuestion ACAKAnswers ACAKAnswerCount ACAKForcedQuestion KDebug

  set KAnswersLeft ""

  if {$QNum < 0} {
   set ACAKFileQuestion $ACAKForcedQuestion
  } {
   set ACAKFileQuestion $ACAKQuestions($QNum)
  }

  if {$KDebug > 1} {ACAKlog "ACAK" "Picked:$QNum Question:$ACAKFileQuestion"}

  if [info exists ACAKAnswers] {unset ACAKAnswers}

  # Position of first "*"

  set ACAKMarkerIDX [string first $ACAKMarker $ACAKFileQuestion]

  if {$ACAKMarkerIDX < 1} {
   ACAKlog "ACAK" "Malformed Question #$QNum"
  }

  set ACAKQuestionEndIDX [expr $ACAKMarkerIDX - 1]

  set ACAKQuestion [string range $ACAKFileQuestion 0 $ACAKQuestionEndIDX]

  # Move to first character in answers
  incr ACAKMarkerIDX
  set KAnswersLeft [string range $ACAKFileQuestion $ACAKMarkerIDX end]

  set KDoneParsing 0
  set ACAKAnswerCount 0

  # Parse all answers

  while {$KDoneParsing != 1 } {
   set KAnswerEnd [string first $ACAKMarker $KAnswersLeft]

   if {$KAnswerEnd < 1} {
    set KDoneParsing 1
    set KAnswerEnd [string length $KAnswersLeft]
   }

   set KAnswer [string range $KAnswersLeft 0 [expr $KAnswerEnd -1]]

   set ACAKAnswers($ACAKAnswerCount) "# $KAnswer"

   set ACAKMarkerIDX [expr $KAnswerEnd +1]

   set KAnswersLeft [string range $KAnswersLeft $ACAKMarkerIDX end]
   incr ACAKAnswerCount
  }
}

#
# Ask Question
#
proc ACAKAskQuestion {} {
 global ACAKRunning ACAKQNumber ACAKAllAnswered ACAKRoundOver ACAKQuestion
 global ACAKPointsPerAnswer ACAKPointsName ACAKNumAnswered ACAKAnswerCount
 global ACAKQuestionTimer ACAKQuestionTime ACAKDisplayNum ACAKForced ACAKLastGuesser
 global tipno tiplist TipsToUse InfoItem ACAKtimestart ACAKtimeanswer

 if {$ACAKRunning != 1} {return}

 # Get The Current Scores

 # Pick Next Question

 if {$ACAKForced == 1} {
  ACAKParseQuestion -1
  set ACAKQNumber 0
  set ACAKForced 0
  set ACAKForcedQuestion ""
 } {
  set ACAKQNumber [ACAKPickQuestion]
  ACAKParseQuestion $ACAKQNumber
 }

 set ACAKAllAnswered 0
 set ACAKLastGuesser ""
 set ACAKDisplayNum 0
 set ACAKNumAnswered 0
 set ACAKRoundOver 0

 # Choose Points Value For This Round
 set ACAKPointsPerAnswer [rand 3]
 if {$ACAKPointsPerAnswer < 1} {set ACAKPointsPerAnswer 3}
 set ACAKPointsPerAnswer [expr $ACAKPointsPerAnswer *10]

 set ACAKPointTotal [expr $ACAKPointsPerAnswer *$ACAKAnswerCount]
 set tipzs "[get_InfoItems]"
 if {$ACAKtimeanswer==1} {
 set ACAKtimestart [clock clicks -milliseconds]
 }

 if {$ACAKAnswerCount == 1} {
 ACAKmsg "0,2..:: Competition Game \0038\[\00311 True Atau False\0038 \] 0 misteri@DALnet ::.."
 ACAKmsg "2Pertanyaan: $ACAKQuestion ?"
 ACAKmsg "\0030,2::\00311 +$ACAKPointsPerAnswer\0030 $ACAKPointsName Bila Anda Menjawab Benar ::.."
} elseif {$ACAKAnswerCount >= 2} {
 ACAKmsg "0,2..:: Competition Game \0038\[\00311 ACAK KATA\0038 \] 0 misteri@DALnet ::.."
 ACAKmsg "2Hint: Susunlah Huruf Berikut Sehingga Mempunyai Arti"
 ACAKmsg "2Pertanyaan: $ACAKQuestion \[6 $ACAKAnswerCount Jawaban 2\]"
 ACAKmsg "0,2..::11 +$ACAKPointsPerAnswer 0 $ACAKPointsName Untuk setiap jawaban - ToTal 11 $ACAKPointTotal\0030 $ACAKPointsName ::.."
}
 set KRemain [expr int([expr $ACAKQuestionTime /2])]
 set ACAKQuestionTimer [utimer $KRemain "ACAKDisplayRemainingTime $KRemain"]
}

#
# Get Player Guess
#

proc ACAKCheckGuess {nick uhost hand chan args} {
 global ACAKChannel ACAKRunning ACAKAnswerCount ACAKAnswers ACAKRoundOver ACAKtimeanswer
 global ACAKPointsName ACAKPointsPerAnswer ACAKNumAnswered ACAKAllAnswered ACAKLastGuesser KDebug
 global lastwinner lastwinnercount botnick userlist quizconf rankfile ACAKtimestart ACAKtimetoanswer 

    variable bestscore 0 lastbestscore 0 lastbest ""
    variable userarray
    variable authorsolved 0 waitforrank 0 gameend 0

 if {($chan != $ACAKChannel)||($ACAKRunning != 1)||($ACAKRoundOver == 1)} {return}

    mx_getcreate_userentry $nick $nick
    array set userarray $userlist($nick)
#    set hostmask $userarray(mask)

	    set lastbest [lindex [lsort -command mx_sortrank [array names userlist]] 0]
	    if {$lastbest == ""} {
		set lastbestscore 0
	    } else {
		array set aa $userlist($lastbest)
		set lastbestscore $aa(score)
	    }

 regsub -all \[{',.!}] $args "" args

 if {[string length args] == 0} {return}

 set ACAKGuessOld $args
 set ACAKGuess [string tolower $ACAKGuessOld]

 if {$KDebug > 1} {ACAKlog "ACAK" "Guess: $nick $ACAKGuess"}

 foreach z [array names ACAKAnswers] {
  set ACAKTry [lrange $ACAKAnswers($z) 1 end] 
  set ACAKTryOld $ACAKTry

  regsub -all \[{',.!}] $ACAKTry "" ACAKTry

  set ACAKTry [string tolower $ACAKTry]
  if {$KDebug > 1} {ACAKlog "ACAK" "Try: $ACAKTry"}
  if {$ACAKTry == $ACAKGuess} {
   if {[lindex $ACAKAnswers($z) 0] == "#"} {
    set ACAKAnswers($z) "$nick $ACAKGuessOld"
	set ACAKtimetoanswer ""
	if {$ACAKtimeanswer==1} {
		set ACAKtimetoanswer [expr [expr [clock clicks -milliseconds]-$ACAKtimestart]/1000]
	}
	    incr userarray(score) $ACAKPointsPerAnswer
	    if {$userarray(score) == 1} {
		set userarray(started) [unixtime]
	    }
	    set userlist($nick) [array get userarray]
    ACAKmsg "2Jawaban Betul : 2\[6 $ACAKTryOld 2\] by \0036$nick \0032Score: \0036+$ACAKPointsPerAnswer - 2less then 6 $ACAKtimetoanswer 2seconds - Total Score: 6 $userarray(score) 2Points and Ranked: 6 [mx_get_rank_pos $nick]"
    #pushmode $ACAKChannel +v $nick
    tmcquiz_rank_save {} {} {}
    incr ACAKNumAnswered
    if {$ACAKNumAnswered == $ACAKAnswerCount} {
     set ACAKAllAnswered 1
     set ACAKRoundOver 1
       if {$ACAKAnswerCount == 1} {
       set ACAKLastGuesser ""
#       set greeting "[get_grated]"
       ACAKmsg ""
       ACAK_TriviaResults
       } elseif {$ACAKAnswerCount >= 2} {
       set ACAKLastGuesser $nick
       ACAKmsg "Well Done..."
       }
     ACAK_Recycle
    }
    return
   }
  }
 }
}

#
# Display Remaining Time And Answer Stats
#
proc ACAKDisplayRemainingTime {remaining} {
 global ACAKRunning ACAKAllAnswered ACAKNumAnswered ACAKAnswerCount ACAKQuestionTimer ACAKQuestionTime ACAKDisplayNum
 global ACAKQuestion
 if {($ACAKRunning != 1)||($ACAKAllAnswered == 1)} {return}
   if {$ACAKAnswerCount == 1} {
   ACAKmsg "6 $remaining 2detik lagi !!"
  } elseif {$ACAKAnswerCount >= 2} {
   ACAKmsg "6 $remaining 2detik lagi..."
  }

 incr ACAKDisplayNum

 set KRemain [expr int([expr $ACAKQuestionTime /4])]

 if {$ACAKDisplayNum < 2} {
  set ACAKQuestionTimer [utimer $KRemain "ACAKDisplayRemainingTime $KRemain"]
 } {
  set ACAKQuestionTimer [utimer $KRemain ACAKTimesUp]
 }
}

#
# Show Results Of Round
#
proc ACAKTimesUp {} {
 global ACAKAnswers ACAKAllAnswered ACAKRoundOver ACAKNumAnswered ACAKAnswerCount ACAKQuestionTimer ACAKAdTimer
 global tgcurrentanswer tghinttimer tgtimenext tgchan tgnextqtimer tgstreak tgstreakmin
 global tgscoresbyname tgranksbyname tgranksbynum tgcongrats tgscorestotal tgmissed
 global tgtimestart tgshowallscores tgrealnames tgscoresbyrank tgtimeanswer
 #global botnick quizconf
 #global rankfile uptime botnick

 if {$ACAKAllAnswered == 1} { return 1}

 set ACAKRoundOver 1

 set ACAKmissed "[kcg] Time's Up! \003 "

 append KMissed "2Times Up"
 set KAnswersRemaining [expr ($ACAKAnswerCount - $ACAKNumAnswered)]

 set kcount 0
 foreach z [array names ACAKAnswers] {
  if {[lindex $ACAKAnswers($z) 0] == "#"} {
   append KMissed "2:: \[6 [lrange $ACAKAnswers($z) 1 end] 2\] ::"   
 incr kcount
   if {$kcount < $KAnswersRemaining} {append KMissed " "}
  }
 }

 ACAKmsg "$KMissed"

 ACAK_ShowResults

 if {$ACAKNumAnswered > 0} {
#  ACAKmsg "[kcs] Total Number Answered Correctly:  $ACAKNumAnswered from a possible $ACAKAnswerCount! \003"
 } {
  ACAKmsg ""
 }

set tgnextqtimer [utimer $tgtimenext tgnextq]
 			set tgplaying 1
 			set tgstreak 0
 			set tgmissed 0
}

#
# All Answers Gotten, Next Question
#
proc ACAK_Recycle {} {
 #global botnick quizconf
 #global rankfile uptime botnick
 global tgcurrentanswer tghinttimer tgtimenext tgchan tgnextqtimer tgstreak tgstreakmin
 global tgscoresbyname tgranksbyname tgranksbynum tgcongrats tgscorestotal tgmissed
 global tgtimestart tgshowallscores tgrealnames tgscoresbyrank tgtimeanswer
 global ACAKAnswers ACAKNumAnswered ACAKQuestionTimer ACAKAdTimer
 catch {killutimer $ACAKQuestionTimer}
 if [info exists ACAKAnswers] {unset ACAKAnswers}
# set ACAKAdTimer [utimer 10 ACAK_ShowAd]
 set ACAKQuestion ""
 set ACAKNumAnswered 0
 set tgnextqtimer [utimer $tgtimenext tgnextq]
 			set tgplaying 1
 			set tgstreak 0
 			set tgmissed 0

}

#
# Total Answers and Points
#
proc ACAK_ShowResults {} {
 global ACAKAnswers ACAKPointsPerAnswer ACAKPointsName ACAKAllAnswered ACAKLastGuesser
 global botnick quizconf rankfile userlist lastwinner lastwinnercount

 if {$ACAKAllAnswered == 1} {
  set ACAKBonus [expr $ACAKPointsPerAnswer *5]
  set nick $ACAKLastGuesser
    mx_getcreate_userentry $nick $nick
    array set userarray $userlist($nick)
#    set hostmask $userarray(mask)
	    set lastbest [lindex [lsort -command mx_sortrank [array names userlist]] 0]
	    if {$lastbest == ""} {
		set lastbestscore 0
	    } else {
		array set aa $userlist($lastbest)
		set lastbestscore $aa(score)
	    }
	    incr userarray(score) $ACAKBonus
	    if {$userarray(score) == 1} {
		set userarray(started) [unixtime]
	    }
	    set userlist($nick) [array get userarray]
#  set greeting "[get_grated]"
  ACAKmsg "\0036 [$ACAKLastGuesser] \0032dapat BONUS \0036+$ACAKBonus pts \0032(Total Score:\0036 $userarray(score)\0032) - (Rank:\0036 [mx_get_rank_pos $nick]\0032)"
  tmcquiz_rank_save {} {} {}
 }
}
proc ACAK_TriviaResults {} {
 global ACAKAnswers ACAKPointsPerAnswer ACAKPointsName ACAKAllAnswered ACAKLastGuesser
}

#
# Add Question Number To Asked File
#
proc ACAK_AddAsked {KQnum} {
 global ACAKAsked ACAKAskedFile
 set f [open $ACAKAskedFile a]
 puts $f $KQnum
 close $f
 lappend ACAKAsked $KQnum
}

#
# Parse Asked Questions
#
proc ACAK_ReadAskedFile {} {
 global ACAKAsked ACAKAskedFile
 set KAsked 0
 set ACAKAsked ""
 if {![file exists $ACAKAskedFile]} {
  set f [open $ACAKAskedFile w]
 } {
  set f [open $ACAKAskedFile r]
  while {[gets $f KQnum] != -1} {
   lappend ACAKAsked "$KQnum"
   incr KAsked
  }
 }
 close $f
 return $KAsked
}

#
# Reset Asked File
#
proc ACAK_ResetAsked {} {
 global ACAKAskedFile ACAKAsked
 set f [open $ACAKAskedFile w]
 puts $f "0"
 close $f
 set ACAKAsked ""
}

#
# Read Question File
#
proc ACAK_ReadQuestionFile {} {
 global ACAKQuestionFile ACAKQuestions
 set KQuestions 0
 set f [open $ACAKQuestionFile r]
 while {[gets $f q] != -1} {
  set ACAKQuestions($KQuestions) $q
  incr KQuestions
 }
 close $f
 return $KQuestions
}

#
# Show Asked
#
proc ACAK_ShowAsked {nick uhost hand chan args} {
 global ACAKQCount ACAKAsked ACAKQuestions
 set ACAKStatsAsked [llength $ACAKAsked]
 set ACAKStatsUnasked [expr ($ACAKQCount - $ACAKStatsAsked)]
 ACAKmsg "[ACAK] [kcm] Total: [kcc] $ACAKQCount [kcm] Asked: [kcc] $ACAKStatsAsked [kcm] Remaining: [kcc] $ACAKStatsUnasked \003"
}

#
# Repeat Question
#
proc ACAK_Repeat {nick uhost hand chan args} {
 global ACAKChannel ACAKQuestion ACAKRunning ACAKQNumber ACAKAllAnswered
 global ACAKPointsName
 if {($chan != $ACAKChannel)||($ACAKRunning != 1)} {return}
 if {$ACAKAllAnswered == 1} {return }
 ACAKmsg "2Pertanyaan:6 $ACAKQuestion ?"
}


#
# Read Config File
#
proc ACAK_ReadCFG {} {
 global ACAKCFGFile ACAKChannel ACAKAutoStart ACAKAskedFile ACAKQuestionFile ACAKPointsName ACAKAd
 if {[file exist $ACAKCFGFile]} {
  set f [open $ACAKCFGFile r]
  while {[gets $f s] != -1} {
   set kkey [string tolower [lindex [split $s "="] 0]]
   set kval [lindex [split $s "="] 1]
   switch $kkey {
    points { set ACAKPointsName $kval }
    channel { set ACAKChannel $kval }
    autostart { set ACAKAutoStart $kval }
    askedfile { set ACAKAskedFile $kval }
    ACAKfile { set ACAKQuestionFile $kval }
    ad1 { set ACAKAd(0) $kval }
    ad2 { set ACAKAd(1) $kval }
    ad3 { set ACAKAd(2) $kval }
   }
  }
  close $f
  if {($ACAKAutoStart < 0)||($ACAKAutoStart > 1)} {set ACAKAutoStart 1}
  return
 }
 ACAKlog "ACAK" "Config file $ACAKCFGFile not found... using defaults"
}

#
# Write Config File
#
proc ACAK_WriteCFG {} {
 global ACAKCFGFile ACAKChannel ACAKAutoStart ACAKAskedFile ACAKQuestionFile ACAKPointsName ACAKAd
 set f [open $ACAKCFGFile w]
 puts $f "# This file is automatically overwritten"
 puts $f "Points=$ACAKPointsName"
 puts $f "Channel=$ACAKChannel"
 puts $f "AutoStart=$ACAKAutoStart"
 puts $f "AskedFile=$ACAKAskedFile"
 puts $f "ACAKFile=$ACAKQuestionFile"
 puts $f "Ad1=$ACAKAd(0)"
 puts $f "Ad2=$ACAKAd(1)"
 puts $f "Ad3=$ACAKAd(2)"
 close $f
}

#
# Command Help
#
proc ACAKCmds {nick uhost hand chan args} {
 global ACAKChannel
 if {$chan != $ACAKChannel} {return}
 ACAKntc $nick "ACAK Commands: !asked"
}

#
# Color Routines
#
proc kcb {} {
 return "\0038,2"
}
proc kcg {} {
 return "\0030,3"
}
proc kcr {} {
 return "\0030,4"
}
proc kcm {} {
 return "\0030,6"
}
proc kcc {} {
 return "\0030,10"
}
proc kcs {} {
 return "\0030,12"
}
proc ACAK {} {
 return "\00308K\00307A\00313O\00306S\003"
}

# Channel Message
proc ACAKmsg {what} {
 global ACAKChannel
 putquick "PRIVMSG $ACAKChannel :$what"
}

# Notice Message
proc ACAKntc {who what} {
 putquick "NOTICE $who :$what"
}
# Command Log
proc ACAKlog {who what} {
 putcmdlog "\[$who\] $what"
}

# Name Of Last Month
#proc ACAKLastMonthName {month} {
# switch $month {
#  1 {return "Dec"}
#  2 {return "Jan"}
#  3 {return "Feb"}
#  4 {return "Mar"}
#  5 {return "Apr"}
#  6 {return "May"}
#  7 {return "Jun"}
#  8 {return "Jul"}
#  9 {return "Aug"}
#  10 {return "Sep"}
#  11 {return "Oct"}
#  12 {return "Nov"}
#  default {return "???"}
# }
#}

# Assign Nickname Color
proc knikclr {nick} {
  set nicklen [strlen $nick]
  set nicktot 0
  set c 0
  while {$c < $nicklen} {
   binary scan [string range $nick $c $c] c nv
   incr nicktot [expr $nv -32]
   incr c
  }
  set nickclr [expr $nicktot %13]
  switch $nickclr {
   0 {set nickclr 10}
   1 {set nickclr 11}
   2 {set nickclr 12}
   5 {set nickclr 13}
  }
  set nik [format "%02d" $nickclr]
  return "\003$nik$nick"
}

#
# Show Ad
#
proc ACAK_ShowAd {} {
 global ACAKAdNumber ACAKAd botnick ACAKChannel
 switch $ACAKAdNumber {
  0 { ACAKmsg "[kcs] $ACAKAd(0) \003" }
  1 { ACAKTop10 $botnick none none $ACAKChannel none }
  2 { ACAKmsg "[kcs] $ACAKAd(1) \003" }
  3 { ACAKLastMonthTop3 $botnick none none $ACAKChannel none }
  4 { ACAKmsg "[kcs] $ACAKAd(2) \003" }
 }
 incr ACAKAdNumber
 if {$ACAKAdNumber > 4} {set ACAKAdNumber 0}
}

#
# Rehash ACAK Config
#
proc dcc_ACAKrehash {hand idx arg} {
 global ACAKQCount

 putcmdlog "#$hand# Rehashing ACAK config"

 ACAK_ReadCFG

 set ACAKQCount [ACAK_ReadQuestionFile]

 if {$ACAKQCount < 2} {
   ACAKlog "ACAK" "Not Enough Questions in Question File $ACAKQuestionFile"
   return 0
 }

 set ACAKAskedFileLen [ACAK_ReadAskedFile]

 if {$ACAKAskedFileLen >= $ACAKQCount} {
   ACAKlog "ACAK" "Asked file out of sync with question database: resetting"
   ACAK_ResetAsked
   return 0
 }
 ACAKlog "ACAK" "Questions:$ACAKQCount Asked:$ACAKAskedFileLen Remaining:[expr ($ACAKQCount - $ACAKAskedFileLen)]"
}

#
# Show Current Answers
#
proc dcc_ACAKanswer {hand idx arg} {
 global ACAKAnswers
 set ans ""
 foreach z [array names ACAKAnswers] {
  if {[lindex $ACAKAnswers($z) 0] == "#"} {
   append ans "[lrange $ACAKAnswers($z) 1 end] | "
  }
 }
 ACAKlog "ACAK" $ans
}

#
# Reset Asked File
#
proc dcc_ACAKresetasked {hand idx arg} {
 ACAK_ResetAsked
 ACAKlog "ACAK" "#$hand# Reset Asked File"
}

#
# Show Asked
#
proc dcc_ACAKshowasked {hand idx arg} {
 global ACAKQCount ACAKAsked ACAKQuestions
 set ACAKStatsAsked [llength $ACAKAsked]
 set ACAKStatsUnasked [expr ($ACAKQCount - $ACAKStatsAsked)]
 ACAKlog "ACAK" "Total:$ACAKQCount  Asked:$ACAKStatsAsked  Remaining:$ACAKStatsUnasked"
}

#
# Force A Question
#
proc dcc_ACAKforce {hand idx arg} {
 global ACAKRunning ACAKMarker ACAKForced ACAKForcedQuestion
 if {$ACAKRunning != 1} {return}
 regsub -all \[`,.!{}] $arg "" arg
 if {$arg == ""} {return}
 set ACAKMarkerIDX [string first $ACAKMarker $arg]
 if {$ACAKMarkerIDX < 2} {
  ACAKlog "ACAK" "Malformed question: Format: Question*Answer1*Answer2..."
  return
 }
 set ACAKForcedQuestion $arg
 set ACAKForced 1
 ACAKlog "ACAK" "Forcing A Question Next Round"
}

ACAK_ReadCFG

## Tips To Use
set TipsToUses {
"0,4<5>4,5<1>5,1<15,1 Ketik !detik untuk mengetahui news 5,1>1,5<4>5,4<0>"
"0,4<5>4,5<1>5,1<15,1 score anda akan otomatis ke save 5,1>1,5<4>5,4<0>"
}
## Proc to Randomly Select an Info Item!
proc get_InfoItems { } {
 global TipsToUses
 set outputiz9 [lindex $TipsToUses [rand [llength $TipsToUses]]]
 return $outputiz9
}

putlog "ACAK Tcl By Roney ® Succesfully LoaDeD..."

