Timer (Zamanlayıcı) Hakkında Geniş Bilgi

Regex

Administrator
Ders: Timer (Zamanlayıcı) Hakkında Geniş Bilgi
Tarih: 27.01.2009 Salı
Yazan: Regex
Kalite Kontrol: detay
-
Evet arkadaşlar, bu dersimizde /timer komutunu ele alacağız.
Bildiğiniz gibi timerı, yazdığımız birçok kodda kullanıyoruz ve çok kullanışlı bir komut. Kodlarda olmasa bile örneğin bir işlemi daha sonra otomatik olarak yapmak istersek de kullanıyoruz. Bu nedenle, sadece mIRC Scripting ile uğraşan arkadaşlarımızın değil tüm IRC kitlesinin bilmesi gereken bir komuttur.
Öncelikle, Khaled'ın timerı nasıl anlattığına (mIRC help dosyasında) bakalım:

Size, bunları tek tek açıklayacağım ve açıklarken de bol örnekle, basite indirgeyerek, elimden geldiğince anlaşılır bir üslup kullanmaya çalışacağım. Aklınıza takılanları, yine bu başlık altından sorabilirsiniz.
Öncelikle basit bir komutla başlayalım. Örneğin; sonsuz sayıda, her beş saniyede bir /ame atarak "Denemedir yahu." yazalım.
Komut: /timer 0 5 ame Denemedir yahu.
Gördüğünüz gibi sunucudan bağlantınız kopmadığı sürece, her beş saniyede bir bütün kanallara "Denemedir yahu." şeklinde ame gönderilecektir.
Biz, bu komutta isimsiz bir timer açtık. Daha doğrusu, ismi mIRC'in rastgele ve kaçıncı timersa ona göre vermesine olanak tanıdık. Eğer komutu "/timerdene 0 5 ame Denemedir yahu." olarak yazsaydık, bu timerın ismi "dene" olacaktı.
Peki açılan bir timerı nasıl kapatırız?
Son derece basit: /timerzamanlayıcının-adı off
Burada zamanlayıcının-adı olan kısma, timerın ismini yazacaksınız. Eğer tüm timerları aynı anda kapatmak istiyorsanız da /timers off şeklinde kullanacaksınız. "s" takısı, zaten İngilizce'de çoğul anlamına gelmektedir; bizdeki lar-ler gibi.
Ayrıca timerlarda, whildcard da kullanabiliyoruz. Mesela; "a", "aa" ve "abc" adlarında üç timerımızın olduğunu varsayalım. /timera* off yazdığımızda, "a" ile başlayan tüm timerları kapatmış olacağız ve şu şekilde bir yanıtla karşılaşacağız:

Parametrelere ve timer hakkındaki identifierlara geçmeden önce, bu kısmı iyice kavramanız açısından kodlar içerisinde de timerın kullanımını anlatmak istiyorum. Yine fazla karışık olmayan, basit bir kod yazalım ki daha kolay bu işi kavrayın. Misal; "#Life" kanalına her girene, iki saniye gecikmeli olarak hoş geldin dedirtelim (açılan timerlar, giren kişilerin rumuzları olsun) ve yine bu kanalda Lifeman rumuzu, "!dur" komutunu kullandığında aktif olan tüm timerları kapatalım.
Kodumuz:
Kod:
on !*:join:#Life:$+(.timer,$nick) 1 2 .msg # Hoş geldin, $+($nick,.)
on *:text:!dur:#Life:if $nick == Lifeman { .timers off }
Bir de timerlarda zaman faktörü vardır. Mesela 12:00'de işlem yapacak bir timer oluşturabiliriz.
Örnek komut: /timer 12:00:00 1 1 echo Öğlen oldu.
Örnek komut: /timer 02:30:00 1 1 echo Saat gecenin iki buçuğu oldu. Yat artık yahu.
Tüm noktalar anlaşıldıysa, parametreleri açıklamaya başlıyorum.
Yukarıda help dosyasında, verildiği gibi /timer komutunun birçok parametresi mevcuttur.
Peki bu parametreler nelerdir ve ne işe yararlar?
-c: Bazı nedenlerden ötürü bir timer, normâl şartların dışında çalışıyorsa bu parametre kullanıldığında timer, işlemini hemen uygular. Aksi takdirde, herhangi bir işlem yapmaz.
-e: Timerı çağırmak için kullanılır. Yani normâlde timerın, daha işlem yapmasına zaman varken bu parametreyle bir timerı çağırdığınızda işlem hemen yapılacaktır. Örneğin: "örnk" adında, yedi (7) saniyeye ayarlı bir timerımız olsun. Biz, /timerörnk -e yazdığımızda bu timer, yapacağı işlemi derhâl uygulayacaktır.
-h: Altta açıklayacağım, -m parametresiyle aynıdır.
-i: Multi (çoklu) bir sunucuda bağlantı kuruluysa, timerı bu sunucuda da aktif kılar.
-m: Saniye bölümündeki rakamı, milisaniye olarak algılar. Yani "/timer -m 5 15 echo Deniyoruz." komutunu kullandığınızda, aynı saniye içerisinde (milisaniye en küçük zaman birimidir), beş defa "Deniyoruz." yazısının çıktığını göreceksiniz.
-o: Bu parametre girilmezse açılan timer, sunucuyla bağlantımız koptuğunda (disconnect) otomatik olarak kapatılır. Fakat bu parametre eklenirse, bağlantı kopsa da timer, çalışmaya devam eder.
-p: Belirtilen timerı durdurur (Örnek: /timerhedehödö -p).
-r: -p parametresiyle durdurulan timerı, yeniden çalıştırır (Örnek: /timerhedehödö -r).
Parametreleri de açıkladığıma göre şimdi sıra geldi, $timer() identifierına. Bu identifier, bu komutla işlem yapacakların bilmesi gereken en önemli noktalardan birisidir.
$timer() identifierı ne işlere yarar ve nasıl kullanılır?
Bu identifier, yukarıda da dediğim gibi /timer komutunda işlem yapmak isteyenler için olmazsa olmazdır. mIRC'de kaç adet timer olduğunu kontrol etmeye, verilen sıra numarasına ait timerın ismini almaya, verilen isimdeki timerın sıra numarasını almaya, ismi veya sıra numarası verilen timerın kaç kez tekrar edileceğine ve daha birçok işe daha yarar. Yeter ki siz öğrenmek isteyin.
Açıklamaya başlıyorum;
$timer(0): Toplam kaç adet timer olduğunu gösterir. Eğer hiç timer yoksa "0" olarak döner.
$timer(1): Bir numaralı timerın adını verir. Mesela hiçbir timerın açık olmadığını farz edelim ve /timeranla bilmem-ne gibi bir timer açmış olalım. $timer(1) yazıp, TAB'a bastığımızda "anla" şeklinde dönecektir.
$timer(2): İki numaralı timerın adını verir. Yukarıdaki gibi numaradan isim alıyoruz yani.
$timer(lfmn): "lfmn" isimli timerın, numarasını verir. Bu da yukarıdakilerin tam tersine bir iş yapar. Yani isim ver, numara al.:)
Proplarsa aşağıda;
$timer(<timer-ismi>|<timer-sıra-numarası>).com: İsmi veya sıra numarası verilen timera, girilen komutu verir. Örneğin: /timerpdnm 1 1 echo com propunu deniyorum. şeklinde bir timer açtığımızı farz edelim. $timer(pdnm).com yazdığımızda, "echo com propunu deniyorum." komutunu verecektir.
$timer(<timer-ismi>|<timer-sıra-numarası>).time: Eğer ismi veya sıra numarası verilen timer, bir saate tanımlandıysa bu saati verir. Yukarıda timerda saat kullanımını zaten açıkladım; bu nedenle örnek vermeye gerek duymuyorum.
$timer(<timer-ismi>|<timer-sıra-numarası>).reps: İsmi veya sıra numarası verilen timerın, kaç kez tekrarlanacağını verir. Örneğin: /timerpdnm 5 0 echo reps propunu deniyorum. şeklinde bir timer açtığımızı farz edelim. $timer(pdnm).reps yazdığımızda -pdnm olan yere timerın sıra numarası da yazılabilir- "5" olarak dönecektir.
$timer(<timer-ismi>|<timer-sıra-numarası>).delay: İsmi veya sıra numarası verilen timerın, kaç saniye sonra komut uygulamak için tanımlandığını verir. Örneğin: /timerpdnm 2 5 echo delay propunu deniyorum. şeklinde bir timer açtığımızı farz edelim. $timer(pdnm).delay yazdığımızda "5" olarak dönecektir.
$timer(<timer-ismi>|<timer-sıra-numarası>).type: Bu prop, iki şekilde dönecektir. Eğer belirtilen timerı, sunucuya bağlıyken açtıysak "online"; sunucuya bağlı değilken açtıysak da "offline" olarak dönüş yapacaktır. Oldukça basit olduğu için örnek vermeye gerek duymuyorum. İsterseniz siz, deneme yapabilirsiniz.
$timer(<timer-ismi>|<timer-sıra-numarası>).secs: Belirtilen timerın, komutunu uygulamasına ne kadar zaman kaldığını saniye (seconds) cinsinden belirtir. Örneğin: /timerpdnm 1 120 echo Bu proplar dene dene bitmiyor yahu. şeklinde bir timerımızın olduğunu farz edelim. Aradan yirmi saniye geçsin ve $timer(pdnm).secs yazalım; karşımıza "100" rakamının çıktığını göreceksiniz. Gayet basit.
$timer() identifierında birkaç prop daha mevcut fakat bunları anlatmaya gerek duymadım.
Ek bilgi: Bir de $ltimer identifierı mevcuttur. Hemen açıklayayım: Last (son) açılan timerın, ismini verir. Örneğin: /timerdenedimki 1 10 echo Ders biter, deneme bitmez. şeklinde bir timer açtığımızda, bu on saniye içerisinde $ltimer yazıp TAB'a basarsak ya da //echo $ltimer komutunu uygularsak "denedimki" yanıtını verecektir.
Bu identifierın ne kadar kullanışlı olduğunu anlatmak ve uygulamalı olarak göstermek için daha da pekiştirmenizi sağlayacak bir kod yazalım. Mesela /tmrbilgi diye bir aliasımız olsun; biz, bunu kullandığımızda mevcut timer sayısını, timerların adını, kaç kez işlem yapacaklarını, kaç saniye sonra işlem yapacaklarını ve işlem yapma sürelerine kalan süreyi göstertelim. İşte kod:
Kod:
tmrbilgi {
  echo mIRC timer bilgileri alınıyor.
  if !$timer(0) { echo Hiçbir timer yok. | return }
  echo Toplam timer sayısı: $timer(0)
  var %/ = 1
  while $timer(%/) {
    echo Ele alınan timer: $ifmatch
    echo Timerın uygulayacağı komut: $timer(%/).com
    echo Timerın tekrarlanma sayısı: $timer(%/).reps
    echo Timerın işlem yapması için belirtilen süre: $timer(%/).delay saniye
    echo Timerın işlem yapması için kalan süre: $timer(%/).secs saniye
    echo -
    inc %/
  }
}

Şey, aslında bu örnek bir kod olacaktı fakat ben koptum, gittim.:D Neyse dersin içinde de bu şekilde bir bilgi addonu sizlere hediyem olsun. Yukarıya, bu addonun vereceği bilgileri de ekliyorum. Yine iyisiniz.:)
Umarım bu dersten, birileri bir şeyler anlamıştır. Konu hakkındaki sorularınızı, başlık altından sorabilirsiniz.
Not: Birkaç eklememde yardımcı olan ve dersi inceleyip, onay veren (kalite kontrol) detay'a teşekkür ediyorum.
Hepinize iyi çalışmalar.
 
Üst