# Translate tpi@DALnet #

# Default Settings
set TRANSChannel        "#Lombok"
set TRANSPointsName     "Points"
set TRANSPointsPerAnswer 10
set TRANSQuestionTime   60
set TRANSMarker         "*"
set TRANSAskedFile      "eggdrop/scripts/trans.asked"
set TRANSQuestionFile   "eggdrop/scripts/trans.db"
set TRANSCFGFile        "eggdrop/scripts/trans.cfg"
set TRANSRunning 0
set TRANSAllAnswered 0
set TRANSRoundOver 0
set TRANSQNumber 0
set TRANSQuestion ""
set TRANSQuestions(0) ""
set TRANSAsked ""
set TRANSQCount 0
set TRANSAnswerCount 0
set TRANSDisplayNum 0
set TRANSNumAnswered 0
set TRANSForced 0
set TRANSForcedQuestion ""
set TRANSAutoStart 0
set TRANStimeanswer 1
set TRANSAdNumber 0
set TRANSAd(0) "$botnick"
set TRANSAd(1) "$botnick"
set TRANSAd(2) "$botnick"
set TRANSAdTimer ""
set TRANSQuestionTimer ""
set KDebug 0
set TRANSVersion "PUKIMAK"
set TRANScongrats [list "Congratulations" "How Did You Get it" "Nice going" "Way to go" "You got it" "That's the way" "Good Guess" "Bravo"]
proc TRANS_Start {nick uhost hand chan args} {
global TRANSChannel TRANSRunning TRANSQCount TRANSQNumber TRANSQuestionFile TRANSAdNumber TRANSVersion KDebug CountAnswer CountNoAnswer
if {($chan != $TRANSChannel)||($TRANSRunning != 0)} {return}
set TRANSQCount 0
set TRANSAdNumber 0
TRANS_ReadCFG
if {![file exist $TRANSQuestionFile]} {
putcmdlog "\[TRANS\] Question File: $TRANSQuestionFile Unreadable Or Does Not Exist"
return 0
}
set TRANSQCount [TRANS_ReadQuestionFile]
if {$TRANSQCount < 2} {
putcmdlog "\[TRANS\] Not Enough Questions in Question File $TRANSQuestionFile"
return 0
}
set TRANSAskedFileLen [TRANS_ReadAskedFile]
if {$TRANSAskedFileLen >= $TRANSQCount} {
TRANSmsg ""
TRANS_ResetAsked
return 0
}
set TRANSRunning 1
bind pubm - "*" TRANSCheckGuess
TRANSAskQuestion
return 1
}
proc TRANS_nostop {nick uhost hand chan args} {
global TRANSChannel TRANSRunning TRANSQuestionTimer TRANSAdTimer
if {($chan != $TRANSChannel)||($TRANSRunning != 1)} {return}
set TRANSRunning 0
catch {killutimer $TRANSQuestionTimer}
catch {killutimer $TRANSAdTimer}
catch {unbind pubm - "*" TRANSCheckGuess}
TRANSmsg "\00306Game is nostopped by \00304\[\00312$nick!$uhost\00304\]"
return 1
}
proc TRANSPickQuestion {} {
global TRANSAsked TRANSQCount KDebug
set TRANSUnasked [expr ($TRANSQCount - [llength $TRANSAsked])]
if {$TRANSUnasked < 1} {
TRANSmsg ""
TRANS_ResetAsked
}
set pickdone 0
while {$pickdone == 0} {
set kidx 0
set foundinasked 0
set pick [rand $TRANSQCount]
while {[lindex $TRANSAsked $kidx] != ""} {
if {[lindex $TRANSAsked $kidx] == $pick} {
set foundinasked 1
break
}
incr kidx
}
if {$foundinasked == 0} {incr pickdone}
}
TRANS_AddAsked $pick
return $pick
}
proc TRANSParseQuestion {QNum} {
global TRANSMarker TRANSQuestions TRANSQuestion TRANSAnswers TRANSAnswerCount TRANSForcedQuestion KDebug
set KAnswersLeft ""
if {$QNum < 0} {
set TRANSFileQuestion $TRANSForcedQuestion
} {
set TRANSFileQuestion $TRANSQuestions($QNum)
}
if {$KDebug > 1} {TRANSlog "TRANS" "Picked:$QNum Question:$TRANSFileQuestion"}
if [info exists TRANSAnswers] {unset TRANSAnswers}
# Position of first "*"
set TRANSMarkerIDX [string first $TRANSMarker $TRANSFileQuestion]
if {$TRANSMarkerIDX < 1} {
TRANSlog "TRANS" "Malformed Question #$QNum"
}
set TRANSQuestionEndIDX [expr $TRANSMarkerIDX - 1]
set TRANSQuestion [string range $TRANSFileQuestion 0 $TRANSQuestionEndIDX]
incr TRANSMarkerIDX
set KAnswersLeft [string range $TRANSFileQuestion $TRANSMarkerIDX end]
set KDoneParsing 0
set TRANSAnswerCount 0
while {$KDoneParsing != 1 } {
set KAnswerEnd [string first $TRANSMarker $KAnswersLeft]
if {$KAnswerEnd < 1} {
set KDoneParsing 1
set KAnswerEnd [string length $KAnswersLeft]
}
set KAnswer [string range $KAnswersLeft 0 [expr $KAnswerEnd -1]]
set TRANSAnswers($TRANSAnswerCount) "# $KAnswer"
set TRANSMarkerIDX [expr $KAnswerEnd +1]
set KAnswersLeft [string range $KAnswersLeft $TRANSMarkerIDX end]
incr TRANSAnswerCount
}
}
proc TRANSAskQuestion {} {
global TRANSRunning TRANSQNumber TRANSAllAnswered TRANSRoundOver TRANSQuestion TRANSQCount
global TRANSPointsPerAnswer TRANSPointsName TRANSNumAnswered TRANSAnswerCount
global TRANSQuestionTimer TRANSQuestionTime TRANSDisplayNum TRANSForced TRANSLastGuesser
global tipno tiplist TipsToUse InfoItem TRANStimestart TRANStimeanswer
if {$TRANSRunning != 1} {return}
if {$TRANSForced == 1} {
TRANSParseQuestion -1
set TRANSQNumber 0
set TRANSForced 0
set TRANSForcedQuestion ""
} {
set TRANSQNumber [TRANSPickQuestion]
TRANSParseQuestion $TRANSQNumber
}
set TRANSAllAnswered 0
set TRANSLastGuesser ""
set TRANSDisplayNum 0
set TRANSNumAnswered 0
set TRANSRoundOver 0
set TRANSPointsPerAnswer [rand 3]
if {$TRANSPointsPerAnswer < 1} {set TRANSPointsPerAnswer 3}
set TRANSPointsPerAnswer [expr $TRANSPointsPerAnswer *10]
set TRANSBonus [expr $TRANSPointsPerAnswer *5]
set TRANSPointTotal [expr $TRANSPointsPerAnswer *$TRANSAnswerCount]
if {$TRANStimeanswer==1} {
set TRANStimestart [clock clicks -milliseconds]
}
if {$TRANSAnswerCount == 1} {
TRANSmsg "\0030,2 :: Question No. $TRANSQNumber\/$TRANSQCount \00308\[\00311 ®Translate® \00308\] \0030tpi@DALnet :: \003"
TRANSmsg "\002\037\0032Question\002\037: $TRANSQuestion \003"
TRANSmsg "\0030,2 ::\00311 +$TRANSPointsPerAnswer\0030 $TRANSPointsName Bila Anda Menjawab Benar :: \037-= GudLuck =-\037 :: "
}
set KRemain [expr int([expr $TRANSQuestionTime /2])]
set TRANSQuestionTimer [utimer $KRemain "TRANSDisplayRemainingTime $KRemain"]
}
proc TRANSCheckGuess {nick uhost hand chan args} {
global TRANSChannel TRANSRunning TRANSAnswerCount TRANSAnswers TRANSRoundOver TRANStimeanswer TRANScongrats
global TRANSPointsName TRANSPointsPerAnswer TRANSNumAnswered TRANSAllAnswered TRANSLastGuesser KDebug TRANScongrats
global lastwinner lastwinnercount botnick userlist quizconf rankfile TRANStimestart TRANStimetoanswer
variable bestscore 0 lastbestscore 0 lastbest ""
variable userarray
variable authorsolved 0 waitforrank 0 gameend 0
if {($chan != $TRANSChannel)||($TRANSRunning != 1)||($TRANSRoundOver == 1)} {return}
mx_getcreate_userentry $nick $nick
array set userarray $userlist($nick)
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 TRANSGuessOld $args
set TRANSGuess [string tolower $TRANSGuessOld]
if {$KDebug > 1} {TRANSlog "TRANS" "Guess: $nick $TRANSGuess"}
foreach z [array names TRANSAnswers] {
set TRANSTry [lrange $TRANSAnswers($z) 1 end]
set TRANSTryOld $TRANSTry
regsub -all \[{',.!}] $TRANSTry "" TRANSTry
set TRANSTry [string tolower $TRANSTry]
if {$KDebug > 1} {TRANSlog "TRANS" "Try: $TRANSTry"}
if {$TRANSTry == $TRANSGuess} {
if {[lindex $TRANSAnswers($z) 0] == "#"} {
set TRANSAnswers($z) "$nick $TRANSGuessOld"
set TRANStimetoanswer ""
if {$TRANStimeanswer==1} {
set TRANStimetoanswer [expr [expr [clock clicks -milliseconds]-$TRANStimestart]/1000.00]
}
incr userarray(score) $TRANSPointsPerAnswer
if {$userarray(score) == 1} {
set userarray(started) [unixtime]
}
set userlist($nick) [array get userarray]
TRANSmsg "\00306[lindex $TRANScongrats [rand [llength $TRANScongrats]]] : \00302Answer Was \00306$TRANSTryOld \00302by \00306$nick \00302score:\00306 +$TRANSPointsPerAnswer \00302- less then \00306$TRANStimetoanswer \00302seconds - Total Score: \00306$userarray(score) \00302Points and Ranked: \00306[mx_get_rank_pos $nick]"
pushmode $TRANSChannel +v $nick
tmcquiz_rank_save {} {} {}
incr TRANSNumAnswered
if {$TRANSNumAnswered == $TRANSAnswerCount} {
set TRANSAllAnswered 1
set TRANSRoundOver 1
if {$TRANSAnswerCount == 1} {
set TRANSLastGuesser ""
TRANSmsg ""
TRANS_TriviaResults
} elseif {$TRANSAnswerCount >= 2} {
set TRANSLastGuesser $nick
TRANSmsg ""
TRANS_ShowResults
}
TRANS_Recycle
}
return
}
}
}
}
proc TRANSDisplayRemainingTime {remaining} {
global TRANSRunning TRANSAllAnswered TRANSNumAnswered TRANSAnswerCount TRANSQuestionTimer TRANSQuestionTime TRANSDisplayNum
global TRANSQuestion
if {($TRANSRunning != 1)||($TRANSAllAnswered == 1)} {return}
if {$TRANSAnswerCount == 1} {
TRANSmsg "\00306$remaining \00302secs remaining"
} elseif {$TRANSAnswerCount >= 2} {
TRANSmsg "\00306$remaining \00302secs remaining"
}
incr TRANSDisplayNum
set KRemain [expr int([expr $TRANSQuestionTime /4])]
if {$TRANSDisplayNum < 2} {
set TRANSQuestionTimer [utimer $KRemain "TRANSDisplayRemainingTime $KRemain"]
} {
set TRANSQuestionTimer [utimer $KRemain TRANSTimesUp]
}
}
proc TRANSTimesUp {} {
global TRANSAnswers TRANSAllAnswered TRANSRoundOver TRANSNumAnswered TRANSAnswerCount TRANSQuestionTimer TRANSAdTimer
global TRUEChannel TRUERunning TRUEQCount TRUEQNumber TRUEQuestionFile TRUEAdNumber TRUEVersion KDebug CountAnswer CountNoAnswer
if {$TRANSAllAnswered == 1} { return 1}
set TRANSRoundOver 1
set TRANSmissed "Time's Up! \003 "
append KMissed "\00302Times Up. Answer Was: "
set KAnswersRemaining [expr ($TRANSAnswerCount - $TRANSNumAnswered)]
set kcount 0
foreach z [array names TRANSAnswers] {
if {[lindex $TRANSAnswers($z) 0] == "#"} {
append KMissed "\00306[lrange $TRANSAnswers($z) 1 end]"
incr kcount
if {$kcount < $KAnswersRemaining} {append KMissed " - "}
}
}
TRANSmsg "$KMissed"
TRANS_ShowResults
if {$TRANSNumAnswered > 0} {
TRANSmsg ""
} {
TRANSmsg "\00302Kita masuk ke soal True/False.. Harap Siap"
}
set TRUEQCount 0
set TRUEAdNumber 0
TRUE_ReadCFG
set TRUEQCount [TRUE_ReadQuestionFile]
set TRUEAskedFileLen [TRUE_ReadAskedFile]
set TRUERunning 1
bind pubm - "*" TRUECheckGuess
TRUEAskQuestion
}
proc TRANS_Recycle {} {
global TRUEChannel TRUERunning TRUEQCount TRUEQNumber TRUEQuestionFile TRUEAdNumber TRUEVersion KDebug CountAnswer CountNoAnswer
global TRANSAnswers TRANSNumAnswered TRANSQuestionTimer TRANSAdTimer
catch {killutimer $TRANSQuestionTimer}
if [info exists TRANSAnswers] {unset TRANSAnswers}
set TRANSQuestion ""
set TRANSNumAnswered 0
set TRUEQCount 0
set TRUEAdNumber 0
TRUE_ReadCFG
set TRUEQCount [TRUE_ReadQuestionFile]
set TRUEAskedFileLen [TRUE_ReadAskedFile]
set TRUERunning 1
bind pubm - "*" TRUECheckGuess
TRUEAskQuestion
}
proc TRANS_ShowResults {} {
global TRANSAnswers TRANSPointsPerAnswer TRANSPointsName TRANSAllAnswered TRANSLastGuesser
global botnick quizconf rankfile userlist lastwinner lastwinnercount
if {$TRANSAllAnswered == 1} {
set TRANSBonus [expr $TRANSPointsPerAnswer *5]
set nick $TRANSLastGuesser
mx_getcreate_userentry $nick $nick
array set userarray $userlist($nick)
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) $TRANSBonus
if {$userarray(score) == 1} {
set userarray(started) [unixtime]
}
set userlist($nick) [array get userarray]
TRANSmsg ""
tmcquiz_rank_save {} {} {}
}
}
proc TRANS_TriviaResults {} {
global TRANSAnswers TRANSPointsPerAnswer TRANSPointsName TRANSAllAnswered TRANSLastGuesser
}
proc TRANS_AddAsked {KQnum} {
global TRANSAsked TRANSAskedFile
set f [open $TRANSAskedFile a]
puts $f $KQnum
close $f
lappend TRANSAsked $KQnum
}
proc TRANS_ReadAskedFile {} {
global TRANSAsked TRANSAskedFile
set KAsked 0
set TRANSAsked ""
if {![file exists $TRANSAskedFile]} {
set f [open $TRANSAskedFile w]
} {
set f [open $TRANSAskedFile r]
while {[gets $f KQnum] != -1} {
lappend TRANSAsked "$KQnum"
incr KAsked
}
}
close $f
return $KAsked
}
proc TRANS_ResetAsked {} {
global TRANSAskedFile TRANSAsked
set f [open $TRANSAskedFile w]
puts $f "0"
close $f
set TRANSAsked ""
}
proc TRANS_ReadQuestionFile {} {
global TRANSQuestionFile TRANSQuestions
set KQuestions 0
set f [open $TRANSQuestionFile r]
while {[gets $f q] != -1} {
set TRANSQuestions($KQuestions) $q
incr KQuestions
}
close $f
return $KQuestions
}
proc TRANS_ShowAsked {nick uhost hand chan args} {
global TRANSQCount TRANSAsked TRANSQuestions
set TRANSStatsAsked [llength $TRANSAsked]
set TRANSStatsUnasked [expr ($TRANSQCount - $TRANSStatsAsked)]
TRANSmsg "Total: $TRANSQCount Asked: $TRANSStatsAsked Remaining: $TRANSStatsUnasked \003"
}
proc TRANS_ReadCFG {} {
global TRANSCFGFile TRANSChannel TRANSAutoStart TRANSAskedFile TRANSQuestionFile TRANSPointsName TRANSAd
if {[file exist $TRANSCFGFile]} {
set f [open $TRANSCFGFile r]
while {[gets $f s] != -1} {
set kkey [string tolower [lindex [split $s "="] 0]]
set kval [lindex [split $s "="] 1]
switch $kkey {
points { set TRANSPointsName $kval }
channel { set TRANSChannel $kval }
autostart { set TRANSAutoStart $kval }
askedfile { set TRANSAskedFile $kval }
TRANSfile { set TRANSQuestionFile $kval }
ad1 { set TRANSAd(0) $kval }
ad2 { set TRANSAd(1) $kval }
ad3 { set TRANSAd(2) $kval }
}
}
close $f
if {($TRANSAutoStart < 0)||($TRANSAutoStart > 1)} {set TRANSAutoStart 1}
return
}
TRANSlog "TRANS" "Config file $TRANSCFGFile not found... using defaults"
}
proc TRANS_WriteCFG {} {
global TRANSCFGFile TRANSChannel TRANSAutoStart TRANSAskedFile TRANSQuestionFile TRANSPointsName TRANSAd
set f [open $TRANSCFGFile w]
puts $f "# This file is automatically overwritten"
puts $f "Points=$TRANSPointsName"
puts $f "Channel=$TRANSChannel"
puts $f "AutoStart=$TRANSAutoStart"
puts $f "AskedFile=$TRANSAskedFile"
puts $f "TRANSFile=$TRANSQuestionFile"
puts $f "Ad1=$TRANSAd(0)"
puts $f "Ad2=$TRANSAd(1)"
puts $f "Ad3=$TRANSAd(2)"
close $f
}
proc TRANSmsg {what} {
global TRANSChannel
putquick "PRIVMSG $TRANSChannel :$what"
}
proc TRANSlog {who what} {
putcmdlog "\[$who\] $what"
}
proc dcc_TRANSrehash {hand idx arg} {
global TRANSQCount
putcmdlog "#$hand# Rehashing TRANS config"
TRANS_ReadCFG
set TRANSQCount [TRANS_ReadQuestionFile]
if {$TRANSQCount < 2} {
TRANSlog "TRANS" "Not Enough Questions in Question File $TRANSQuestionFile"
return 0
}
set TRANSAskedFileLen [TRANS_ReadAskedFile]
if {$TRANSAskedFileLen >= $TRANSQCount} {
TRANSlog "TRANS" "Asked file out of sync with question database: resetting"
TRANS_ResetAsked
return 0
}
TRANSlog "TRANS" "Questions:$TRANSQCount Asked:$TRANSAskedFileLen Remaining:[expr ($TRANSQCount - $TRANSAskedFileLen)]"
}
TRANS_ReadCFG

putlog "Translate tpi DALnet ® Succesfully LoaDeD..."

