Pages

Sunday, August 28, 2011

f100.tcl

##
# Faimily 100 made by U|S|B
# test ujicoba - edit
##
set pubchr "!"
set mulai "${pubchr}mulai"
set berhenti "${pubchr}berhenti"
set Top "${pubchr}Top"
set poin "${pubchr}poin"
set ulang "${pubchr}ulang"
set help "${pubchr}help"
set server "${pubchr}server"
set Topbulan "${pubchr}Topbulan"

set fcmdhelp {
  "!mulai -- mulai famili 100"
  "!berhenti -- berhenti famili 100"
  "!Top -- lihat top10"
  "!poin -- lihat poin"
  "!ulang -- ulang pertanyaan"
  "!help -- lihat help"
  "!Topbulan -- top10 bulanan"
}

set submit "submit"
set comment "comment"
set actcha "kopiku"
set actch "#${actcha}"
set AlreadyGoing 0
set berhentipedflag 1
set AlreadyGuessed 0
set WonTimes 1
set WonBefore "Nobody"
set Winners ""
set HeadHoncho ""
set QNumber 0
set QALine 0
set Server $server
set bnick "mdmSERV"
set nameofbot "$bnick"
utimer 10 "iklan"
set dater [unixtime]
set datechecker [ctime $dater]
set fblnanl ""
set blnanhtml ""
set fblnan ""
set ikbar {
  "***NEW Famili100 Games***"
}
set borki {
  "14,1<16>14<16>14<16>14<16>14<16>0"
  "11,13*11,6*2,15*11,13*11,6*2,15*0,1"
  "1,6||9,6..1,6||0,1"
}
set borka {
  "14,1<16>14<16>14<16>14<16>14<16>"
  "2,15*11,6*11,13*2,15*11,6*11,13*"
  "1,6||9,6..1,6||"
}
########################################################################
#                                                                      #
#  END EDIT.END EDIT.END EDIT.END EDIT.END EDIT.END EDIT.END EDIT.END  #
#                                                                      #
########################################################################
bind pub - "${mulai}" mulai
bind pub - "${berhenti}" berhenti
bind pub - "${Top}" Top10
bind pub - "${poin}" SpecificPlayerScore
bind pub - "${ulang}" ShowQuestionAndHint
bind pubm - "*" CheckPlayerGuess
bind pub - "${help}" Menu
bind join - * Welcome
bind pub - "${server}" Server
bind pub - "${Topbulan}" MonthTopTen
bind msg - "${submit}" UserAdditions
bind msg - "${comment}" UserComments
proc get_Ad { } {
  global ikbar
  set outputiz7 [lindex $ikbar [rand [llength $ikbar]]]
  return $outputiz7
}
#^~
proc iklan {} {
  global borki borka ikbar
  global mulai
  set adtouse [get_Ad]
  set bornu [rand [llength $borki]]
 
  # annoying!
  #putserv "TOPIC $chan :[lindex $borki $bornu] $adtouse 13 [lindex $borka $bornu]"
  #if { $(progress) == 0 } {
  #  putserv "privmsg $chan :0,10 !!! ketik 4${mulai}0 aja buat mulai game!"
  #}
  utimer 6000 "iklan"
  return
}
#^~
set sekilasInf {
  "Welcome To #ciamis@allnetwork"
  "Please remove any script-advertisements from you quit and part messages"
  "Have a nice chat and fun!"
  "Don`t CHANGE your nick while playing this Game to keep your score added!"
  "Do not use bad nick, ident and host!"
  "No spamming, flooding, clones, cheating and inviting!"
  "No offending, racism, harassments, abuses or discrimination!"
  "Your score is accumulated and autosaved!"
  "Need help? please message op!"
  "You will be banned if breaking the rule!"
  "Congratulations for the Game Winners!"
  "Have a nice chat and enjoy your stay here!"
  "Wish you all the best for staying here!"
  "No excessive flooding and scripting here,Remote Off your scripting"
}
#^~
set gakadayjihhh {
  "Survei membuktikan...TenG TonG...Anda kurang beruntung"
  "Survei membuktikan...TenG TonG...Jawabannya salah semua"
  "Jawabnya kok pada ngaco yah, ato emang gak ada yg tau ya.."
  "Ayo dong pada semangat......."
  "Survei membuktikan......Ih ngaco semua jawabannya"
  "Jawabnya kok pada ngaco seh, mikir dong..."
  "Jawabnya yang bener dong masa salah semua seh"
}
#^~
proc get_nyahnyah { } {
  global gakadayjihhh
  set outputiz7 [lindex $gakadayjihhh [rand [llength $gakadayjihhh]]]
  return $outputiz7
}
#^~
proc get_InfoItem { } {
  global sekilasInf
  set outputiz7 [lindex $sekilasInf [rand [llength $sekilasInf]]]
  return $outputiz7
}
#^~
proc fikhelp { } {
  global fcmdhelp
  return [lindex $fcmdhelp [rand [llength $fcmdhelp]]]
}
#^~
proc res_t10 { } {
  global Score actch fblnan fblnanl blnanhtml
  set f [open "MonthlyScores.txt" w]
  if {$fblnanl != ""} {
    set g [open $fblnanl w]
  }
  set webScore "MonthlyScores.html"
  foreach s [lsort -decreasing -command sort_Score [array names Score]] {
    puts $f "$s $Score($s)"
    if {$fblnanl != ""} {
      puts $g "$s $Score($s)"
    }
    set Score(s) 0
  }
  close $f
  if {$fblnanl != ""} {
    close $g
  }
  if {$webScore != ""} {
    set f [open "MonthlyScores.html" w]
    if {$blnanhtml != ""} {
      set g [open $blnanhtml w]
    }
    puts $f "<HTML><HEAD><TITLE>OnLine Previous Month's Scores:</TITLE>"
    puts $f "<TABLE BORDER=4 WIDTH=80%>"
    puts $f "<TR ALIGN=center><TH ALIGN=center>Nick</TH><TD>Score</TD></TR>"
    if {$blnanhtml != ""} {
      puts $g "<HTML><HEAD><TITLE>OnLine  Monthly Scores:</TITLE>"
      puts $g "<TABLE BORDER=4 WIDTH=80%>"
      puts $g "<TR ALIGN=center><TH ALIGN=center>Nick</TH><TD>Score</TD></TR>"
    }
    foreach s [lsort -decreasing -command sort_Score [array names Score]] {
      puts $f "<TR ALIGN=center><TH ALIGN=center>$s</TH><TD>$Score($s)</TD></TR>"
      if {$blnanhtml != ""} {
        puts $g "<TR ALIGN=center><TH ALIGN=center>$s</TH><TD>$Score($s)</TD></TR>"
      }
    }
    puts $f "</TABLE></HTML>"
    if {$blnanhtml != ""} {
      puts $g "</TABLE></HTML>"
    }
    close $f
    if {$blnanhtml != ""} {
      close $g
    }
  }
  set f [open "BotScores.txt" w]
  puts $f "deedee 0"
  close $f
  if [info exists Score] { unset Score }
  putserv "privmsg $actch :*** perhatian - perhatian *** poin bulan lalu sudah di simpan, harap para pemain segera menjawab pertanyaan berikutnya untuk mendapatkan poin bulan ini"
  return 1
}
#^~
proc Server {nick uhost hand chan args} {
  global Server
  global actch
  if {$chan != $actch} {return}
  putserv "NOTICE $nick :online dengan server: $Server!"
}
#^~
proc Welcome {nick uhost hand chan} {
  global AlreadyGoing Server
  global actch mulai ulang
  if {$chan != $actch} {return}
  if {$AlreadyGoing == 0} {
    putserv "NOTICE $nick :selamat datang $nick.. famili 100 belum di mulai, ketik ${mulai} untuk memulai game"
  } else {
    putserv "NOTICE $nick :selamat datang $nick.. famili 100 sudah di mulai, ketik ${ulang} untuk melihat pertanyaan sekarang"
  }
  return 1
}
#^~
proc mulai {nick uhost hand chan args} {
  global AlreadyGoing nameofbot Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch ulang
  if {$chan != $actch} {return}
  if {$AlreadyGoing == 1} {
    putserv "PRIVMSG $chan :$nick, famili 100 sudah di mulai.. ketik ${ulang} untuk melihat pertanyaan sekarang"
    return 1
  }
  set berhentipedflag 0
  set filelength 0
  set f [open "file.txt" r]
  while {[gets $f Line] != -1} {
    set validQuestions($filelength) $filelength
    incr filelength
  }
  close $f
  CMainProc blah blah blah $chan ""
  set AnyonePlaying 0
  return 1
}
#^~
proc CMainProc {nick uhost hand chan args} {
  global AlreadyGoing Question datechecker fblnan fblnanl blnanhtml AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed validAnswer
  global actcha
  set AlreadyGoing 1
  set HintAlreadyGiven 0
  if {$berhentipedflag == 1} {
    set AlreadyGoing 0
    return 1
  }
  read_Score
  set dater [unixtime]
  set datechecker [ctime $dater]
  set fblnan "Scores"
  append fblnan [lindex $datechecker 1]
  set blnanhtml $fblnan
  append fblnan ".txt"
  append blnanhtml ".html"
  if {$fblnanl != ""} {
    if {![file exist $fblnan]} {
      res_t10
    }
  }
  set fblnanl $fblnan
  set blnanhtml "Scores"
  append blnanhtml [lindex $datechecker 1]
  append blnanhtml ".html"
 
  #
  set filelength 0
  set f [open "file.txt" r]
  while {[gets $f Line] != -1} {
    set validQuestions($filelength) $filelength
    incr filelength
  }
  close $f
  #
  set allasked 0
  set endflag 0
  set AlreadyAskedtotal 0
 
  #
  if {![file exists "AlreadyAsked.txt"]} {
    set f [open "AlreadyAsked.txt" w]
    close $f
  }
  set f [open "AlreadyAsked.txt" r]
  while {[gets $f Line] != -1} {
    set validQuestions($Line) 0
    incr AlreadyAskedtotal
  }
  close $f
 
  #
  set totalunaskedQuestions [expr ($filelength - $AlreadyAskedtotal) ]
  if {$totalunaskedQuestions < 1} {set totalunaskedQuestions 1}
  set ArrayNum [rand $filelength]
  if {$ArrayNum < 1} {
    set ArrayNum 1
  }
  set MinQuestNumber [expr $AlreadyAskedtotal - $totalunaskedQuestions]
  set ReachedEndOnce 0
  while {$validQuestions($ArrayNum) < 1} {
    incr ArrayNum
    if {$ArrayNum >= $filelength} {
      incr ReachedEndOnce
      if {$ReachedEndOnce == 2} {
        putserv "privmsg $chan :*** perhatian - perhatian *** semua pertanyaan sudah di ajukan, kita ulang kembali pertanyaan awal.."
    set f [open "AlreadyAsked.txt" w]
    puts $f "0"
    close $f
    if [info exists validQuestions] { unset validQuestions }
    set Counter 0
    while {$Counter < $filelength} {
      set validQuestions($Counter) $Counter
      incr Counter
    }
    set AlreadyAskedtotal 0
    set f [open "AlreadyAsked.txt" r]
    while {[gets $f Line] != -1} {
      set validQuestions($Line) 0
      incr AlreadyAskedtotal
    }
    close $f
    putserv "privmsg $chan :siap siap....."
    set ReachedEndOnce 0
      }
      set totalunaskedQuestions [expr ($filelength - $AlreadyAskedtotal) ]
      if {$totalunaskedQuestions == 0} {set totalunaskedQuestions 3}
      set ArrayNum [rand $totalunaskedQuestions]
      if {$ArrayNum < 1} {
        set ArrayNum 1
      }
    }
  }
  set QNumber $validQuestions($ArrayNum)
  set totalunaskedQuestions [expr ($filelength - $AlreadyAskedtotal) ]
  set f [open "AlreadyAsked.txt" a]
  puts $f $QNumber
  close $f
  #
  set f [open "file.txt" r]
  set Counter 0
  while {$Counter < $QNumber} {
    gets $f QALine
    incr Counter
  }
  close $f
  set marker "*"
  set allAnswers ""
  set qamarker [string first $marker $QALine]
  set Questionendmarker [expr $qamarker - 1]
  set Question [string range $QALine 0 $Questionendmarker]
  set Question [string tolower $Question]
  set AnswerCounter 0
  set qamarker [expr $qamarker +1]
  set Answersleft [string range $QALine $qamarker end]
  set endofAnswersflag 0
  while {$endofAnswersflag != 1 } {
    set Answerend [string first $marker $Answersleft]
    if {$Answerend < 1} {
      set endofAnswersflag 1
    }
    set Answerend [expr $Answerend -1]
    if {$Answerend == -2} {set Answerend [string length $Answersleft]}
    set Answer [string range $Answersleft 0 $Answerend]
    set Answer [string tolower $Answer]
    set validAnswer($AnswerCounter) "Nobody $Answer"
    append allAnswers "$Answer, "
    set qamarker [expr $Answerend +2]
    set Answersleft [string range $Answersleft $qamarker end]
    incr AnswerCounter
  }
  set numberofAnswers $AnswerCounter
 
  ##
  set AlreadyGuessed 0
  putserv "privmsg $chan :0,13 0,2 0,4 0,5 0,6 0,11 0,12 0,10 0,2  Famili-100 8${actcha} 11@ Allnetwork  0,10 0,12 0,11 0,6 0,5 0,4 0,2 0,13 "
  putserv "PRIVMSG $chan :0,15 0,14 0,10 0,2 0,1 0,2Pertanyaan:0,29 $Question? 15,2($numberofAnswers Jawaban)0,1 0,2 0,10 0,14 0,15 "
  putserv "privmsg $chan : 15,0*14,15*15,14*1,14*14,1*0,1** - [fikhelp] - **14,1*1,14*15,14*14,15*15,0* "
  utimer 15 "15SecondDisplay $chan"
}
#^~
proc 15SecondDisplay {chan} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  if {$berhentipedflag == 1} {
    return 1
  }
  if {$AlreadyGuessed == 1} {
    return 1
  }
  putserv "PRIVMSG $chan :\0038,1 --== 45 detik lagi ==-- \0034,0"
  utimer 15 "30SecondDisplay $chan"
  return
}
#^~
proc 30SecondDisplay {chan} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  if {$berhentipedflag == 1} {
    return 1
  }
  if {$AlreadyGuessed == 1} {
    return 1
  }
  putserv "PRIVMSG $chan :\0038,1 --== 30 detik lagi ==-- \0034,0"
  utimer 15 "45SecondDisplay $chan"
  return
}
#^~
proc 45SecondDisplay {chan} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  putserv "PRIVMSG $chan :\0038,1 --== 15 detik lagi ==-- \0034,0"
  utimer 15 "60SecondDisplay $chan"
  return
}
#^~
proc 60SecondDisplay {chan} {
  global validAnswer AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global mulai
  putserv "privmsg $chan :10Waktu telah habis, Survey Membuktikan..."
  set Counter 0
  foreach z [array names validAnswer] {
    if {[lindex $validAnswer($z) 0] != "Nobody"} {
      putserv "privmsg $chan :6 [expr $Counter +1]: [lrange $validAnswer($z) 1 end] dijawab oleh [lindex $validAnswer($z) 0] (+1 poin)"
      incr Counter
    }
  }
  set otherpossibleAnswerCounter 0
  set notfoundAnswers "6Salah satu hasil survei:3 "
  foreach z [array names validAnswer] {
    if {[lindex $validAnswer($z) 0] == "Nobody"} {
      if {$otherpossibleAnswerCounter != 1} {
        append notfoundAnswers "[lrange $validAnswer($z) 1 end]"
    incr otherpossibleAnswerCounter
      }
    }
  }
  if {$Counter == 0} {
    putserv "privmsg $chan :7[get_nyahnyah]"
    putserv "privmsg $chan :$notfoundAnswers"
  }
  #
  if [info exists validAnswer] {unset validAnswer}
  putserv "privmsg $chan :13Pertanyaan selanjutnya dalam 20 detik !"
  set AlreadyGuessed 1
 
  #
  if {$AnyonePlaying == 10} {
    putserv "privmsg $chan :Wah udah gak ada yang maen yah, berhenti dolo deh gamenya!"
    set berhentipedflag 1
    set AlreadyGoing 0
    foreach t [utimers] {
      if [string match *SecondDisplay* [lindex $t 1]] {
        killutimer [lindex $t end]
      }
      if [string match *MainProc* [lindex $t 1]] {
        killutimer [lindex $t end]
      }
    }
    set Answer ""
    set Hint ""
    set Question ""
    putserv "PRIVMSG $chan :Kalau mau mulai game lagi ketik ${mulai} ajah OK?"
   
    #utimer 10 "iklan $chan
    return 1
  }
  set TotalTimeCounter [expr ($Counter *2) + 25]
  utimer $TotalTimeCounter "CMainProc blah blah blah $chan"
  #CMainProc blah blah blah $chan ""
  return 1
}
#^~
proc read_Score { } {
  global Score
  if [info exists Score] { unset Score }
  if {[file exists "BotScores.txt"]} {
    set f [open "BotScores.txt" r]
    while {[gets $f s] != -1} {
      set Score([lindex $s 0]) [lindex $s 1]
    }
    close $f
  } {
    set f [open "BotScores.txt" w]
    puts $f "dede 0"
    close $f
  }
  return 1
}
#^~
proc sort_Score {s1 s2} {
  global Score
  if {$Score($s1) > $Score($s2)} { return 1 }
  if {$Score($s1) < $Score($s2)} { return -1 }
  if {$Score($s1) == $Score($s2)} { return 0 }
}
#^~
proc write_Score { } {
  global Score
  set f [open "BotScores.txt" w]
  set webScore "BotScore.html"
  foreach s [lsort -decreasing -command sort_Score [array names Score]] {
    puts $f "$s $Score($s)"
  }
  close $f
  if {$webScore != ""} {
    set f [open $webScore w]
    puts $f "<HTML><HEAD><TITLE>Current OnLine  standings as of [clock format [clock seconds] -format {%c %Z}]</TITLE>"
    puts $f "<TABLE BORDER=4 WIDTH=80%>"
    puts $f "<TR ALIGN=center><TH ALIGN=center>Nick</TH><TD>Score</TD></TR>"
    foreach s [lsort -decreasing -command sort_Score [array names Score]] {
      puts $f "<TR ALIGN=center><TH ALIGN=center>$s</TH><TD>$Score($s)</TD></TR>"
    }
    puts $f "</TABLE></HTML>"
    close $f
  }
  return 1
}
#^~
proc ShowQuestionAndHint {nick uhost hand chan args} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch
  if {$chan != $actch} {return}
  if {$berhentipedflag == 1} {
    #putserv "privmsg $chan : isn't even running, $nick: Type ! to mulai it first! 8)"
    return
  }
  if {$AlreadyGuessed == 1} {
    #putserv "privmsg $chan :We're between Questions right now...wait a few moments, $nick!"
    return
  }
  putserv "PRIVMSG $chan :\0038,1Pertanyaan:\0038,2 $Question?"
  return 1
}
#^~
proc CheckPlayerGuess {nick uhost hand chan args} {
  global AnyonePlaying berhentipedflag Score nameofbot validAnswer
  global actch
  if {$chan != $actch} {return}
  if {$nick != $nameofbot} {
    set AnyonePlaying 0
  }
  if {$berhentipedflag == 1} {
    return 1
  }
  regsub -all \[{',.!}] $args "" args
  if {[string length args] == 0} {return}
  if {$args == "a"} {return}
  if {$args == "an"} {return}
  if {$args == "and"} {return}
  if {$args == "of"} {return}
  if {$args == "as"} {return}
  if {$args == "on"} {return}
  if {$args == "the"} {return}
  if {$args == "to"} {return}
  if {$args == "was"} {return}
  if {$args == "with"} {return}
  set origGuess $args
  set Guess [string tolower $args]
  #
  set WordsToRemove "a an and of as on the to was with"
  set newAnswer ""
  set Counter 0
  set RemoveIt 0
  while {[llength $Guess] >= $Counter} {
    set RemoveChecker 0
    while {[llength $WordsToRemove] >= $RemoveChecker} {
      if {[string tolower [lindex $Guess $Counter]] == [string tolower [lindex $WordsToRemove $RemoveChecker]]} {
        set RemoveIt 1
      }
      incr RemoveChecker
    }
    if {$RemoveIt == 0} {
      append newAnswer "[lindex $Guess $Counter] "
    }
    set RemoveIt 0
    incr Counter
  }
  #
  set Guess $newAnswer
  set Guesslength [string length $Guess]
  set Guess [string range $Guess 0 [expr $Guesslength -2]]
  set Guesslength [string length $Guess]
 
  #
  if {[string tolower [string range $Guess [expr $Guesslength -2] end]] == "es"} {
    set Guess [string range $Guess 0 [expr $Guesslength -3]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -1] end]] == "s"} {
    set Guess [string range $Guess 0 [expr $Guesslength -2]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -1] end]] == "y"} {
    set Guess [string range $Guess 0 [expr $Guesslength -2]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -3] end]] == "ing"} {
    set Guess [string range $Guess 0 [expr $Guesslength -4]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -2] end]] == "ly"} {
    set Guess [string range $Guess 0 [expr $Guesslength -3]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -3] end]] == "ish"} {
    set Guess [string range $Guess 0 [expr $Guesslength -4]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -2] end]] == "er"} {
    set Guess [string range $Guess 0 [expr $Guesslength -3]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -2] end]] == "ed"} {
    set Guess [string range $Guess 0 [expr $Guesslength -3]]
  }
  if {[string tolower [string range $Guess [expr $Guesslength -2] end]] == "or"} {
    set Guess [string range $Guess 0 [expr $Guesslength -3]]
  }
  #
  foreach z [array names validAnswer] {
    #
    set WordsToRemove "a an and of on as the to was with"
    set ToCheck [lrange $validAnswer($z) 1 end]
    set origToCheck $ToCheck
    regsub -all \[{',.!}] $ToCheck "" ToCheck
    set newAnswer ""
    set Counter 0
    set RemoveIt 0
    while {[llength $ToCheck] >= $Counter} {
      set RemoveChecker 0
      while {[llength $WordsToRemove] >= $RemoveChecker} {
        if {[string tolower [lindex $ToCheck $Counter]] == [string tolower [lindex $WordsToRemove $RemoveChecker]]} {
      set RemoveIt 1
        }
        incr RemoveChecker
      }
      if {$RemoveIt == 0} {
        append newAnswer "[lindex $ToCheck $Counter] "
      }
      set RemoveIt 0
      incr Counter
    }
    set ToCheck $newAnswer
    #
    set ToChecklength [string length $ToCheck]
    set ToCheck [string range $ToCheck 0 [expr $ToChecklength -2]]
    #
    if {[string tolower [string range $ToCheck [expr $ToChecklength -3] end]] == "es"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -4]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -2] end]] == "s"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -3]]
    }
    if {[string tolower [string range $Guess [expr $Guesslength -1] end]] == "y"} {
      set Guess [string range $Guess 0 [expr $Guesslength -2]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -4] end]] == "ing"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -5]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -3] end]] == "ly"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -4]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -4] end]] == "ish"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -5]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -3] end]] == "er"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -4]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -3] end]] == "ed"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -4]]
    }
    if {[string tolower [string range $ToCheck [expr $ToChecklength -3] end]] == "or"} {
      set ToCheck [string range $ToCheck 0 [expr $ToChecklength -4]]
    }
    #
    set foundit 0
    if {$ToCheck == $Guess} {
      set foundit 1
    }
    if {$foundit == 1} {
      if {[lindex $validAnswer($z) 0] == "Nobody"} {
        if {[info exists Score($nick)]} {
      incr Score($nick)
      set validAnswer($z) "$nick $origGuess"
      write_Score
      return 1
        } {
          set Score($nick) 1
          set validAnswer($z) "$nick $origGuess"
          write_Score
          return 1
        }
      }
    }
  }
  return 1
}
#^~
proc SpecificPlayerScore {nick uhost hand chan args} {
  global actch
  if {$chan != $actch} {return}
  set Scoreplayer $args
  if {[string length $Scoreplayer] == 2} {set Scoreplayer $nick}
  set FoundFlag 0
  set f [open "BotScores.txt" r]
  while {[gets $f Tally] != -1} {
    set checker [lindex $Tally 0]
    if {$checker == $Scoreplayer} {
      putserv "PRIVMSG $chan :\0037[lindex $Tally 0] punya nilai [lindex $Tally 1] poin!"
      set FoundFlag 1
    }
  }
  if {$FoundFlag == 0} {
    putserv "PRIVMSG $chan :$Scoreplayer \002BELUM\002 punya poin!"
  }
  close $f
  return
}
#^~
proc berhenti {nick uhost hand chan args} {
  global AlreadyGoing Question WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch
  if {$chan != $actch} {return}
  if {![isop $nick $chan]} {return}
  if {$berhentipedflag == 1} {
    putserv "privmsg $chan :Gamenya lagi istirahat neh, $nick!"
    return 1
  }
  if {$AlreadyGoing == 0} {
    putserv "privmsg $chan :Gamenya lagi istirahat neh, $nick!"
    return 1
  }
  set berhentipedflag 1
  set AlreadyGoing 0
  foreach t [utimers] {
    if [string match *SecondDisplay* [lindex $t 1]] {
      killutimer [lindex $t end]
    }
    #if [string match *iklan* [lindex $t 1]] {
    #  killutimer [lindex $t end]
    #}
  }
  set Answer ""
  set Hint ""
  set Question ""
  putserv "PRIVMSG $chan :Gamenya diberhentiin sama $nick euy!!!"
 
  #utimer 10 "iklan $chan"
  return 1
}
#^~
proc Top10 {nick uhost hand chan args} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch
  if {$chan != $actch} {return}
  putserv "PRIVMSG $chan :Top 10 Famili-100 Hari Ini :"
  set Winners ""
  set f [open "BotScores.txt" r]
  for { set s 0 } { $s < 10 } { incr s } {
    gets $f Tally
    set Placement [expr $s +1]
    if {$Placement == 1} {
      set Placement " 4,8Presiden: "
      set HeadHoncho [lindex $Tally 0]
    }
    if {$Placement == 2} {
      set Placement " 0,6Menteri: "
    }
    if {$Placement == 3} {set Placement " 0,2Gubernur: "}
    if {$Placement == 4} {set Placement " 8,1Walikota: "}
    if {$Placement == 5} {set Placement " 0,1Bupati: "}
    if {$Placement == 6} {set Placement " 4,8Camat: "}
    if {$Placement == 7} {set Placement " 0,6Pamongpraja: "}
    if {$Placement == 8} {set Placement " 0,2Lurah: "}
    if {$Placement == 9} {set Placement " 8,1Rw: "}
    if {$Placement == 10} {set Placement " 0,1Rt: "}
    append Winners $Placement
    append Winners [lindex $Tally 0]
    append Winners " with "
    append Winners [lindex $Tally 1]
    if {[lindex $Tally 1] > 1} {
      append Winners " poin! "
    } else {
      append Winners " poin! "
    }
  }
  putserv "PRIVMSG $chan :$Winners"
  putserv "PRIVMSG $chan :1,13..::0,10 ® 8,10Selamat untuk $HeadHoncho0,10 ® 1,13::.."
  close $f
  return
}
#^~
proc Menu {nick uhost hand chan args} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch nameofbot actcha \
         mulai berhenti Top poin ulang \
     help server Topbulan

  if {$chan != $actch} {return}
  putserv "privmsg $nick :*** ${actcha} Famili 100 help ***"
  putserv "privmsg $nick :"
  putserv "privmsg $nick :${mulai}        - memulai famili 100"
  putserv "privmsg $nick :${berhenti}     - berhenti famili 100 *hanya untuk @p channel ${actcha}*"
  putserv "privmsg $nick :${ulang}        - melihat pertanyaan yang sekarang"
  putserv "privmsg $nick :${Top}          - melihat TOP10"
  putserv "privmsg $nick :${poin} \[nick\]  - melihat poin orang lain, atau poin kamu jika \[nick\] di kosongkan"
  putserv "privmsg $nick :${Topbulan}     - melihat TOP10 tiap bulan"
}
#^~
proc UserAdditions {nick uhost hand args} {
  global nameofbot
  set totrim [string length $args]
  set argslength [string length $args]
  set totrim [expr $argslength -2]
  set anythingsubmitted [string range $args 1 $totrim]
  if {[string length $anythingsubmitted] == 0} {
    putserv "privmsg $nick :cara menambah pertanyaan: /msg ${nameofbot} Submit PERTANYAAN*JAWABAN1*JAWABAN2*JAWABAN3 (kalau memungkinkan lebih dari 10 jawaban)"
    return
  } {
    set f [open "botUserQuestions.txt" a]
    puts $f "$nick: $args"
    putserv "privmsg $nick :makasih...."
    close $f
    return
  }
}
#^~
proc UserComments {nick uhost hand args} {
  global nameofbot
  set totrim [string length $args]
  set argslength [string length $args]
  set totrim [expr $argslength -2]
  set anythingsubmitted [string range $args 1 $totrim]
  if {[string length $anythingsubmitted] == 0} {
    putserv "privmsg $nick :cara memberi komentar: /msg ${nameofbot} Comment KOMENTAR_ANDA"
    return
  } {
    set f [open "botUserComments.txt" a]
    puts $f "$nick: $args"
    putserv "privmsg $nick :makasih....."
    close $f
    return
  }
}
#^~
proc MonthTopTen {nick uhost hand chan args} {
  global AlreadyGoing Question AnyonePlaying WonBefore WonTimes HintAlreadyGiven Hint Answer berhentipedflag Score filelength QNumber AlreadyGuessed
  global actch
  if {$chan != $actch} {return}
  putserv "PRIVMSG $chan :Top 10 Famili-100 Bulan Ini :"
  set Winners ""
  set f [open "MonthlyScores.txt" r]
  for { set s 0 } { $s < 10 } { incr s } {
    gets $f Tally
    set Placement [expr $s +1]
    if {$Placement == 1} {
      set Placement " Presiden: "
      set HeadHoncho [lindex $Tally 0]
    }
    if {$Placement == 2} {set Placement " Menteri: "}
    if {$Placement == 3} {set Placement " Gubernur: "}
    if {$Placement == 4} {set Placement " Walikota: "}
    if {$Placement == 5} {set Placement " Bupati: "}
    if {$Placement == 6} {set Placement " Camat: "}
    if {$Placement == 7} {set Placement " amongpraja: "}
    if {$Placement == 8} {set Placement " Lurah: "}
    if {$Placement == 9} {set Placement " Rw: "}
    if {$Placement == 10} {set Placement " Rt: "}
    append Winners $Placement
    append Winners [lindex $Tally 0]
    append Winners " with "
    append Winners [lindex $Tally 1]
    if {[lindex $Tally 1] > 1} {
      append Winners " poin! "
    } else {
      append Winners " poin! "
    }
  }
  putserv "PRIVMSG $chan :$Winners"
  putserv "PRIVMSG $chan : 1,13..::0,10 ® 8,10Selamat untuk $arjuna^- !0,10 ® 1,13::.."
  close $f
  return
}

No comments:

Post a Comment