Bu tür işlemler için en iyisi
hash table kullanmaktır. Karmaşık veri yazdırma ve üzerinde işlem yapmada hash table-dan daha iyi bir seçenek olamaz.
Şimdi kısacası senin istediğini görecek bir kod yazdım. Sana gerekli açıklamalarda bulunacağım. Dolayısıyla sende kodu istediğin gibi editleyip kendine göre düzenleyebileceksin. Ek olarak birazda bilgin olmuş olur.
Kod:
alias _ban var %. 1 | while $hmatch($1,$2,%.) { ban -k $1 $v1 ban sebebi. | hdel $1 $v1 | inc %. }
on !*:join:#: {
if ($regex($nick,/(.{3,})-(.{1,})/i)) {
var %n = $token($nick,1,45) $+ -*
hadd -mu5 # $nick _
if ($hmatch(#,%n,0) >= 4) {
mode # +b %n
}
}
} Açıklamalar: Herhangi bir kanala(# - tabi senin içerisinde bulunduğun kanal olması lazım) senin haricinde(!) bir kullanıcı girdiği anda,
Kod:
if ($regex($nick,/(.{3,})-(.{1,})/i)) Kanala giren rumuz
"-" karakterinden öncesinde
en az üç ve fazlası((.{3,})),
"-" karakterinden sonrası
en az bir ve fazlası((.{1,})) herhangi bir karakter varsa(yani kısacası senin istediğin şekildeyse /
"nick-karakter"),
Kod:
var %n = $token($nick,1,45) $+ -*
%n değişkenine rumuzun
"-" karakterinden
önceki verisini($token($nick,1,45)) -* karakterleri ile birleştirerek
($+) atama yapıyoruz(temp), (
-* eklememizin sebebi sonraki satırda sorgulama yapacağımız yerde
wildcard-lı arama yapmaktır)
/hadd komutu ile (/help /hadd bakabilirsin)
kanal tablosuna(#) giriş yapan
rumuzu($nick) 5 saniye sonra silinme kaydıysa
(-u5) ekliyoruz,
Kod:
if ($hmatch(#,%n,0) >= 4)
Eğer(
if) kanal tablosunda(
#)
%n verisinden(
rumuz-*) kelimesinden
4 veya fazlası varsa(
>= 4),
Not: $hmatch tanımı mIRC Help dosyasında olmayıp, mIRC içerisinde gizli olan bir search tanımıdır.
Kanalda(
#)
%n verisini (
rumuz-*) şeklinde banlıyoruz.
Sanırım buraya kadar anlamadığın birşey yok.
Gelelim
_ban aliasına.
Eğer sen son giren nick ile beraber öncesinde giren ve korumaya yakalanan tüm nickleri banlamak istiyorsan,
mode # +b %n satırının altına;
Komutunu ekleyebilirsin. Bu şekilde son giren ve korumaya yakalanan nick dahil onunla aynı rumuzla başlayan tüm nickler kanaldan adres ban şeklinde uzaklaştırılır.