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

8Beğeni(ler)

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 30 Mart 2014, 19:17   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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:   Kodu kopyalamak için üzerine çift tıklayın!
# 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(
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
) 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.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 30 Mart 2014, 21:43   #2
Çevrimiçi
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]




* 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..^^

__________________
-
 
Alıntı ile Cevapla

Alt 30 Mart 2014, 22:24   #3
Ç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]




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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.

 
Alıntı ile Cevapla

Alt 30 Mart 2014, 23:06   #4
Çevrimiçi
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]




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.. ^^

__________________
-
 
Alıntı ile Cevapla

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

Alt 08 Nisan 2014, 10:05   #6
Ç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]




xwerwoodx :p

 
Alıntı ile Cevapla

Alt 14 Haziran 2014, 08:35   #7
Ç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]




Eggdrop bota topic nasıl attırırım?

 
Alıntı ile Cevapla

Alt 14 Haziran 2014, 10:46   #8
Ç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]




açıklama kodun içinde -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

 
Alıntı ile Cevapla

Alt 14 Haziran 2014, 13:05   #9
Ç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]




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:   Kodu kopyalamak için üzerine çift tıklayın!
# 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..."


 
Alıntı ile Cevapla

Alt 14 Haziran 2014, 18:44   #10
Ç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]




Birde Bunu Musteriservde Calıstırmak istiyorum !on !offline komutunda yardımcı olabilirmisiniz acaba sizi cok yoruyorum

 
Alıntı ile Cevapla

Cevapla

Etiketler
hakkında, kodlama, sorular, tcl


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

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