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

>
+
Etiketlenen Kullanıcılar

8Beğeni(ler)

 
 
LinkBack Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 05 Nisan 2014, 02:22   #5
Çevrimdışı
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

 

Etiketler
hakkında, kodlama, sorular, tcl


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
Uykusuzluk Hakkında Sorular ve Cevaplar Zen Ruh Sağlığı 0 30 Ocak 2013 16:07
Dialog kodlama hakkında.. MavipikSeL mIRC Scripting Sorunları 2 27 Mayıs 2007 09:07
Basit dialog kodlama hakkında... MavipikSeL mIRC Scripting Sorunları 5 24 Mayıs 2007 19:45
Msn hakkında genellikle sorulan sorular ? AngeL Güvenlik Açıkları 0 17 Mayıs 2007 11:35
_queue Kodlama Şekli Hakkında... yozgatli6644 mIRC Scripting Sorunları 12 22 Ağustos 2005 20:30