mIRC Scripting  


Geri dön   mIRC Scripting > mIRC Scripting > Tutorials - Dersler

Tutorials - Dersler mIRC Scripting hakkında yazılmış özel dersleri bulup, paylaşabileceğiniz bölüm.

Like Tree4Teşekkür
  • 4 Post By L4roXyL
Cevapla
 
LinkBack Seçenekler
  #1  
Alt 13 Temmuz 2009, 22:22
Avatar Yok
 DirtyCoder 

mS Puan: 1031
mS Derece: L4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisi
 
Üyelik tarihi: 10 Temmuz 2009
Yaş: 32
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 40
Yapılan Teşekkür: 0
Standart Daha iyi kod yazın.

Ders: Daha iyi kod yazın.
Tarih: 17 Mayıs 2008 Cumartesi
Yazan: L4roXyL - (Hasan AYDENİZ)

-

mIRC'de daha iyi nasıl kod yazılır?
İlk başta mIRC 6.31 yani mIRC'in en güncel sürümündeki, help dosyası en iyi dostunuz ve yardımcınız olsun.
Bunu ciddiyet ile söylüyorum. Gerçekten öğrenmek ve birşeyler yapmak isteyen kişinin en büyük hocasıdır, help dosyası.

-

1- ISWM(iswm) yerine $regex kullanın.
Reg(ular)Ex(pression) mIRC de daha rahat kod yazmanıza yarar. Ve yapı bakımında, çok daha hızlı ve kullanışlıdır.

Örneğin:
//if (*deneme* iswm a1denemeb1) echo - True.
Şeklinde yapacağınız bir işlevi;
//if ($regex(a1denemeb1,deneme)) echo - True.
Şeklinde yapabilirsiniz.


2- $iif identifier'ını çokça kullanın.

Örneğin:
//if (%değişken == 1) echo - True. | else echo - False.
Şeklinde yapacağınız bir işlevi;
//echo - $iif(%değişken == 1,True.,False.)
Şeklinde yapabilirsiniz.
Identifier'ın mantığı; $iif(işlev,doğru,yanlış) şeklindedir.


3- $v1 - $v2 identifier'larını sık sık kullanın.

Örneğin:
//echo - $iif(deneme isin deneme123,$ifmatch)
Şeklinde yapacağınız bir işlevi;
//echo - $iif(deneme isin deneme123,$v1)
Şeklinde yapabilirsiniz.
Her ikisindede, "deneme" yanıtını alıcaksınız.
//echo - $iif(deneme isin deneme123,Arananılan: $v2 - Bulunan: $v1)
Yani gördüğünüz gibi, $v2 identifier'ı sorgulanan hakkındada bilgi verecektir.
Not: mIRC 6.21 ve üst versionlarda geçerlidir.


4- $+() kullanın.

Örneğin:
//echo - deneme $+ .deneme2 >= deneme.deneme2
Şeklinde yapacağınız bir işlevi;
//echo - $+(deneme,.deneme2) >= deneme.deneme2
Şeklinde yapabilirsiniz.


5- Kopyaladığınız yada kestiğiniz yazıları paste etmeden görebileciğinizi hatta uzunluğunu dahi bilebileceğinizi biliyormusunuz?
Bakınız: $cb() - Clipboard

//echo - $cb(0) => Son kopyaladığınız satır miktarını verir.
//echo - $cb(1) => 1. satırdaki veriyi verir.
//echo - $cb(3).len => 3. satırdaki verinin harf miktarını verir. ($len)
Peki, mouse kullanmadan kopyalama işlevini yapmayı biliyormusunuz?
Bakınız: /clipboard [-an] <text>
-n: Kopyaladığınız text'in başına bir satır boşluk koyar. ($crlf)


6- /filter komutuna uzak kaldığınızı çok iyi biliyorum. Ama kalmayın.

/filter ile yapacağınız basit bir işlevi, /filter kullanmadan mecburen /while yada goto kullanarak yapacağınızı biliyormuydunuz?
Yani anlayacağınız, size çok yabancı gelen /filter komutunu sık sık kullanın.
Örneğin bir deneme.txt dosyasındaki deneme kelimesi içeren satırları, deneme2.txt dosyasına yazdırmak istesek ne yapabiliriz?
//var %1 = 1 | while (%1 <= $lines(deneme.txt)) { if (deneme isin $read(deneme.txt)) { write deneme2.txt $v2 } | inc %1 }
Şeklinde bir kod yazmamız gerekecekti.
Ama /filter kullanarak;
/filter -ff deneme.txt deneme2.txt *deneme*
Şeklinde yapabiliriz. Gördüğünüz gibi gayet kolaylık sağlayan bir komut.
Not: /filter biraz karışıktır ama, önemli işlevler yapan bir komutdur. Kullanmanızı tavsiye ederim.
Bakınız: /help /filter


7- Komut kullanarak aktif ekranda text aramak? Bakınız: /findtext -n text

Normal şartlarda, CTRL+F tuşuna basarak aktif ekranda arama yaparız.
Ama /findtext komutu ile, komut kullanarakda arayabiliriz.
Örneğin: /findtext mIRC gibi.
-n: Anahtarı, bulunan satıra gitmemenizi sağlar.


8- /loadbuf kullanın. While ve goto kullanımından kurtulursunuz.

Örneğin: Deneme.txt dosyasındaki tüm satırları, @deneme penceresine aktarmak istesek, normalde while yada goto kullanırsınız.
Ama /loadbuf kullanarak bu döngülerden kurtulabilirsiniz.
/loadbuf @deneme deneme.txt => En basit kullanım.
/loadbuf komutunda bir çok özellik daha vardır.
Mesela, belirlediğiniz satır aralıklarını yükletebilirsiniz.
Mesela, -o anahtarını kullanarak bir dialog'daki item'e yükletebilirsiniz.
Mesela, -t anahtarını kullanarak yükletilen her satıra $timestamp(saat) koyabilirsiniz.
Buna benzer bir çok özelliği olmakla beraber, kullanım olarak gayet açık ve kullanışlı bir komutdur.
Bakınız: /help /loadbuf


9- /noop kullanın.

Mesela, mIRC klasöründe bulunan tüm dosyaları echolatmak isteseydik?
//echo -a $findfile($mircdir,*,0,echo -a $1-) Şeklinde bir komut kullanacaktık.
Ama /noop kullanarak, gereksiz kullanım(lar)dan kurtulabiliriz.
Bakınız: //noop $findfile($mircdir,*,0,echo -a $1-) Şeklinde.


10- /timer kullanırken bazı identifierlarda veya değişkenlerde "!" kullanın.

Evet herhangi bir timer açtığınız zaman, o anki durum sabitlenir.
Örneğin: //timer 0 5 echo - $time => yaptığınızda, devamlı timer'ı başlattığınızdaki saati gösterecektir.
İsterse 1 saat geçsin devamlı aynı saat gösterilecektir.
Fakat: //timer 0 5 echo - $!time => şeklinde yaparsanız bu sorun ortadan kalkıcaktır.


11- Tek /timer komutunda birden fazla komut uygulatın.

Normalde /timer komutunda verdiğin görev 1 tane olabiliyor. Yani böyle bilinir genellikle.
Örneğin: //timer 0 5 echo - Deneme | Deneme2 => yaptığınızda;

Kod:
* Timer 1 activated
* /deneme2: not connected to server
Hatasını alırsınız. Çünki "|" işlevini bir başka komut şeklinde algılar /timer.
Bu sorunu ortadan kaldırmak için; "|" prefix'ini $chr(124) olarak girmelisiniz.
Örneğin: //timer 0 5 echo - Deneme $chr(124) echo - Deneme2. => Şeklinde.
Aynı işlev "{" "}" prefixleri içinde geçerlidir. Yani bu perfixlerinde $chr(numarası) şeklinde girmelisiniz, (Tanınması için)

/timer hakkında bir kaç özel bilgi:
Aktif olan timer'ları görüntülemek için: /timer
Herhangi bir saat'de işlev yapmak için: /timer 15:00 echo - Saat ÜÇ. Gibi.
Belirtilen timer'ı pause komumuna almak için: /timer[num|name] -p
Pause konumundaki timer'ı resume konumuna almak için: /timer[num|name] -r
Gibi bilgiler önemlidir.


12- /tokenize kullanın.

/tokenize komutunu görmüşsünüzdür mIRC help dosyasında, Ama pek kullanılmaz.
Özellikle socket'dan gelen verilerde kullanmanız gereken bir komutdur.
En basit anlatımla: //tokenize 46 1.2 3.4.5 6.7 | .echo -a $1 $2 $3 $4 $5
Komutunu uygula***** anlayabilirsiniz. Buradaki 46 numarası, "." noktanın ascii kod numarasıdır.
Yani bu komut belirlediğiniz ascii numarasını kelimelere böler.
Şöyleki: //tokenize 46 1.2 3.4.5 6.7 ($1 = 1 - $2 = 2 3 - $3 = 4 - $4 = 5 6 - $5 = 7)
Sanırım gayet açık. Yani 1. kelime ve sonraki kelimeleri oluşturur.


13- /ban komutunu kullanın.

Korumalarınızda gereksiz /mode ve ek olarak /kick kullanmayın.
Örneğin:
//mode #kanal +b $address($nick,2) | kick #kanal $nick sebeb.
Komutu ile
/ban -k #kanal $nick 2 sebeb.
Aynı işlevi görecektir.
Ek olarak -uN anahtarını kullanarak, ban'ın ne zaman açılacağınıda belirlersiniz.(N = Saniye)


14- Boşluk tespitinde $numtok yerine $0 kullanın.

Örneğin:
on *:text:*:#:echo - Nick: $nick - Gönderdiği text'deki boşluk sayısı: $numtok($1-,32)
Yerine;
on *:text:*:#:echo - Nick: $nick - Gönderdiği text'deki boşluk sayısı: $0
Yapabilirsiniz.


15- /while komutunda /set yerine /var kullanın.

Örneğin:
//set %değişken 1 | while (%değişken <= 10) { echo - %değişken | inc %değişken }
Yaptığınızda, %değişken değişkeni 11 olur. Ve hafızada kalır. Yani silinmez.
//var %değişken = 1 | while (%değişken <= 10) { echo - %değişken | inc %değişken }
Yaptığınız'da, tekrarlama sona erdiğinde %değişken değişkeni silinir.
Not: /var komutunda %değişken değerini belirlerken her zaman için, "=" işaretini kullanın.
Daha sağlıklı çalışacaktır.


16- Basit %değişken işlemlerinde $calc yerine, değişkeni kullanın.

Örneğin:
//var %d = $calc(100+250) | echo - %d
Şeklinde bir komut uygulamaktansa;
//var %d = 100 + 250 | echo - %d
Şeklinde kullanabilirsiniz. Bunu örnek olarak gösterdim. Burada pek gereksinimsiz görülebilir.
Ama ileride işinize yarayacaktır.


17- Karmaşık bilgi kayıt etme/üzerinde işlev yapma konularında, her zaman hash table kullanın.

Hash table kullanın çünki, /inc /set gibi komutlar işlevleri hard-disk'de yapıcaktır.
Ama hash kullandığınız'da işlevler, ram'da gerçekleşir. Bunu zaten hash table dersimizde söylemiştim.
/inc /set komutlarında -e anahtarını kullanmadığınız sürece veriler mIRC'inide kayıtlı kalıcaktır.
Fakat hash table'da, /hsave kullanmazsanız, mIRC'i kapattığınız an veriler silinir. Serbest bırakılır.


18- /unset %değişken | /unset %değişken2 kullanmayın.

Bu basit bir bilgidir ama, forumda devamlı gözüme çarpan bir hatanız.
Yani 2 veya fazlası değişken'i silmek için, her defasında /unset yazmanıza gerek yoktur.
/unset %değişken %değişken2 %değişken3 şeklinde kaldırabilirsiniz.
Ayrıca belirtilen değişkenleri, wildcards kullanarak silebilirsiniz.
Örneğin: %dee ile başlayan 3 değikenimiz var.
Bunları silmek için: /unset %dee* yapmamız yeterli olur.
Değişkenlerin silindiğinden emin olmak istiyorsanız; /unset -s %değişken yapabilirsiniz.


19- on me|!|@:*: kullanın.
Bazı event'lar sizide kapsadığı için genellikle;
on *:join:#:if ($nick == $me) { komut }
on *:kick:#:if ($nick == $me) { komut }
Şeklinde kullanırsınız.
Bu hem ek bir sorguya sebeb olur, hemde kod'un uzun görünmesine sebeb olur.
Bunun için: on me:*:event: şeklinde kullanmanız daha mantıklı olur.
Kendinizi muaf etmek için: on !*:join:#:
Opsanız işlev için: on @*:text:*:#:

Bunlar örnektir.



20- Ek bilgiler. Kullanmanız gereken identifier'lar.

Evet buradaki identifier'ların hepsini öğrenmenizi istiyorum. Bunlar gerçekten öğrenmek istiyorsanız, kesinlikle kavramak zorunda olduğunuz ve en sık kullanılan identifier'lar.

Text: $left, $right, $mid, $count, $pos, $regex, $regsub, $regsubex, $remove vs
Token: $addtok, $gettok, $istok, $wildtok vs.
Şifreleme: $encode, $decode, $sha1, $md5, $crc vs.
Kanal: $mode, $chanmodes, $chantypes, $ialchan, $ibl, $iil, $iel, $comchan, $chan vs.
Pencere: $window, $active, $appstate, $query vs.
Dosya: $read, $readini, $nopath, $qt, $noqt, $file, $findfile, $ini vs.
Artakalan: $chr, $asc, $calc, $away, $rawmsg vs.

-

Umarım işinize yarar. Birşeyler öğrenebilirsiniz.
IrCbaStarD, aquablue, pckopat ve 1 diğerleri buna teşekkür ettiler.
__________________
C/co/cod/code^man.
Alıntı ile Cevapla
Sponsored Links
  #2  
Alt 27 Temmuz 2009, 12:27
Avatar Yok

mS Puan: 1
mS Derece: ßha Meraklı
 
Üyelik tarihi: 27 Temmuz 2009
Mesajlar: 1
Konular: 0
Eklentiler: 0
Alınan Teşekkür: 0
Yapılan Teşekkür: 0
Standart

cok işime yarıcak saoL
Alıntı ile Cevapla
  #3  
Alt 27 Temmuz 2009, 12:49
Chelt - ait Kullanıcı Resmi (Avatar)
 Provider 
 Chief 

mS Puan: 110
mS Derece: Chelt MeraklıChelt Meraklı
 
Üyelik tarihi: 25 Temmuz 2009
Bulunduğu yer: iSTANBUL
Yaş: 38
Mesajlar: 47
Konular: 9
Eklentiler: 0
Alınan Teşekkür: 8
Yapılan Teşekkür: 3
Standart

Çok iyi bir anlatım. Gerçekten yeni başlayan / başlayacak olan arkadaşlar için detaylı bir yardımcı. Eline sağlık
Alıntı ile Cevapla
Cevapla

Seçenekler

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 Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Hash tables. L4roXyL Tutorials - Dersler 1 14 Ekim 2009 00:02
Picture windows. L4roXyL Tutorials - Dersler 0 13 Temmuz 2009 22:17


Yasal Uyarı

    5651 sayılı yasada belirtilen "Yer Sağlayıcı" olarak hizmet sunmaktadır. İlgili yasaya göre site yönetiminin tüm içerikleri kontrol etme yükümlülüğü yoktur. Bu sebep ile sitemiz, uyarıları dikkate alarak yasa dışı paylaşımlar hakkında gerekli işlemleri yapmaktadır. Oluşabilecek yasal sorumluluklar üyelerimize aittir. Gerekli şikayet bildirimleri yapabilmek için "burayı" tıklayarak gerekli alanları doldurup yapabilirsiniz.
mIRCScripting©
Powered by vBulletin®
Copyright © 2000-2015, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1

1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76