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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Eggdrop, NeoStats, BNC (https://www.ircforumlari.net/eggdrop-neostats-bnc/)
-   -   Trivia ve English Oyun botu sorunu. (https://www.ircforumlari.net/eggdrop-neostats-bnc/181324-trivia-ve-english-oyun-botu-sorunu.html)

SeYH_SaMiL 19 Şubat 2009 15:04

Trivia ve English Oyun botu sorunu.
 
Selamun aleyküm,
Dün den beri uğraşıyorum fakat normal oyun botu yani trivia ve english oyun botları sunucularımda başlamıyor, soruları görmüyorlar. Bir çok tcl conf ve soru bankası kullandık. Bir kaç shellci dostumda kendi kullandıkalrı tcl ,conf ve soru bankalarıyla kurmayı denedi ama bot soruları benim sunucularda görmüyor. aynı sunucularda kelime,kaos ve çarkifelek botları çalışırken nedense trivia ve english botları soruları görmüyor botlar, !baslat dediğimde Başlatıldı diyor fakat soruları görüp başlamıyor.
Soru bankasını sürekli değiştirdik denedik kendi kullandıkalrı dosyaları attılar arkadaşlar denedik yok soruları görmüyor.
Bunun nedeni ne olabilir naısl çözebilirim bu sorunu. Diğer botlar çalışıyor, bu trivia botuda sunucuya giriyor, yani engleleyen hiç bir şey yok, kanal modunu sıfırladım denedik, tek sorun bot soru bankasını görmüyor.

Yardımcı olursanız çok sevinirim, sebebi ne olabilir. Tcl yi ve confu değiştirdik denedik ama çözüm olmadı :(

SeYH_SaMiL 19 Şubat 2009 23:37

Cevap: Trivia ve English Oyun botu sorunu.
 
Bir çok arkadaş denedi ama bir türlü bot soruları göremedi başlat komutunu ilk olarak kabul etmedi yani komutu tanımadı, daha sora 3rd4l bu sorunu tcl de düzenledi ve denedik ama yine olmadı tclde hata verdi, benim sorum şöyle olacak, biz soru bankasını değiştiriyoruz ,tcl yi değiştiriyoruz confu değiştiriyoruz deniyoruz hatta eggdrop versiyonu 1.6.19 du kaldırdık 1.6.18 kurduk denedik yine bot başlamadı, !başlat komutunda başlatıldı dedi fakat soruları görmüyor.

aynı şekilde benim makinamdan açılan diğer sunucularda da bu bot başlamıyor.
acaba bu tcl den kaynaklanan yani botun tcl de verdiği hatanın nedeni whm de eggdrop kurulumu için kurduğum tcl nin versiyonundan kaynaklanıyor olabilirmi.

Yani bunun nedeni botun kendi tcl sinden kaynaklanıyordur değilmi, sonuçta eggdrop1.6.19 son sürümünü hostlara kurabiliyorum sorunsuz şekilde ve kaos , kelime,radyo,sxanx,security,kaos gibi bu botları sorunsuz şekilde çalıştırıyorum fakat açtığım sunucularda 5 arkadaşta denedi kendi kullandıkları dosyalarla birlikte hostu verdim denediler ama yok bir türlü başlamadı soruları göremedi.

Lütfen yardımcı olurmusunuz, sizce neden kaynaklanıyor olabilir. nasıl çöze bilirim sorunu.

!baslat Komutuyla aldığım hata;
Kod:

[19:11] Tcl error [tgstart]: can't read "tgmaxhintcurrent": no such variable
[19:11] <SeYH_SaMiL> !basla


SaW 20 Şubat 2009 17:03

Cevap: Trivia ve English Oyun botu sorunu.
 
Hep diyoruzki geniş hata raporuyla gelin derdinizi anlatın diyoruz.. Konsola bağlanıp nasıl hata raporu alacağınızı başka başlık altında uzun uzun anlattık. Ama kimse ilgi göstermiyor, bir kaç soru dosyası editleyip "buyrun falanca soru botu" diye konu açsak onlarca kişi ilgi gösterirdi.. Neden? Hazıra konmaya alışmış bir milletiz de ondan (sözüm sadece sana değil SeyH_SaMiL, ben genel bir sıkıntıdan dert yanıyorum)
Halbuki konsola bağlansalar, hata raporuyla gelseler hem sorunları daha çabuk çözülecek hem de herkes biraz daha çok öğrenmiş olacak bu işi..

Senin sorununa gelince, geniş bir hata raporuyla gelmemişsin, gördüğüm kadarıyla küçük bir önerim olacak onu uygula öyle dene, eğer olmazsa geniş hata raporuyla gel öyle bakalım.

tclnin en başına

set tgmaxhintcurrent 2

satırını ekle yeniden çalıştır..

trivia tcl'lerin bir çoğunda bu bu kullanılır.. Bu değişken, procedurelerin içerisinde global veriable olarak belirlenir, ancak procedure dışında her hangi bir yerde atanmaz. Biliyorsunuz ki bir değişkenin global olaması için ya procedure dışında atanması lazım ya da başına :: koyulması lazım.. bir proc içerisinde atayıp, hem o proc hem de diğer kullanılacak proc'un içerisinde ilk başta global değişkanadı olarak tanımlamak bazen yetmeyebiliyor, muhtemelen senin sorunun da bununla ilgilidir.

SeYH_SaMiL 20 Şubat 2009 18:30

Cevap: Trivia ve English Oyun botu sorunu.
 
Ben bildiğim tüm yöntmeleri denedim ve daha sora tanıdığım dostlarında fikirlerini aldım onlarada bu sorunu açtıkdan ve dakikalarca birlikte uğraştıkdan sonra makinaya kurudğumuz tcl kütüphanesinden kaynaklı bir sorun olabileceği şüphesiyle bunun botun kendi tcl 'sindenmi yoksa makinaya kurulan tcl kütüphanesi pakedindenmi kaynaklandığını sormak için iki kere sizden yardım istemek için geldim bulunduğunuz sunucuya.
Ben forumda sayısız kez eggdrop konularını okudumki oyun botları başlıklarına yalnızca yardımcı olmak için girmiş bot dosyaları palaşmışımdır, sadece öğrenmek için başlıkları okuyan biriyim.
Dahada açıklama yapmam manasız ama bir beleşci değilim ki benim zamanında ircd host aldığım firmalarda bilirki ben aşamadığım sorunlarda onlara giderdim, şu bir satırlık kodu bulmak öğrenmek için ben 2 gün aralıksız zamanımı verdim ve öğrenemedim siz yazdınız ama herkes burda eggdrop yazarı yada tcl bilgini değil, bizler takıldığımız aşamadığımız sorunlar için yardım başlıkları açıyor yardım istiyoruz bu belişçilikse(Hazıra konma) ben birdaha konu başlığı açmam yardım istemek için.
Yaptığınız yardımı, ettiğiniz söz bir hiç etti.

Kolay gelsin, iyi paylaşımlar.

SaW 20 Şubat 2009 18:40

Cevap: Trivia ve English Oyun botu sorunu.
 
Ben sana beleşçi falan demedim, ben orada genel bir sorundan dert yanıyorum sen nelerden bahsediyorsun?
Evet bulunduğum sunucuya geldin, ben orada da sana aynı şeyi söyledim başka birşey söylemedim ki?
Şimdi bizi burada başka konuma düşürme, ağzımızdan ne çıktığının farkında olalım..

(23:39) (SeYH_SaMiL): Selamun aleyküm Abdullah
(23:40) (SeYH_SaMiL): Geçen gecede görüşmüştük fakat hala soruna çözüm bulamadım ve 5 arkadaş denedi shell firması sahibi fakat nedenini bulamadık
(23:40) (SeYH_SaMiL): if te konuda açtım fakat bir cvpda gelmedi
(23:41) (SeYH_SaMiL): şöyleki açtığım sunuculara radyo,kelime,kaos,scanx,çarkifelek gibi botları kuruyorum sorunsuz çalışıyorlar
(23:42) (SeYH_SaMiL): fakat trivia ve english oyun botu sunucuya giriyor yanlız soruları görmüyor
(23:43) (SeYH_SaMiL): başlat komutunu kabul etmiyor muş dediler tcl olarak
(23:43) (SeYH_SaMiL): online olduğunuzda cvplandırırsanız çok çok sevinirim
(23:43) (SeYH_SaMiL): makinaya kurudğum tcl nin versiyonuyla alakalı bir sorun olabilirmi
(23:47) (SeYH_SaMiL): aldığım hata
(23:47) (SeYH_SaMiL): [19:11] Tcl error [tgstart]: can't read "tgmaxhintcurrent": no such variable
(23:47) (SeYH_SaMiL): [19:11] <SeYH_SaMiL> !basla
(23:48) (SaW|Arazi): tcl'n hatalıdır arkadaşım başka tcl kullan kullandığında olmuyorsa daha birbaşkasını kullan
(23:49) (SeYH_SaMiL): yaklaşık 11 12 tane tcl ve soru bankası kullandım
(23:49) (SeYH_SaMiL): merak ettiğim şey
(23:49) (SeYH_SaMiL): bu trivia botu çalışmama nedeni
(23:49) (SeYH_SaMiL): root a yani makinaya kurudğum tcl versiyonuyla alakalı olup olmayacağı
(23:49) (SeYH_SaMiL): çünki tcl kuramıyorduk makinaya
(23:50) (SeYH_SaMiL): bilgehosting den PoWerUseR en sonunda kurabildi ve deidği şey tcl görmemesi endeni isteidği dosyanın istediği yolda olmayışıymış
(23:50) (SeYH_SaMiL): oda isteidği dosyayı kurulumdaki isteidği yola atmış
(23:50) (SeYH_SaMiL): bende bu dosyanın yerini değiştirmeden kaynaklı sorun olurmu
(23:51) (SeYH_SaMiL): yoksa sorun sadece oyun botunun tcl sindenmidir
(23:51) (SeYH_SaMiL): sadece bunun için rahatsız ettim
(23:51) (SaW|Arazi): SeYH_SaMiL
(23:51) (SaW|Arazi): bana hata mesajlarıyla gel
(23:51) (SaW|Arazi): konsola bağlan
(23:51) (SaW|Arazi): .set errorInfo
(23:51) (SaW|Arazi): yaz
(23:51) (SaW|Arazi): onla gel
(23:52) (SeYH_SaMiL): gelmesemde olurmuş. neyse Abdullah saol kardeş.
(23:52) (SeYH_SaMiL): Hayırlı günler.
(23:55) (SaW|Arazi): bak işte
(23:55) ••• [SeYH_SaMiL] Böyle bir kullanıcı yok

Durduk yere trip atıyorsun, hayır birşey söylemiş olsak tamam, burada kimse kimseye yardım etmek zorunda değil, eğer yardım ediliyorsa kimsenin bu işten bir çıkarı da yok, herkes iyilik olsun diye başkasının işi görülsün diye yardım ediyor.. Sana hata raporuyla gel yardımcı olalım diyorum, bana surat yapıyorsun, ya bende sorun var SeYH_SaMiL ya da yazdıklarımı ters anlamak gibi bir sorunun var..

SaW 20 Şubat 2009 19:05

Cevap: Trivia ve English Oyun botu sorunu.
 
Daha da açıklayıcı olmak gerekirse, insanlar sorunları olduğunda geliyorlar "bot bağlanmıyor, bot çalışmıyor, bot çıkıyor, bot giriyor v.b." şeklinde dertler yakınıyorlar.
Biz de üstüne basa basa diyoruzki bir sorununuz olduğunda botun konsoluna bağlanın, .set errorInfo yazarak ayrıntılı hata raporunu alın, bize onla gelin ki size yardımcı olabilelim.
Biz müneccim değiliz, hatanın ne olduğunu görmeden çözümü söyleyemeyiz, ama zannediyorlarki biliyoruz ama söylemiyoruz, ukalalık yapıyoruz..
Yok böyle birşey. Akşama kadar onlarcası bir şekilde ulaşıp sorular soruyorlar, ben genel olarak "kimseye o şekilde yardım etmiyorum" diyorum ve gönderiyorum.
Ama herkes bir tek kendisi soruyor sanıyor ve ona da cevap vermediğimizi sanıyor, ya herkese cevap vermemiz lazım, ya da hiç kimseye. Ben genel olarak ikinci yolu seçiyorum.
Forumda ise görgüsüz gibi her soruna biz atlamıyoruz, başkaları da yardımcı olsunlar, onlar da öğrensinler diye mümkün olduğunda kimsenin çözemediği ya da çözümü zor sorulara cevap veriyorum.
Takip edersen eğer cevap verirken de mümkün olduğunca uzun uzun açıklama yapıyorum ki insanlar birşeyler öğrenebilsinler. Bizim tek derdimiz bu.
Benim bu sıkıntımı anlayacak bir çok arkadaş vardır, eğer sürekli birşeyleri hazır bekliyorsak (ben yine genel bir sorundan bahsediyorum umarım yine sen üzerine alınmazsın) birşeyler öğrenemeyiz.
Bir çok postumda bu tarz yakınmalarda bulunuyorum ben, bundan 5-6 ay önce bu tarz sorunları forum yönetimine defalarca bildirip "bu tarz konu ve postlara müsaade etmeyin, insanlar konu açmasını yardım istemesini öğrensinler" dememize rağmen bir sonuç alamadık ve nitekim
bir süre ben forumda yardımda bulunmayı da bıraktım. Tekrar söylüyorum benim bu yakınmalarım genel bir yakınmadır ama bu kadar açıklamama rağmen sen yine üzerine alınma yolunu tercih edersen benim daha fazla yapabileceğim bir şey yok kusura bakmayın.

SaW 20 Şubat 2009 19:14

Cevap: Trivia ve English Oyun botu sorunu.
 
Nerede anlaşamıyoruz biliyor musun, sen zannediyorsun ki sorunu söyleyince Tcl den mi conftan mı yoksa paketlerden mi kaynaklandığını söyleyebileceğiz, hayır arkadaşım, onun için de hata raporunu görmek lazım. Evet bir hata raporu getirmişsin ama benim istediğim o değil, benim istediğimi getir diyorum sense yardım etmek istemediğimi sanıyorsun, işte bu konuda bir anlaşabilirsek ne demek istediğimi anlayacaksın.

SeYH_SaMiL 20 Şubat 2009 19:24

Cevap: Trivia ve English Oyun botu sorunu.
 
Şöyle söyleyeyim o konuyu verdiğim hatayı araştırıdm ve tcl8.4 sürümlerinde verdiğini eggdrop forumunda bulduk fakat ben sunucumdaki tcl versiyonuna baktığımda tcl8.5 üstü sürümü olunca sanırım tcl pakedinde dosya yerini değiştirdik bundan kaynaklımıdır diye bu hatanın nedeni oyun botu tcl sinden olabilirmi şeklinde araştırdık bunu 6 firma sahibi arkadaşla denedik ve araştırdık, son olarak size sordum ve makina değiştirmeyi düşünüyordum, 2 aydır bu sunucuya kurulu tcl den sorun yaşıyorum bu nedenle eggdrop sorunlarıyla karşılaşınca zar zor 1,5 ayda kuruduğum tcl den kaynaklımıdır die şüpheye düşüyorum.

sizinde gece vakti hata mesajıyla o şekilde anlatmaya çalışırken bana bununla gel tavrını görünce haliyle gücendim ve teşekkür edip çıktım.

Burda cevabınızdada sadece sana demiyorum deyip beleşci muhabbeti içine alman cidden gücendirici birşey, bende şimdi desem alışmışsınız bana gebe millet tavrına sadece sana demiyorum desem sende alınır gücenirsin, anlatabildim değilmi sorunu.

Kolay gelsin, iyi paylaşımlar.

SaW 20 Şubat 2009 19:31

Cevap: Trivia ve English Oyun botu sorunu.
 
Ancak benim orada seni içine kattığım husus ayrıntılı hata raporu hususu, yoksa ben başka herhangi bir konuda sadece sana değil kimseye bir şey söylemiyorum, hazıra konmaktan maksatım ise konsola bağlanmayı öğrenmeyip buraya hata raporsuz geliyorlar, yardımcı olacak insanlar da sorunu tam bilemedikleri için bin tane çözüm önerisi sunuyor, soruyu soran bir tek işlem yapsa kimse bu kadar uğraşmayacak. Başka bir şey değil.

SeYH_SaMiL 25 Mart 2009 10:05

Cevap: Trivia ve English Oyun botu sorunu.
 
set tgmaxhintcurrent 2

Bu kodu eklediğimizde global içerisinden silmelimiyiz. aynı kodu, çünki kodu eklediğimde bot 5 dakika sonra lag 'a giriyor ve cpu kullanımını 50% lere çıkarıyor sonrada düşüyor sunucudan ping timeout sebebiyle, acaba nedeni ne olabilir.

SaW 25 Mart 2009 13:36

Cevap: Trivia ve English Oyun botu sorunu.
 
Hayır, eğer global içerisinden silersen değişkeni, procedure içerisinde o değişkeni tanımayacaktır. Böyle bir sebepten dolayı zaten cpu kullanımı artmaz.

CPU kullanımın neden artar?

-Çok fazla açık dosyadan dolayı artabilir, open komutuyla açılmış ama close ile kapatılmamış çok fazla dosya varsa hem CPU hem de MEMORY kullanımı artar.
-Aynı şekilde çok fazla açılmış socket bağlantı (html bağlantıları şeklindeki socketler dahil) varsa ve bunlar kapatılmamışsa yine her iki kullanım da artacaktır.
-Sonlanamayan döngüler yüzünden yine bellek ve işlemci kullanımın artabilir. (while - for - foreach şeklinde kullanılan direkt döngüler ve yapay oluşturulmuş döngülerin hepsi dahil)
-Bitmek tükenmek bilmeyen timer ve utimer'lar. Her defasında sayısı artan timer ve utimer'lar eğer sonlandırılmıyor ve her defasında sayısı artıyorsa bu da cpu ve bellek kullanımını artırır.

Bir çırpıda söylenebilecekler bunlar. Daha bir çok neden işlemci ve bellek kullanımını artırabilir.

SeYH_SaMiL 26 Mart 2009 14:59

Cevap: Trivia ve English Oyun botu sorunu.
 
Kullanmaya çalıştığım ve 5 dakka sonra aşırı cpu kullanıp düşmesine neden olan tcl lerden birini ekliyorum hatta diğerlerinide ekliyeceğim Lütfen bilgi sahibi arkadaşlar nerde hata yaptığımı söyleyebilirlermi;

Kelimetüretmece botu tcl si kullandığım;

Kod:

set tgmaxhintcurrent 2
 
set tgtimestart 2
 
# Botun kullanicagi sorularin listesinin oldugu dosya.
# Duzenleyin.!
set tgqdb "scripts/kelime.questions"
# Sorular dosyasinda sorulari cevaplardan ayirmak icin kullanilacak
# olan karakter. Dokunmayin.
set tgqdbsep "*"
# Soru ve cevaplarin sorular dosyasindaki ayirimini duzenlemeye yarar.
# Eger 1 olarak ayarli olursa soru*cevap
# Eger 0 olarak ayarli olursa cevap*soru seklinde sorular sorulucaktir.!
# Eger botunuz cevaplari soru olarak soruyorsa, bunu degistirin.
set tgqdbquestionfirst 1
# Skorlarin tutulacagi dosyanin adi. Dokunmayin.!
set tgscf "scripts/kelime.scores"
# Hatalarin admine nasil gonderilecegini ayarlar. Eger 1 olarak
# ayarlanirsa bot admine hatalari mail ile gonderir. Botun mail
# erisimi olmasi gereklidir.! Eger 0 olarak birakilirsa bot hatalari
# dosyaya kayit eder. Duzenlemeye gerek yok.
set tgerrmethod 0
# Botun hatalari kayit edecegi dosya.
set tgerrfil "scripts/kelime.errors"
# Botun admini nin Email Adresi.
set tgerremail "
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
"
# Eger bot hatalari mail ile gondericeks ebot gecici dosyalari
# nereye koyucagini ayarlar.
set tgerrmailtmp "/tmp"
# Web istatistikleri icin olusturulacak dosyanin tam yolu ve ismi.
# Ayrintili web istatistiklerinin nasil yapilacagini ogrenmek icin
# sitemizi ziyaret edin.
#set tghtmlfile "/home/adamcan/public_html/kelimeturetmece/skorlar/index.html"
# Web istatistikleri kac saniyede bir yenilenecek.!
set tghtmlrefresh 60
# Web sitesinin fontu.
set tghtmlfont "verdana,helvetica,arial"
# Oyunu oynanacagi kanal. Bu kanal sadece 1 tane olabilir. Ayrica ayni
# botda 2 ayri script birlikte calismaz.!!!
set tgchan "#Kelime"
# Her dogru cevap icin verilicek puan.
set tgpointsperanswer 15
# Maximum ipucu adedi.
set tgmaxhint 4
# Botun her ipucu verildiginde soruyu tekrar gosterir gostermemesini ayarlar.
# 1= her seferinde soruyu gosterir, 0= sadece 1 kere gosterir.
set tgalwaysshowq 1
# Sorulari BUYUK harflerle sorar. ( 0= sorulari kucuk harfle sorar.)
set tgcapsquestion 0
# Cevaplari BUYUK harfle yazar. (0= cevaplari kucuk harfle yazar.)
set tgcapsanswer 1
# Ipuclarini BUYUK harfle yazar. (0= ipuclarini kucuk harfle yazar.)
set tgcapshint 0
# Arka arkaya bilme rekorunun olabilmesi icin en az kac sorunun arka
# arkaya bilinmesi gerektigini ayarlar. (0= iptal eder)
set tgstreakmin 0
# Botu eger ayarlanan miktarda soruya cevap veren cikmazsa durur. 0 ayarlanirsa
# bot hic durmadan soru sorar.
set tgmaxmissed 0
# Sorularin kanalda sorulurken neyle sifrelenecegini ayarlar.
set tghintchar "*"
# Ipuclari arasindaki zaman farki. (saniye)
set tgtimehint 8
# Eski soruyla yeni sorulucak soru arasindaki zaman farki.
set tgtimenext 5
# Soru bilindiginde botun kullanacagi terimler.
set tgcongrats[list " Tebrikler" " Soruyu Bildin" " Mükemmelsin" " Harikasın" " Süpersin" ]
# Kimse bilemediginde botun kullanacagi terimler.
set tgnobodygotit[list " Sorular Sanırım Zor.." " Soruya Cevap Verilmedi." " HU HU Orda Kimse Varmı.." " Neden Cevap Vermiyorsunuz.." ]
# Eski soru bitip yenisi sorulurken kulanilan terimler.
set tgtrythenextone[list "Sıradaki Soruya Geçiyorum.." "Sıradaki Soru İçin Hazırmısınız..?" "Bir Sonraki Soru Geliyor..." "İşte Sıradaki Sorunuz.." ]
# Cevabin kac saniye surdugunu aktif eder. (0=kapatir)
set tgtimeanswer 1
# Eger kimse dogru cevabi veremezse bot sorunun cevabini gosterir. (0=gostermez)
set tgshowanswer 1
# Birisi sorulan soruya dogru cevap verdiginde, bot sadece o kisinin skorunumu yoksa
# butun ilk 20 yimi gostericek. 1= sadece kisinin, 0= ilk 20nin.
set tgshowallscores 1
# msglarda kalin yazi kullan(1) kullanma(0).
set tgusebold 0
# msglar notice(0) ile mi yoksa msg(1) ilemi gonderilecek. ?
set tgpriv2msg 1
# Botdan yardim almak icin kullanilalacak komut.
set tgcmdhelp "yardim"
# Botu baslatma komutu.
set tgcmdstart "!basla"
# Oyunu baslatma yetkisi ayarlari.
set tgflagsstart "-|-"
# Oyunu durdurma komutu.
set tgcmdstop "!dur"
# Oyunu durdurma yetkisi ayarlari.
set tgflagsstop "o|o"
# Ipucu almak icin kullanilan komut.
set tgcmdhint "!ipucu"
# Ipucu almak icin yetki ayarlari.
set tgflagshint "-|-"
# Ipucu verildikten sonra kac diger ipucu icin kac saniye beklenicek.
set tgtempnohint 5
# Sorulan soruyu gecmek icin kullanilan komut.
set tgcmdskip "!gec"
# Soruyu gecmek icin kullanilan yetki ayarlari.
set tgflagsskip "o|o"
# Ilk 10 nun gosterilme komutu.
set tgcmdtop10 "!top10"
# ilk 10 komutunu icin yetki ayari.
set tgflagstop10 "-|-"
# Skorlari resetlemek icin kullanilan komut.
set tgcmdreset "temizle"
set tgresetreqpw 1
# reset komutunu kullanilbek icin yetki ayari.
set tgflagsreset "o|o"
# Skorlara bakmak icin kullanilan komut.
set tgcmdlookup "skor"
# Sizden bir usttekine bakmak icin kullanilan komut.
set tgcmdtarget "hedef"
# Hatalari bildirmek icin kullanilan komut.
set tgcmderror "hata"
# Kurallari gormek icin kullanilan komutlar.
set tgcmdrules "!kurallar"
# Kanala Kurallari.!
set tgrules "Kelime Türetmece Oyununu Başlatmak İçin !basla Yazınız.!"
# Hatalari nasil bildirilecegini gonderen msg kac dakika da bir kanalda yazilicak.!
set tgerrremindtime 20
# RENKLER
# Mircdeki renk kodlari ile ayni kodlardir..!
# 00:beyaz 01:siyah 02:koyu mavi 03:koyu yesil # 04:kirmizi 05:krengi 06:pembe 07:portakal
# 08:sari 09:acik yesil 10:turkuaz 11:cyan
# 12:acik mavi 13:magenta 14:koyu gri 15:acik gri
set tgcolourstart "03" ;#Oyun baslatildi.
set tgcolourstop "03" ;#Oyun durduruldu.
set tgcolourskip "01" ;#Soru gecildi.
set tgcolourerr "01" ;#Nasil hata bildirilir.
set tgcolourmiss "04" ;#Kimse soruyu bilemedi.
set tgcolourqhead "03" ;#Soru basligi.
set tgcolourqbody "04" ;#Sorunun kendisi.
set tgcolourhint "03" ;#Ipucu.
set tgcolourstrk "07" ;#Arka arkaya bilme rekorunda olan kisi.
set tgcolourscr1 "01" ;#1.Siradaki kisi.
set tgcolourscr2 "04" ;#2.Siradaki kisi.
set tgcolourscr3 "03" ;#3.Siradaki kisi.
set tgcolourrset "07" ;#Skorlar Resetlendi.
set tgcolourstend "06" ;#Arka arkaya bilme rekoru bitti.
set tgcolourmisc1 "05" ;#Ara reng 1.
set tgcolourmisc2 "06" ;#Ara reng 2.
set tgver "1.0"
set tgrel "stable"
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} (Kelime.tcl)"
set tgplaying 0
}
if {![info exists tghintnum]} {set tghintnum 0}
if {![info exists tgmissed]} {set tgmissed 0}
#Binds
bind pubm $tgflagsstart "$tgchan %$tgcmdstart" tgstart
bind pubm $tgflagsstop "$tgchan %$tgcmdstop" tgstop
proc tgbindhintcmd {} {
global tgflagshint tgcmdhint
bind pubm $tgflagshint "$::tgchan %$tgcmdhint" tgforcehint
}
proc tgunbindhintcmd {} {
global tgflagshint tgcmdhint
unbind pubm $tgflagshint "$::tgchan %$tgcmdhint" tgforcehint
}
tgbindhintcmd
bind pubm $tgflagsskip "$tgchan %$tgcmdskip" tgskip
bind pubm $tgflagstop10 "$tgchan %$tgcmdtop10" tgshowtop10
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 "$tgcmdreset" tgresetscores
bind kick - "$tgchan $botnick" tgbotgotkicked
bind evnt - disconnect-server tgbotgotdisconnected
#starts the game if it isn't running.
proc tgstart {nick host hand chan text} {
global tgplaying tgstreak tgchan tgerrremindtime tgerrremindtimer tgmissed
if {[strlwr $tgchan]==[strlwr $chan]} {
if {$tgplaying==0} {
tggamemsg "[tgcolstart]$nick Kelime Türetmece Oyununu Başlattı.! İyi Eğlenceler.."
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]$nick Kelime Türetmece Oyunu Durdurdu..!"
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]Yeni Soruya Geçiliyor [tgcolmisc2]$nick's[tgcolskip] Öyle İstedi.!"
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]UYARI: Sorularda Ve Cevaplarda Hata Var İse Lütfen Yandaki Komutu Yazınız.. /msg $botnick $tgcmderror <Soru> \[Cevabı\]"
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]
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
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
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 "Doğru Cevap [tgcolmisc2]$tgcurrentanswer[tgcolmiss]."
}
if {$tgmaxmissed>0&&$tgmissed>=$tgmaxmissed} {
append _msg "Arka arkaya cevap verilmeyen $tgmissed soru. Bot otomatik olarak durucak. Tekrar calıştırmak için $tgcmdstart yazınız.!"
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] 2İşte Kelimeniz Düzenleyin :3 [join $tgcurrentquestion]"
tggamemsg "[tgcolqhead][tgcolhint]4 15 Puan Değerinde : 7İpucu : 3 [join $_hint]"
set tghinttimer [utimer $tgtimehint tghint]
}
#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
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
tggetscores
if {![info exists tgranksbyname([strlwr $nick])]} {
set _oldrank 0
} else {
set _oldrank $tgranksbyname([strlwr $nick])
}
tgincrscore $nick
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?"4 15 Puan Kazandınız.":""]"
if {$_newrank<$_oldrank} {
if {$_newrank==1} {
append _msg "BiRiNCi Sıradasın.."
} else {
if {$tgshowallscores==0} {
append _msg "Yüksek Listeye Çıktın..!"
} else {
append _msg "Şuanki Sıran [tgcolmisc2][ordnumber $tgranksbyname([strlwr $nick])][tgcolmisc1] [tgcolmisc2]$tgscorestotal[tgcolmisc1] doğru cevap ile, senin önünde [tgcolmisc2]$tgrealnames($tgranksbynum([expr $_newrank-1]))[tgcolmisc1] var, [tgcolmisc2]$tgscoresbyrank([expr $_newrank-1])[tgcolmisc1] doğru cevap ile."
}
}
}
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] is on a winning streak! [tgcolmisc2][lindex [split $tgstreak ,] 1] [tgcolstrk]in a row so far!"
}
} 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] Sonuclar: $_scores"
} 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==1 && [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]===== Kelime Türetmece TCL^'si Hazırlayan By DjSooN ====="
}
}
#triggered when a winning streak ends.
proc tgstreakend {} {
global tgstreak tgrealnames
tggamemsg "[tgcolstend]So much for [tgcolmisc2]$tgrealnames([lindex [split $tgstreak ,] 0])'s[tgcolstend] winning streak."
return
}
 
#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 $text] 0] }
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 $text] 0]]} {
[tgpriv] $nick "[tgbold][tgcolmisc1]You need to specify the number of the question."
return
}
tgreadqdb
set _qnum [lindex [split $text] 0]
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 $text] 1 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 -s "kelime.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
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" }
}
#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 Sorucevap Kanali: $tgchan Istatistikleri.!</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=\"Turkce Kelime.tcl \">"
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 " <b>Kelime Turetmece [lindex [split $server :] 0] sunucumuz $tgchan kanalinda oynaniyor.!</b>"
puts $_file " <hr size=\"1\" noshade>"
if {![onchan $botnick $tgchan]} {
puts $_file " <p>Suanda $tgchan kanalinda degilim.! Bu yuzden istatistikleri gosteremiyorum.!.</p>"
} else {
puts $_file " <p>Kanalda Şuanda Oyun <b>[expr $tgplaying==1?"Oynanıyor":"Oynanmıyor"]</b>. Botun hafızasında toplam olarak <b>$tgquestionstotal</b> soru bulunmakta."
puts $_file " <p>Şuanda $tgchan Kanalında Bulunanlar:<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>Skor</b></td>"
puts $_file " <td><b>Sira</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>Bu sayfa [strftime %A,\ %d\ %B\ %Y\ @\ %H:%M:%S] tarihinde <a href=\"
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Kelime.tcl</a> Tarafından Oluşturulmuştur.!.<br>"
puts $_file " Bu Sayfa her [expr $tghtmlrefresh==1?"second":"$tghtmlrefresh saniyede"] bir kendini yenilemektedir.1</small>"
puts $_file " <br><img src="
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
puts $_file " </body>"
puts $_file "</html>"
close $_file
file rename -force $tghtmlfile~new $tghtmlfile
set tghtmlrefreshtimer [utimer $tghtmlrefresh tghtml]
}
putlog "======================================================="
putlog "* Sorubotu $tgver ($tgrel) "
putlog "* Oyun Kanali: $tgchan"
tgreadqdb
putlog "Soru bankanizda $tgquestionstotal soru bulunmakta"

Tcl'ye ilk iki satırı eklediğimde bot hem başla komutunu görüyor ve başlıyor,hemde doğru cevapları görüyor. Fakat 5 dakika sonra aşırı cpu kullanarak düşüyor. Bu tcl leri normalde arkadşaların makinalarında deniyorum ve sorunsuz çalışıyorlar, arkadaşların sunucularında deniyorum tcl ler kodları eklemeden çalışıyor fakat benim makinalarda başlamıyor ve doğru cvpları görmüyordu saolsun nebiliyimben 'in veridği kodla bot çlıştı aynı mantıkla yine doğru cvpları kullanıcı veridğinde veridği tgtimestart ile ilgili hata içinde veridği koda uyarlayıp ekledim yukardaki gibi ve 5 dakika sorunsuz çalışıyor botlar fakat 5 dakka dolmadan bir anda bot hiçbir cevap vermiyor kitlenip laga giriyor ve aşırı cpu ve ram harcamaya başlıyor. Eklediğim kodları doğrumu eklemişim.

English,Trivia,Kelimetüretmece,Merlin gibi bir çok botta denedim birton tcl denedim ama bu ilk iki satrı eklemeden bot başlamıyor ve doğru cvpları görmüyor.

Bu sorunu nasıl aşabilirim. Diğer kullanmaya çalıştığım tcl leride burda paylaşıcam gerçi herkesin kullandığı aynı tcl lere sadece ilk iki satırı ekleyerek kullanmaya çalışıyorum eklemediğimdede hata veriyor ;frown


Bir üstteki postunuzdanda anladığım kadarıyla harici eklediğim bu kod nedeniyle cpu ve MEMORY kullanımı artmakta ve makina özlelikelrimde ancak 5 dakika yettiğinden 5 dakika bot sorunsuz çalışıyor fakat 5 dkaka kadar sonra yetmediğinden özlelikelr bot hiç bir şeye cevap vermiyor ve laga girip bağlantısı kesilip düşüyor. ping timeout sebebiyle.

Peki bu kullandığım örnek tcl de bu harici komutun neden olduğu bu aşırı cpu ve MEMORY kullanımını nasıl normale çevirebilirim.

SeYH_SaMiL 10 Nisan 2009 02:36

Cevap: Trivia ve English Oyun botu sorunu.
 
Arkadaşlar bu eggdroplar yani islam botu,english botu,kelime türetmece botu, normal oyun botu eggdrop 1.6.17 sürümü kuruluyken sorunsuz çalışırken eggdrop 1.6.18 ve 1.6.19 sürümlerinde doğru cvpları görmüyor ve başlatmıyor tcl de şu hatayı veriyor ilk olarak başlat komutunda;

Kod:


[01:17] Tcl error [tgstart]: can't read "tgmaxhintcurrent": no such variable
[01:17] <SeYH_SaMiL> !basla

Bu hatayı gidermek için tcl ye SaW 'ın verdiği kodu eklediğimde başla komutunu görüyor fakat bu kezde doğru cvpları görmiyor, yani kısacası eggdrop 1.6.17 sürümünde sorunsuz çalışan tcl ve dosyalar, eggdrop1.6.18 ve üzeri sürümlerde çalışmıyor tcl hatası veriyor. Bunun nedeni ne olabilir. Çarkıfelek botunu kullanmak isteyenler için eggdrop 1.6.18 kurmalıyım fakat o sürümü kuruncada diğer oyun botları tcl lerinde yukardaki hatayı veriyorlar.

Bu sorunu nasıl çöze bilirim, yardımcı olurmusunuz.

vasarelli 10 Nisan 2009 07:42

Cevap: Trivia ve English Oyun botu sorunu.
 
Toplam 1 Eklenti bulunuyor.
Seyh_Samil sorunun hakkinda pek bi fikrim yok ama bu botun soru dosyasi diger ing. tcl'lerden farkli yani genelde:
GRANDFATHER|INGILIZCE DE DEDE? seklindedir. Biz bir kac arkadas ugrastik hepsini su hale getirdik:
INGILIZCE DE DEDE?*GRANDFATHER
normal herhangi bi tcl e oyun botuna bu sorulari koyup calistirabilirsin. Sorun verecegini sanmiyorum. Calisirsa bu bot hosuna gidicektir. Umarim isini gorur. İyi forumlar.

SeYH_SaMiL 27 Nisan 2009 17:38

Cevap: Trivia ve English Oyun botu sorunu.
 
ilgin için teşekkürler fakat sorunum, kullandığım eggdrop bot dosyalarıyla alakalı değil. hangi dosyayı kullanırsam kullanayım aynı şekilde eggdrop1.6.18 ve 1.6.19 sürümlerinde tcl de hata veriyor botlar. eggdrop 1.6.17 ve önceki versiyolarda normal çalışıyorlar.

equinoxan 21 Ocak 2010 15:51

Cevap: Trivia ve English Oyun botu sorunu.
 
Alıntı:

SeYH_SaMiL Nickli Üyeden Alıntı (Mesaj 697356)
ilgin için teşekkürler fakat sorunum, kullandığım eggdrop bot dosyalarıyla alakalı değil. hangi dosyayı kullanırsam kullanayım aynı şekilde eggdrop1.6.18 ve 1.6.19 sürümlerinde tcl de hata veriyor botlar. eggdrop 1.6.17 ve önceki versiyolarda normal çalışıyorlar.

ewt bu sorun bende de mevcut ancak cozum bulamadim.. 1.6.19 calisan botlar sadece carkifelek, kaos, ve scanx botları. digelerinde hepsi ayni hata.. sorular baslamiyor.. bunun hakkında bir fikri olan varmı acaba veya 1.6.19da calisabilecek bir oyun tcl varmı elinizde.. simdiden tskler..

SeYH_SaMiL 25 Ocak 2010 22:48

Cevap: Trivia ve English Oyun botu sorunu.
 
Bir arkadaşım bu soruna şöyle bir çözüm buldu:
Eggdrop1.6.18 ve 19 sürümlerinde kurulum için makinada root da şu işlemi yapmak gerekiyor;
Alıntı:

ln -s /usr/local/lib/libtcl8.5.so /usr/lib/libtcl8.5.so
Bu işlem sorası kurulum sorunsuz olacakdır, sonra gelelim oyun botlarının tcl den kaynaklı verdikleri hataya onun içinde şöyle bir çözüm buldu;

Tc lerdeki bu kodu:
Alıntı:

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]
}
}
Şununla değiştir:
Alıntı:

if {![info exists tghintnum]} {
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]
}
} else { incr tghintnum }
Botlar sorunsuz çalışacakdır, en azından bende öyleydi şimdiye kadar.

Delioper 24 Aralık 2013 15:23

Cevap: Trivia ve English Oyun botu sorunu.
 
Tcl error [tgstart]: can't read "tgmaxhintcurrent": no such variable

aynı sorunu bende yaşıyorum arkadaşlar merlin tcl 5 dk çalışıp kanaldan çıkıyor bot

Sükunet 30 Ekim 2014 14:47

Cevap: Trivia ve English Oyun botu sorunu.
 
root@cpanel [~]# ln -s /usr/local/lib/libtcl8.5.so /usr/lib/libtcl8.5.so
ln: creating symbolic link `/usr/lib/libtcl8.5.so': File exists


Bende Bu Cevabı Aldım Verdiğiniz Komutu Yazdıgımda.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 12:11.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk