Eventlardaki Prefixler Hakkında Bilgi

Regex

Administrator
Ders: Eventlardaki Prefixler Hakkında Bilgi
Tarih: 8 Mart 2009 Pazar
Yazan: Regex

-

Evet arkadaşlar, bir aylık kısa bir aradan sonra derslerimize devam ediyoruz. Aslında, okuldu dersti çokça yoğunum bu sıralar. Ancak bu pazar akşamında, biraz boş zaman buldum ve sizlere bir şeyler kazandırabilmek için bu dersi yazma kararı verdim.

Derste anlatacağım-anlayacağınız konu, eventlardaki level (seviye)ler ve prefix (işaret)lerdir. Mesela bu konuya uzak kalan arkadaşlarımız, eventların başındaki prefixleri ve level tanımlarını (on @1000: veya on ^*: vb.) merak etmişlerdir. İşte bu merak, bu dersimizi okuduktan sonra ortadan kalkacak.:)

Öncelikle bu derste iki nokta üzerinde duracağım. Birisi "level" yani "seviye" olarak adlandırdığımız, sayılardan oluşan ve eventlarda "on"dan sonra gelen rakamsal değerlerdir.

Tamam da kardeşim nedir bu? diyorsan, aşağıya bak ve beni takip et.:)

Bu levellar, tanımlı oldukları kullanıcılar için işlem uygulatmayı sağlarlar. Hemen bir örnek vermek istiyorum. Misâl; bir düşman listesi oluşturduğumuzu farz edelim. Ne yapıyoruz? Genelde 666 seviyesinden, nickleri veya maskları listeye ekliyoruz ve şöyle bir kod kullanıyoruz:

Kod:
on 666:join:#:ban -k # $nick 2 Düşman listesindesin.


İşte buradaki 666, bizim düşman listesine eklediğimiz kullanıcıların tanımlı olduğu level oluyor. Bu bölüme 1 rakamını tanımlasaydık, tüm kullanıcılar için geçerli olacaktı. Yani;

Kod:
on 1:join:#:ban -k # $nick 2 Düşman listesindesin.


veya

Kod:
on *:join:#:ban -k # $nick 2 Düşman listesindesin.


Gibi bir kod kullansaydık, bulunduğumuz bir kanallara giren her kullanıcı, otomatik olarak atılacaktı.

Ek bilgi: Level kısmında 1 rakamının tanımlanması ya da bu bölümü geçersiz kılmak için * rakamının tanımlanması, işlem bakımından aynıdır.

Prefixlere geçmeden önce, yanlış kullanımlar ortaya çıkarmamanız için ek bir açıklama daha yapmak istiyorum. Diyelim yukarıdaki kodu kullandınız ve 667 levelına da bir kullanıcı tanımladınız; ancak bu kullanıcı da düşman olarak algılandı ve atıldı. Tabii atılır, son derece normâl.:) Çünkü seviye kısmına girdiğimiz rakamlar, kendisinden büyük tüm rakamları da karşılayacaktır. Sadece o seviyeyi
kapsatmanın yolu, + karakterinden geçiyor. Örneğin:

Kod:
on +666:join:#:ban -k # $nick 2 Düşman listesindesin.


Gibi kullanırsanız herhangi bir sorunla karşılaşmazsınız.

Şimdi gelelim, prefixlere... Yani sizin merak ettiğiniz ve dersimizin ana maddesi olan; eventlardaki "^", "@", "!", "$" gibi işaret (prefix)lere...

Bu prefixlere başlarken, yukarıdaki kodumuzla orantılı örnekler vermek istiyorum. Yani sonuçta siz, o kodun mantığını artık iyice kavradığınız için bu anlatacaklarımı da daha kolay kavrayacaksınızdır, aynı örnek üzerinden.

Bu prefixler nelerdir ve ne işlere yararlar?

Öncelikle prefixler, level (seviye)lardan önce kullanılırlar. Zaten vereceğim örneklerle iyice anlayacaksınız.

^: Normâl eventlardan önce devreye girer. Bu prefixi, genelde metinleri Türkçe'leştirmek için ya da farklı pencereye veri aktarmak için kullanıyoruz. Dikkat etmeniz gereken tek şey, veri aktarımını veya düzenlemesini yaptıktan sonra /haltdef kullanmaktır. Örneğin:

Kod:
on ^*:join:#:echo $color(info) # -t *** $iif($nick == $me,# kanalına girdiniz.,Giriş: $+($nick,.) $+($chr(40),$address,$chr(41))) | haltdef


Herhangi bir kanala giriş yaptığınızda, "<girdiğiniz-kanal> kanalına girdiniz." yanıtını aldığınızı göreceksiniz veya bir kullanıcı girdiğinde, yine Türkçe bir sonuç verecektir.

Not: Eğer /haltdef komutunu eklemeseydik; hem bizim verimizi, hem de mIRC'den gelen veriyi gösterecekti.

@: Bu prefix, oldukça güzeldir ve avantajlıdır. Kullanımı da son derece kolaydır. Eğer belirtilen kanalda, $me (yani biz) opsak işlem yapacaktır. Yani if ($me isop #) gibi gereksiz bir sorguya gereksinim duymamış oluyorsunuz. Örneğin:

Kod:
on @+666:join:#:ban -k # $nick 2 Düşman listesindesin.


Az önce verdiğimiz örnekte, op olmadığımız kanallara da düşman listemizdeki bir kullanıcı giriş yaptığında atmaya çalışacaktı. Fakat, artık bir sınırlama koyduk ve sadece op olduğumuz kanallarda işlem yapacaktır.

!: İşlemi gerçekleştiren kişi, biz değilsek işlem yapacaktır. Yine son derece hoş bir prefixtir. Mesela hep kullanırız ya if ($nick != $me) gibi şeyler? İşte artık o kullanımı bırakıp, bunu kullanabileceğiz.:) Üstte de anlattığım gibi gereksiz sorgulardansa, prefix kullanmak kodu hem hızlı yapar, hem de kısa tutar.

Hemen bu kullanıma da bir örnek verelim. Mesela kanala giren kullanıcı, biz değilsek gıcık bir karşılama yapsın. Nasıl mı? Aha, aşağıdaki gibi:

Kod:
on !*:join:#:.msg # $+($nick,$chr(44)) niye geldin kiii? Kalk, git yahu hödük!:S


*: Level (seviye) anlatımında da söylediğim gibi herkesi kapsatmak için kullanılır ve ek olarak yine her eventta olmazsa olmaz bir prefixtir. Zaten örneklerde de dikkatinizi çektiyse, hep on @*:, on !*: gibi kullanımlar yaptık. Yani bir seviye tanımlamadıysanız, kullanmak zorundasınız.

$: Geldik, benim en sevdiğim prefixe... Bu prefix, aslında benim öğrendikten sonra vazgeçilmezim olan mIRC'nin bir güzelliğidir. Sizin de sevmenizi istiyorum; iyidir, iyi...:)

Regular expression ($regex) kullanımını, event içerisinde kullanmamızı sağlayan bir prefixtir, $ prefixi. Tabii eğer siz, $regex hakkında bilgi sahibi değilseniz bu prefixi de sevmeyeceksinizdir ve burada verilen bilgiler bir işe yaramayacaktır. Bu nedenle, Alience hocamın yazmış olduğu "RegEx Yardım Dosyası"'nı mutlaka okuyun ve bu bilgilere de daha sonra göz atın.

Nerede kalmıştık? $ prefixi, dediğim gibi event içerisinde RegEx kullanmanızı sağlıyor. Örneğin:

Kod:
on *:text:*:*:if ($regex($1-,/ForumIRC/i)) echo -at * $qt($target) üzerinde, ForumIRC sözcüğü kullanıldı.


Şeklindeki bir kodu, aşağıdaki gibi yazabiliyoruz:

Kod:
on $*:text:/ForumIRC/i:*:echo -at * $qt($target) üzerinde, ForumIRC sözcüğü kullanıldı.


Yukarıda da anlattığım gibi aslında çok basit ve çok hoş bir prefixtir. Fakat siz, RegEx kullanmayı bilmiyorsanız doğal olarak bu kullanımı da kavrayamamışsınızdır.

Umarım bu dersten, birileri bir şeyler öğrenmiştir. Eğer bilginizi geliştirebildiysem, ne mutlu bana...

Not: Konu hakkındaki sorularınızı, başlık altından sorabilirsiniz.

Hepinize iyi çalışmalar dilerim.
 
Üst