Bu bölüme karışmak istemiyorum, sizlere bırakmak istiyorum ki bıraktım da uzun süre önce, ama hep aynı hataları yapıyorsunuz.
Available verdiğin kod düzgün çalışmaz.(on join/nick)
$read verdiğin kullanımda dosya içerisindeki kelimelerde, kanala giren rumuzu arar. Tam tersi işlev yapman gerekir. Yani nick içerisinde dosyadaki kelimeleri aratacaksın kısacası. Doğru eşleşme mantığı bu şekilde olur. Diğer şekilde kanala giren nick-in dosyadaki herhangi bir kelime ile birebir eşleşmesi gerekir ki buda zaten çok yetersiz ve kısıtlı koruma olur.
Geçen benzer örneği
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] verdim.
En basitinden
kvcist kullanıcısının verdiği badnick listesinde zaten wildcard(*) mevcut. Burada yapman/kullanman gereken;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
on @*:join:#: {
var %. = 1
while $read(badnick.txt,%.) {
if $v1 iswm $nick {
ban -k # $nick 2 BAN-SEBEBI.
break
}
inc %.
}
}
Kvcist, senin
donma problemine gelince, badnick listen bayağı uzun ve içerisinde saçma kelimelerde var. Bir kere
*---* gibi kelimeleri kaldır. Ek olarak eşleşme örneğin 10. satırdaki kelimede olsa dahi, her kanala giren nick için liste sonuna kadar taramaya devam eder. Buda mIRC'ı kasar. Çünkü
$read kullanıyorsun, hdd kaynaklı bir veri merkezinde 2/3 internal döngü ile aratma yapıyorsun.(bunları göremezsin) Ve ne yazıkki bir while döngüsü bitmeden diğerine geçmez kod. O yüzden eşleşme olduğunda
/break komutunu kullanarak
while döngüsünü sonlandırın.
Ayrıca kanala kendiniz girdiğiniz de tarama yapmaması için, event başına "
!" ekleyin. Veya
if $nick != $me { .. } olarak sorgu yapın.
Ek olarak dosya bazlı korumalarda /filter / Binary files / File handling
vb. etkenlerde kullanılabilir. Lakin ben her zaman
hash table kullanmanızı tavsiye ederim.
Ayrıca
kvcist, aradığın özelliklerde korumalar(ekle/sil/cart/curt) forumda en az 20 tane var. Aramanı tavsiye ederim.