![]() |
TCL scripting öğrenmek istiyorum TCL scripting öğrenmek isteyen arkadaşlara bu başlık altında yardımcı olmaya çalışacağım. Çok ilgi çekecek bir konu olmadığını biliyorum, ancak iyi niyetle bu işi öğrenmek isteyen ama bir türlü kaynak bulamayan arkadaşlara takıldıkları yerlerde bu başlık altında elimizden geldiğince cevap vereceğiz. Bazı kurallarımız var: ◘ Bu başlık insanlara sadece komut bazında yardımcı olmak içindir. ◘ Herhangi bir kod yada script isteğine bu başlık altında cevap verilmeyecektir. ◘ Elinizdeki başka scriptlerle ilgili bu başlık altında yardımcı olunmayacaktır. ◘ Elinizdeki herhangi bir mIRC kodunu TCL scriptinge dönüştürme sorularınız yanıtsız kalacaktır. ◘ Mevcut botlarınızın karşılaştığı hatalarla ilgili bu başlık altında yardımcı olunmayacaktır. Bu gibi sorunlarınız için başka konular açınız ya da başka başlıklar altında yardım isteyiniz. Her scripting dilinde olduğu gibi TCL scriptingte de o scriptinge özel komutlar vardır. Eğitim adı altında bir başlık açıp tek tek komutları açıklamaktansa insanların sorduklarını açıklamak daha mantıklı geldi bana. Siz de merak ettiğiniz komutları burada sorabilir ve bizden elimizden geldiğince cevap alabilirsiniz. Bu başlık altındaki sorular nasıl olmalı? Örnek: • lindex komutunu anlatabilir misiniz? • TCL scriptingde regexp kullanımını açıklarmısınız? • bind pub bind'ını açıklayabilir misiniz? • Nasıl yeni bir komut oluştururum? Gibi tamamen öğrenme amaçlı sorular sorabilir ve cevaplarını alabilirsiniz. |
Cevap: TCL scripting öğrenmek istiyorum TCL Scripting'i genel olarak özetleyen bir ders yazarsan sıfırdan başlayanlar içinde bir kaynak olur. Ben mesela mIRC Scripting biliyorum TCL Scripting hakkında pek bir bilgim yok. Buna benzer yönleri özellikleri TCL Scripting'n artıları eksileri. Yüzeysel olarak bir bilgilendirme iyi olur. Sonuçta soru sorarken bile bilmek gerekiyor bilmeden soru sormak zor.. |
Cevap: TCL scripting öğrenmek istiyorum Soru da bilgiden doğar cevap da.. Bunda haklısın, ancak biz sorular sizden gelsin istiyoruz, genel olarak özetlemek diye bir şey yokki, her komut ayrı yerlerde kullanılır ve herbiri en az diğerleri kadar önemlidir. Zaten sizler tek komut sorsanız bile onu açıklarken örneklerde başka komutlarda kullanacığımız için onları da açıklamak durumunda olacağız.. mIRC scripting bilmek tcl öğrenmeyi kolaylaştırır. Sadece mIRC değil herhangi bir programlama dilini bilen bir başka programlama dilini daha rahat öğrenir. Çünkü algoritması gelişmiştir. Kodlama olayında işin temeli algoritmadır. Yeri gelmişken bu mesajda algoritma nedir onu açıklayalım.. Algroritma en basit tabiriyle "türkçe düşünmektir" diyebiliriz. Tabi bu bizim için geçerli :) Bir kod yazacağınız zaman onun planlamasını kafanızda kurmanız demektir. Bir başlangıç noktasından yola çıkılıp adım adım gidilir ve sonuca ulaşılır. Bir kaç örnekle açıklayalım. Örneğin yemek yapacağız. Yemek yapılacağı zaman ilk başta neler lazım diye düşünülür. Mesela yumurta pişireceksiniz. - yumurta lazım, yağ lazım, tuz lazım, tava lazım, ocak lazım. Sonra nasıl pişireceğinizi düşünürsünüz - tavayı ocağa koy - yağı koy - biraz ısınmasını bekle - yumurtayı kırıp karıştır - tuzunu ekle - pişir Ve sonuca ulaştık.. İşte algoritma bu kadar basit birşeydir.. Her kod yazılırken de bunları düşünürsünüz.. Neler lazım? Nereden yola çıkmalıyım? Nasıl ilerlemeliyim? Bu esnada ne gibi terslikler ya da hatalarla karşılaşabilirim? Zaten kullanılan komutların hepsinin kullanılışını yüzde yüz aklınızda tutmanıza gerek yok. Sadece nerede ne lazım onu bilmeniz yeterli; kullanılışı için açarsınız bir yerden bakarsınız.. İşte nerede ne lazım onu bilmek için de birazcık komutlara aşinalığınız olmalı.. Aslında anlatmaya başlayınca açıldım devam edebilirim ama soru gelsin istiyoruz :) |
Cevap: TCL scripting öğrenmek istiyorum oncelikle boyle bir yardımda bulundugun için tesskur ederim. Ben yeni yeni ogrendım eggdrop ve tcl scriptleri. ve cok meraklıyım bu iş için 4 gozle cvplarını bekliyicem. tcl bilgim sıfır denecek şekilde. Mesela komut olarak kanalda yazınca tepki versin cevabı kanala versin yazdıgım şey !yardim deyince ozelden deilde ortak kanala yazılınca cvp versin ortak kanala bunun hakkında bilgi almak istiorum tekrar tesskurler |
Cevap: TCL scripting öğrenmek istiyorum konu eggdrop konusunda önemli olduğu için [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] tşk ederim ve konuyu sabitliyorum herkesin yararlanması için |
Cevap: TCL scripting öğrenmek istiyorum Çok Güzel bir düşünce bir çok arkadaşın düşündüğü mirc scripting dersleri var da TCL scripting dersleri neden yok şeklinde idi. iLk oLarak nacizane isteğimi belirtmek istiyorum. TCL scripting de regexp kullanımını ve bind pub bind msgm bind'ının bildiğiniz farklı türde kullanılanları da mevcut ise açıklayabilir misiniz? Bu konudaki iLgi ve aLakanız için ayrıca tşk ederim. |
Cevap: TCL scripting öğrenmek istiyorum O halde bind'lardan anlatıma başlayalım.. Bindları mIRC scripttingde bildiğimiz eventlere benzetebiliriz. proclar (procedure) ise programlama dillerinde sıklıkla kullandığımız fonksiyonlar gibidir. Bir komutu proc içerisinde tarif ederiz. Komutun ne olduğunu ve ne gibi işlemler yapacağını proc içerisinde belirtiriz. proc ile komut belirlenirken genel olarak şu şemayı kullanırız: proc proacadı {kullanacağımız argumanlar} { procun yapacağı işlemler } proacadı : bunu tamamen kendimiz belirliyoruz, bunu belirlerken dikkat etmemiz gereken husus komut neyle ilgiliyse onla ilgili bir isim vermektir. Bu kural değil teammüldür. Genel olarak ise ilk harfi büyük yapılır, birden çok kelimeden oluşuyorsa diğer kelimelerinde ilk harfleri büyük yapılır. BuBenimIlkKomutum gibi.. Bu da yine kural değil teammüldür. Belirleyeceğiniz komut adı türkçe karakter içermemelidir. 1 2 3 4 gibi rakam adlarını tek başlarına proca veremezsiniz. ama Komutum2 gibi verebilirsiniz. kullanacağımız argumanlar : procu çağırırken onun içerisinde kullanabilecek bir takım veriler ile çağırırız. Kaç tane olacağını, olup olmayacağını komutu oluştururken biz belirliyoruz. Mesela oraya üç tane değer atadık, { isim yas cinsiyet } gibi.. Daha sonra bu procu çağırdığımızda üç veriyle çağırmak durumundayız. proc BenimKomutum { isim yas cinsiyet } { ... } şeklinde belirlediğimiz komutumuzu daha sonra başka yerde kullanırken üç ayrı veriyle kullanmamız lazım.. Daha az ya da daha fazla veriyle kullandığımızda hata verecektir. [BenimKomutum ahmet 18 erkek] şeklinde çağırabiliriz.. Burada ahmet = isim, yas = 18, cinsiyet = erkek değerlerine karşılık gelecek ve komut içerisinde $isim değişkenini kullandığımızda ahmet verisini ifade edecektir. (Anlatıma değişkenlerden başlamak belki daha iyi olurdu ama belki bir sonraki onla ilgili olursa onu da anlatırız) Genel olarak bir procun tarifi ve kullanımı bu şekildedir. İleride başka sorularda daha detaylı anlatırız böylece daha iyi öğrenmiş olursunuz.. procun ne demek olduğunu öğrendiğimize göre şimdi bind'lardan bahsedebiliriz. bindı en özet tarifiyle "Belirtilen olay gerçekleştiğinde" diye ifade edebiliriz. Genel kullanımı: bind <olay> <falglar> <maske> <procadı> Eggdropta belirlenmiş mevcut olayların bazıları şunlardır: ACT PUB PUBM MSG MSGM TIME DCC CTCP CTCR EVNT JOIN MODE NICK NOTE PART RAW diye devam eder.. Bu bindlar eggdropun içerisindeki modullerde belirlenmektedir. O yüzden her bir olay sonucunda kaç ayrı veri geleceği bellidir. Örnek olarak BIND MODE ile <nick> <user@host> <handle> <channel> <mode-change> <target> olmak üzere 6 ayrı veri gelir. (Bu veriler sunucudan gelen verilerdir) Şu durumda BIND MODE kullanıyorsak eğer bu bind ile çağıracağımız procta 6 ayrı veri belirlenmiş olmalıdır. bind mode - * BenimKomutum Bu şekilde "BenimKomutum procunu mode olayı gerçekleştiğinde - flagına uyanlar arasında (herkes) * (herhangibir) mode değişikliği gerçekleştiyse çağır" demek istiyoruz.. proc BenimKomutum {nick uhost hand chan mode target} { ... } Şeklinde komutumuzu belirlemek zorundayız. Her bindı uzun uzun açıklamaktansa böyle genel açıklamasını yapmak mesajın okunabilirliği açısından daha iyi olacağı kanısındayım. İleriki mesajlarda her birinin içeriğine zaten ayrı ayrı girilir. Konuyla ilgili anlaşılmayan yerler varsa mutlaka sorunuz. |
Cevap: TCL scripting öğrenmek istiyorum irc le ilgilenen herkes TCL yi bir irc scripting olarak biliyor oysa TCL bambaşkadır. Eggdrop daemonu ile TCL scripting işletilir. TCL ile herşeyi yapabilirsiniz. Örneğin-> Amsn. |
Cevap: TCL scripting öğrenmek istiyorum merhaba nebiliyim ben mesela ben !add komutu ekliyicem bu komutu ekledikten sonra ona emir vermek için hangi komutları yazıcam mantık nedir onları yonlendirmenin mesela ben !add komutunu kanalda deilde botun ozeline yazıldıgında calısmasını istiyorum bunları saglayan mantık komut nedir acıklarmısın ? |
Cevap: TCL scripting öğrenmek istiyorum Bir önceki mesajımda da analttığım gibi bu tarz işlemlerde bind kullanırız. Yani "özele bir şey yazıldığında" "kanala bir şey yazıldığında" şeklinde düşünememiz lazım. Özele gelen yazılar için iki ayrı bind'ımız mevcuttur: bind msg ve bind msgm Kanaldaki yazıların için ise bind pub ve bind pubm kullanıyoruz. Bunların mIRC scripttingdeki eventlerle aynı mantıkta olduğunu daha önce söylemiştim zaten. mIRC scriptingde kullandığımız on text eventi gibi düşünebilirsiniz. Şimdi bunları kısaca açıklayayım. bind msg <flaglar> <komut> <proceadı> Burada belirlediğimiz procedure ise: proceadı <nick> <user@host> <hand> <arg> formatında olmalıdır. Yani dört ayrı veri geliyor bize. Gelen verilerden ilki nick, ikincisi user@host üçüncüsü handle ve dördüncüsü argument yani yazının kendisi. birde bind msgm <flaglar> <maske> <proceadı> şeklinde kullanımı mevcuttur. buradaki procedure ise şu şekilde tanımlanmalıdır: proceadı <nick> <user@host> <hand> <arg> bir üstteki ile aynı. Peki farkları nelerdir? bind msgm kullanarak maskede belirlediğimiz kelime gelen yazının neresinde geçerse geçsin bu bind devreye girecektir. bind msg ile belirlediğimiz maskeye uyuşan kelime ise gelen yazıdaki ilk kelime olmak zorundadır. Kanal genelindeki yazılar için kullandığımız bind pub ve bind pubm da aynı mantıkta olduğu için bunları uzun uzun açıklamayacağım. Sadece genel şablonunu göstereceğim. bind pub <flaglar> <komut> <proceadı> procadı <nick> <user@host> <hand> <kanal> <arg> ve bind pubm <flaglar> <komut> <proceadı> procadı <nick> <user@host> <hand> <kanal> <arg> Şeklinde kullanımları mevcuttur. Şimdi örneklendirme yapacağım bir kaç tane.. Böylece daha anlaşılır olacaktır. Mesela birisi özele SaW yazdığında komut devreye girsin. Yazan kişinin botta herhangi bir yetkisi olmasına gerek yok (bunu flaglar açısından söylüyorum) Ama SaW kelimesi eğer cümlede ilk sırada yer alıyorsa.. Bu durumda bind msg kullanmamız gerekiyor. Kod: bind msg - SaW procsaw Şimdi başka bir örnekle de kanal mesajını gösterelim Kod: bind pub - !Nbl procnbl Bir anda hepsini öğrenmeyi beklemeyin ama dediğim gibi eğer bu örnekleri kendiniz dener ve sonuçlarını konsoldan takip edersiniz çok kısa sürede sizler de birşeyler yapmaya başlayabilirsiniz. |
Cevap: TCL scripting öğrenmek istiyorum anladım hocam sanırsam bir tek ben ilgileniyorum burda neyse sora sora ogrenin demiştiniz sorulara devam ediyoruz. Mesela !go die bir komut var. bu komutu yalnızca eggdrop sahibi değilde o kanalda bulunan herkes yazdığında herkese !go komutu tepki versin bunu nasıl mantıkla yurutebiliriz.. |
Cevap: TCL scripting öğrenmek istiyorum Alıntı:
|
Cevap: TCL scripting öğrenmek istiyorum Uygulamalı örnekle insanları daha çok aydınlatacaktır. Örneğin bota !k !kb nick gibi özellikleri nasıl yaparız. Botun karşılama mesajı, noticesi vs.. atmasını nasıl sağlarız tcl scripting eğitimi verilecekse ortaya kısa işlevli kodlar dökülüp uygulamalı olarak anlatılıp hangi parametre ve komutun ne iş yaptığını neye karşılık gediğini + / - anlatmak daha iyidir bence. Sadece bir öneri. |
Cevap: TCL scripting öğrenmek istiyorum Merhaba [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] İncelediğim bir kaç örnek kodlarda karşıma çıkan foreach append ve lrange kodlarının mantığı ve işlevini öğrenme açısından yardımcı olabilir misiniz? |
Cevap: TCL scripting öğrenmek istiyorum Sayın hocalarım elimde bir mirc script kodu var bunu tcl'ye çevirebilme imkanımız nedir acaba? ben kısaca kodun ne işe yaradığını belirteyim.. Benim görüşüme göre kod tam anlamı ile botnet v.b. saldırıları kesen bi kod.. örnek vermek gerekirse ; sunucunuza yapılan bi saldırıda botnet girişlerinde bi kesinti yapmıyor. fakat atılan mesajlara göre bi kesinti söz konusu.. spamı neye göre eklediğini anlamış değilim. fakat benim remotelerimde ekli bu kod , özelime aynı kelime ardı ardına 2 defa yazıldığında o kelimeyi otomatik olarak spama alıyorum.. böyle bi script kodu.. kodu sizlerle paylaşmak istiyorum buyurun birlikte inceleyelim.. [script] n0=on *:open:?:{ n1= set -u5 %nickw. [ $+ [ $nick ] ] warn n2=} n3=alias spch { n4= if (!$window(@Spams)) window -ne @Spams n5= spamekle $yildiztemizle($2-) n6= echo -t @Spams $1 : $yildiztemizle($2-) n7=} n8=on *:text:*:?:{ n9= if (!%nickw. [ $+ [ $nick ] ]) { halt } n10= var %t = 1 , %kelime = $strip($gettok($1-,0,32)) n11= var %cümle = $strip($1-) n12= if (%kelime == 2) && ($len($strip($1)) >= 5) && ($strip($2) == @) { spch $nick $strip($1-) | halt } n13= while (%t <= %kelime) { n14= set %ara $strip($gettok($1-,%t,32)) n15= if ($v1 == 1) && ($right(%ara,1) == @) || ($right(%ara,2) == @h) || ($right(%ara,3) == @hot) { spch $nick %ara | halt } n16= if (*_* iswm %ara) && ($right(%ara,1) isnum) { spch $nick %ara | halt } n17= if (*-* iswm %ara) && ($right(%ara,1) isnum) { spch $nick %ara | halt } n18= if ($right($gettok(%ara,1,64),1) isnum) && (@ isin %ara) { spch $nick %ara | halt } n19= if (*@* iswm %ara) && ($3) { spch $nick $gettok($strip($1-),$calc(%t - 1),32) %ara $gettok($strip($1-),$calc(%t + 1),32)) | halt } n20= if (*@h?* iswm %ara) { spch $nick %ara | halt } n21= if ($right($gettok($strip($1-),$calc(%t - 1),32),1) isnum) && (*h?t* iswm %ara) { spch $nick $gettok($strip($1-),$calc(%t - 1),32) %ara | halt } n22= inc %t 1 n23= } n24=} n25=alias yildiztemizle { n26= var %y $+(.,?) , %yi n27= %yi = $replace($1-,$chr(42),%y,$chr(36),%y,$chr(91),%y,$chr(93),%y,$ chr(92),%y,$chr(47),%y,$chr(43),%y,$chr(63),%y,$ch r(94),%y,$chr(124),%y,$chr(40),%y,$chr(41),%y,$chr (164),%y,$chr(33),%y,$chr(123),%y,$chr(125),%y,$ch r(189),%y,$chr(188),%y,$chr(39),%y,$chr(46),%y,$ch r(44),%y,$chr(60),%y,$chr(61),%y,$chr(62),%y,$chr( 34),%y,$chr(199),%y,$chr(221),%y,$chr(58),%y,$chr( 45),%y,$chr(254),%y,$chr(222),%y,$chr(32),%y) n28= return $iif($len($remove(%yi,.,*)) > 5,%yi,SPAMKONTROLUNDEGECERSIZ aslolan mesaj: $1- ) n29=} n30=alias spamekle { n31= spamfilter add cNnpa gzline +7200 4(Clone/Reklam/Spam® $1- n32=} n33=alias spamsil { n34= spamfilter del cNnpa gzline +7200 4(Clone/Reklam/Spam® $1- n35=} kolay gelsin. |
Cevap: TCL scripting öğrenmek istiyorum @snapcstrike O tarz örneklendirmeleri şu aşamada vermek için henüz erken. Komutların açıklamalarını artırdıktan sonra söylediğin şekilde örnekler verebiliriz, o aşamaya kadar @Siber55'in istediği gibi yardımlar istemen daha doğru olacaktır. @Snet Sanırım sen konudaki ilk postu okumamışsın. Seni ilk postu okumaya, yetkili arkadaşları da @Snet'in postunu silmeye davet ediyorum. @Siber55 Tam olarak istediklerimiz budur. Bu şekilde sorular sorarsanız bizler de gayet zevkle yardımcı olmaya çalışırız. Şimdi sorduğun üç komutu örneklerle açıklamaya çalışalım. lrange lrange komutu ingilizce range (dağılım, sıra, hatta biraz daha zorlarsak aralık ve mesafe) kelimesinden gelmektedir. Elimizdeki bir değerin kaç kelimeden kaç ayrı değerden oluştuğunu anlamamıza yarar. lrange "a b c d e f" değeri 5 olarak dönecektir. lrange "0 1 2 3 25 125 8" değeri 7 olarak dönecektir. lrange "{1 2 3} {8 9} 2 a {x y}" değeri 5 olarak dönecektir. içerisindeki süslü parantezlerin herbirini birer kümecik ve tek bir eleman olarak sayar. Bu örneği biraz daha geliştirelim. lindex bir komutumuz daha vardır. Elimizdeki verilen belirtilen nolu değerini görmemize yarar. İlk değer 0'dan başlar (bu çok önemli!). Örnek verelim: lindex "a b c d e" 0 verilen "a b c d e" değerinin 0 nolu elamanını kasdeder ve o da a'dır. lindex "ahmet mehmet hasan hüseyin" 2 Bu değerin 2 nolu elemanını kasdeder ve o da hasan'dır. Şimdi lindex ve lrange komutlarını iç içe kullanalım.. lrange [lindex "{1 2 3} {8 9} s a {x y}" 0] ilk önce iç kısıma bakarız. lindex ile bize gelen değer içerideki dizinin 0 numaralı elamanı olan {1 2 3} değeridir. Daha sonra ise bu değerin dağılımını lrange komutuyla soruyoruz. O da bize 3 cevabı olarka dönecektir. lrange'in mantığı budur. Örnekler çoğaltılabilir. Her zaman söylediğim gibi botunuza konsoldan bağlanarak bu örnekleri kendiniz yapınız ve cevaplarını görünüz. Böylece daha kalıcı olacaktır. Peki nasıl yaparsınız bunu? Bota konsoldan bağlantıktan sonra komutların başına .tcl yazarak geri kalanını yazmanız yeterli olacaktır. Örnek: .tcl lrange "ab cd ef gh" gibi.. Şimdi gelelim append komutuna.. append append komutu set, var, incr gibi komutlarıda olduğu gibi elimizdeki değişkene değerler atamaya yarayan daha farklı bir işlevi olan bir komuttur. set x a ile $x değişkeninin değerini a olarak atadık. append x b burada ise $x değişkenine b değerini arasına boşluk bırakmadan ekledik. Yani $x değişkenin değeri artık ab'dir. append x c artık $x değişkeni abc haline gelmiştir. append x 1 $x değişkeni abc1 haline gelmiştir. Arasına boşluk bırakmak istersek ne yapmamız lazım? append x " m" Şeklinde yazdığımızda m'den önce bir de boşluk bıraktığımız için artık $x değişkeninin değeri "abc1 m" şeklini almıştır. İşte burada append komutuna çok benzeyen ve lappend olarak adlandırılan farklı bir komut bu işlevi görür. Eklenen değerler arasına kendisi boşluk koyar. Örnek verelim: set x a $x değerini a olarak belirledik. lappend x b $x değişkeni artık "a b" halini aldı. lappend x c $x değişkeni "a b c" değerini aldı. Şimdi bir diğer komut olan foreach komutuna geçelim. foreach foreach komutu loop (döngü) olarak kullandığımız komutlardan birisidir. Yukarıda bahsettiğimiz diğer komutlara nazaran biraz daha karışık bir komuttur. Tarifini ise, "eldeki verinin her bir elemanını döngü her gerçekleştiğinde belirtilen değişkene atar" şeklinde yapabiliriz. Eldeki verilerin her biri sırasıyla atandığında döngü kendiliğinden sonlanır. Eğer bitmeden herhangi bir anda sonlandırmak istiyorsak break, belirli bir değere geldiğinde o değeri atlayıp başa dönüp bir sonraki değerden devam etmesini istiyorsan continue komutlarını kullanırız. Bu iki komutu daha sonra başka konularda ayrıca açıklayacağım. Örneklendirdiğimiz zaman biraz daha iyi anlaşılabilir. foreach x "a b c d e" { putlog "Şuan x değeri : $x " } Toplam 5 eleman var. Döngü 5 kere başa dönecektir. $x değeri her defasından bir sonraki değeri alacaktır. Bize cevaplar şu şekilde dönecektir. Şuan x değeri : a Şuan x değeri : b Şuan x değeri : c Şuan x değeri : d Şuan x değeri : e Bunun en basit anlatımı budur. Örnekleri kendiniz konsoldan denerseniz daha iyi anlamanıza yardımcı olacaktır. foreach komutuyla aynı anda birden çok değere de atama yapılabilir. Örnek verelim: foreach {x y z} "a b c" { putlog "$x - $y - $z" } Burada ise "a b c" değerlerini bir kerede sırasıyla $x $y ve $z değişkenlerine atadık. Böyle bir sorguda bize cevap a - b - c olarak dönecektir. foreach ile ilgili örnekleri çoğaltıp kafanızı karıştırmak istemiyorum. Şimdilik genel mantığını bilmeniz yeterli olacaktır. Örnekleri kendiniz çoğaltırsanız daha iyi anlayacaksınız. Kolay gelsin. |
Cevap: TCL scripting öğrenmek istiyorum Kusura bakmayın hocam olaya hızlı giriş yaptım sanırım.. Unutmuşum emeklemeden yürümeye çalışmamak lazım. Üzgünüm.. |
Cevap: TCL scripting öğrenmek istiyorum Ben Mirc scripting meraklisiyim daha onu ogrenmeye calisiyorum. tcl scripting'e cok yabanciyim yanliz merak ettigim birsey var. Onu bu baslik altinda sorayim dedim.. mirc scriptin'e gore dahami zor tcl scripting sormamin nedeni su basit trivia botlari ele alalim mirc scriptingde mckrueger'in botuna bakin birde merliny in baloncuklu botuna bakin ikisinin arasinda daglar kadar fark var yani tcl olarak neden bu gune kadar boyle osellikli gelismis bir bot yapilmadi trivia 6.0 in birebir tcl karsiligi kodlanabilirmi? tskrler |
Cevap: TCL scripting öğrenmek istiyorum Daha zor ya da daha kolay diye bir kıyaslama yapmayalım çünkü bu kişiye göre değişebilir. Ama TCL scriptingde kullanılabilecek daha fazla arguman olduğunu söyleyebilirim. Eggdrop olarak TCL tabanlı bir çok trivia çeşidi mevcuttur. Hatta TCL tabanlı triviaların mIRC tabanlı olanlardan fazlası vardır eksiği yoktur. Mevcut TCL tabanlı triviaları deneyerek hoşuna gideni kullanabilirsin. Şuana kadar biz Türklerden bir Trivia botu yazan olmadı. Bunun bir nedeni oldukça zahmetli ve zorlu olması diğer bir nedeni ise zaten piyasada bir çok örneği var, olan bir şeyi de ve bu denli zahmetli birşeyi baştan yazmanın bi alemi yok. Tekrardan bu konunun script istekleri için değil, TCL komut yardımı için olduğunu hatırlatmak istiyorum. Bu konu sanırım bir buçuk aydır açık. Ama ilginin ne kadar az olduğunu görüyorsunuz sanırım. İşte biz genel olarak hazırcı bir toplum olduğumuz için çok az üretiyor ama çok fazla tüketiyoruz. Konu eleştirmeye gelince de hepimiz "neden bizde böyle birşey yapılmıyor?" "neden bu kadar güzel çalışmaları bizde yapan yok?" gibi dert yakınıyoruz. İşte sebebi budur... Öğretici ve emek harcanması gereken bir konu olunca ona ilgi olmuyor. Ama hep örneğini verdiğim gibi; iki satır soru dosyası editleyip buyrun falanca soru botu deseydik ne kadar ilgi olurdu görürdük. Burada birşeyleri anlatmanın bize herhangi bir faydası yok, ya da bundan herhangi bir çıkarımız yok, sizler için emek harcıyoruz ama farkında olan da ne yazık ki çok çok az :) |
Cevap: TCL scripting öğrenmek istiyorum Ben Bu Kanal Muafın Mantıgını Çözemedım Bu Botlara Nasıl Sağliyoruz En Azından Bı Mantıgını Ogrenseydık Komutlara Bulmayı Calısırdık |
Cevap: TCL scripting öğrenmek istiyorum [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Hocam return komutunun kullanımı hakkında bilgi verebilir misiniz? |
Cevap: TCL scripting öğrenmek istiyorum Hocam anlattığınız şeyler gerçekten önemli ve eggdrop tcl öğrenmek isteyen bizler için çok güzel şeyler. Fakat üzülerek belirtiyorum ki hala mantığını çözebilmiş değilim anlatmış olduğunuz kısımların. Bende mi bi anormallik var yoksa gerçekten karışık olduğu için mi anlayamıyorum , Oysaki çok iyi anlatıyorsunuz bunu fark ettiriyorsunuz bizlere. |
Cevap: TCL scripting öğrenmek istiyorum Bir işe Başlarken, Öğrenmek istediğin Şey Zor Olarak Görünebilir Tabi ki Baslarda. Örneğin, Okula Baslamadan Önce, Gazetelerde yahut dergilerde Gördüğün Harfleri Anlayamazsın Burdada Aynı Durum Söz Konusu. Üzerinde Uygulama Yaptıkca Zaten Mantığı Daha da iyi Anlar, Kaparsın. |
Cevap: TCL scripting öğrenmek istiyorum Alıntı:
|
Cevap: TCL scripting öğrenmek istiyorum Zaten İcinde istek Olunca, Farkında Olmadan Öğrenmeye Baslıyorsun Kodların Yapısını Biraz inceleyince Aklına Yatınca Zaten Ufak tefek Kodlamaya baslıyorsun Zevkli Bir iş İmkansız diye Birşey, Yapamam Diye Birşey Yoktur, İmkansız, İmkansız demektir. |
Cevap: TCL scripting öğrenmek istiyorum Alıntı:
sıklıkla kullanılan return 0 ve return 1 değelerini de açıklayayım. Eğer 0 dersek, kod orada durur ve daha ilerisine bakmaz. peki return 1'i ne için kullanırız? Biliyorsunuz ki if içerisinde yazdığımız mantıksal değer'in sonucu 1 ise kod if içerisindeki işlemleri uygular, eğer 0 ise o if içerisine hiç girmez. İşte if içerisinde kullandığımız komut return 1 olarak döndüyse if içerisine girer ve oradaki işlemleri uygular. 0 ve 1'in haricinde herhangi istediğimiz bir değere de return yaptırabiliriz. Mesela return deneme şeklinde kullanabiliriz. İşte bu elde edilen deneme değerini de if içerisinde ="deneme" şeklinde kullanabiliriz. Şuana kadar anlatıklarımdan çok fazla birşey anlamamış olabilirsiniz, ama örneklerle pekiştirecez. proc don {} { if {[donbak]} { putlog "if içerisindeyim" return 0 } putlog "donbak değeri 0 olarak döndü" } proc donbak {} { return 1 } İlk önce don adında bir komut oluşturduk. O komut içerisinde if sorgusu yapıyoruz. "Eğer donbak adlı komutun değeri 1 ise" diyoruz. Eğer sonuç 1 ise if içerisine giriyor ve bize if içerisindeyim sonucunu veriyor ve return 0 ile de işlemi durduruyoruz. Eğer donbak komutu içerisindeki return değeri 0 olarak dönseydi if içerisine hiç girmeyecek ve bize donbak değeri 0 olarak döndü diyecekti. Şimdi ise aynı örneği 0 ve 1 değerinden farklı olarak gösterelim. proc don {} { if {[donbak]=="evet"} { putlog "if içerisindeyim" return 0 } putlog "donbak değeri 0 olarak döndü" } proc donbak {} { return evet } Burada ise sonuç evet ise if içerisine gir ve orada mesajı ver, sonra işlemi durdur diyoruz, eğer cevap evet'ten farklı birşey ise if içerisine hiç girme sonraki işlemleri uygula diyoruz. Genel kullanım bu şekildedir, herzaman söylediğim gibi örnekleri yapıp konsoldan da takip ederek denerseniz daha iyi anlayacaksınız. Örnekler çoğaltılabilir, anlamadığınız yerler olursa sorarsınız daha fazla örneklerle açıklarız. |
Cevap: TCL scripting öğrenmek istiyorum selam nebileym ve diğer arkadaşlar. ben; emeklerin ve bizlere bu konu ile ilgili öğretme çabasında olduğun için öncelikle tşkler. sorum şu olacak "global" komutu hakkında bilgi verebilirmisiniz |
Cevap: TCL scripting öğrenmek istiyorum kardeş birde set tgcolourstart "04" ;#Oyun Başlatildi. set tgcolourstop "04" ;#Oyun Durduruldu. set tgcolourskip "04" ;#Oyun Geçildi. set tgcolourerr "02,15" ;#Oyun Hata Bildirimi. set tgcolourmiss "02" ;#Nobody answered the question. set tgcolourqhead "06" ;#Soru Basligi. set tgcolourqbody "02" ;#Soru Rengi. set tgcolourhint "03" ;#Ip Ucu. set tgcolourstrk "00,01" ;#Person is on a winning streak. set tgcolourscr1 "06" ;#Score of person in first place. set tgcolourscr2 "06" ;#Score of person in second place. set tgcolourscr3 "06" ;#Score of person in third place. set tgcolourrset "11,01" ;#Scores have been reset. set tgcolourstend "11,01" ;#Winning streak ended. set tgcolourmisc1 "06" ;#Miscellaneous colour #1. set tgcolourmisc2 "04" ;#Miscellaneous colour #2. bu tcl icerisinde: tgc ile başlayan komutlar sabitmidir yoksa dinamikmidir. yani değişkenliği varmıdır. istedigimiz kelimeleri yazabilirmiyiz. |
Cevap: TCL scripting öğrenmek istiyorum çok güzel bir konu bence ilk defa okudum bende deneme yanılma yöntemi ile kendime göre bişeyler değiştirip yapmaya çalışıyorum .örneğin ; Kod: bind pub - opver opver Kod: bind msgm - opver op_ver |
Cevap: TCL scripting öğrenmek istiyorum özelde kanal parametresi olamayacağı için önce {n u h c a} kısmını {n u h a} olarak değiştir ve [isop $n $c] kısmında $c yerine belli bir kanal yaz veya o kısmı sil. |
Cevap: TCL scripting öğrenmek istiyorum Alıntı:
Kod: bind msgm - opver op_ver |
Cevap: TCL scripting öğrenmek istiyorum bind msgm değilde bind msg şeklinde kullan. |
Cevap: TCL scripting öğrenmek istiyorum Kod: bind msg - opver op_ver |
Cevap: TCL scripting öğrenmek istiyorum bi kere; global gnick set gnick $n satırlarının hiçbir işlevi yok orda onları sil. {onchan $n "#Ops"} kısmını {[onchan $n "#Ops"]} şeklinde kullan ve kanal isminin büyük/küçük harf yazılımı önemli. |
Cevap: TCL scripting öğrenmek istiyorum evet [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] sölediğin değişiklikleri yaptım ve tcl çalışdı.teşekkür ederim ilgin için .. |
Cevap: TCL scripting öğrenmek istiyorum Arkadaşlar Hala Su Muaf Olayını Çözemedım Nasıl Olcak Bu |
Cevap: TCL scripting öğrenmek istiyorum Arkadaşlar TCL dilinde mirc scripting deki timers gibi bir komuta ihtiyacım var yapmaya çalıştığım şu. SaW'ın paylaşmış olduğu Proxy koruma botu ilk bağlandığında en alt kısmına şu 2 komutu verdiğim için proxy:check a b c d e proxy:socks a b c d e direkt olarak proxy.txt ve proxy2.txt dosyalarını dolduruyor. 1 süre sonra bot yeniden dosyaları güncelleyecekken 2 dosyanında içeriği boşalıyor kurulumda veya içerisinde yaptığım editte 1 hata olduğunu sanmıyorum ne yaptıysamda düzelmedi bu problem. Yanlız şöyle bir durum var bota console'dan .tcl proxy:check a b c d e ve .tcl proxy:socks a b c d e komutlarını uygulattığımda sorunsuz bir sekilde bu dosyaları dolduruyor. Sizden bu TCL dilinde timers benzeri komutu isteme sebebim bu bu sayede 15 dk da bir bota bu komutları uygulatacağım ve o 2 dosya asla boşalmıyacak. Yardımlarınızı bekliyorum. Saygılarımla. |
Cevap: TCL scripting öğrenmek istiyorum mircteki gibi eggdropta da timer vardır tabi. Kullanımı basitçe şöyle anlatayım; utimer saniye cinsinden , timer dakika cinsinden belirlenir/kullanılır. eğer sen 15 dakika sonra bu dediğin komutu çalıştıracaksan; timer 15[list proxy:check a b c d e] şeklinde kullanabilirsin. |
Cevap: TCL scripting öğrenmek istiyorum Teşekkürler bucalı Yaptım yapmasınada derdime deva olmadı :) 1 dk ya düşürdüm yinede yok 1 süre sonra .txt dosyaları bosalıyor işin ilginç yanı proxy:check a b c d e proxy:socks a b c d e komutları uygulandığında dosyalar yeniden doluyor. ben buna timer 1[list proxy:check a b c d e] timer 1[list proxy:socks a b c d e] diye 2 satır ekledim 1 dk da 1 bu 2 komutu uyguluyorsa neden dosyalar dolmuyor ? proxy:check a b c d e proxy:socks a b c d e diye 2 satır ekli bot ilk girdiğinde bu komutları uyguluyor ve dosyalar doluyor. Anlamadım gitti. 1 ve [ arasında bosluğu unutmadım yarıca :D |
Cevap: TCL scripting öğrenmek istiyorum Sanırım problemin neden kaynaklandığını buldum timers komutu çalışıyor sorun yok fakat 1 kereye mahsus çalışıyor. Yani; timer 1 "proxy:check a b c d e" bu sekil timer eklediğimizde komut 1 kereye mahsus çalışıyor bot girdikten 1 dk sonra çalışıyor 1 daha çalışmıyor. ben bunun misal her 1 dakikada bir yeniden uygulanmasını istiyorum. Yardımınızı bekliyorum. Saygılarımla. |
Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 21:47. |
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