Konu: Join Flood
Tekil Mesaj gösterimi
  #2  
Alt 26 Kasım 2011, 14:00
Avatar Yok
L4roXyL L4roXyL isimli Üye şimdilik offline konumundadır
 Chief 

mS Puan: 1031
mS Derece: L4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisi
 
Üyelik tarihi: 10 Temmuz 2009
Yaş: 40
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 146
Yapılan Teşekkür: 0
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Standart

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:

Kod:
on !*:join:#:
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)

Kod:
hadd -mu5 # $nick _
/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.

Kod:
mode # +b %n
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;

Kod:
_ban # %n
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.
__________________
C/co/cod/code^man.
Alıntı ile Cevapla
 
1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76