IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  reklamver

Etiketlenen Kullanıcılar

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 01 Nisan 2009, 03:51   #51
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Emegine saglık fakat bana yardım ederseniz sevinirim ben kurdum sunucuma girdi baslama komutunu veriyorum ama bir türlü calıştıramadım

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver
Alt 07 Ocak 2013, 13:07   #52
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




[11:33:04] <Nick> !basla
[11:33:17] -> *Test* hello
[11:33:17] -Test- Hi Nick! I'm Test, an eggdrop bot.
[11:33:18] -Test- I'll recognize you by hostmask '*!***@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]**.***' from now on.
[11:33:19] -Test- YOU ARE THE OWNER ON THIS BOT NOW
[11:33:20] -Test- As master you really need to set a password: with /MSG Test pass <your-chosen-password>.
[11:33:21] -Test- All major commands are used from DCC chat. From now on, you don't need to use the -m option when starting the bot. Enjoy !!!
[11:33:40] -> *Test* pass ******
[11:33:41] -Test- Password set to: '******'.
[11:33:43] <Nick> !basla
[11:33:47] <Nick> !başla


Bot başlamıyor tcl de belirtilen yolları da değiştirip denedim yine de başlamadı. "pid.Test" sildim Killedim tekrar aldım yine olmadı Operi filan düzgün. Conf da sorun yok yani. Tcl içinde bir yerde hata olmalı

Birkaç ufak değişiklik yapıyorum en fazla
[13:06:30] <Nick> !basla
[13:06:30] <Test> Nick oyunu baslatti.!
diyor ama başlamıyor

 
Alıntı ile Cevapla

Alt 08 Ocak 2013, 18:26   #53
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




kulandıgın tcl yi copy edermisin ?

 
Alıntı ile Cevapla

Alt 09 Ocak 2013, 05:05   #54
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Farklılarını da denedim sonuç aynı. Son olarak yüklediğim tcl aşağıda
test.tcl
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#  The full path to the file containing the questions and answers.
#  The account the bot runs on must have read access to this file.
#  This is the default question file used at startup
set tgqdb "scripts/test/demoquestions.txt"

#Set your questions data files here
#If u dont use one of them 
#use <return> as seperator or put everything on one line with a space!! eg: set questionfiles"file&desc file&desc file&desc"   
#The first line contains the default database set above
set questionfiles "$tgqdb&default
scripts/test/demoquestions.txt
scripts/test/ccnaquestions.txt"

#    What trigger should be used for changing the category?
set tgchoosecmd "!choose"

set tgcommandlist $tgchoosecmd$
#  Flags required to be able to use the reset command.
set tgflagschoose "-|-"

#  The character that seperates the question and the answer in the
#  question/answer file.
set tgqdbsep "|"
#  The character that seperates the multiplechoices in the
# question/answer file.
set tgmultiplesep "$"
# The factor u want the hints delayd by multiplechoice questions
# This is not used by setting the next question
# 2 is a fairly good one.
set tgmultifact 2

#Do you allow cheaters in ur channel? eg. people just typing in all the possible answers?
#This is especially useful for preventing cheating on multiplechoice questions.
#The user is put on a list and has to wait until the next hint or new question.
#Set this to ON or OFF.
set tgcheat "ON"

#  What you set here defines how the bot expects the question/answer
#  pairs to be arranged.
#  If set to 1, bot expects lines in the format:
#    question<seperator>answer
#  If set to 0, bot expects lines in the format:
#    answer<seperator>question
set tgqdbquestionfirst 0

#  The full path to the file which tracks the scores. The account
#  the bot runs on must have read & write access to this file. If
#  the file does not exist, it will be created when needed.
set tgscf "scripts/test/test.scores"

#  How to send error reports. Set to 1 to send error report to an
#  e-mail address of your choice, or 0 to record errors in a file.
#  Sending via e-mail requires that the bot have access to the "mail"
#  program. If the bot doesn't have access to this program (e.g. if
#  you're running the bot on the Windows platform), then set this to
#  0 to have errors recorded in a file.
set tgerrmethod 0

#  The full path to the file which records error reports. The
#  account the bot runs on must have read & write access to this
#  file. If the file does not exist, it will be created when needed.
set tgerrfil "scripts/test/test.errors"

#  The e-mail address to send error reports to.
set tgerremail "
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
"

#  If error reports are sent via e-mail, where will the bot create
#  a temp file? /tmp is usually a good idea.
set tgerrmailtmp "/tmp"

#  The full path to the file which the bot will use to generate
#  an HTML info page. The account the bot runs on must have read
#  & write access to this file. If the file does not exist, it will
#  be created when needed.
set tghtmlfile "public_html/testpuan.html"

#  How often (in seconds) does the html file get updated. Set to 0
#  to disable HTML page.
set tghtmlrefresh 0

#  The font to use on the html page.
set tghtmlfont "verdana,helvetica,arial"

#  The name of the channel where the game will be played. The game
#  can only be played on one channel.
set tgchan "#Test"

#  How many points to give a person for a correctly answered
#  question.
set tgpointsperanswer 1

#  The maximum number of hints to give before the question 'expires'
#  and the bot goes on to another one. This EXCLUDES the first hint
#  given as the question is asked (i.e. the hint which shows no letters,
#  only placeholders).
set tgmaxhint 3

#  Should the bot show the question on each hint (1) or only on the first (0)?
set tgalwaysshowq 1

#  Show questions in all CAPS (1) or not (0)?
set tgcapsquestion 0

#  Show answers in all CAPS (1) or not (0)?
set tgcapsanswer 0

#  Show hints in all CAPS (1) or not (0)?
set tgcapshint 0

#  The minimum number of correct answers in a row by one person which
#  puts them on a winning streak. Setting this to 0 will disable the
#  winning streak feature.
set tgstreakmin 3

#  The number of missed (i.e. unanswered, not skipped) questions to allow
#  before automatically stopping the game. Setting this to 0 will cause the
#  game to run until somebody uses the stop command, or the bot dies, gets
#  killed, pings out, or whatever.
set tgmaxmissed 0

#  The character to use as a placeholder in hints.
set tghintchar "."

#  The time in seconds between hints.
set tgtimehint 20

#  The time in seconds between a correct answer, 'expired' or skipped question
#  and the next question being asked.
set tgtimenext 10

#  Phrases to use at random when someone answers a question correctly. This must
#  be a TCL list. If you don't know what that means, stick to the defaults.
set tgcongrats [list "Harikasin" "Bravo bildin" "Iyi hareket" "Tebrikler" "Iste oyun bu" "Guzel gidiyorsun" "Oyun nasil oynanir goster" "Bravo"]

#  Phrases to use when the question has 'expired'. Must also be a TCL list.
set tgnobodygotit [list "Dogru cevabi bilen cikmadi." "Evde kimse varmi?" "Cevap yok!" "Bu sorular cokmu zor geldi?" "Acaba burda yalniz miyim?" "Boyle giderse kimse balon alamayacak!" "Canlanin biraz"]

#  Phrases to use when the question expired and there's another one coming up.
#  Yep, you guessed it... another TCL list.
set tgtrythenextone [list "Bakalim sonrakini bilecekmisiniz..." "Bir sonraki icin hazirlanin..." "Belki bir sonrakini bilirsiniz..." "Bakalim bunu bulabilecekmisiniz..." "Sonraki soru geliyor..."]

#  Will the bot calculate the time it took to get the correct
#  answer (1) or not (0)? (requires TCL 8.3 or higher).
#  With a lot of multiple choice questions the timer gets out of sync.
set tgtimeanswer 0

#  Will the bot show the correct answer if nobody gets it (1) or not (0)?
set tgshowanswer 0

#  When someone answers a question, will the bot show just that person's score (0)
#  or will it show all players' scores (1) (default). This is useful in channels with
#  a large number (>20) players.
set tgshowallscores 1

#  Use bold codes in messages (1) or not (0)?
set tgusebold 0

#  Send private messages using /msg (1) or not (0)?
#  If set to 0, private messages will be sent using /notice
set tgpriv2msg 0

#  Word to use as /msg command to give help.
#  e.g. set tgcmdhelp "helpme" will make the bot give help when someone
#  does "/msg <botnick> helpme"
set tgcmdhelp "?"

#  Channel command used to start the game.
set tgcmdstart "!basla"

#  Flags required to be able to use the start command.
set tgflagsstart "-|-"

#  Channel command used to stop the game.
set tgcmdstop "!durmasanaloo"

#  Flags required to be able to use the stop command.
set tgflagsstop "o|o"

#  Channel command used to give a hint.
set tgcmdhint "!hint"

#  Flags required to be able to use the hint command.
set tgflagshint "-|-"

#  Disable the !hint command x seconds after someone uses it. This
#  prevents accidental double hints if two people use the command in
#  quick succession.
set tgtempnohint 10

#  Channel command used to skip the question.
set tgcmdskip "!skip"

#  Flags required to be able to use the skip command.
set tgflagsskip "o|o"

#  Channel command for showing the top 10 scores.
set tgcmdtop10 "!top10"

#  Flags required to use the top 10 command.
set tgflagstop10 "-|-"

#  /msg command used to reset scores.
set tgcmdreset "temizlem"

#  Flags required to be able to use the reset command.
set tgflagsreset "m|m"

#  Require password for resetting scores?
#  If enabled, you must use /msg bot reset <password> to reset scores.
#  The password is the one set by a user using '/msg bot pass'.
set tgresetreqpw 1

#  /msg command for looking up somebody's score.
set tgcmdlookup "score"

#  /msg command for looking up your target.
#  (i.e. the person ranked one higher than you).
set tgcmdtarget "target"

#  /msg command for reporting errors in questions and/or answers.
set tgcmderror "error"

#  /msg command to show channel's rules.
set tgcmdrules "kurallar"

#  Channel's rules.
set tgrules "Reklam, Tekrar, Flood, Küfür ve bezeri tutumsuz hareketlerde bulunmak yasaktir. Iyi Sanslar. :-)"

#  Number of minutes between reminders of how to report errors.
set tgerrremindtime 15

#  COLOURS
#  The colour codes used are the same as those used by mIRC:
#  00:white        01:black        02:dark blue    03:dark green
#  04:red          05:brown        06:purple       07:orange
#  08:yellow       09:light green  10:turquoise    11:cyan
#  12:light blue   13:magenta      14:dark grey    15:light grey
#
#  Always specify colour codes as two digits, i.e. use "01" for
#  black, not "1".
#  You can specify a background colour using "00,04" (white text
#  on red background).
#  To disable a colour, use "".
#  Note that disabling some colours but not others may yield
#  unexpected results.

set tgcolourstart "03"        ;#Game has started.
set tgcolourstop "04"        ;#Game has stopped.
set tgcolourskip "10"        ;#Question has been skipped.
set tgcolourerr "04"        ;#How to report errors.
set tgcolourmiss "10"        ;#Nobody answered the question.
set tgcolourqhead "0,4"        ;#Question heading.
set tgcolourqbody "0,2"    ;#Question text
set tgcolourhint "08,01"    ;#Hint.
set tgcolourstrk "12"        ;#Person is on a winning streak.
set tgcolourscr1 "04"        ;#Score of person in first place.
set tgcolourscr2 "12"        ;#Score of person in second place.
set tgcolourscr3 "03"        ;#Score of person in third place.
set tgcolourrset "04"        ;#Scores have been reset.
set tgcolourstend "12"        ;#Winning streak ended.
set tgcolourmisc1 "06"        ;#Miscellaneous colour #1.
set tgcolourmisc2 "04"        ;#Miscellaneous colour #2.
set tgcolourmpca "00,04"    ;#Color of multiplechoice answer code

set tgwrngansw " "


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#                                                                   #
#    Any editing done beyond this point is done at your own risk!   #
#                                                                   #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#Misc checks & var initialisations
set tgver "1.3.4"
set tgrel "release"
if {[info tclversion]<8.2} {
    
putlog "\002[file tail [info script]]\002 failed to load: in order to use this script, eggdrop needs to be compiled to use tcl 8.2 or higher (recommended: latest stable version)."
    
return
}
if {
$tgtimeanswer==1&&[info tclversion]<8.3} {
    
putlog "\002[file tail [info script]]\002 warning: timing of answers has been automatically disabled. this feature requires tcl 8.3 or higher."
    
set tgtimeanswer 0
}
if {![
info exists alltools_loaded]||$allt_version<205} {
    
putlog "\002[file tail [info script]]\002 failed to load: please load alltools.tcl v1.14 or higher (available with eggdrop 1.6.13 or higher) before attempting to load this script."
    
return
}
if {[
utimerexists tghtml]!=""} {killutimer $tghtmlrefreshtimer}
if {
$tghtmlrefresh>0} {
    
set tghtmlrefreshtimer [utimer $tghtmlrefresh tghtml]
}
if {![
file exists $tgqdb]} {
    
putlog "\002[file tail [info script]]\002 failed to load: $tgqdb does not exist."
    
return
}
if {[
llength [split $tgchan]]!=1} {
    
putlog "\002[file tail [info script]]\002 failed to load: too many channels specified."
    
return
}
if {![
info exists tgplaying]} {
    
set ctcp-version "${ctcp-version} Triviaplus.tcl M.C.-questions and categories. Based upon $tgver ($tgrel) from 
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB">set tgplaying 0
}
if {![
info exists tghintnum]} {set tghintnum 0}
if {![
info exists tgmissed]} {set tgmissed 0}

#Binds
bind pubm $tgflagsstart "$tgchan %$tgcmdstarttgstart
bind pubm $tgflagsstop 
"$tgchan %$tgcmdstoptgstop
proc tgbindhintcmd 
{} {
    global 
tgflagshint tgcmdhint
    bind pubm $tgflagshint 
"$::tgchan %$tgcmdhinttgforcehint
}
proc tgunbindhintcmd {} {
    global 
tgflagshint tgcmdhint
    unbind pubm $tgflagshint 
"$::tgchan %$tgcmdhinttgforcehint
}
tgbindhintcmd
bind pubm $tgflagsskip 
"$tgchan %$tgcmdskiptgskip
bind pubm $tgflagstop10 
"$tgchan %$tgcmdtop10tgshowtop10
bind join 
-|- "$tgchan *" tgjoinmsg
bind msg 
$tgcmdhelp tggivehelp
bind msg 
$tgcmdlookup tgscorelookup
bind msg 
$tgcmdtarget tgtargetlookup
bind msg 
$tgcmderror tgerror
bind msg 
$tgcmdrules tgrulesmsg
bind msg $tgflagsreset 
"$tgcmdresettgresetscores
bind kick 
"$tgchan $botnicktgbotgotkicked
bind evnt 
disconnect-server tgbotgotdisconnected


#this is the new choose command
bind pubm $tgflagschoose "$tgchan %$tgchoosecmdgive_choicenew
proc give_choicenew 
{nick uhost handle channel args} {
 global 
questions tgplaying tgqdb quest usedq questionno questionfiles gameplaying gameonoff chan tgquestionstotal tgtotalquestfiles tgquestionfiles tgset_catgentrig tgchoosecmd 
  
if {$tgplaying != 0} {
  
putserv "PRIVMSG $channel :Game is already running, please either wait for it to finish or enter !stop (if ur autorized) then $tgchoosecmd again to set category"
    
return
}
    
set questionno 0
    set quest 
""
    
set usedq ""
    
set tgset_catgentrig ""
set tgquestionfiles [split $questionfiles]
set tgtotalquestfiles [llength $questionfiles]
         
set i 0
            
while {$i<$tgtotalquestfiles} {
            
set tgfilename [lindex [split [lindex $tgquestionfiles $i] &] 0]
            
set tgdesc [lindex [split [lindex $tgquestionfiles $i] &] 1]
            if {
$tgqdb ==$tgfilename} {tggamemsg "[tgcolqbody] Current category:\00304$tgdesc[tgcolqbody] with \00304$tgquestionstotal [tgcolqbody]questions"}
            
incr i
            
}
            
tggamemsg "[tgcolqbody] Current \00304$tgtotalquestfiles\003 [tgcolqbody]categories available."
             
set i 0
            set qfile 
""
            
while {$i<$tgtotalquestfiles} {
            
set tgfilename [lindex [split [lindex $tgquestionfiles $i] &] 0]
            
set tgdesc [lindex [split [lindex $tgquestionfiles $i] &] 1]
            
set qfile [open $tgfilename r]
            
set tglist [split [read -nonewline $qfile"\n"]
            
set tgquestioncount [llength $tglist]
            
close $qfile
            incr i
            tggamemsg 
"\00304$tgdesc[tgcolqbody] with \00304$tgquestioncount\003 [tgcolqbody]questions."
                
bind pub -|- $tgdesc set_catgen
                lappend tgset_catgentrig $tgdesc
            
}
            
tggamemsg "[tgcolqbody] Which category u want to use?"
}

#set category
proc set_catgen {nick uhost handle channel text} {
 global 
tgqdb tgtotalquestfiles tgquestionfiles tgdesc lastbind tgset_catgentrig tgcmdstart
             set i 0
             
while {$i<$tgtotalquestfiles} {
            
set tgfilename [lindex [split [lindex $tgquestionfiles $i] &] 0]
            
set tgdesc [lindex [split [lindex $tgquestionfiles $i] &] 1]
            if {[
strlwr $tgdesc] != [tgstripcodes [strlwr [string trim $lastbind]]]} {
            
incr i
            
}
            if {[
strlwr $tgdesc] == [tgstripcodes [strlwr [string trim $lastbind]]]} {
            
tggamemsg "[tgcolqbody] Current category set to: \00304$lastbind"
            
tggamemsg "[tgcolqbody] Use \00304$tgcmdstart[tgcolqbody] to start the game!"
            
set tgqdb $tgfilename
                        set i 0
                         
while {$i<$tgtotalquestfiles} {
                         
unbind pub -|- [lindex $tgset_catgentrig $iset_catgen        
                         incr i
                         
}
            return
            }    
    }
}
###############################################################################
#starts the game if it isn't running.
proc tgstart {nick host hand chan text} {
    global 
tgplaying tgstreak tgchan tgerrremindtime tgerrremindtimer tgmissed tgchoosecmd tgcheat
    
if {[strlwr $tgchan]==[strlwr $chan]} {
        if {
$tgplaying==0} {
        if {
$tgcheat != "ON"} {set tgcheat "OFF"}            
            
tggamemsg "[tgcolstart]Test oyunu $nick! tarafından başlatıldı..."
            
tgnextq
            set tgplaying 1
            set tgstreak 0
            set tgmissed 0
            set tgerrremindtimer 
[timer $tgerrremindtime tgerrremind]
        }
    }
}


#stops the game if it's running.
proc tgstop {nick host hand chan text} {
    global 
tghinttimer tgnextqtimer tgplaying tgchan tgcurrentanswer tgstreak tgstreakmin
    
global tgerrremindtimer tgrebindhinttimer
    
if {[strlwr $tgchan]==[strlwr $chan]} {
        if {
$tgplaying==1} {
            
tggamemsg "[tgcolstop]Trivia game stopped by $nick!"
            
if {$tgstreakmin>0&&[lindex [split $tgstreak ,] 1]>=$tgstreakmin} { tgstreakend }
            
set tgstreak 0
            set tgplaying 0
            
catch {unbind pubm -|- "$tgchan *" tgcheckanswer}
            if {[
utimerexists tghint]!=""} {killutimer $tghinttimer}
            if {[
utimerexists tgnextq]!=""} {killutimer $tgnextqtimer}
            if {[
timerexists tgerrremind]!=""} {killtimer $tgerrremindtimer}
            if {[
utimerexists tgrebindhinttimer]!=""} {killtimer $tgrebindhinttimer}
        }
    }
}

#gives a hint if there is currently a question to answer.
proc tgforcehint {nick host hand chan text} {
    global 
tghinttimer tgnextqtimer tgplaying tgchan tgcurrentanswer tgstreak tgstreakmin
    
global tgtempnohint tgmaxhintcurrent tghintnum tgrebindhinttimer tgtempnohint
    
if {[strlwr $tgchan]==[strlwr $chan]} {
        if {
$tgplaying==1&&[utimerexists tghint]!=""} {
            
killutimer $tghinttimer
            tghint
            tgunbindhintcmd
            
if {$tghintnum<$tgmaxhintcurrent} {
                
set tgrebindhinttimer [utimer $tgtempnohint tgbindhintcmd]
            }
        }
    }
}

#skips the current question if one has been asked.
proc tgskip {nick host hand chan text} {
    global 
tghinttimer tgnextqtimer tgplaying tgchan tgcurrentanswer tgstreak
    
global tgstreakmin tgtimenext tgrebindhinttimer
    
if {[strlwr $tgchan]==[strlwr $chan]} {
        if {
$tgplaying==1&&[utimerexists tghint]!=""} {
            
tggamemsg "[tgcolskip]Skipping to next question by [tgcolmisc2]$nick's[tgcolskip] request..."
            
if {$tgstreakmin>0&&[lindex [split $tgstreak ,] 1]>=$tgstreakmin&&[strlwr [lindex [split $tgstreak ,] 0]]==[strlwr $nick]} {
                
tgstreakend
                set tgstreak 0
            
}
            catch {
unbind pubm -|- "$tgchan *" tgcheckanswer}
            
killutimer $tghinttimer
            
if {[utimerexists tgrebindhinttimer]!=""} {killtimer $tgrebindhinttimer}
            
set tgnextqtimer [utimer $tgtimenext tgnextq]
        }
    }
}

#reminds channel how to report errors in questions/answers
proc tgerrremind {} {
    global 
tgerrremindtimer tgerrremindtime botnick tgcmderror
    tggamemsg 
"[tgcolerr]Hatırlatma: Soru/Cevap hatalarını lütfen bize bildirin. Hataları bize bildirmek için \002/msg $botnick $tgcmderror <sorunumarası> \[Açıklama\]\002 komutunu kullanınız."
    
set tgerrremindtimer [timer $tgerrremindtime tgerrremind]
}

#bot got kicked. stop the game.
proc tgbotgotkicked {nick host hand chan targ text} {
    
tgquietstop
}

#bot got disconnected. stop the game.
proc tgbotgotdisconnected {disconnect-server} {
    
tgquietstop
}

#stops the game without telling the channel.
proc tgquietstop {} {
    global 
tgplaying tgstreak tgchan tgcurrentanswer tghinttimer tgnextqtimer tgerrremindtimer
    
global tgrebindhinttimer
    
if {$tgplaying==1} {
        
set tgstreak 0
        set tgplaying 0
        
catch {unbind pubm -|- "$tgchan *" tgcheckanswer}
        if {[
utimerexists tghint]!=""} {killutimer $tghinttimer}
        if {[
utimerexists tgnextq]!=""} {killutimer $tgnextqtimer}
        if {[
timerexists tgerrremind]!=""} {killtimer $tgerrremindtimer}
        if {[
utimerexists tgrebindhinttimer]!=""} {killtimer $tgrebindhinttimer}
    }
}

#reads the question database.
proc tgreadqdb {} {
    global 
tgqdb tgquestionstotal tgquestionslist
    set tgquestionstotal 0
    set tgquestionslist 
""
    
set qfile [open $tgqdb r]
    
set tgquestionslist [split [read -nonewline $qfile"\n"]
    
set tgquestionstotal [llength $tgquestionslist]
    
close $qfile
}

#selects the next question.
proc tgnextq {} {
    global 
tgqdb tgcurrentquestion tgcurrentanswer tgquestionnumber
    
global tgquestionstotal tghintnum tgchan tgquestionslist tgqdbsep tgqdbquestionfirst
    
global tgcapsquestion tgcapsanswer
    tgreadqdb
    set tgcurrentquestion 
""
    
set tgcurrentanswer ""
    
while {$tgcurrentquestion == ""} {
        
set tgquestionnumber [rand [llength $tgquestionslist]]            
        
set tgquestionselected [lindex $tgquestionslist $tgquestionnumber]
#Striping all the *mess* leaving alphanumeric.
        
set tgquestionselected [tgstripcodes $tgquestionselected]

        
set tgcurrentquestion [lindex [split $tgquestionselected $tgqdbsep] [expr $tgqdbquestionfirst^1]]
        if {
$tgcapsquestion==1} {
            
set tgcurrentquestion [strupr $tgcurrentquestion]
        }
        
set tgcurrentanswer [string trim [lindex [split $tgquestionselected $tgqdbsep$tgqdbquestionfirst]]
        if {
$tgcapsanswer==1} {
            
set tgcurrentanswer [strupr $tgcurrentanswer]
        }
    }
    unset 
tghintnum
    tghint
    bind pubm 
-|- "$tgchan *" tgcheckanswer
    
return
}

#shows timed hints.
proc tghint {} {
    global 
tgmaxhint tghintnum tgcurrentanswer tghinttimer tgchan tgmultiplesep tgmultifact
    
global tgtimehint tghintchar tgquestionnumber tgquestionstotal
    
global tgcurrentquestion tghintcharsused tgnextqtimer tgtimenext tgstreak tgstreakmin
    
global tgnobodygotit tgtrythenextone tgmissed tgmaxmissed tgcmdstart tgshowanswer
    
global tgtimestart tgtimeanswer tgalwaysshowq tgmaxhintcurrent tgtempnohint tgcapshint tgwrngansw
    
if {[catch {incr tghintnum}]!=0} {
        
set tghintnum 0
        regsub 
-all -- "\[^A-Za-z0-9\]" $tgcurrentanswer "" _hintchars
        set tgmaxhintcurrent 
[expr [strlen $_hintchars]<=$tgmaxhint?[expr [strlen $_hintchars]-1]:$tgmaxhint]
        catch {
tgunbindhintcmd}
        if {
$tgmaxhintcurrent>0} {
            
set tgrebindhinttimer [utimer $tgtempnohint tgbindhintcmd]
        }
    }
    if {
$tghintnum >= [expr $tgmaxhintcurrent+1]} {
        
incr tgmissed
        set _msg 
""
        
append _msg "[tgcolmiss][lindex $tgnobodygotit [rand [llength $tgnobodygotit]]]"
        
if {$tgshowanswer==1} {
            
append _msg " Sorunun doğru yanıtı [tgcolmisc2]$tgcurrentanswer[tgcolmiss]."
        
}
        if {
$tgmaxmissed>0&&$tgmissed>=$tgmaxmissed} {
            
append _msg $tgmissed soruya yanıt verilmediği için oyun otomatik olarak durduruldu.. Tekrar başlatmak için $tgcmdstart"
            
tgquietstop
        
} else {
            
append _msg " [lindex $tgtrythenextone [rand [llength $tgtrythenextone]]]"
        
}
        
tggamemsg "[tgcolmiss]$_msg"
        
if {$tgstreakmin>0&&[lindex [split $tgstreak ,] 1]>=$tgstreakmin} { tgstreakend }
        
set tgstreak 0
        
catch {unbind pubm -|- "$tgchan *" tgcheckanswer}
        if {
$tgmaxmissed==0||$tgmissed<$tgmaxmissed} {
            
set tgnextqtimer [utimer $tgtimenext tgnextq]
        }
        return
    } elseif {
$tghintnum == 0} {
        
set i 0
        set _hint 
{}
        
set tghintcharsused {}
        foreach 
word [split $tgcurrentanswer] {
            
regsub -all -- "\[A-Za-z0-9\]" $word $tghintchar _current
            lappend _hint $_current
        
}
        if {
$tgtimeanswer==1} {
            
set tgtimestart [clock clicks -milliseconds]
        }
    } elseif {
$tghintnum == 1} {
        
set i 0
        set _hint 
{}
        while {
$i<[llength [split $tgcurrentanswer]]} {
            
set _word [lindex [split $tgcurrentanswer$i]
            
set j 0
            set _newword 
{}
            while {
$j<[strlen $_word]} {
                if {
$j==0} {
                    
append _newword [stridx $_word $j]
                    
lappend tghintcharsused $i,$j
                
} else {
                    if {[
string is alnum [stridx $_word $j]]} {
                        
append _newword $tghintchar
                    
} else {
                        
append _newword [stridx $_word $j]
                        
lappend tghintcharsused $i,$j
                    
}
                }
                
incr j
            
}
            
lappend _hint $_newword
            incr i
        
}
        } else {
            
set i 0
            set _hint 
{}
            while {
$i<[llength [split $tgcurrentanswer]]} {
                
set _word [lindex [split $tgcurrentanswer$i]
                
set j 0
                set _newword 
{}
                
set _selected [rand [strlen $_word]]
                
regsub -all -- "\[^A-Za-z0-9\]" $_word "" _wordalnum
                
if {[strlen $_wordalnum]>=$tghintnum} {
                    while {[
lsearch $tghintcharsused $i,$_selected]!=-1||[string is alnum [stridx $_word $_selected]]==0} {
                     
set _selected [rand [strlen $_word]]
                    }
                }
                
lappend tghintcharsused $i,$_selected
                
while {$j<[strlen $_word]} {
                    if {[
lsearch $tghintcharsused $i,$j]!=-1||[string is alnum [stridx $_word $j]]==0} {
                        
append _newword [stridx $_word $j]
                    } else {
                        if {[
string is alnum [stridx $_word $j]]} {
                            
append _newword $tghintchar
                        
}
                }
                
incr j
            
}
            
lappend _hint $_newword
            incr i
        
}
    }
    if {
$tgcapshint==1} {
        
set _hint [strupr $_hint]
    }
    
tggamemsg "[tgcolqhead]===== İŞTE SORUNUZ [expr $tgquestionnumber+1]/$tgquestionstotal [expr $tghintnum?"(İpucu $tghintnum/$tgmaxhintcurrent)":""] ====="
# reseting wronganswer counter
# tggamemsg "resetting wrong answer counter for the hint"
    
set tgwrngansw ""
#Detection of a multiplechoice question
set tgmultiple 0    
set tgmultiquestion 
[split $tgcurrentquestion $tgmultiplesep]
set tgmultiple [llength $tgmultiquestion]
#Normal question
if {$tgmultiple==0} {
if {
$tgalwaysshowq==1||$tghintnum==0} {
 
        
tggamemsg "[tgcolqbody]$tgcurrentquestion geen multiple"
    
}
}
#Detected an multiplechoice 
if {$tgmultiple!=0} {
if {
$tgalwaysshowq==1||$tghintnum==0} {
        
set i 0
            
while {$i<$tgmultiple} {
            if {
$i==0} {
            
tggamemsg "[tgcolqbody][lindex $tgmultiquestion $i]"
            
}
            if {
$i!=0} {
            
set tganswername [strupr [string range [lindex $tgmultiquestion $i0 0]]
            
set tganswertxt [string range [lindex $tgmultiquestion $i2 end]
            
tggamemsg "[tgcolmpca]$tganswername\003:[tgcolqbody] $tganswertxt"
            
}
            
incr i
            
}
    }
}
    
tggamemsg "[tgcolhint]İpucu: [join $_hint]"
    
if {$tgmultiple ==} {    set tghinttimer [utimer $tgtimehint tghint]}
    if {
$tgmultiple !=} {    set tghinttimer [utimer [expr $tgtimehint+$itghint]}
}

#triggered when someone uses !top10 command
proc tgshowtop10 {nick host hand chan text} {
    global 
tgscores tgchan tgscorestotal
    
if {[strlwr $chan]==[strlwr $tgchan]} {
        
tggetscores
        
if {$tgscorestotal>0} {
            if {
$tgscorestotal>9} {
                
set _max 9
            
} else {
                
set _max [expr $tgscorestotal-1]
            }
            
set i 0
            
while {$i<=$_max} {
                
set _item [lindex $tgscores $i]
                
set _nick [join [lindex [split $_item ,] 2]]
                
set _score [join [lindex [split $_item ,] 0]]
                if {
$i==0} {
                    
append _scores "[tgcolscr1]$_nick $_score"
                
} elseif {$i==1} {
                    
append _scores ", [tgcolscr2]$_nick $_score"
                
} elseif {$i==2} {
                    
append _scores ", [tgcolscr3]$_nick $_score"
                
} else {
                    
append _scores ", [tgcolmisc1]$_nick $_score"
                
}
                
incr i
            
}
            
tggamemsg "[tgcolmisc1]Top 10: $_scores"
        
} else {
            
tggamemsg "[tgcolmisc1]Score table is empty."
        
}
    }
}

#checks if anyone has said the correct answer on channel.
proc tgcheckanswer {nick host hand chan text} {
    global 
tgcurrentanswer tgwrngansw tgcommandlist tgcheat
#cheat protection on
        
if {$tgcheat == "ON"} {
        if {[
strlwr $tgcurrentanswer] != [tgstripcodes [strlwr [string trim $text]]]} {
        
        if { ([
string length $text] == [string length $tgcurrentanswer]) || [string first $text $tgcommandlist] != -1} {
        
set firstone [lsearch $tgwrngansw $nick]
        if {
$firstone ==-1} {lappend tgwrngansw $nick}
       if {
$firstone !=-1} {tggamemsg "[tgcolstart] $nick Her soruya 1 defa yanıt verebilirsin.. Diğer soruyu bekle :)"}        
        }
    }
    
     if {[
strlwr $tgcurrentanswer] == [tgstripcodes [strlwr [string trim $text]]]} {
             
set firstone [lsearch $tgwrngansw $nick]
        if {
$firstone ==-1} {
        
tgcorrectanswer $nick
            
}
        if {
$firstone !=-1} {tggamemsg "[tgcolstart] $nick Senin yanıtlarını görmüyorum.."}
        }
        return
    }
    
#cheatprotection is not ON
        
if {[strlwr $tgcurrentanswer] == [tgstripcodes [strlwr [string trim $text]]]} {
        
tgcorrectanswer $nick
        
}
}

#triggered when someone says the correct answer.
proc tgcorrectanswer {nick} {
    global 
tgcurrentanswer tghinttimer tgtimenext tgchan tgnextqtimer tgstreak tgstreakmin
    
global tgscoresbyname tgranksbyname tgranksbynum tgcongrats tgscorestotal tgmissed
    
global tgtimestart tgshowallscores tgrealnames tgscoresbyrank tgtimeanswer tgwrngansw
    tggetscores
    
if {![info exists tgranksbyname([strlwr $nick])]} {
        
set _oldrank 0
    
} else {
        
set _oldrank $tgranksbyname([strlwr $nick])
    }
    
tgincrscore $nick
#resetting wrongansw list
    
set tgwrngansw ""
    
tggetscores
    set _newrank $tgranksbyname
([strlwr $nick])
    
set _timetoanswer ""
    
if {$tgtimeanswer==1} {
        
set _timetoanswer [expr [expr [clock clicks -milliseconds]-$tgtimestart]/1000.00]
    }
    
set _msg "[tgcolmisc1][lindex $tgcongrats [rand [llength $tgcongrats]]] [tgcolmisc2]$nick[tgcolmisc1]! Doğru cevap [tgcolmisc2]$tgcurrentanswer[tgcolmisc1].[expr $tgtimeanswer==1?" You got it in [tgcolmisc2]$_timetoanswer[tgcolmisc1seconds.":""]"
    
if {$_newrank<$_oldrank} {
        if {
$_newrank==1} {
            
append _msg " Birincilik koltuğu artık senin :)"
        
} else {
            if {
$tgshowallscores==0} {
                
append _msg " You've moved up in rank!"
            
} else {
                
append _msg " Tebrikler.. Bir kişiyi daha geçtin. [tgcolmisc2][ordnumber $tgranksbyname([strlwr $nick])][tgcolmisc1] Oldun. [tgcolmisc2]$tgscorestotal[tgcolmisc1], Önündeki yarışmacı [tgcolmisc2]$tgrealnames($tgranksbynum([expr $_newrank-1]))[tgcolmisc1] Puanı [tgcolmisc2]$tgscoresbyrank([expr $_newrank-1])[tgcolmisc1]."
            
}
        }
    }
    
tggamemsg "$_msg"
    
if {$tgstreak!=0} {
        if {[
lindex [split $tgstreak ,] 0]==[strlwr $nick]} {
            
set tgstreak [strlwr $nick],[expr [lindex [split $tgstreak ,] 1]+1]
            if {
$tgstreakmin>0&&[lindex [split $tgstreak ,] 1]>=$tgstreakmin} {
                
tggamemsg "[tgcolstrk][tgcolmisc2]$nick[tgcolstrk] çok başarılısın Üst üste [tgcolmisc2][lindex [split $tgstreak ,] 1] [tgcolstrk] teste doğru yanıt verdin."
            
}
        } else {
            if {
$tgstreakmin>0&&[lindex [split $tgstreak ,] 1]>=$tgstreakmin} { tgstreakend }
            
set tgstreak [strlwr $nick],1
        
}
    } else {
        
set tgstreak [strlwr $nick],1
    
}
    
set tgmissed 0
    tgshowscores $nick
    
catch {unbind pubm -|- "$tgchan *" tgcheckanswer}
    
killutimer $tghinttimer
    set tgnextqtimer 
[utimer $tgtimenext tgnextq]
}

#read current scores from file, sort and store in variable.
proc tggetscores {} {
    global 
tgscf tgscorestotal tgscores tgscoresbyname tgranksbyname tgranksbynum
    
global tgrealnames tgscoresbyrank
    
if {[file exists $tgscf]&&[file size $tgscf]>2} {
        
set _sfile [open $tgscf r]
        
set tgscores [lsort -dict -decreasing [split [gets $_sfile]]]
        
close $_sfile
        set tgscorestotal 
[llength $tgscores]
    } else {
        
set tgscores ""
        
set tgscorestotal 0
    
}
    if {[
info exists tgscoresbyname]} {unset tgscoresbyname}
    if {[
info exists tgranksbyname]} {unset tgranksbyname}
    if {[
info exists tgrealnames]} {unset tgrealnames}
    if {[
info exists tgranksbynum]} {unset tgranksbynum}
    
set i 0
    
while {$i<[llength $tgscores]} {
        
set _item [lindex $tgscores $i]
        
set _nick [lindex [split $_item ,] 2]
        
set _lwrnick [lindex [split $_item ,] 3]
        
set _score [lindex [split $_item ,] 0]
        
set tgscoresbyname($_lwrnick$_score
        set tgrealnames
($_lwrnick$_nick
        set tgranksbyname
($_lwrnick) [expr $i+1]
        
set tgranksbynum([expr $i+1]) $_lwrnick
        set tgscoresbyrank
([expr $i+1]) $_score
        incr i
    
}
    return
}

#increment someone's score.
proc tgincrscore {who} {
    global 
tgscores tgscf tgpointsperanswer tgscorestotal tgscoresbyname
    tggetscores
    
if {$tgscorestotal>0} {
        
set i 0
        
if {![info exists tgscoresbyname([strlwr $who])]} {
            
append _newscores "1,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
        
}
        while {
$i<[llength $tgscores]} {
            
set _item [lindex $tgscores $i]
            
set _nick [lindex [split $_item ,] 2]
            
set _time [lindex [split $_item ,] 1]
            
set _score [lindex [split $_item ,] 0]
            if {[
strlwr $who]==[strlwr $_nick]} {
                
append _newscores "[expr $_score+$tgpointsperanswer],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":""]"
            
} else {
                
append _newscores "$_score,$_time,$_nick,[strlwr $_nick][expr [expr [llength $tgscores]-$i]==1?"":""]"
            
}
            
incr i
        
}
    } else {
        
append _newscores "1,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
    
}
    
set _sfile [open $tgscf w]
    
puts $_sfile "$_newscores"
    
close $_sfile
    
return
}

#shows the current scores on channel.
proc tgshowscores {nick} {
    global 
tgscores tgchan tgscorestotal tgshowallscores tgranksbyname tgranksbynum
    
global tgscoresbyname tgrealnames tgscoresbyrank
    tggetscores
    set i 0
    
if {$tgshowallscores} {
        while {
$i<[llength $tgscores]} {
            
set _item [lindex $tgscores $i]
            
set _nick [lindex [split $_item ,] 2]
            
set _score [lindex [split $_item ,] 0]
            if {
$i==0} {
                
append _scores "[tgcolscr1]$_nick $_score"
            
} elseif {$i==1} {
                
append _scores ", [tgcolscr2]$_nick $_score"
            
} elseif {$i==2} {
                
append _scores ", [tgcolscr3]$_nick $_score"
            
} elseif {[onchan $_nick $tgchan]} {
                
append _scores ", [tgcolmisc1]$_nick $_score"
            
}
            
incr i
        
}
        
tggamemsg "[tgcolmisc1]Puan Tablosu: $_scores 0,4Tebrikler ;)"
    
} else {
        if {
$tgranksbyname([strlwr $nick])==1} {
            
set _tgt "."
        
} else {
            
set _tgt ", behind [tgcolmisc2]$tgrealnames($tgranksbynum([expr $tgranksbyname([strlwr $nick])-1]))[tgcolmisc1] with [tgcolmisc2]$tgscoresbyrank([expr $tgranksbyname([strlwr $nick])-1])[tgcolmisc1]."
        
}
        
tggamemsg "[tgcolmisc2]$nick [tgcolmisc1]now has [tgcolmisc2]$tgscoresbyname([strlwr $nick]) [tgcolmisc1][expr $tgscoresbyname([strlwr $nick])==1?"point":"points"] and is ranked [tgcolmisc2][ordnumber $tgranksbyname([strlwr $nick])] [tgcolmisc1]of [tgcolmisc2]$tgscorestotal[tgcolmisc1]$_tgt"
    
}
}

#reset current scores.
proc tgresetscores {nick host hand text} {
    global 
tgscf tgscorestotal tgscores tgplaying tgresetreqpw
    
if {($tgresetreqpw==&& [passwdok $hand $text]) || $tgresetreqpw==0} {
        if {[
file exists $tgscf]&&[file size $tgscf]>2} {
            
set _sfile [open $tgscf w]
            
puts $_sfile ""
            
close $_sfile
            set tgscores 
""
            
set tgscorestotal 0
        
}
        
tggamemsg "[tgcolrset]===== Score table reset by $nick! ====="
    
}
}

#triggered when a winning streak ends.
proc tgstreakend {} {
        global 
tgstreak tgrealnames
        tggamemsg 
"[tgcolstend]Çok iyi gidiyordun [tgcolmisc2]$tgrealnames([lindex [split $tgstreak ,] 0]) [tgcolstend] neden vazgeçtin ?"
        
return
}

#triggered when someone joins trivia chan.
proc tgjoinmsg {nick host hand chan} {
    global 
botnick tgplaying tgcmdhelp tgcmdstart tgflagsstart tgcmdstop tgflagsstop tgchan
    
if {$nick != $botnick} {
        
set _msgg ""
        
append _mmsg "Hoşgeldin $nick Yeni Bir Oyun İşte TEST Kanalı.. Üstelik Ülkemizde İlk Defa ve Tamamen TÜRKÇE Oyun Şu an"
        
if {$tgplaying==1} {
            
append _msgg " \002Açık\002."
        
} else {
            
append _mmsgg " \002Kapalı\002."
        
}
        if {[
matchattr $hand $tgflagsstart $tgchan]&&$tgplaying==0} {
            
append _mmsggf " To start the game, type \002$tgcmdstart\002 on $tgchan."
        
}
        
append _mmsgsg "Oyun hakkında daha ayrıntılı bilgiyi kanal oplarımızdan (@) ve #Yardim odasi görevlilerimizden alabilirsiniz.."
        
[tgpriv$nick "$_mmwsgg"
    
}
}

#triggered when someone /msgs the bot with the score lookup command.
proc tgscorelookup {nick host hand text} {
    global 
tgscoresbyname tgranksbyname tgscorestotal tgrealnames
    
if {$text==""} { set text $nick } else { set text [lindex [split $text0] }
    
tggetscores
    
if {![info exists tgscoresbyname([strlwr $text])]} {
        if {[
strlwr $text]==[strlwr $nick]} {
            
set _who "[tgcolmisc1]You are"
        
} else {
            
set _who "[tgcolmisc2]$text [tgcolmisc1]is"
        
}
        [
tgpriv$nick "[tgbold]$_who [tgcolmisc1]not on the score list."
    
} else {
        if {[
strlwr $text]==[strlwr $nick]} {
            
set _who "[tgcolmisc1]You have"
        
} else {
            
set _who "[tgcolmisc2]$tgrealnames([strlwr $text]) [tgcolmisc1]has"
        
}
        [
tgpriv$nick "[tgbold]$_who [tgcolmisc2]$tgscoresbyname([strlwr $text])[tgcolmisc1] points, ranked [tgcolmisc2][ordnumber $tgranksbyname([strlwr $text])] [tgcolmisc1]of [tgcolmisc2]$tgscorestotal[tgcolmisc1]."
    
}
}

#triggered when someone /msgs the bot with the target lookup command.
proc tgtargetlookup {nick host hand text} {
    global 
tgscoresbyname tgranksbyname tgscorestotal tgranksbynum tgrealnames
    tggetscores
    
if {![info exists tgscoresbyname([strlwr $nick])]} {
        [
tgpriv$nick "[tgbold][tgcolmisc1]You are not on the score list yet."
    
} elseif {$tgranksbyname([strlwr $nick])==1} {
        [
tgpriv$nick "[tgbold][tgcolmisc1]You are in first place!"
    
} else {
        [
tgpriv$nick "[tgbold][tgcolmisc1]You are on [tgcolmisc2]$tgscoresbyname([strlwr $nick])[tgcolmisc1]. Your next target is [tgcolmisc2]$tgrealnames($tgranksbynum([expr $tgranksbyname([strlwr $nick])-1])) [tgcolmisc1]with [tgcolmisc2]$tgscoresbyname($tgranksbynum([expr $tgranksbyname([strlwr $nick])-1]))[tgcolmisc1], ranked [tgcolmisc2][ordnumber [expr $tgranksbyname([strlwr $nick])-1]] [tgcolmisc1]of [tgcolmisc2]$tgscorestotal[tgcolmisc1]."
    
}
}

#triggered when someone /msgs the bot with the error reporting command.
proc tgerror {nick host hand text} {
    global 
tgquestionstotal tgquestionslist tgerrmethod tgerrfil tgerremail tgerrmailtmp
    
if {$text==""||![string is int [lindex [split $text0]]} {
        [
tgpriv$nick "[tgbold][tgcolmisc1]You need to specify the number of the question."
        
return
    }
    
tgreadqdb
    set _qnum 
[lindex [split $text0]
    if {
$_qnum>$tgquestionstotal} {
        [
tgpriv$nick "[tgbold][tgcolmisc1]No such question."
        
return
    }
    
set _qques [lindex [split [lindex $tgquestionslist [expr $_qnum-1]] |] 1]
    
set _qans [lindex [split [lindex $tgquestionslist [expr $_qnum-1]] |] 0]
    
set _desc [join [lrange [split $text1 end]]
    if {
$_desc==""} { set _desc "No further info given for this error." }
    if {
$tgerrmethod==1} {
        
set _fname $tgerrmailtmp\trivia[rand 100000].tmp
        set _file 
[open $_fname w]
    } else {
        
set _file [open $tgerrfil a]
    }
    
puts $_file ""
    
puts $_file "Error report generated [strftime %A,\ %d\ %B\ %Y\ @\ %H:%M:%S]"
    
puts $_file "Reported by:\t$nick!$host"
    
puts $_file "Question #:\t$_qnum"
    
puts $_file "Question:\t$_qques"
    
puts $_file "Answer:\t\t$_qans"
    
puts $_file "Comments:\t$_desc"
    
puts $_file "------------------------------"
    
close $_file
    
if {$tgerrmethod==1} {
        
exec mail -"trivia.tcl error report from $nick$tgerremail $_fname
        file delete $_fname
        
[tgpriv$nick "[tgbold][tgcolmisc1]Thanks! Your error report has been e-mailed to my owner."
    
} else {
        [
tgpriv$nick "[tgbold][tgcolmisc1]Thanks! Your error report has been logged and will be looked at as soon as possible."
    
}
}

#triggered when someone /msgs the bot with the rules command.
proc tgrulesmsg {nick host hand text} {
    global 
tgrules
    
[tgpriv$nick "The channel's rules are as follows: $tgrules"
}

#triggered when someone /msgs the bot with the help command.
proc tggivehelp {nick host hand {text ""}} {
    global 
botnick tgcmdlookup tgcmdhelp tgcmdstart tgcmdstop tgchan tgflagsstop
    
global tgcmdstop tgflagshint tgcmdhint tgflagsskip tgcmdskip tgflagsreset tgcmdreset
    
global tgcmdtarget tgcmderror tgcmdrules tgflagsstart
    
if {$text==""} {
        [
tgpriv$nick "You have access to the following /MSG commands:"
        
[tgpriv$nick "To use, /MSG $botnick <command>"
        
[tgpriv$nick "  \002[strupr $tgcmdrules]\002"
        
[tgpriv$nick "   -- Lists the channel rules."
        
[tgpriv$nick "  \002[strupr $tgcmdlookup]\002 \[nick\]"
        
[tgpriv$nick "   -- Shows you the rank & score of \[nick\], if specified,"
        
[tgpriv$nick "    otherwise, shows you your own rank & score."
        
[tgpriv$nick "  \002[strupr $tgcmdtarget]\002"
        
[tgpriv$nick "   -- Shows you the rank & score of the person ranked"
        
[tgpriv$nick "    one above you."
        
[tgpriv$nick "  \002[strupr $tgcmderror]\002 <number> \[description\]"
        
[tgpriv$nick "   -- Reports an error in question <number>"
        
[tgpriv$nick "    The description is optional, but helpful."
        
if {[matchattr $hand $tgflagsreset $tgchan]} {
            [
tgpriv$nick "  \002[strupr $tgcmdreset]\002"
            
[tgpriv$nick "   -- Resets the score table."
        
}
        [
tgpriv$nick "For a list of channel commands, /MSG $botnick [strupr $tgcmdhelp] PUBCMDS"
    
}
    if {[
strlwr $text]=="pubcmds"} {
        [
tgpriv$nick "You have access to the following channel commands:"
        
if {[matchattr $hand $tgflagsstart $tgchan]} {
            [
tgpriv$nick "  \002$tgcmdstart\002 -- starts the trivia game."
        
}
        if {[
matchattr $hand $tgflagsstop $tgchan]} {
            [
tgpriv$nick "  \002$tgcmdstop\002 -- stops the trivia game."
        
}
        if {[
matchattr $hand $tgflagshint $tgchan]} {
            [
tgpriv$nick "  \002$tgcmdhint\002 -- shows a hint."
        
}
        if {[
matchattr $hand $tgflagsskip $tgchan]} {
            [
tgpriv$nick "  \002$tgcmdskip\002 -- skips current question."
        
}
        [
tgpriv$nick "For a list of /MSG commands, /MSG $botnick [strupr $tgcmdhelp]"
    
}
}

# Returns text without colour, bold, etc. control codes.
# This is a stripped down version of the proc in MC_8's mc.moretools.tcl.
proc tgstripcodes {text} {
    
regsub -all -- "\003(\[0-9\]\[0-9\]?(,\[0-9\]\[0-9\]?)?)?" $text "" text
#stripping tabs as well
    
regsub -all -- "\t" $text " " text
    set text 
"[string map -nocase [list \002 "" \017 "" \026 "" \037 ""] $text]"
    
return $text
}

proc tggamemsg {what} {
    global 
tgchan

    putquick 
"PRIVMSG $tgchan :[tgbold]$what"
}

proc tgbold {} {
    global 
tgusebold
    
if {$tgusebold==1} { return "\002" }
}
proc tgcolstart {} {
    global 
tgcolourstart
    
if {$tgcolourstart!=""} { return "\003$tgcolourstart}
}
proc tgcolstop {} {
    global 
tgcolourstop
    
if {$tgcolourstop!=""} { return "\003$tgcolourstop}
}
proc tgcolskip {} {
    global 
tgcolourskip
    
if {$tgcolourskip!=""} { return "\003$tgcolourskip}
}
proc tgcolerr {} {
    global 
tgcolourerr
    
if {$tgcolourerr!=""} { return "\003$tgcolourerr}
}
proc tgcolmiss {} {
    global 
tgcolourmiss
    
if {$tgcolourmiss!=""} { return "\003$tgcolourmiss}
}
proc tgcolqhead {} {
    global 
tgcolourqhead
    
if {$tgcolourqhead!=""} { return "\003$tgcolourqhead}
}
proc tgcolqbody {} {
    global 
tgcolourqbody
    
if {$tgcolourqbody!=""} { return "\003$tgcolourqbody}
}
proc tgcolhint {} {
    global 
tgcolourhint
    
if {$tgcolourhint!=""} { return "\003$tgcolourhint}
}
proc tgcolstrk {} {
    global 
tgcolourstrk
    
if {$tgcolourstrk!=""} { return "\003$tgcolourstrk}
}
proc tgcolscr1 {} {
    global 
tgcolourscr1
    
if {$tgcolourscr1!=""} { return "\003$tgcolourscr1}
}
proc tgcolscr2 {} {
    global 
tgcolourscr2
    
if {$tgcolourscr2!=""} { return "\003$tgcolourscr2}
}
proc tgcolscr3 {} {
    global 
tgcolourscr3
    
if {$tgcolourscr3!=""} { return "\003$tgcolourscr3}
}
proc tgcolrset {} {
    global 
tgcolourrset
    
if {$tgcolourrset!=""} { return "\003$tgcolourrset}
}
proc tgcolstend {} {
    global 
tgcolourstend
    
if {$tgcolourstend!=""} { return "\003$tgcolourstend}
}
proc tgcolmisc1 {} {
    global 
tgcolourmisc1
    
if {$tgcolourmisc1!=""} { return "\003$tgcolourmisc1}
}
proc tgcolmisc2 {} {
    global 
tgcolourmisc2
    
if {$tgcolourmisc2!=""} { return "\003$tgcolourmisc2}
}
proc tgpriv {} {
    global 
tgpriv2msg
    
if {$tgpriv2msg==1} { return "putmsg" } else { return "putnotc" }
}
proc tgcolmpca {} {
    global 
tgcolourmpca
    
if {$tgcolourmpca!=""} {return "\003$tgcolourmpca}
}

#this generates an html file with all the people on the chan with
#their score, as well as a list of all scores, sorted by rank
proc tghtml {} {
    global 
tgchan botnick tghtmlfile tghtmlrefresh server tgscoresbyname tgranksbyname
    
global tgscorestotal tgranksbyname tgrealnames tgscoresbyrank tgranksbynum tgplaying
    
global tgquestionstotal tghtmlrefreshtimer tghtmlfont
    tggetscores
    tgreadqdb
    set _file 
[open $tghtmlfile~new w]
    
puts $_file "<!DOCTYPE HTML PUBLIC \"-/W3C/DTD HTML 4.01 Transitional/EN\">"
    
puts $_file "<html>"
    
puts $_file " <head>"
    
puts $_file "  <title>$botnick's trivia channel: $tgchan on [lindex [split $server :] 0]</title>"
    
puts $_file "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
    
puts $_file "  <meta http-equiv=\"refresh\" content=\"$tghtmlrefresh\">"
    
puts $_file "  <meta name=\"generator\" content=\"trivia.tcl script for eggdrop. 
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB">puts $_file 
"  <style type=\"text/css\">"
    
puts $_file "  <!--"
    
puts $_file "  body,td{font-family:$tghtmlfont;font-size:13px;}"
    
puts $_file "  a{text-decoration:none;color:#09f;}"
    
puts $_file "  -->"
    
puts $_file "  </style>"
    
puts $_file " </head>"
    
puts $_file " <body>"
    
puts $_file "  <h1>$tgchan on [lindex [split $server :] 0]</h1>"
    
puts $_file "  <hr size=\"1\" noshade>"
    
if {![onchan $botnick $tgchan]} {
        
puts $_file "  <p>Hmmm... for some reason I'm not on $tgchan at the moment. Please try again later.</p>"
    
} else {
        
puts $_file "  <p>Trivia game is currently <b>[expr $tgplaying==1?"on":"off"]</b>. There are <b>$tgquestionstotal</b> questions in the database."
        
puts $_file "  <p>People on $tgchan right now:<br>"
        
puts $_file "  <table width=\"50%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><table width=\"100%\" cellspacing=\"3\" border=\"0\">"
        
puts $_file "   <tr>"
        
puts $_file "    <td><b>Nick</b></td>"
        
puts $_file "    <td><b>Score</b></td>"
        
puts $_file "    <td><b>Rank</b></td>"
        
puts $_file "    <td><b>Idle</b></td>"
        
puts $_file "   </tr>"
        
foreach nick [lsort [chanlist $tgchan]] {
            
puts $_file "   <tr>"
            
puts $_file "    <td>[expr [isop $nick $tgchan]?"@":""][expr [isvoice $nick $tgchan]?"+":""]$nick[expr [string match $nick $botnick]?" (that's me!)":""]</td>"
            if {[info exists tgscoresbyname([strlwr $nick])]} {
                puts $_file "    <td>$tgscoresbyname([strlwr $nick])</td>"
            } else {
                puts $_file "    <td>-</td>"
            }
            if {[info exists tgranksbyname([strlwr $nick])]} {
                puts $_file "    <td>$tgranksbyname([strlwr $nick])</td>"
            } else {
                puts $_file "    <td>-</td>"
            }
            puts $_file "   <td>[expr [getchanidle $nick $tgchan]>10?"[getchanidle $nick $tgchan]m":"-"]</td>"
            puts $_file "   </tr>"
        }
        puts $_file "  </table></td></tr></table>"
    }
    if {$tgscorestotal>0} {
        puts $_file "  <p><small>There [expr $tgscorestotal==1?"is":"are"] currently <b>$tgscorestotal</b> [expr $tgscorestotal==1?"nick":"nicks"] in the score table:<br>"
        set _rank 1
        while {$_rank<=$tgscorestotal} {
            puts $_file "  <b>$_rank</b>. $tgrealnames($tgranksbynum($_rank)) $tgscoresbyrank($_rank)<br>"
            incr _rank
        }
    } else {
        puts $_file "  <p><small>There are currently no nicks in the score table.<br>"
    }
    puts $_file "  </small></p>"
    puts $_file "  <hr size=\"1\" noshade>"
    puts $_file "  <small>Generated on [strftime %A,\ %d\ %B\ %Y\ @\ %H:%M:%S] by <a href=\"
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
type="text/javascript" src="https://code.jquery.com/jquery-1.12.0.min.js">

 
Alıntı ile Cevapla

Alt 09 Ocak 2013, 05:39   #55
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Kayitsiz99 bu tür oyun-trivia oyun kodlarında, kanalda soru okumaması sorununun sebebi genellikle ,oyunun soru ve diğer dosyalarının code içinde ayarlandığından daha farklı bir yolda olması çıkar.

yani kod soruların olduğu txt dosyasını göremez bu nedenle kanalda oyun işlemez.yukarda postaladığınız kodda görüldüğü kadarıyla kodun okuyacağı soru dosyası botun scripts klasörü içindeki "test" adında başka bir klasörün içinde olmalıymış.öncelikle bunu kontrol etmenizi öneririm.

eggdrop/scripts/test/ dizininde bu oyunun soru error vs dosyaları var mı? başka bir dizin-yoldaysa o şekilde kod içinde değişmeli yada kod içinde belirtilen dizine bu dosyaları taşımalısınız.değişen ayarları botun tanıması için .rehash yada .restart edip tekrar deneyin oyunu çalıştırmayı.

başlatma komutu verdiğinizde bota telnet/dcc üzerinden bağlı kalın.komutu verdiğinizde başlamıyorsa kodda hata oluşmuş olabilir.bu hatayı botun telnet/dcc bağlantısı üzerinden görebilirsiniz.kodun çalışmama nedenini çözmek-anlamak bu hata mesajlarından daha kolay olacak,daha doğru teşhis koyabilmemizi sağlayacaktır.hata mesajı alıyorsanız o mesajları burda paylaşınız.

 
Alıntı ile Cevapla

Alt 10 Ocak 2013, 00:22   #56
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Yollar doğru saywhat. Aksi halde telnetten, botun confunu çalıştırdığımda soru dosyasını okuyup içerisinde kaç tane soru olduğunu vs söylemez. Bunları söylüyor.
msg Test hello komutuyla nickimi tanıtıp şifreyi de tanımlıyorum.
Yani sorun yok gibi görünüyor.
Şu an hatırlamıyorum ama bir yerde tcl versiyonunun uyumsuzluğundan bahsetmişler. Bu biraz mantıklı gibi ama bilgim olmadığı için fikrim de yok. Bilgisi olan arkadaşlar bu tcl yi inceleyip fikirlerini yazarlarsa sanırım daha da çözüme yaklaşırız.
eggdrop.1.6.19 versiyonu yüklü sunucuda ve services Anope.

 
Alıntı ile Cevapla

Alt 11 Ocak 2013, 06:56   #57
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




ilk mesajı okuduğumda yine dosyaları görememe sorunudur dedim.attığınız kodda sadece ayar kısmına bakıp /scripts/test diye dizinleri ayarlı görünce büyük ihtimal dizin sorunudur dedim.koda bakmaya gerek görmedim..

siz tcl versionuyla alakalı dediler vs.. yazınca şimdi bakmak için aşağı indirdim ki...
daha kodun en başında bu kod için gereksinimleri sıralamış.daha aşağıya koda bakmaya gerek yok.tcl'den "anlayan" olmak değil Tarih'ten "anlayan" olmak yeterli bu kodun niye çalışmadığını görmek için..
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if {[info tclversion]<8.2} { putlog "\002[file tail [info script]]\002 failed to load: in order to use this script, eggdrop needs to be compiled to use tcl 8.2 or higher (recommended: latest stable version)." return } if {$tgtimeanswer==1&&[info tclversion]<8.3} { putlog "\002[file tail [info script]]\002 warning: timing of answers has been automatically disabled. this feature requires tcl 8.3 or higher." set tgtimeanswer 0 } if {![info exists alltools_loaded]||$allt_version<205} { putlog "\002[file tail [info script]]\002 failed to load: please load alltools.tcl v1.14 or higher (available with eggdrop 1.6.13 or higher) before attempting to load this script." return

bu kod en iyi ihtimalle en az 10 yaşında...büyük olasılıkla daha eski.ama en az 10 yılı temiz var.zamanında commodore 64'ümde commodore 69'umda vardı..zamanı gelirde değerlenir arayanları meraklıları olur diye düşünemedik-aklımıza gelmedi.hurdadır dedik attık.şimdi saklasak e-bay'de yüzlerce dolara okutabilirdim.
bu kodda o hesap..az daha saklayabilirseniz e-bay'de açık arttırmaya rahatlıkla konabilecek kıvama gelecektir.

illa bu kodu çalıştırmak istiyorum diyorsanız tcl8.3 serisinden belki 8.4 başlarına kadar çıkabilirsiniz ama asla 8.5 olmaz. ve eggdrop olarakda 6.14 6.15 gibi bi model işinizi görür ama 6.16 yukarsında bu kodun hiç şansı olmaz...bunları [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] sayfanın alt taraflarında old versions listesinde ,buda tcl için. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
sizdeki eski 6.19 bunun için fazlasıyla modern teknoloji kalıyor.

 
Alıntı ile Cevapla

Alt 14 Ocak 2013, 20:55   #58
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Ne yapacaz yani hocam? Çalışmayacak mı bu şey? Çalışan versiyonu olan arkadaş var mı?

 
Alıntı ile Cevapla

Alt 14 Ocak 2013, 22:12   #59
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




kodun yazarı kendi sitesine [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bu kodun son orjinal halini eklemiş.üste not düşmüş bu işleri bıraktığına dair.arşiv olarak buraya uzun zaman evvel yazdığım trivia kodunu ekliyorum belki hala birine lazım olur diye demiş.altına mail adresini vermiş yardıma ihtiyacı olan sorusu olan yazabilir ama cevap vereceğimin garantisini vermem demiş.ekleme tarihi 2009*

görüldüğü kadarıyla aynı version.orda yazanla burda kodun üstünde yazan.yani bu kodun son haline sahipsiniz.yukardaki kodda tcl versionu olarak en az 8.3.0 yukarısı diye sorgulatmış.alltools.tcl versionu için sorgulatmış eggdrop'un1.6.13 versionu yukarısında var demiş.burdan çıkartacağımız sonuç kodun eggdrop 1.6.16'dan yukarsında tcl içinde en çok tcl8.4'lerde çalışabileceği tcl8.5.0 ve yukarsında uyum sorunu yaşaması olasılığı yüksektir.nedenide yıllar içinde tcl ve eggdrop tcl komutlarındaki gelişim-değişim...

kodun yazarına mail atmayı deneyip güncellemesini isteyebilirsiniz.eski version tcl/eggdrop kurup bu kodu o şekilde yürütmeyi deneyebilirsiniz.yada piyasada çok sayıda oyun tcl'si mevcud daha yakın tarihli bi kod bulup (Türkçe olamasa dahi çevirip) kullanabilirsiniz.

şu anki makinanızda kurulu tcl versionunu görmek için : botunuzun .conf dosyasına şu iki satırı ekleyip .restart edin.
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind dcc n tcl *dcc:tcl bind dcc n set *dcc:set

büyük ihtimal zaten bu iki satır unbind olarak vardır o iki satır unbind'i bind olarak değişin.bu sayede telnet/dcc üzerinde .tcl .set komutlarını kullanabileçeksiniz.

botunuza telnet/dcc bağlanıp
.tcl set ::version
komutu botunuzun versionunu
.tcl set ::patch_Level
makinada botun görebildiği tcl versionunu verecektir. ayrıntılı bilgi -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

 
Alıntı ile Cevapla

Alt 16 Ocak 2013, 00:11   #60
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TEST Botu Soru Örnekleri




Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if {[info tclversion]<8.2} { putlog "\002[file tail [info script]]\002 failed to load: in order to use this script, eggdrop needs to be compiled to use tcl 8.2 or higher (recommended: latest stable version)." return } if {$tgtimeanswer==1&&[info tclversion]<8.3} { putlog "\002[file tail [info script]]\002 warning: timing of answers has been automatically disabled. this feature requires tcl 8.3 or higher." set tgtimeanswer 0 } if {![info exists alltools_loaded]||$allt_version<205} { putlog "\002[file tail [info script]]\002 failed to load: please load alltools.tcl v1.14 or higher (available with eggdrop 1.6.13 or higher) before attempting to load this script." return

Benim de burda dikkatimi çeken putlog çıktısının olmaması.
Yani versiyon uyumsuzluğundan olsa putlog değerindeki mesajı bize vermesi lazım hocam. Ama telnette bu hataları vermiyor.
if değerlerine bakalım:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if {[info tclversion]<8.2}

yani tclversiyonu 8.2 den küçük ise şunu yaz diyor.
Ama yazmıyor... Sonra
Alıntı:
if {![info exists alltools_loaded]||$allt_version<205}

altools versiyonu 205 ten küçükse şunu yaz diyor. Ama yazmıyor. Yani versiyon hatası olsa bunların yazması gerekmez mi?

Tam tersine, botun düzgün bir şekilde yüklendiğini ve soru dosyasında bilmem kaç tane soru olduğunu, tcl coderini, bota atanan pid numarasını ve kanalını, kısacası diğer düzgün çalışan tüm botlarda olduğu gibi gereken açıklamaların hepsini yazıp sunucuya giriyor. Fakat,
!basla
komutuna:
<Test>Nick !test oyununu başlattı
diyor ama sorular gelmiyor.

 
Alıntı ile Cevapla

Cevapla

Etiketler
test botu soru, botu, soru, test, Örnekleri


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Oyun botu soru dosyasindaki soru|cevap duzenini tersine çevirme (Çözüm) Weise Eggdrop, NeoStats, BNC 1 29 Aralık 2024 15:38
Tam Sayılar Çözümlü Soru Örnekleri Violent Matematik 0 09 Mart 2014 22:20
Test Oyun Botu BeYaZeNCy Eggdrop, NeoStats, BNC 3 21 Mayıs 2009 20:22
TEST Soru Botu Türkçe Paylaşımda Kablosuz NET Eggdrop, NeoStats, BNC 13 19 Nisan 2009 13:45
Test Soru botu hk. Yardım. Hayat Eggdrop, NeoStats, BNC 1 05 Nisan 2009 01:26