mIRC Değişkenler: %yerel ve Global Değişken Kullanımı
İçindekiler
Bir script yazarken er ya da geç bir bilgiyi saklamanız gerekir: Bir sayacı artırmak, bir kullanıcının son mesaj zamanını hatırlamak, bir ayarı kalıcı tutmak, bir döngüde sırayı takip etmek. mIRC değişkenler, bu bilgileri tutmanın yoludur. mIRC'te iki tür değişken bulunur ve aralarındaki farkı anlamak, temiz script yazmanın temel koşullarından biridir.
Yerel Değişkenler: var
Yerel değişkenler /var komutuyla tanımlanır ve yalnızca içinde bulunduğu script bloğu çalıştığı sürece yaşar. Blok bittiğinde değişken kaybolur.
alias test {
var %sayi = 10
var %isim = Ayse
echo -a %isim için sayı: %sayi
}
Aynı komutta birden fazla değişken tanımlayabilirsiniz:
var %a = 1, %b = 2, %c = 3
Yerel değişkenler neden tercih edilir? Çünkü kendi alanlarında kalırlar ve başka scriptlerin değişkenleriyle çakışmazlar. Bir döngü sayacı, geçici bir hesaplama sonucu veya bir metin parçası için her zaman yerel değişken kullanmalısınız. mIRC scripting'te en sık görülen hatalardan biri, geçici bir değer için global değişken kullanmaktır; bu, zamanla yüzlerce gereksiz global değişken birikmesine yol açar.
Global Değişkenler: set ve unset
Global değişkenler /set ile tanımlanır, mIRC kapatılıp açıldığında bile varlıklarını sürdürür:
set %karsilama_mesaji Kanala hos geldin!
set %uyari_sayisi 0
Silmek için:
unset %karsilama_mesaji
Birden fazla değişkeni joker karakterle silebilirsiniz:
unset %uyari_*
Global değişkenler, script editörünün Variables sekmesinde listelenir ve oradan elle de düzenlenebilir. Editör hakkında bilgi için mIRC scripts editörü yazımıza bakın.
Global değişkenleri hangi durumlarda kullanmalısınız? Kalıcı olması gereken ayarlar, mIRC kapanıp açıldığında korunması gereken sayaçlar ve farklı script blokları arasında paylaşılan bilgiler için uygundur. Ancak çok büyük veri kümeleri için global değişkenler verimsizdir; onun yerine hash tabloları veya dosyalar kullanılmalıdır. Bkz. mIRC hash tabloları ve mIRC ini dosyaları.
Süreli Değişkenler
/set komutunun en kullanışlı özelliklerinden biri, değişkene bir ömür vermektir:
set -u10 %bekle 1
Bu değişken on saniye sonra kendiliğinden silinir. Flood korumasının en basit ve en yaygın biçimi bu tekniğe dayanır: Bir komut çalıştığında süreli bir değişken oluşturulur, komutun başında bu değişkenin varlığı kontrol edilir ve varsa komut çalışmaz.
on *:TEXT:!bilgi:#: {
if (%bilgi_bekle) { return }
msg $chan Bilgi mesaji burada.
set -u15 %bilgi_bekle 1
}
/var komutu da benzer bir süre parametresi kabul edebilir, ancak süreli değişkenler genellikle global olarak kullanılır çünkü amaç blok bittikten sonra da hatırlanmaktır.
Sayaçlar: inc ve dec
Sayısal değişkenleri artırmak ve azaltmak için özel komutlar vardır:
inc %sayac
inc %sayac 5
dec %sayac
dec -u30 %sayac
inc varsayılan olarak bir artırır; bir sayı verirseniz o kadar artırır. dec ise azaltır. Bu komutlar, değişken henüz tanımlı değilse sıfırdan başlayarak işlem yapar; bu, sayaç kullanımını kolaylaştırır.
Matematiksel işlemler için $calc identifier'ı kullanılır:
var %sonuc = $calc(%a * %b + 10)
Dizi Benzeri Kullanım
mIRC'te gerçek diziler yoktur, ancak değişken adlarını birleştirerek dizi benzeri bir yapı oluşturabilirsiniz:
set %puan. $+ $nick 10
inc %puan. $+ $nick
echo -a $var(%puan. $+ $nick,1).value
Bu teknik işe yarar ama okunabilirliği düşüktür ve çok sayıda kayıt için verimsizdir. Kullanıcı başına veri saklamanız gerekiyorsa hash tabloları çok daha uygun bir çözümdür: Hem daha hızlıdırlar hem de kodunuz çok daha okunabilir olur.
Değişkenleri listelemek ve saymak için $var identifier'ı kullanılır. Joker karakterle eşleşen değişkenleri bulmak, dizi benzeri yapıları yönetmenin temel yoludur.
Değişken Adlandırma
Değişken adları için birkaç pratik kural:
- Yalnızca güvenli karakterler: İngilizce harfler, rakamlar ve alt çizgi. Türkçe karakterler ve boşluk kullanmayın.
- Anlamlı adlar:
%xyerine%kullanici_sayisiyazmak, kodu aylar sonra okuduğunuzda çok işinize yarar. - Önek kullanın: Global değişkenlerinizin başına scriptinize özgü kısa bir önek ekleyin. Böylece başka scriptlerin değişkenleriyle çakışma riski ortadan kalkar. Örneğin bir karşılama scriptinin bütün değişkenleri aynı önekle başlasın.
- Tutarlılık: Aynı scriptte bazı adları büyük, bazılarını küçük harfle yazmaktan kaçının.
Değişkenlerde Metin ve Boşluk
Değişkenler metin de saklayabilir ve metinler boşluk içerebilir:
set %mesaj Bu uzun bir mesajdir
echo -a %mesaj
Metin birleştirmede $+ operatörü kullanılır:
var %tam = %ad $+ _ $+ %soyad
Metin içinde değişken adı geçerse mIRC onu açmaya çalışabilir; bu, beklenmedik sonuçlara yol açar. Kullanıcıdan gelen metni bir değişkende saklayıp sonra kullanırken bu konuda dikkatli olmak gerekir. Özellikle kullanıcı girdisinde yüzde veya dolar işareti bulunduğunda, bu değerlerin yanlışlıkla değişken veya identifier olarak yorumlanması mümkündür. Güvenlik açısından bu durum önemlidir; ayrıntılar mIRC script güvenliği yazımızda.
Değişkenleri Temizlemek
Zamanla biriken kullanılmayan global değişkenler, hem Variables sekmesini karmaşık hâle getirir hem de mIRC'in yapılandırma dosyasını büyütür. Ara sıra bu listeyi gözden geçirip artık kullanılmayanları silmek iyi bir bakım alışkanlığıdır. Bir scripti kaldırdığınızda o scriptin oluşturduğu değişkenleri de temizlemeyi unutmayın; iyi yazılmış scriptler kaldırılma sırasında kendi değişkenlerini temizleyen bir yol sunar.
Sık Yapılan Hatalar
- Geçici değer için global kullanmak: Döngü sayaçları ve ara sonuçlar yerel olmalıdır.
- Yüzde işaretini unutmak: Değişken adlarının başında yüzde işareti zorunludur.
- Tanımsız değişken varsaymak: Bir global değişkenin var olduğunu varsayıp kontrol etmemek; mIRC tanımsız değişkeni boş değer olarak işler ve bu sessiz hatalara yol açar.
- Çakışan adlar: Önek kullanmamak, başka scriptlerin değişkenlerini bozabilir.
- Çok fazla veri saklamak: Binlerce kayıt için değişken kullanmak; bunun yerine hash tablosu veya dosya kullanılmalıdır.
Gerçek Bir Senaryo
Bir kullanıcı, kanalda kimin kaç mesaj yazdığını sayan bir script yazıyor. Her kullanıcı için ayrı bir global değişken oluşturuyor. Kanal kalabalık olduğu için birkaç ay sonra Variables sekmesinde binlerce değişken birikiyor; mIRC açılışı yavaşlıyor ve istatistik komutu çalıştığında fark edilir bir gecikme oluyor. Kullanıcı scripti hash tablosu kullanacak şekilde yeniden yazıyor, eski değişkenleri joker karakterle temizliyor ve verileri düzenli aralıklarla bir dosyaya kaydediyor. Script hem hızlanıyor hem de kodu kısalıyor.
Sonuç
Değişkenler, mIRC scriptlerinin hafızasıdır. Geçici değerler için var ile yerel değişkenler, kalıcı ayarlar için set ile global değişkenler kullanın. Süreli değişkenlerle basit flood koruması kurun, sayaçlarda inc ve dec'ten yararlanın, adlarınıza önek verin ve büyük veri kümeleri için hash tablolarına geçin. Kodunuza karar verme yeteneği katmak için sıradaki rehberimiz mIRC if else.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
var ile set arasındaki fark nedir?
var ile tanımlanan değişken yalnızca o script bloğu çalıştığı sürece yaşar. set ile tanımlanan değişken mIRC kapatılsa bile kalır.
Değişken adında Türkçe karakter kullanabilir miyim?
Önerilmez. Değişken adlarında yalnızca İngilizce harfler, rakamlar ve alt çizgi kullanmak en güvenli yoldur.
Global değişkenlerim nerede saklanıyor?
Script editörünün Variables sekmesinde listelenir ve mIRC'in yapılandırma dosyalarında saklanır.


