Tekil Mesaj gösterimi
Alt 05 Nisan 2014, 02:22   #5
Çevrimdışı
xwerswoodx
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Öncelikle ilk sorumda +h alınca kanaldan atma -e alma gibi sorunları dile getirmiştim, bunu çözmek için conf dosyama;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet