mIRC Script

mIRC Timer: Zamanlanmış ve Tekrarlayan İşlemler

· Güncelleme: · 5 dk okuma

mIRC Timer: Zamanlanmış ve Tekrarlayan İşlemler
İçindekiler
  1. Temel Söz Dizimi
  2. Timer'ları Listelemek ve İptal Etmek
  3. İsimsiz Timer Tuzağı
  4. Milisaniye Hassasiyeti
  5. Flood'dan Kaçınmak İçin Timer
  6. Düzenli Kaydetme
  7. Geçici Durumları Yönetmek
  8. Timer İçinde Değişken Kullanmak
  9. Uzun İşlemleri Bölmek
  10. Sık Yapılan Hatalar
  11. Gerçek Bir Senaryo
  12. Timer'ları Belgelemek
  13. Sonuç

Bazı işler hemen değil, belirli bir süre sonra yapılmalıdır: Bir mesajı beş saniye sonra göndermek, verileri on dakikada bir kaydetmek, bir uyarıdan sonra belirli bir süre beklemek, çok sayıda mesajı aralıklı göndererek flood'dan kaçınmak. mIRC timer komutu, bu zamanlı işlerin tamamını yönetir. Doğru kullanıldığında script yazmanın en güçlü araçlarından biridir.

Temel Söz Dizimi

/timer[ad] <tekrar> <aralık> <komut>

Örnekler:

timer 1 5 say Bes saniye gecti.
timer 3 10 say Tekrarlayan mesaj
timer 0 60 echo -a Her dakika calisiyor
  • Tekrar sayısı: Kaç kez çalışacağı. Sıfır verilirse sonsuza kadar tekrarlanır.
  • Aralık: Saniye cinsinden bekleme süresi.
  • Komut: Çalıştırılacak mIRC komutu.

Bir timer'a ad vermek için komutun hemen ardına yazarsınız:

timerKayit 0 600 kayit_yaz

İsimli timer'ların avantajı, daha sonra bulunup iptal edilebilmeleridir. İsim vermezseniz mIRC otomatik bir numara atar.

Timer'ları Listelemek ve İptal Etmek

/timers
/timerKayit off
/timers off

/timers aktif timer'ları listeler; her birinin adı, kalan tekrar sayısı, aralığı ve komutu gösterilir. Belirli bir timer'ı kapatmak için adının ardına off yazılır. /timers off bütün timer'ları durdurur.

Bir timer'ı aynı adla yeniden kurmak, eskisinin yerini alır. Bu, çakışmayı önlemenin en basit yoludur: İsimli timer kullanıyorsanız aynı işin iki kez zamanlanması riski ortadan kalkar.

İsimsiz Timer Tuzağı

Bir script her çalıştığında isimsiz timer kurduğunda, timer'lar birikir. Örneğin kanala her giren kullanıcı için bir timer kuran bir script, kalabalık bir kanalda yüzlerce timer oluşturabilir. Bu hem bellek tüketir hem de beklenmedik davranışlara yol açar.

Çözüm, timer'lara anlamlı adlar vermektir. Kullanıcı bazlı timer'larda adın içine nicki de katabilirsiniz; böylece her kullanıcı için en fazla bir timer çalışır:

timer $+ uyari_ $+ $nick 1 30 uyari_kaldir $nick

Bu teknik, mIRC scripting'in yaygın kalıplarından biridir.

Milisaniye Hassasiyeti

Timer komutu, aralığı milisaniye cinsinden belirtmenize izin veren bir parametre de kabul eder. Bu, mesajları çok kısa aralıklarla göndermek veya hassas zamanlama gerektiren işler için kullanışlıdır. Ancak çok kısa aralıklı tekrarlayan timer'lar mIRC'i meşgul eder; gerçekten gerekmedikçe saniye hassasiyeti yeterlidir.

Flood'dan Kaçınmak İçin Timer

Timer'ların en değerli kullanımlarından biri, çok sayıda mesajı aralıklı göndermektir. Bir döngü içinde yirmi mesaj göndermek sunucu tarafından flood olarak algılanır ve bağlantınız kesilebilir. Timer'larla mesajları saniyeler arasına yayarak bu riski ortadan kaldırabilirsiniz.

Yaklaşım şöyledir: Gönderilecek mesajları bir listede veya hash tablosunda tutun, her timer turunda listeden bir mesaj alıp gönderin ve liste bitince timer'ı durdurun. Bu kalıp, uzun çıktılar üreten bütün scriptlerde kullanılmalıdır.

Hash tabloları için mIRC hash tabloları yazımıza bakın.

Düzenli Kaydetme

Bellekte veri tutan scriptler, verilerini düzenli olarak diske kaydetmelidir. Timer bu iş için idealdir:

on *:START: {
  timerKaydet 0 600 veri_kaydet
}

Bu, her on dakikada bir kaydetme yapar. mIRC kapanırken de son bir kaydetme yapmak, son dakikaların verilerinin kaybolmasını önler. Dosya işlemleri için mIRC dosya işlemleri yazımıza bakın.

Geçici Durumları Yönetmek

Bir kullanıcıya geçici bir yetki verip belirli süre sonra almak, bir uyarıyı belirli süre sonra silmek, bir kilidi belirli süre sonra açmak gibi işler timer'larla yapılır. Ancak bu tür işler için süreli değişkenler ve süreli hash kayıtları genellikle daha temiz bir çözümdür: Onlar kendiliğinden silinir ve timer yönetmek zorunda kalmazsınız.

Timer'ı tercih etmeniz gereken durum, süre sonunda bir eylem yapılması gerektiğinde ortaya çıkar. Yalnızca bir kaydın silinmesi gerekiyorsa süreli değişken yeterlidir; bir mesaj gönderilmesi veya bir mod değiştirilmesi gerekiyorsa timer kullanılır. Değişkenler için mIRC değişkenler yazımıza bakın.

Timer İçinde Değişken Kullanmak

Timer komutuna yazdığınız değişkenler, timer kurulduğu anda değerlendirilir. Bu bazen istediğiniz, bazen istemediğiniz davranıştır. Değerin timer çalıştığında güncel olmasını istiyorsanız, komutu bir alias'a taşıyıp alias içinde değeri okumanız gerekir.

Bu ayrım, timer'larla ilgili en sık kafa karıştıran konudur. Pratik kural: Timer'a sabit değerler ve parametre olarak geçirilecek veriler yazın; hesaplanması gereken şeyleri alias içinde yapın.

Uzun İşlemleri Bölmek

mIRC tek iş parçacıklı çalıştığı için uzun süren bir işlem arayüzü dondurur. Binlerce satırlı bir dosyayı işlemek veya çok büyük bir listede arama yapmak bu soruna yol açar.

Timer, bu işlemleri parçalara bölmenin yoludur: Her turda işin bir bölümünü yapın, kaldığınız yeri bir değişkende saklayın ve kısa bir aralıkla kendinizi yeniden zamanlayın. Böylece mIRC turlar arasında soluklanır ve donmaz. Bu teknik, büyük veri işleyen bütün scriptlerde kullanılmalıdır. Performans için mIRC script performansı yazımıza bakın.

Sık Yapılan Hatalar

  • İsimsiz timer biriktirmek: Tekrar tekrar kurulan isimsiz timer'lar kontrolden çıkar.
  • Sonsuz timer'ı durdurmayı unutmak: Sıfır tekrarlı bir timer, kapatılana kadar çalışır.
  • mIRC kapanışını hesaplamamak: Timer'lar bellekte tutulur; kalıcı işler için veri saklamak gerekir.
  • Değişken değerlendirme zamanı: Timer komutundaki değişkenler kurulma anında değerlendirilir.
  • Çok kısa aralık: Saniyenin altındaki aralıklarla sonsuz tekrarlayan timer'lar mIRC'i yorar.
  • Timer içinde timer kurmak: Dikkatsiz yapıldığında katlanarak artan timer'lara yol açabilir.

Gerçek Bir Senaryo

Bir kullanıcı, kanalında saatlik duyuru yapan bir script yazıyor. İlk sürümde her duyuru gönderildikten sonra isimsiz bir timer kuruluyor. Script birkaç kez yeniden yüklendiğinde timer'lar birikiyor ve duyuru aynı anda dört kez gönderilmeye başlıyor. Kullanıcı timer'a isim veriyor ve script yüklenirken önce aynı adlı timer'ı kapatıp yeniden kuruyor. Ayrıca duyuru metnini bir dosyadan okuyarak kodu değiştirmeden duyuruyu güncelleyebilir hâle getiriyor. Script artık kaç kez yeniden yüklenirse yüklensin tek bir timer çalıştırıyor.

Timer'ları Belgelemek

Script büyüdükçe kaç timer'ın çalıştığını takip etmek zorlaşır. Scriptinizin başına hangi timer'ları kurduğunuzu, hangi aralıkla çalıştıklarını ve ne yaptıklarını yorum olarak yazmak iyi bir alışkanlıktır. Böylece bir sorun çıktığında veya scripti aylar sonra açtığınızda zamanlı işlerin tamamını bir bakışta görürsünüz.

Timer adlarına scriptinize özgü bir önek vermek de önemlidir. Birden fazla script aynı adlı timer kullandığında biri diğerinin timer'ını iptal eder ve nedeni anlaşılmayan davranışlar ortaya çıkar. Önek kullanmak bu çakışmayı tamamen önler ve aktif timer listesine baktığınızda hangi timer'ın hangi scripte ait olduğunu anlamanızı sağlar.

Sonuç

Timer'lar, scriptlerinize zaman boyutu kazandırır. Söz dizimini öğrenin, timer'lara mutlaka ad verin, mesajları aralıklı göndererek flood'dan kaçının, uzun işlemleri parçalara bölün ve değişkenlerin ne zaman değerlendirildiğine dikkat edin. Görsel arayüzler oluşturmak için sıradaki rehberimiz mIRC dialog tasarımı.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

Timer komutunun söz dizimi nasıl?

Timer adı, tekrar sayısı, saniye cinsinden aralık ve çalıştırılacak komut sırasıyla yazılır.

Timer'lar mIRC kapanınca kaybolur mu?

Evet, bellekte tutulur. Kalıcı olması gereken zamanlı işler için verileri dosyaya kaydedip açılışta yeniden kurmanız gerekir.

Aktif timer'ları nasıl görürüm?

/timers komutu çalışan bütün timer'ları listeler.