Ders: Nick ve Adres Identifier.
Tarih: 29 Eylul 2007 Cumartesi.
Yazan: L4roXyL

-
Evet arkadaşlar zaten mIRC Scripting konusunda orta halde bilgiye sahip olan arkadaşlar bunların % 60/70'ini biliyorlar zaten.
Ben burada hem bilinmiyenleri hemde hic bilgisi olmayanlara gayet basit ve ornekli bir şekilde anlatıcağım.
Ders sonunda hic bilgisi olmayan bir arkadaşımız bile, on bilgi'yi almış olucak.
Neyse başlıyorum.

Identifier'lar;

Kod:
$address(nickname,type) $anick $comchan(nick,N) - Prop: op/help/voice $ial(nick/mask,N) $ialchan(nick/mask,#,N) - Prop: pnick $ibl(#channel,N)-\ $iel(#channel,N)--: - Prop: by/date/ctime $iil(#channel,N)--/ $link(N) - Prop: addr/ip/level/info $mask(address,type) $me $mnick $nick(#,N/nick,aohvr,aohvr) - Prop: pnick/idle $notify(n,nick) - Prop: ison/note/sound/whois/addr $snicks $snick(#,N) $snotify

Evet arkadaşlar tek tek ve cok acık bir şekil'de anlatıcağım.

Adres kontrolu veya gerekli işlev icin; $address(nick,ban-tipi)
Tek gormek icin; //echo -a $address($me,N) buradaki N numarası: 0 ile 9 arasında bir rakam olmalıdır ve hepsinin ayrı gorevi vardır.
Orneğin kendi adresimin ban-tip olarak 9 şeklini'de gormek istiyorum.
Hepsini birden gormek icin basit bir kod yazalım;

Kod:
alias adreslerim }
Gibi.
Veya #IF kanalına giren ve nick'i IF olan rumuzun host'unu banlıyalım;
on *:join:#IF: }
Gibi.

mIRC.ini ve/ya mIRC dokumanın yazılı olduğu dosyadaki ana nick: $anick
Kullanımı: //echo -a $anick şeklindedir.
Tabi kullanım yeri ve verilecek gorevi sizin hayal gucunuze kalmış.

Bir kullanıcının sizinle ortak kac kanal'da bulunduğunu;
Bulunduğu kanalların isimlerini;
Bulunduğu kanallardaki yetkisi;
Vb bilgileri oğrenebilirsiniz.
Mesela kendinizin kac kanal'da bulunduğunuzu oğrenmek istiyorsunuz;
//echo -a $comchan($me,0) : Kac kanalda bulunduğunuzu "rakam" olarak gosterir.
//echo -a $comchan($me,1) : Bulunduğunuz 1 numaralı kanalın ismini vericektir.
//echo -a $comchan($me,1).voice : Bulunduğum 1 numaralı kanal'da voice'e sahipsem; $true olarak donecektir.
//echo -a $comchan($me,2).op : Bulunduğum 2 numaralı kanal'da op'a sahipsem; $true olarak donecektir.
//echo -a $comchan($me,3).help : Bulunduğum 3 numaralı kanal'da halfop'a sahipsem; $true olarak donecektir.
Eğer girilen prop'lardan(op/voice/help) birine sahip değilseniz, $false olarak donecektir.
Şimdi $comchan identifier'ı ile basit ve ornek bir kod yazalım.
Mesela; Bir kanal icerisindeki kullanıcıların benimle kac adet ortak kanalda bulunduklarını oğrenelim.

Kod:
alias kontrol inc %1 } }
Gibi.
Bu identifier cok kullanışlıdır.
Hayal gucunuze bağlı olarak, bayağı işinizi gorecektir.

Bir kanal'daki veya bulunduğun sunucudaki tum nickler'in adreslerini kontrol edebilme, aynı adres'de kac tane var? Ve/ya Aynı adresi kac kişi kullanıyor?
Bu tur bilgileri gormek icin; $ial(nick/mask,N) identifier kullanırız.
IAL Komutları;
/ial on
yaptığınızda, komutu uyguladığınız saniyeden itibaren, ial aktif konuma gecicektir.
/ialclear Herhangi bir kişi ial listesinden silmek/cıkarmak icin kullanılır.
/ialmark mesaj Herhangi bir nick'i işaretlemek icin kullanılan komutdur.
IAL listesinde kac adet kayıt olduğunu gormek icin;
//echo -a $ial(*,0) komutunu uygulayınız.
Mesela "IFHelper" host'undan kac kişinin ial listesinde olduğunu oğrenmek istiyoruz;
Bunun icin; //echo -a $ial(*!*@*IFHelper*,0) yaptığımızda kac adet kişinin olduğunu gosterecektir.
Prop: $ial(nick/mask,N).addr/nick/user/mark/host

Orneğin IF nick'ini ele alalım.
//echo -a $ial(IF,1).addr : IF nick'inin adresini, [email protected] şeklinde verecektir.
//echo -a $ial(IF,1).host : IF nick'inin host kısmını verecektir/gosterecektir.
//echo -a $ial(IF,1).nick : IF nick'inin nick'ini gosterecektir. Bu genellikle nick yerine mask kullanıldığında kullanılır yani; //echo -a $ial(*!*@*IFHelper*,1).nick gibi.
//echo -a $ial(IF,1).user : IF nick'inin o anki ident ismini gosterecektir.
IAL identifier'ının icinde ornek olarak nick kullandık,
Bunu ornek olarak verdim, $ial(veri,N) burada veri dediğim yere host/ident/nick girebilir wildcard(s) kullanabilirsiniz.
Arama sonucu ona gore listenilecektir.

Belirli kanal'daki ial listesine işlev yapmak icin; $ialchan(nick/mask,#,N)
Yani orneğin; #IF kanalında kac adet kayıtlı veri var gormek icin;
//echo -a $ialchan(*,#IF,0) komutunu kullanırsınız.
Yukarıda belirttiğim gibi, aranıcak veri'ye nick/ident/host girebilir ve wildcards kullanabilirsiniz.
Ayrıca $ialchan identifier'ın ozel bir prop'u olan pnick vardır.
Mesela; //echo -a $ialchan(IF,#IF,1).pnick IF nick'inin IF kanalındaki durumunu gosterecktir. @&IF şeklinde ve/ya %IF vb gibi.
IAL hakkında anlatıcaklarım bu kadar.
Şimdi ial mantığından yola cıkarak bir klon uyarıcı yazalım;

Kod:
on *:join:#: | else } alias bak else echo -a $[$timestamp,$chr(45),$chr(32),Bilgi:,$chr(32),Klon: ,$chr(32),$chr(40),$chr(32),$chr(2),$calc(%% -1),$chr(2),$chr(32),$chr(41),$chr(32),Adres:,$chr( 32),$chr(40),$chr(2),$chr(32),%&,$chr(2),$chr(32), $chr(41),$chr(32),Nickler:,$chr(32),$chr(40),$chr( 32),$chr(2),%%-,$chr(32),$chr(2),$chr(41)) } }
Girdiğiniz kanal icin, ial acık değilse, ial aktif kılınır. Kanal'a who cekilir.
Kanal'a giren nick'lere who ceker, kanal'da aynı host'a sahip olan var ise onları eşleştiri ve aktif ekrana yansıtır.
Bu arada guzel bir kod vermiş olduk

Kanal ban listesi/invex listesi/koruma listesini listelemek ve hakkında bilgi almak icin;
Ban(+b): $ibl(#,N)
Invex(+I): $iil(#,N)
Exception(+e): $iel(#,N)
Orneğin; #IF kanalında kac adet var gibi bir sorunun cevabını;
//echo -a $ibl(#IF,0) komutu ile oğrenebiliriz.
Orneğin; #IF kanalında kac adet invex(invite dışı) var gibi bir sorunun cevabını ise;
//echo -a $iil(#IF,0) komutu ile oğrenebiliriz.
Orneğin; #IF kanalında kac adet koruma(+e) var gibi bir sorunun cevabını ise;
//echo -a $iel(#IF,0) komutu ile oğrenebiliriz.
0 yerine, rakam girdiğimiz'de, mesela;
//echo -a $ibl(#IF,1) #IF kanalındaki ilk sırada banlı olan veriyi bize verecektir.
Veri diyorum cunki, bu bir nick/host/ident ban veya extban(~q,c,n,r) olabilir.
Prop: by/date/ctime

Orneğin; //echo -a $ibl(#IF,1).by #IF kanalındaki son ban'ı uygulayan kullanıcıyı gosterir.
Orneğin; //echo -a $ibl(#IF,1).date #IF kanalındaki son atılan ban'ın atıldığı tarih hakkında bilgi verir.
Orneğin; //echo -a $ibl(#IF,1).ctime #IF kanaldaki son atılan ban'ı $ctime formatında tarhini verir.
Format $ctime identifier olduğu icin; //echo -a $asctime($ibl(#IF,1).ctime) şeklinde daha sağlıklı oğrenebilirsiniz.
Şimdi 1/2 basit kod ile ornek verelim.
Mesela; Bir kanal'da kac adet exception olduğunu, kim tarafından verildiğini ve verildiği tarihi oğrenelim.

Kod:
alias elist }
Gibi.

Bir basit ornek daha verelim,
Mesela kanal'daki tum banları acmak icin;

Kod:
alias bantez }
Bağlı olduğunuz sunucuda, /links -n komutunu uyguladıktan sonra; cıkan sonuclar hakkında detaylı bilgiler almak icin; $link(N) identifier'ını kullanırız.
Orneğin; //echo -a $link(0) Bulunduğunuz sunucuya bağlı olan sunucuların sayısını vericektir.
Orneğin; //echo -a $link(1) Birinci linkli olan sunucunun ismini vericektir.
Prop: addr/ip/level/info

Orneğin; IFSohbet.net'e 3 sunucu bağlı.
//echo -a $link(1).addr : 1. bağlı olan sunucunun adresini verir.
//echo -a $link(2).ip : 2. bağlı olan sunucunun adresini verir.
//echo -a $link(1).level : 1. bağlı olan sunucunun level değerini verir.
//echo -a $link(3).info : 3. bağlı olan sunucu hakkında başlık bilgisi verir.
Şimdi bu mantıktan yola cıkarak kısa bir kod yazalım.
Mesela, sunucuya bağlı olan kac adet link'li ağ var, isimleri neler, level değerleri kac vb bilgileri oğrenelim.

Kod:
alias sinfo echo -a Tarama tamamlandı. $calc(%= -1) adet veri sunucu bulundu. }
Gibi.


Sıradaki identifier; $mask(adres,dongu-tipi)
Aslında bu identifier tam olarak, icerisine yazılan adres'i girilen N(dongu-tipi) tipindeki değer'e atıyor.
Mantığı; Mesela IF nick'li kişinin 5([email protected]) numaralı adresini bir veriableye atıyoruz,
Yani; /var %: = $address(IF,5) şeklinde, ama IF nick'ini, #IF kanalında 5 numaralı tip ile banlamak istiyoruz.
İşte burada $mask kullanabiliriz.
Ornek verelim bir kod ile;
on *:join:#a: }
Gibi.

Size kısa bir kod ile, 0'dan 9'a kadar olan ban tiplerini gosterelim.

Kod:
alias bantip }
Bu kod sayesinde, 0'dan 9'a kadar olan karakterlerin ne işe yaradığını anlıyabilirsiniz.

Online nick'inizin ne olduğunu oğrenmek icin; $me
//echo -a $me
Yaptığınızda bilgiye ulaşırsınız.

Ana nick'inizin ne olduğunu oğrenmek icin; $mnick
//echo -a $mnick

Yaptığınızda bilgiye ulaşırsınız.

En cok kullanılan ve aşırı miktarda işe yarıyan bir identifier'a geldik; $nick(#,N/nick,aohvr,aohvr)
Prop:
color/pnick/idle
Parametreler;
a: Hepsi.
o: Op nick.
h: Halfop nick.
v: Voice nick.
r: Yetkisiz nick.

Ornekler;
//echo -a $nick(#IF,0) veya $nick(#,0,a) Aktif penceredeki, kullanıcı sayısının tamamını verir.
//echo -a $nick(#IF,0,o) #IF kanalındaki, op sayısını verir.
//echo -a $nick(#IF,0,v) #IF kanalındaki, voice sayısını verir.
//echo -a $nick(#IF,0,h) #IF kanalındaki, halfop sayısını verir.
//echo -a $nick(#IF,0,r) #IF kanalındaki, yetkisiz nick sayısını verir.
-
Ornekler 2;
//echo -a $nick(#IF,1)
#IF kanalında, nicklist'de bulunan en usteki kullancının nick'ini vericektir.
//echo -a $nick(#IF,1).pnick #IF kanalında, nicklist'de bulunan en usteki kullanıcının yetki kiplerini vericektir. Ornek@&+%Nick gibi)
//echo -a $nick(#IF,1).idle #IF kanalında, nicklist'de bulunan en usteki kullanıcının idle suresini vericektir. Fakat bu idle suresini alma işlevi, siz kanal'a girdikten sonra sayılmaya başlıyacaktır. Yani /whois bilgisindeki idle suresi ile, buradaki idle suresi muhakkak farklı olucaktır.
//echo -a $nick(#IF,1).color #IF kanalında, nicklist'de bulunan en usteki kullanıcının, nick renginin numarasını vericektir. Ornek: Kırmızı(4) gibi.
Şimdi bu ornekler yola cıkarak 1/2 kod deniyelim.
Mesela, kanaldaki yetkisiz nicklerin hepsine mesaj gonderelim.(Yani kullanıcı yetkili değilse, op/sop/hop/vb)

Kod:
alias msk }
Gibi.
Bir ornek daha verelim; mesela kanaldaki tum kullanıcıların idle surelerine bakalım.

Kod:
alias idlek }
Gibi basit kodlar ile, zor işler başarılabilir.


Sırada sayesinde, bir cok dialog'lar/snippet'lar ve arkadaş listesi vb add-on'lar yapılan; $notify(N/nick) identifier'ına geldik.
Notify kullanımı hakkında bilgi; /notify -shrl on/off/nickname note
Notify aktif kılmak icin; /notify on
Notify deaktif etmek icin; /notify off
/notify -l : Notify listesini gosterir.
/notify -s : Online olan kişileri, ayrı pencerede gosterir.
/notify -h : Hide(Gizli) modda ekleme yapar.
/notify -r : Belirtilen nick'i notify listesinden silecektir.
/notify : Online olan nick'leri mesajları ile beraber gosterecektir.

İdentifier kullanımları;
//echo -a $notify(0) Notify listesinde kac kişi olduğunu gosterecektir.
//echo -a $notify(1) Notify listesinde'ki 1 numaralı nick'i vericektir.
Prop: ison/note/sound/whois/addr
//echo -a $notify(1).addr Notify listesinde'ki 1 numaralı nick'in, eğer online ise adresini vericektir.
//echo -a $notify(1).note Notify listesinde'ki 1 numaralı nick'e ait olan mesajı gosterecektir.
//echo -a $notify(1).whois Notify listesinde'ki 1 numaralı nick'e /whois eklentisinin eklenip/eklenmediğini kontrol edikcektir.($false: Eklenmemiş. / $true: Eklenmiş)
//echo -a $notify(2).ison Notify listesinde'ki 2 numaralı nick'in online olup olmadığını kontrol edicektir.($false: Offline. / $true: Online.)
//echo -a $notify(3).sound Notify listesinde'ki 3 numaralı nick'e sound(ses) dosyası eklenip/eklenmediğini kontrol edicektir.
Şimdi bu bilgilerden yola cıkarak basit bir kod yazalım.
Mesela; Notify listesindeki nickleri sıralayıp online olup olmadığını ve adres'lerini kontrol edelim.

Kod:
alias nlist }
Gibi basit bir kod, işinizi gorecektir.


Nicklist kutusun'da secili olan nickleri yansıtabileceğinizi biliyormuydunuz?
İdentifier : $snicks
Listbox'da sectiğiniz nickleri aralarından virgun bulunmak uzere gormek icin;
//echo -a $snicks yapmanız yeterlidir.
Ve birde $snick identifier'ı vardır.
Bunun kullanım şekli: $snick(#,N)
Orneğin;

//echo -a $snick(#IF,0) #IF kanalında kac adet nick'in, listbox'da secili olduğunu gosterir.
//echo -a $snick(#IF,1) #IF kanalındaki secili olan nick'lerden 1. nick'i gosterecektir.
Şimdi bu bilgilerden yola cıkarak basit bir kod yazalım.
Mesela; Aktif ekrandaki secili nicklere mesaj gondermek icin bir kod olabilir.

Kod:
alias smsg var %+ = 1,%++ = $snick($active,0) while %+