Nick ve adres "Identifier(s)" açıklamalı bilgi

Aytac

nicktag
Yönetici
Developer
Katılım
4 Şub 2020
Mesajlar
395
Tepkime puanı
141
Puanları
43
Konum
ircland
Web sitesi
www.ircalem.net
Ders: Nick ve Adres Identifier.
Tarih: 29 Eylül 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 hiç bilgisi olmayanlara gayet basit ve örnekli bir şekilde anlatıcağım.
Ders sonunda hiç bilgisi olmayan bir arkadaşımız bile, ön 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 çok açık bir şekil'de anlatıcağım.

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

Kod:
alias adreslerim { 
 var %1 = 0,%2 = 9 
  while %1 <= 2 { 
   echo -a Adres numarası: %1 - Adres mask: $address($me,%1)
  inc %1
 }
}

Gibi.
Veya #IF kanalına giren ve nick'i IF olan rumuzun host'unu banlıyalım;
on *:join:#IF: { if $nick == IF { mode # +b $address($nick,2) } }
Gibi.

mIRC.ini ve/ya mIRC dökümanın yazılı olduğu dosyadaki ana nick: $anick
Kullanımı: //echo -a $anick şeklindedir.
Tabi kullanım yeri ve verilecek görevi sizin hayal gücünüze kalmış.

Bir kullanıcının sizinle ortak kaç kanal'da bulunduğunu;
Bulunduğu kanalların isimlerini;
Bulunduğu kanallardaki yetkisi;
Vb bilgileri öğrenebilirsiniz.
Mesela kendinizin kaç kanal'da bulunduğunuzu öğrenmek istiyorsunuz;
//echo -a $comchan($me,0) : Kaç kanalda bulunduğunuzu "rakam" olarak gösterir.
//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 dönecektir.
//echo -a $comchan($me,2).op : Bulunduğum 2 numaralı kanal'da op'a sahipsem; $true olarak dönecektir.
//echo -a $comchan($me,3).help : Bulunduğum 3 numaralı kanal'da halfop'a sahipsem; $true olarak dönecektir.
Eğer girilen prop'lardan(op/voice/help) birine sahip değilseniz, $false olarak dönecektir.
Şimdi $comchan identifier'ı ile basit ve örnek bir kod yazalım.
Mesela; Bir kanal içerisindeki kullanıcıların benimle kaç adet ortak kanalda bulunduklarını öğrenelim.

Kod:
alias kontrol {
  var %1 = 1,%2 = $nick($active,0)
  while (%1 <= %2) { 
    var %- = $nick($active,%1)
    if $me != $nick($active,%1) {
      echo -a Nick: %-  - Bulunduğumuz ortak kanal sayısı: $comchan(%-,0)
    }
    inc %1
  }
}

Gibi.
Bu identifier çok kullanışlıdır.
Hayal gücünüze bağlı olarak, bayağı işinizi görecektir.

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

Örneğin IF nick'ini ele alalım.
//echo -a $ial(IF,1).addr : IF nick'inin adresini, ident@host şeklinde verecektir.
//echo -a $ial(IF,1).host : IF nick'inin host kısmını verecektir/gösterecektir.
//echo -a $ial(IF,1).nick : IF nick'inin nick'ini gösterecektir. 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 gösterecektir.
IAL identifier'ının içinde örnek olarak nick kullandık,
Bunu örnek olarak verdim, $ial(veri,N) burada veri dediğim yere host/ident/nick girebilir wildcard(s) kullanabilirsiniz.
Arama sonucu ona göre listenilecektir.

Belirli kanal'daki ial listesine işlev yapmak için; $ialchan(nick/mask,#,N)
Yani örneğin; #IF kanalında kaç adet kayıtlı veri var görmek için;
//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 özel bir prop'u olan pnick vardır.
Mesela; //echo -a $ialchan(IF,#IF,1).pnick IF nick'inin IF kanalındaki durumunu gösterecktir. @&IF şeklinde ve/ya %IF vb gibi.
IAL hakkında anlatıcaklarım bu kadar.
Şimdi ial mantığından yola çıkarak bir klon uyarıcı yazalım;

Kod:
on *:join:#: { if $nick == $me && !$ialchan(#) { .ial on | who # } | else { bak $nick } }
alias bak { 
who $1
  if $ialchan($+(*,$gettok($address($1,2),2,64),*),$active,0) < 2 { halt }
   else { var %% = 1,%& = $gettok($address($1,2),2,64),%&& = $ialchan($+(*,%&,*),$active,0)
   while %% <= %&& { var %%- = $addtok(%%-,$gettok($ialchan($+(*,%&,*),$active,%%),1,33),44)
   inc %%
   }
  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 için, ial açık değilse, ial aktif kılınır. Kanal'a who çekilir.
Kanal'a giren nick'lere who çeker, kanal'da aynı host'a sahip olan var ise onları eşleştiri ve aktif ekrana yansıtır.
Bu arada güzel bir kod vermiş olduk :)

Kanal ban listesi/invex listesi/koruma listesini listelemek ve hakkında bilgi almak için;
Ban(+b): $ibl(#,N)
Invex(+I): $iil(#,N)
Exception(+e): $iel(#,N)
Örneğin; #IF kanalında kaç adet var gibi bir sorunun cevabını;
//echo -a $ibl(#IF,0) komutu ile öğrenebiliriz.
Örneğin; #IF kanalında kaç adet invex(invite dışı) var gibi bir sorunun cevabını ise;
//echo -a $iil(#IF,0) komutu ile öğrenebiliriz.
Örneğin; #IF kanalında kaç adet koruma(+e) var gibi bir sorunun cevabını ise;
//echo -a $iel(#IF,0) komutu ile öğ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 çünki, bu bir nick/host/ident ban veya extban(~q,c,n,r) olabilir.
Prop: by/date/ctime

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

Kod:
alias elist {
 mode # +e | var %1 = 1,%2 = $iel($active,0)
  while %1 <= %2 { echo -a Korunan: $iel($active,%1) - Koruyan: $iel($active,%1).by - Tarih: $iel($active,%1).date | inc %1
  }
}

Gibi.

Bir basit örnek daha verelim,
Mesela kanal'daki tüm banları açmak için;

Kod:
alias bantez { 
  mode # +b | var %- = 1,%_ = $ibl($active,0)
  while %- <= %_ {
    mode $active -b $ibl(#,%-) | inc %-
  }
}

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

Örneğ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 çıkarak kısa bir kod yazalım.
Mesela, sunucuya bağlı olan kaç adet link'li ağ var, isimleri neler, level değerleri kaç vb bilgileri öğrenelim.

Kod:
alias sinfo {
  .links -n | var %= = 1,%=_ = $link(0) 
    while %= <= %=_ {
    echo -a Sunucu: $link(%=).addr - Level değeri: $link(%=).level - INFO: $link(%=).info | inc %=
  }
  echo -a Tarama tamamlandı. $calc(%= -1) adet veri sunucu bulundu.
}

Gibi.


Sıradaki identifier; $mask(adres,döngü-tipi)
Aslında bu identifier tam olarak, içerisine yazılan adres'i girilen N(döngü-tipi) tipindeki değer'e atıyor.
Mantığı; Mesela IF nick'li kişinin 5(Nick!ident@host) 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.
Örnek verelim bir kod ile;
on *:join:#a: { if $nick == IF { var %- = $address($nick,5) | mode # +b $mask(%-,2) } }
Gibi.

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

Kod:
alias bantip {
  echo -a Tam adresiniz([EMAIL="nick!ident@host"]nick!ident@host[/EMAIL]): $address($me,5) | var %1 = 0,%2 = 9
  while %1 <= %2 {
    echo -a Ban tipi numarası: %1 - İşlevi: $address($me,%1)
    inc %1
  }
}

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

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

Ana nick'inizin ne olduğunu öğrenmek için; $mnick
//echo -a $mnick

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

En çok 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.

Örnekler;
//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.
-
Örnekler 2;
//echo -a $nick(#IF,1)
#IF kanalında, nicklist'de bulunan en üsteki kullancının nick'ini vericektir.
//echo -a $nick(#IF,1).pnick #IF kanalında, nicklist'de bulunan en üsteki kullanıcının yetki kiplerini vericektir. Örnek:(@&+%Nick gibi)
//echo -a $nick(#IF,1).idle #IF kanalında, nicklist'de bulunan en üsteki kullanıcının idle süresini vericektir. Fakat bu idle süresini alma işlevi, siz kanal'a girdikten sonra sayılmaya başlıyacaktır. Yani /whois bilgisindeki idle süresi ile, buradaki idle süresi muhakkak farklı olucaktır.
//echo -a $nick(#IF,1).color #IF kanalında, nicklist'de bulunan en üsteki kullanıcının, nick renginin numarasını vericektir. Örnek: Kırmızı(4) gibi.
Şimdi bu örnekler yola çıkarak 1/2 kod deniyelim.
Mesela, kanaldaki yetkisiz nicklerin hepsine mesaj gönderelim.(Yani kullanıcı yetkili değilse, op/sop/hop/vb)

Kod:
alias msk {
  var %1 = 1,%\ = $nick($active,0,r)
  while %1 <= %\ { 
    privmsg $nick($active,%1,r) $1-
    inc %1
  }
}

Gibi.
Bir örnek daha verelim; mesela kanaldaki tüm kullanıcıların idle sürelerine bakalım.

Kod:
alias idlek { 
  var %% = 1,%%% = $nick($active,0)
  while %% <= %%% {
    echo -a Nick: $nick($active,%%) - Idle süresi: $nick($active,%%).idle
    inc %%
  }
}
Gibi basit kodlar ile, zor işler başarılabilir.


Sırada sayesinde, bir çok 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 için; /notify on
Notify deaktif etmek için; /notify off
/notify -l : Notify listesini gösterir.
/notify -s : Online olan kişileri, ayrı pencerede gösterir.
/notify -h : Hide(Gizli) modda ekleme yapar.
/notify -r : Belirtilen nick'i notify listesinden silecektir.
/notify : Online olan nick'leri mesajları ile beraber gösterecektir.

İdentifier kullanımları;
//echo -a $notify(0) Notify listesinde kaç kişi olduğunu gösterecektir.
//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ı gösterecektir.
//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 çı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 {
  var %& = 1,%&& = $notify(0)
  while %& <= %&& {
    echo -a Nick: $notify(%&) - Durumu: $iif($notify(%&).ison == $false,Offline,Online) - Adresi: $iif(!$notify(%&).addr,Online olmadığı adres görüntülenemiyor.,$notify(%&).addr)
    inc %&
  }
}

Gibi basit bir kod, işinizi görecektir.


Nicklist kutusun'da seçili olan nickleri yansıtabileceğinizi biliyormuydunuz?
İdentifier : $snicks
Listbox'da seçtiğiniz nickleri aralarından virgün bulunmak üzere görmek için;
//echo -a $snicks yapmanız yeterlidir.
Ve birde $snick identifier'ı vardır.
Bunun kullanım şekli: $snick(#,N)
Örneğin;

//echo -a $snick(#IF,0) #IF kanalında kaç adet nick'in, listbox'da seçili olduğunu gösterir.
//echo -a $snick(#IF,1) #IF kanalındaki seçili olan nick'lerden 1. nick'i gösterecektir.
Şimdi bu bilgilerden yola çıkarak basit bir kod yazalım.
Mesela; Aktif ekrandaki seçili nicklere mesaj göndermek için bir kod olabilir.

Kod:
alias smsg {
  if !$snick($active) { echo -a Seçili nick yok. | halt }
  var %+ = 1,%++ = $snick($active,0)
  while %+ <= %++ {
    privmsg $snick($active,%+) $1-
    inc %+
  }
}

Gibi basit bir kod yazılabilir. Kanal'daki tüm seçili nick'lere mesajınızı göndericektir.
-

Umarım birşeyler öğrenebilirsiniz.
Kolay gelsin.
 
Geri
Üst