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/)
-   -   Kodlama hakkında sorular [TCL] (https://www.ircforumlari.net/eggdrop-neostats-bnc/577246-kodlama-hakkinda-sorular-tcl.html)

xwerswoodx 30 Mart 2014 19:17

Kodlama hakkında sorular [TCL]
 
TCL kodlamasını hiç bilmiyorum yeni başladım ve yavaş yavaş anlamaya çalışıyorum.[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
buradan biraz bilgi alıp ufak testler yaptım fakat hala çözemediğim bazı şeyler var.

[BOX="Soru 1"]Bot kafasına göre -e alıyor veya flood koruması yapıyor.
Bot sunucuya girip +h aldığında kafasına göre +e deki nickleri kaldırıp, flood yapanı atıyor, halbuki ben botun herhangi bir şekilde kanalda öyle bir koruma yapmasını istemiyorum. Zaten öyle bir kodda eklemedim ancak her botta tanımlanan bazı tcl dosyalarını tanımlamıştım sadece.
source scripts/alltools.tcl
source scripts/action.fix.tcl
source scripts/userinfo.tcl
source hamit/hamit.tcl[/BOX]

[BOX="Soru 2"]Bir text'e nasıl veri yazdırır ve o veriyi aktif olduğunda nasıl kullanırım?
sunucuda !kanal ekle #sohbet yazdığımda #sohbet kanalını bir text'e yazdırmak ve o texti sonradan sunucuya her girdiğinde channel add #kanal şeklinde çekmek istiyorum, ancak texte veriyi yazdırırken o textte o verinin olup olmadığını kontrol etmek istiyorum.

Ek olarak eğer bir text oluşturulmamışsa create tarzında bir komut var mı?

Kod:

# General Settings
set channel_oper        "#Opers"
set channel_logs        "#Bots"

set channel_prefix        "h"
set me                "Hamit"

# Files
set file_channel        "hamit/database/channel.dat"
#set file_language        "hamit/database/lang/tr.lang"

# Commands
bind pub - !kanal Channel

proc Channel {nick uhost hand chan text} {
global channel_oper channel_prefix me channel_logs file_channel
set fchan [lindex $text 1]
set hamionay 0
        if {[lindex $text 0] == "ekle"} {
                set hamit [open $file_channel r]
                if {[gets $fchan=1 line] > 0} {
                set hamitonay 1
                }
                close hamit

                set hamit [open $file_channel w]
                if {$hamionay == "0"} {
                        if {![validchan $fchan]} {
                                puts $hamit "$fchan=1"
                                putserv "PRIVMSG $chan $fchan kanalı listeye eklendi."
                                return 1
                        }
                close hamit
                }
        }
}

Böyle bir şey denedim ancak kayıt etmedi malesef. Mesaj yazdı ama sanırım yazma komutu puts değil. Gets ilede veriyi alıyor mu emin değilim. Dediğim gibi hiç bir şey bilmiyorum.

Ek olarak $istok gibi yada $regex gibi bir komut var mı? yani sadece ekle değilde (^ekle(me|)$) tarzında bir şeyler yapabilmek için. Veyahut $istok(ekle ekleme eklemek,$text,32) tarzında.[/BOX]

[BOX="Soru 3"]Array kullanımı hakkında?
Arraydan kastım şu

.set hamit(nicks) {
"sıfır"
"bir"
"iki"
}

Bu tarz bir kodda 2 yazdığımda $hamit(2) gibi bir komut var mı? Yani 2 yazdığımda "iki" olarak dönecek. Ek olarak badnick koruması gibi düşündüğümüzde bir nickin o listedeki bir maskeye uyup uymadığını anlamamız mümkün mü yoksa bu tarz bir yöntem ile while çekip mi bulabiliriz? Yani $hmatch tarzında bir komutu var mı?
[/BOX]

[BOX="Soru 4"]Gettok tarzında bir komut?
Mesela;
.set hamit 1=2

uyguladığım zaman $gettok($hamit,1,$asc(=)) tarzında bir komut var mı? Sadece = den öncesini yada sonrasını alacağımız bir komut.

[/BOX]

Bunları cevaplarken TCL kodlamasıyla sadece 30dk uğraşmış biri olduğumu unutmadan cevap verirseniz çok sevinirim, şuanda hemen hemen hiç bir döngüyü kullanmayı bilmiyorum, yazarken biraz açıklamalı yazarsanız daha iyi anlayabilirim.

Sitede arama yaptım ancak bir çok link düşmüş veya anlayamadım, bazıları ise benim istediğimi veremiyorlar. Geçici olarak channel add ile yapıyorum zaten kod altından ama ben oraya eklenen kanalları text'e kayıt edip her girişte çekmek istiyorum. Conf içinden yapmam gerek sanırım bunu, o konuda yardımcı olurasnız çok sevinirim.

Başlığın çok açıklamalı olmadığının farkındayım, lakin başka sorularımın olabileceğini göz önünde bulundurarak her soru için bir başlık açmak yerine bu başlık altından sormak isterim diye öyle koydum, anlayış göstereceğinizi umuyorum.

Şimdiden teşekkürler.

Entrance 30 Mart 2014 21:43

Cevap: Kodlama hakkında sorular [TCL]
 
* TCL Scripting, üzerine pek bir bilgim yok ancak, biraz ingilizcen var ise veya düzgün çeviri yapabilen bir site varsa [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] veya [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] link'ten faydalanabilirsiniz..

İyi forumlar..^^

xwerswoodx 30 Mart 2014 22:24

Cevap: Kodlama hakkında sorular [TCL]
 
Bilgi için teşekkürler, ancak en üstteki linkde aynı siteyeydi ancak direkt olarak site ismi olarak görünmediği için gözden kaçmış sanırım. Evet orası bilgi veriyor lakin yeterince açık olmuyor, gets i gösteriyor ama anlamını tam olarak anlamadım ben line sanıyorum dosyanın satır sayısına denk geliyor ama dosyadan bir veriyi nasıl çekeceğimizi anlatmıyor malesef yada ben kullanmayı öğrenemedim sanırım :)

Entrance 30 Mart 2014 23:06

Cevap: Kodlama hakkında sorular [TCL]
 
Daha da fazla bilgi edinmek istiyor iseniz akıl vermek gibi olmasın da, bu kategori altında veri alma, okuma, vb bir çok kod mevcut örnek -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] burda satır okutma ile alakalı yorumlar var, ve yazılan kodları biraz incelerseniz veya yazılan kodlara istinaden mesela "Bu kullanıcı bu sebepten ötürü atıldı." gibi, benzeri yorumlar kullanılıyor bunlardan yola çıkılarakta hiç bir bilgisi olmayan biride olsa mantığı kavrayabilir düşüncesindeyim..

İyi forumlar, ve iyi geceler.. ^^

xwerswoodx 05 Nisan 2014 02:22

Cevap: Kodlama hakkında sorular [TCL]
 
Öncelikle @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bana cevap verdiğiniz ve yardımcı olduğunuz için çok teşekkür ederim. Ben yavaş yavaş deneye deneye bir şeyler yapmaya çalışıyorum, aslında araştırıyorum ancak 64 sayfalık bir döküman var ve bir çok link düşmüş, hak verirsiniz ki bulmak biraz zor oluyor :) Ancak tabiki bir yandan araştırıyorum.

Benimle aynı sorunları yaşayan arkadaşlar için bazı soruların cevabını buldum ve vermek istiyorum, insanlar yararlansın diye :)

Öncelikle ilk sorumda +h alınca kanaldan atma -e alma gibi sorunları dile getirmiştim, bunu çözmek için conf dosyama;
Kod:

set global-chanset +nodesynch
ekledim ve sorun çözülmüş oldu.

2. sorumda ise bir texte nasıl bir veri yüklenip, okutulduğunu sormuştum onuda şöyle bir kodlama ile çözdüm;

Kod:

proc is:infile {filename args} {
        if {[file exists $filename]} {
        set dosya [open $filename r]
                while {![eof $dosya]} {
                catch {set argn0 [gets $dosya]}
                        if {$argn0 == $args} {
                        catch {close $dosya}
                        return 1
                        }
                }
        catch {close $dosya}
        }
return 0
}

Burada filename dosyanın adı yani mesela; scripts/hamit.txt, args ise burada dosyaya eklenecek veri.

Yani mesela
set hamit "hamit.txt" olarak belirlediğinizi varsayarsak,
if {[is:infile $hamit #Sohbet] == "1"]} { return 1 }
tarzında kullanabilirsiniz.

Örnek vermem gerekirse;
Kod:

proc is:operchan {args} {
global file_channel_oper
        if {[is:infile $file_channel_oper $args] == "1"} {
        return 1
        }
return 0
}

proc is:userchan {args} {
global file_channel
        if {[is:infile $file_channel $args] == "1"} {
        return 1
        }
return 0
}

Bu basit bir okuma metoduydu.

Yazma metodunda ise deneme yanılma yöntemiyle şunu fark ettim, "w" ile open yaptığımız zaman direkt olarak dosyayı hiç bir şey yazılmamış gibi yazıyordu, lakin, "a" ile yaptığımız zaman dosyaya veriyi ekliyordu.

Yani eğer bir oyun botu yapıyorsanız ve bir sıra yapmak için geçici olarak dosyaya veri yazdıracaksanız dosyayı silmek yerine w metodunu kullanabilirsiniz.

Sonrasında listelemek ve eklemek için yaptığım kodlama aslında basit ama yinede bilmeyenler için göstermek istiyorum.

Kod:

bind pub - !kanalx com:kanal
proc com:kanal {nick host hand chan text} {
global file_channel me
        if {[is:operchan $chan] == "1"} {
        set argn0 [lindex $text 0]
        set argn1 [lindex $text 1]

                if {$argn0 == "ekle" && $argn1 != ""} {
                        if {[is:muafchan $argn1] == "1"} {
                        putquick "PRIVMSG $chan :\2$argn1\2 kanalı muaf listesinde bulunuyor."
                        } elseif {[is:userchan $argn1] == "1"} {
                        putquick "PRIVMSG $chan :\2$argn1\2 kanalı zaten listede bulunuyor."
                        } else {
                        set dosya [open $file_channel a]
                        puts $dosya $argn1
                                channel add $argn1 {
                                need-op { putserv "MODE $argn1 +h $me" }
                                }
                        putquick "PRIVMSG $chan :\2$argn1\2 kanalı listeye eklendi."
                        close $dosya
                        }
                } elseif {$argn0 == "list"} {
                        putquick "PRIVMSG $chan :Kayıtlı kanallar listeleniyor;"
                        putquick "PRIVMSG $chan :\2"
                        if {[file exists $file_channel]} {
                        set dosya [open $file_channel r]
                                while {![eof $dosya]} {
                                catch {set argn2 [gets $dosya]}
                                        if {$argn2 != ""} {
                                        putquick "PRIVMSG $chan :Kanal: \2$argn2\2"
                                        }
                                }
                        catch {close $dosya}
                        putquick "PRIVMSG $chan :\2"
                        putquick "PRIVMSG $chan :Kayıtlı kanallar listelendi."
                        }
                } elseif {$argn0 == "test" && $argn1 != ""} {
                        if {[is:infile $file_channel $argn1] == "1"} then {
                        putquick "PRIVMSG $chan :\2$argn1\2 kanalı listede bulunuyor."
                        } else {
                        putquick "PRIVMSG $chan :\2$argn1\2 kanalı listede bulunmuyor."
                        }
                }
        }
return 0
}

Eklediğiniz kanallara girmesi için ise conf dosyanıza;
Kod:

set file_channel "hamit/database/channel.dat"
if {[file exists $file_channel]} {
set dosya [open $file_channel r]
        while {![eof $dosya]} {
        catch {set args [gets $dosya]}
                if {$args != ""} {
                        channel add $args {
                          need-op { putserv "MODE $args +h Bot" }
                        }
                }
        }
        catch {close $dosya}
}

şeklinde ekleyebilirsiniz.

Tekrardan söylüyorum, ben TCL konusunda herhangi bir bilgim olduğunu iddia etmiyorum, ancak bu konuda bilgisi olupta yardım etmeye üşenen insanların yapmadığı şeyi yapmaya çalışıyorum...

Tekrardan sorularım olduğu zaman yazarım, çözüm buldukcada açıklamaya çalışacağımdan şüpheniz olmasın.

Bu arada okutma kodunu @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] arkadaşımızın verdiği sayfadan bulmuştum, kendisinede teşekkür ediyorum yardımları için

Lipton 08 Nisan 2014 10:05

Cevap: Kodlama hakkında sorular [TCL]
 
xwerwoodx :p

KTeknoloji 14 Haziran 2014 08:35

Cevap: Kodlama hakkında sorular [TCL]
 
Eggdrop bota topic nasıl attırırım?

saywhat 14 Haziran 2014 10:46

Cevap: Kodlama hakkında sorular [TCL]
 
açıklama kodun içinde -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 14 Haziran 2014 13:05

Cevap: Kodlama hakkında sorular [TCL]
 
yuf ossun bana... markete gitmem lazım diye acele acele yazayım derken ayar kısımlarında "set .." 'leri eklememişim. sadece isimleri girmişim .gittim geldim başka birşey için yeniden sublime editörü açınca gördüm "set .." yazmadığımı ....pfff
yukardakini yok sayın . sildim zaten hesabımdan....

Kod:

# Komuta erişimi olacak kişilerin eggdrop kullanıcı flagları ne olmalı
set tpkflags "mnoa"

# kodu harekete geçirecek komut ne olmalı
set tpkkmt "topik"

# komut başına gelecek sembol/işaret/trigger ne olmalı
set tpktrig "!"

# topic komutu gönderimi için hangi service ile muhatap olunmalı
set tpkserv "ChanServ"

# hangi kanal üstünde kullanılacaksa botunuza bağlanın : .chanset #kanal +topik
setudef flag topik

bind pub - $tpktrig$tpkkmt top:topik

proc top:topik {nick uhost hand chan text} {
  if {![channel get $chan topik]} { return }
      set tpkmsj [join [lrange [split $text] 0 end]]
    # aşağıdaki  if {![isop $nick $chan]} { satırları aktif edilecekse
    #  yani kanal opları kullansın* seçilecekse bu if {![matchattr [nick2hand $nick] $::tpkflags $chan]} {
    # ile başlayan satırların başına # ekleyerek pasif kılmalısınız.
    # aksi halde kanalda op olsalar dahi botun kullanıcı listesinde istenen flaglarla
    # ekli değilselerde çalışmayacaktır. yani ikisi arasında seçim yapmalısınız.
    # ya kullanıcı flagları ya kanal yetkileri...şu haliyle kullanıcı flaglarına bakar...
  if {![matchattr [nick2hand $nick] $::tpkflags $chan]} {
          puthelp "notice $nick :\00312Bu komutu kullanmaya yetkili değilsiniz. \
      Komuta erişim için $::tpkflags eggdrop kullanıcı flaglarına sahip olmalısınız.\003"
      return 0
      }
    # kanal oplarının kullanımına açmak için alttaki satırların başlarındaki # 'ları kaldırın.
        # oplar dışında halfop ve voicelar içinde kullansın isteniyorsa if {![isop $nick $chan]} {
    # satırını if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} {
    # olarak değişmeniz gerekir.
       
  #if {![isop $nick $chan]} {
  #    puthelp "notice $nick :\00312Bu komutu kullanmaya yetkili değilsiniz. \
  #  $chan kanalında en az Op ( @ ) olmalısınız...\003"
  #      return 0
  #  }
 
  if {[llength $tpkmsj] < "1"} {
          puthelp "notice $nick :\002Kullanım şekli\002 : \00304$::lastbind <kanal topiği>\003"
      return
    }
     
  if {![botisop $chan]} {
          puthelp "notice $nick :$chan \00312kanalında yetkim yok...\003"
      return 0
    }
     
    putserv "privmsg $::tpkserv :topic $chan $tpkmsj"
    puthelp "notice $nick :$chan \00312kanalının Topiği\003 $tpkmsj \00312olarak değiştirildi...\003"
}
   
putlog "ok..."


KTeknoloji 14 Haziran 2014 18:44

Cevap: Kodlama hakkında sorular [TCL]
 
Birde Bunu Musteriservde Calıstırmak istiyorum !on !offline komutunda yardımcı olabilirmisiniz acaba sizi cok yoruyorum

saywhat 14 Haziran 2014 20:08

Cevap: Kodlama hakkında sorular [TCL]
 
bu kodu müsteri servis için kullandığınız koda olduğu gibi ekleyin.

Kod:

# kodu kullanıma açma/kapama işlerinde kullanılacak kullanıcı tanımlı flagtır.
setudef flag musteriserv

# komutu kullanma yetkileri n = bot sahibi .conf'ta set owner satırında ayarlı kişi*
# m = bot master
set musteri(flagx) "mn"

# kullanılacak komut:
set musteri(komut) "musteriserv"

# komut başına gelecek sembol/işaret/trigger
set musteri(semb) "!"

bind pub - $::musteri(semb)$::musteri(komut) must_serv:ac_kapa

proc must_serv:ac_kapa {nick uhost hand chan text} {
    if {![matchattr [nick2hand $nick] $::musteri(flagx) $chan]} {
      puthelp "notice $nick :\00312Bu komutu kullanma erişiminiz yok...\003\
      \00304$::musteri(flagx)\003 \00312kullanıcı flaglarına sahip olmalısınız...\003"
      return 0
      }
      set kmt [lindex [split $text] 0]

    switch -exact -- $kmt {
    on {
        if {[channel get $chan musteriserv]} {
            puthelp "notice $nick :$chan \00314kanalında Müsteri servis halihazırda aktif durumda... \
            Kapatmak için\003 \00304$::lastbind off\003"
          } else {
          channel set $chan +musteriserv
            puthelp "notice $nick :$chan \00314kanalında Müsteri servis aktif edildi... \
            Kapatmak için\003 \00304$::lastbind off\003"
            }
        }
    off {
        if {![channel get $chan musteriserv]} {
            puthelp "notice $nick :$chan \00314kanalında Müsteri servis halihazırda kapalı durumda... \
            Açmak için\003 \00304$::lastbind on\003"
          } else {
          channel set $chan -musteriserv
            puthelp "notice $nick :$chan \00314kanalında Müsteri servis pasif edildi... \
            Açmak için\003 \00304$::lastbind on\003"
            }
        }
    default {
            puthelp "notice $nick :\002Kullanımı\002 : \00304$::lastbind on/off\003"
        }
    }
    return 0
}

putlog "ok..."

daha sonra müsteri servis kodu içindeki tüm prosedürlerin altına :

"proc .... satırlarının hemen bir altına "

Kod:

if {![channel get $chan musteriserv]} { return 0 }
satırını herbirine ekleyin ki böylece off edildiğinde tüm müşteri servis script komutları devredışı olsun.on edildiğinde de hepsi yeniden kullanıma açılsın....

bu arada yukarıda verdiğim topik kodunda da bu geçerli olsun* isteniyorsa o kodda ki
Kod:

setudef flag topik
satırını silin ve topik prosedürü altındaki
Kod:

if {![channel get $chan topik]} { return }
satırını da
Kod:

if {![channel get $chan musteriserv]} { return 0 }
olarak değişin. o zaman onuda kapsar on/off komutları...

(eğer bu topik scriptini ayrı bir script olarak eklediyseniz yani müsteri servis kodu içinde değilde ayrı ise o zaman
Kod:

setudef flag topik
yerine
Kod:

setudef flag musteriserv
satırı eklenmeli yok diğer müsteri servis kodlarıyla bir arada ise yukarıda anlattığım şekilde yaparsınız...)

xwerswoodx 15 Haziran 2014 12:37

Cevap: Kodlama hakkında sorular [TCL]
 
Alıntı:

KraLSheLLNet Nickli Üyeden Alıntı (Mesaj 1041449843)
Eggdrop bota topic nasıl attırırım?

Kod:

putquick "TOPIC #kanal mesaj"
şeklinde attırabilirsin

Yani kodlarsak basitcesi;

Kod:

bind pub - !topic proc:topic

proc proc:topic {nick hand host chan text} {
set argn1 = [lindex $text 0]
putquick "PRIVMSG ChanServ SET $argn1 TOPICLOCK off"
putquick "TOPIC $argn1 Blablabla \00301Siyah \00301,04Arkası kırmızı \002Kalın\002 \037Altı Çizili\003\037"
}

Denemedim ama sorun olmaması gerek :) Sadece basitce bir kodlama

saywhat 15 Haziran 2014 13:47

Cevap: Kodlama hakkında sorular [TCL]
 
Tcl'de arg / args / argv / argc /argn ... vs "arg*" ifadelerinin "özel" kullanım alanları,kendilerine has özellikleri bulunmakta... SafeTcl - PureTcl - Tcl/tk 'da bir takım "özel" paketler üzerinde kullanım alanları vardır ki eggdrop-Tcl ile Tcl/tk farklıdır. -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
eggdrop bir Tcl extension (Tcl uzantısı/türevi)'dir. kaynak kodları C ile yazılırken her bir kullanacağı Tcl komutları ve kodları tanımlanmıştır ki bu tanımlanırken SafeTcl'deki uygulamalardan ayrı kendine has bir Tcl komut ve prosedürlerini doğurmuştur.
örnek Tcl (PureTcl)'de bind'lerin anlamı/kullanımı eggdrop-Tcl'den apayrıdır.-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
#Tcl geliştiricilerinin bulunduğu ortama sıkça,hemen hergün Tcl == eggdrop mantığıyla gelip eggdrop Tcl script sorunuyla eggdrop kullanıcıları yardım isterler. Tcl geliştiricilerinin eggdrop hakkında ve eggdrop'taki Tcl kullanımı hakkında en ufak bir "fikri" dahi yoktur. Bu nedenlede kullanıcıyı direk eggdrop/Tcl yardımı verilen kanallara yönlendirirler.
(hatta bundan artık iyice sıkıldıklarından direk kanal topiklerine ('Tcl and Tk | for anything eggdrop related, including scripting for eggdrop, please go to #eggdrop | NB: ijchain is a bot bridging a jabber chat') ve wiki sayfalarına eklemişlerdir.. -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] )

yukarıda verdiğiniz script örneğinde bazı "sorunlar/hatalar" kendiniz değerlendirip bunları görebilmeniz için :

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

KTeknoloji 15 Haziran 2014 17:27

Cevap: Kodlama hakkında sorular [TCL]
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

daha sonra müsteri servis kodu içindeki tüm prosedürlerin altına :

"proc .... satırlarının hemen bir altına "

Kod:
if {![channel get $chan musteriserv]} { return 0 }
satırını herbirine ekleyin ki böylece off edildiğinde tüm müşteri servis script komutları devredışı olsun.on edildiğinde de hepsi yeniden kullanıma açılsın....

bu arada yukarıda verdiğim topik kodunda da bu geçerli olsun* isteniyorsa o kodda ki
Kod:
setudef flag topik

Dediginiz Kodlar TCL de Bulamadım

@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Bunu Ben !on !offline Şeklinde Calıstırmak istiyorum Elemanlar Herzaman Topic Yazmaz
Yinede Teşekkürler

Birde Kodlarınızı Ekledikten Sonra


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 15 Haziran 2014 18:12

Cevap: Kodlama hakkında sorular [TCL]
 
!musteriserv on / musteriserv off yukarıda verdiğim kodun kullanım şekli !musteriserv dendiğindede yardım atar...
kodu nereye nasıl eklediğinizi bilemediğimden resimde görünen hata ile ilgili birşey söyleyemem.

siz on off komutlarını sadece topik için mi istiyorsunuz ? tüm müsteri servis komutları/scripti için istemiyormuydunuz ?

bir arka sayfada verdiğim topik kodunun en tepesinde setudef flag topik satırı...

bakın kodu şimdi botuma yükleyip denemesini kanal üstünde yaptım..
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...][Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
aynı andada bota bağlı kalıp izledim hiçbir hata mesajı yok.
(yukarıda tarif ettiğim şekilde bir koda eklenmediyse ancak hata atar.aksi halde kodda sıkıntı yok.)

KTeknoloji 15 Haziran 2014 20:16

Cevap: Kodlama hakkında sorular [TCL]
 
Bunu Aslında Topice Yansıtmak istiyorum şu şekil


20:16] <KraLSheLL> !on = Destek Departmanimiz Suanda Online Çalışma Saatlerimiz : Sabah 09:00 Akşam 02:00
[20:16] <KraLSheLL> !offline = Destek Departmanimiz Suanda Ofline Çalışma Saatlerimiz : Sabah 09:00 Akşam 02:00
[20:16] <KraLSheLL> !yapimci = MusteriServ.Tcl Yapimcisini Gösterir

saywhat 15 Haziran 2014 20:55

Cevap: Kodlama hakkında sorular [TCL]
 
açıklamaları kod içinde...

Kod:

# !on için atılacak topik
set ontpk "Destek Departmanimiz Suanda Online Çalışma Saatlerimiz : Sabah 09:00 Akşam 02:00"

# ! off için atılacak topik
set offtpk "Destek Departmanimiz Suanda Ofline Çalışma Saatlerimiz : Sabah 09:00 Akşam 02:00"

# !yapımcı komutunda kanala postalanacak.
set yapimci "MusteriServ.Tcl Yapimcisini Gösterir"

# kodun çalışacağı kanal adı ( büyük-küçük harf uyumlu yazılmalı )
set kanal "#musteriserv-kanal"

# topik atma işi için muhatap olunacak service.
set tpkserv "ChanServ"

bind pubm mn "$kanal *" tpk_topik        ;# mn bot sahibi ve bot masteri komut erişimi demektir.

proc tpk_topik {nick uhost hand chan text} {
 # if {![isop $nick $chan]} { return 0;}  ;# kanal opları kullanabilsin deniyorsa satır başındaki # kaldırın.
    set komut [lindex [split $text] 0]
   
    switch -exact -- $komut {
  "!on" { putserv "privmsg $::tpkserv :topic $chan $::ontpk";}
  "!off" { putserv "privmsg $::tpkserv :topic $chan $::offtpk";}
  "!yapımcı" { puthelp "privmsg $chan :$::yapimci";}
    default { putlog "bla bla ... bla ....";}
    }
    return 0
}

putlog "ok..."



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

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