mIRC Özel Identifier Yazma: Kendi $komutlarınızı Oluşturmak
İçindekiler
mIRC'in yüzlerce hazır identifier'ı vardır, ama her ihtiyaca cevap vermezler. Scriptinizde aynı hesaplamayı veya aynı metin dönüşümünü tekrar tekrar yazıyorsanız, bunu bir kez yazıp her yerden çağırabileceğiniz bir mIRC özel identifier hâline getirmelisiniz. Bu, kodu kısaltmanın ve tutarlı tutmanın en etkili yollarından biridir.
Nasıl Yazılır?
Özel identifier, aslında return komutuyla değer döndüren bir alias'tır:
alias kare {
return $calc($1 * $1)
}
Artık bunu identifier gibi çağırabilirsiniz:
//echo -a 9 un karesi: $kare(9)
Aynı alias'ı komut olarak da çağırabilirsiniz, ancak o zaman döndürdüğü değer kullanılmaz. Bu ikili doğa, mIRC scripting'in esnek yanlarından biridir.
Parametreler
Özel identifier'lar birden fazla parametre alabilir; çağırırken virgülle ayrılır:
alias topla {
return $calc($1 + $2)
}
//echo -a Toplam: $topla(5,7)
Parametre içinde virgül geçmesi gerekiyorsa dikkatli olmanız gerekir, çünkü virgül parametre ayırıcısıdır. Böyle durumlarda metni tek parametre olarak alıp kendiniz ayrıştırmak veya farklı bir ayırıcı kullanmak gerekir.
İsteğe Bağlı Parametreler
Bir parametre verilmediğinde makul bir varsayılan kullanmak, identifier'ınızı daha kullanışlı hâle getirir:
alias kisalt {
var %uzunluk = $iif($2,$2,20)
if ($len($1) <= %uzunluk) { return $1 }
return $left($1,%uzunluk) $+ ...
}
Bu identifier bir metni kısaltır; uzunluk belirtilmezse yirmi karakter kullanır:
//echo -a $kisalt(Bu cok uzun bir metin ornegi)
//echo -a $kisalt(Bu cok uzun bir metin ornegi,10)
$iif kullanımı için mIRC if else yazımıza bakın.
Pratik Örnekler
Kanaldaki op sayısı:
alias opsayisi {
var %kanal = $iif($1,$1,$chan)
return $nick(%kanal,0,o)
}
Bir nickin kanalda olup olmadığı:
alias kanaldami {
return $iif($1 ison $2,$true,$false)
}
Saniyeyi okunabilir süreye çevirme:
alias suresi {
return $duration($calc($ctime - $1))
}
Metinden IRC renk kodlarını temizleme:
alias temizmetin {
return $strip($1-)
}
Bu son örnek mIRC'in hazır $strip identifier'ını sarmalar; kendi kodunuzda tutarlı bir isim kullanmak istediğinizde bu tür sarmalayıcılar işe yarar. Renk kodları için mIRC renk kodları yazımıza bakın.
Adlandırma Kuralları
Özel identifier adlarınızı seçerken en önemli kural, mIRC'in kendi identifier'larıyla çakışmamaktır. mIRC'in yüzlerce identifier'ı olduğundan ve yeni sürümlerle yenileri eklendiğinden, çakışma riski gerçektir.
Bu riski ortadan kaldırmanın en güvenli yolu, bütün özel identifier'larınıza scriptinize özgü kısa bir önek vermektir. Örneğin karşılama scriptinizin identifier'ları aynı iki üç harfli önekle başlasın. Bu, hem çakışmayı önler hem de kodu okuyan birinin hangi identifier'ın sizin olduğunu anlamasını sağlar.
Bir diğer öneri, identifier adlarının bir değer döndürdüğünü ima etmesidir. "hesapla" yerine "toplam", "yaz" yerine "metin" gibi adlar, identifier'ın ne verdiğini daha iyi anlatır.
Değer Döndürmek ve Hata Durumları
Bir identifier'ın geçersiz girdide ne döndüreceğine karar vermek önemlidir. Üç yaklaşım vardır: Boş değer döndürmek, $false döndürmek veya bir hata metni döndürmek. Boş değer döndürmek en yaygın yaklaşımdır çünkü çağıran kod bunu kolayca kontrol edebilir.
alias guvenlibolme {
if ($2 == 0) { return }
return $calc($1 / $2)
}
Bu identifier sıfıra bölme durumunda boş değer döndürür ve çağıran kod bunu kontrol edebilir. Hata metni döndürmek ise tehlikelidir: Çağıran kod bu metni sayı olarak kullanmaya çalışırsa beklenmedik sonuçlar doğar.
Yeniden Kullanılabilir Kod Yazmak
Özel identifier'ların asıl değeri, kodu tek bir yerde toplamaktır. Aynı hesaplamayı beş farklı yerde yazdıysanız, bir değişiklik gerektiğinde beş yeri de güncellemeniz gerekir ve birini atlama riski yüksektir. Hesaplamayı bir identifier'a taşıdığınızda değişiklik tek yerden yapılır.
Bu ilkenin pratik göstergesi şudur: Aynı kod parçasını ikinci kez yazdığınızı fark ettiğinizde, onu bir identifier'a çıkarmayı düşünün. Üçüncü kez yazıyorsanız mutlaka çıkarın.
Identifier'larınızı ayrı bir dosyada toplamak da iyi bir uygulamadır. Böylece bu dosyayı farklı projelerinizde yeniden kullanabilir, hatta başkalarıyla bir araç kütüphanesi olarak paylaşabilirsiniz.
Belgeleme
Özel identifier'larınızın üstüne ne yaptıklarını, hangi parametreleri aldıklarını ve ne döndürdüklerini yazın:
; $kisalt(metin[,uzunluk])
; Metni belirtilen uzunlukta kisaltir, sonuna uc nokta ekler.
; uzunluk verilmezse 20 kullanilir. Metin kisaysa oldugu gibi doner.
alias kisalt {
...
}
Bu üç satırlık yorum, aylar sonra identifier'ı kullanmak istediğinizde kodu okumak zorunda kalmanızı önler.
Performans Notu
Bir identifier her çağrıldığında bir alias çalıştırılır; bu, doğrudan kod yazmaya göre küçük bir ek maliyet getirir. Normal kullanımda bu fark hissedilmez, ancak binlerce tur süren bir döngü içinde özel identifier çağırmak gözle görülür yavaşlamaya yol açabilir. Böyle durumlarda hesaplamayı döngü dışına taşımak veya identifier'ın işini doğrudan döngü içinde yapmak gerekir. Performans için mIRC script performansı yazımıza bakın.
Gerçek Bir Senaryo
Bir kullanıcı, yazdığı birkaç farklı scriptte kullanıcıların ban maskesini oluşturuyor. Her scriptte maske oluşturma kodu biraz farklı yazılmış: Biri kullanıcı adını dahil ediyor, diğeri etmiyor, üçüncüsü farklı bir adres türü kullanıyor. Kanal moderasyonunda bu tutarsızlık karışıklığa yol açıyor. Kullanıcı tek bir maske identifier'ı yazıp bütün scriptlerinde onu çağırmaya başlıyor. Artık maske mantığını değiştirmek istediğinde tek bir yeri güncellemesi yeterli oluyor ve bütün scriptleri aynı maskeyi üretiyor.
Identifier mı, Komut mu?
Bir işi özel identifier olarak mı komut olarak mı yazmanız gerektiğine karar vermek bazen kafa karıştırır. Basit bir ölçüt şudur: İş bir değer üretiyorsa identifier, bir eylem gerçekleştiriyorsa komut olmalıdır. Bir metni biçimlendiren, bir hesap yapan veya bir durumu sorgulayan kod identifier'a uygundur. Mesaj gönderen, dosya yazan veya pencere açan kod ise komut olarak yazılmalıdır.
Bazı durumlarda aynı işin her iki biçimi de işe yarar. Böyle durumlarda identifier yazıp, gerektiğinde onu çağıran kısa bir komut eklemek en esnek çözümdür. Bu yaklaşım, kodun hem hesaplama hem de eylem taraflarını ayrı tutar.
Kütüphane Oluşturmak
Zamanla yazdığınız özel identifier'lar birikir ve bir araç kütüphanesine dönüşür. Bu kütüphaneyi ayrı bir dosyada tutmak, yeni bir script yazdığınızda hazır araçlarınızı hemen kullanmanızı sağlar. Kütüphane dosyanızın başına içindekilerin kısa bir listesini yazmak, hangi aracın mevcut olduğunu hatırlamanızı kolaylaştırır.
Kütüphanenizi başkalarıyla paylaşacaksanız her identifier'ın belgelenmiş olmasına, adlarının özgün bir önek taşımasına ve hiçbirinin mIRC'in kendi identifier'larını gölgelememesine dikkat edin. İyi belgelenmiş küçük bir kütüphane, dağınık yüzlerce satırdan çok daha değerlidir.
Sonuç
Özel identifier'lar, scriptlerinizi daha kısa, daha tutarlı ve daha bakımı kolay hâle getirir. return ile değer döndürün, parametrelere makul varsayılanlar verin, adlarınıza önek ekleyin, geçersiz girdide boş değer döndürün ve her identifier'ı kısa bir yorumla belgeleyin. Metin işlemenin güçlü araçlarını tanımak için sıradaki rehberimiz mIRC token identifierları.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Özel identifier ile alias arasındaki fark nedir?
Teknik olarak ikisi de alias'tır. return ile değer döndüren bir alias, dolar işaretiyle identifier gibi çağrılabilir.
Özel identifier'ımın adı mIRC'in identifier'ıyla aynı olursa ne olur?
Çakışma oluşur ve beklenmedik davranışlara yol açabilir. Kendi identifier adlarınıza özgün bir önek verin.
Özel identifier kaç parametre alabilir?
Normal alias parametreleri gibi çalışır; birden fazla parametre virgülle ayrılarak verilir.


