Skaliteforum Sınırsız Paylaşım  

Geri git   Skaliteforum Sınırsız Paylaşım > İRCD - İRC > Mirc Scripting > Scripting Dersleri

Scripting Dersleri Mirc kodlama dersleri paylaşımı.

SKaliteForum Üye ol

 
 
Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 12-14-2008, 12:51 PM   #1
biLinmez
Usta Üye
 
biLinmez - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Sep 2008
Bulunduğu yer: ßiLinmez ßi Yerden.
Mesajlar: 1.611
biLinmez is on a distinguished road
biLinmez - MSN üzeri Mesaj gönder
Standart Nick ve adres "Identifier(s)" açıklamalı bilgi.

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(nick!ident@host): $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.
biLinmez isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
 

Bookmarks

Etiketler
açıklamalı, adres, bilgi, identifiers, nick


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

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ı

Hizli Erisim

SKaliteForum Sistem Bilgileri Yasal Uyarı
sohbetalmanya sohbetavrupa sohbetavrupa sohbet
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
vBulletin 3.7.2 Türkçe Yapımcı : Skaliteforum.COM


Sohbet sitelerimiz : sohbet

SKaliteForum Forum içerisinde yazılan tüm yazılardan kullanıcının kendisi mesuldur. Herhangi bir şikayet , istek , bilgi için admin@skaliteforum.com adresine mail atabilirsiniz.

SKaliteForum | Bilgi Paylasim Platformudur


WEZ Format. Şuan Saat: 04:17 AM.




canli casino bahis siteleri

ümraniye escort istanbul escort