|
Feragat Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. |
Başta söyleyeyim amaç "bilgi paylaşmak". Ara sıra tekrar etmekte fayda var. Kısa ve daha düzenli yazmak açısından.. Kod: Kodu kopyalamak için üzerine çift tıklayın! raw 318:*:if (%hmm == ok) { unset %hmm | .disable #w | return } | elseif (%nck) { operserv killclones %nck | msg #admin Bilgi: %nck sunucudan uzaklaştırıldı. | unset %nck | .disable #w } 1-
(%hmm == ok) yerine %hmm = ok kullanılabilir.
mirc.chm de yer almasada == operatörü = ile aynı işlemi görmektedir.
2-
if (koşul) { kodlar }
elseif (koşul) { kodlar }
Bu mantıkta return edip, boş sonuç döndürüp sonlandırmaya gerek yok. Sadece uyan koşulu çalıştırır.
Eğer
if (koşul) { kodlar }
if (koşul) { kodlar }
if (koşul) { kodlar }
yapılmış olsaydı sonunda return veya halt edebilirdiniz.
3-
Eğer byte olarak kısa kod yazmak istiyorsanız
{ komut | komut | komut | komut | komut }
yerine
{
komut
komut
komut
komut
}
kullanın.
yan yana yazdığınız da komut(boşluk)(ayırıcı karakter)(boşluk)komut düzeninde byte miktarı fazla olacaktır.
4-
regex'te /i kullanıyorsanız [a-zA-Z yerine [a-z veya [A-Z yeteri olacaktır. İkisinin yazılmasına gerek yok.
5-
burada herhangi bir stringi modifiye etmeyecekseniz (/ixsmgAZ vs.) $regex(text,/regex/) yerine sadece $regex(text,regex) kullanabilirsiniz.
(!$regex($2,/^#)) yerine !$regex($2,^#) gibi. (sadece /() başlangıç kullanılmış bu da hatalı.)
Eğer daha kısa yazmaksa maksat #* !iswm $2 veya $2 !ischan (ischan'ı denemek lazım :p) kullanabilirsiniz.
6-
on $*:text:/^(!opekle)/iS:#:{
gereksiz Back Reference (Geriye Dönük Referans) kullanmaya da gerek yok (yakalamak yerine eşleştirmek yeterli). /(!opekle)/ yerine /!opekle/ gibi.
7- Bilindiği üzere pek çok event'ta matchtext aranan/yakalanan veri kısmı mevcut. Onu kullanmak sizi gereksiz bir veya bir çok koşuldan kurtarır.
on *:notice:*:?:{
if (!$regex($nick,/^ChanServ$/i)) return
if ($regex($1-,/kanal[ıiİ]\skayitl[ıiİ]\sde[gğĞ][ıiİ]l/Si) || $regex($1-,/erisim\slistesi.+kayitli.+nick/Si) || $regex($1-,/Erisim\sseviyesi.+ve.+arasinda/Si) || $regex($1-,/nick.+kanalindaki\serisim.+zaten/Si) || $regex($1-,/nick.+kanalindaki\serisim\sseviyesi.+degisti/Si) || $regex($1-,/nick.+kanalinin\serisim.+seviyeden.+eklendi/Si) { msg %kanal $1- | .disable #opekle }
}
Bunun yerine
on $*:notice:/kanal[ıiİ]\skayitl[ıiİ]\sde[gğĞ][ıiİ]|erisim\slistesi.+kayitli.+nick|Erisim\sseviyesi.+ ve.+arasinda/Si:*:
şeklinde bir matchtext işi kısaltır gibi.
Khaled amca 7.42 de regex kütüphanesini güncellemiş
- Kod: Kodu kopyalamak için üzerine çift tıklayın! 11.Updated libraries to PCRE v8.37. -
- Güzel işler çıkar bundan Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Şuan iş yerinde olduğum için fazlaca örneklendirme ve detaylama fırsatım olmadı. Yardım edilen kodları elinizden geldiğince açıklayın. Kullanıcı sadece hazırı alıp gitmesin, alırken öğrensin. Başta söylediğim gibi bu anlatımın amacı bilgi paylaşmak ve bunun kimseye zararı olacağını düşünmüyorum. Kolay gele.
|
Öncelikle teşekkür ederim. @
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] (Hasan abi)'in bir iletisinde yeni jenerasyonun işi çok ilerlettiğini okumuştum ama ne yalan söyleyeyim, bu kadarını beklemiyordum. Ben 6 yıldır mIRC Scripting'den uzağım. Dolayısıyla geri dönüş safhasında bazı noktaları kaçırabilirim. Hatta geçen gün $lines identifierını kullanmayı bile unutmuştum dosyadan okutmalı bir kodda.
Benim amacım kısa kod yazmayla ilgiliydi evet, ama buna kalkışma nedenim koddaki { yapılacaklar } kısmının 4-5 satırda da aynı olması ve çok fazla if koşulu kullanılmasıydı. Esasında bunların tek bir if koşulu içerisinde de kullanılabileceğini göstermek için düzenledim o kodu. on TEXT içerisinde regular expression kullanılabileceği gibi on NOTICE içerisinde de kullanılabilirdi ama bunu yaparsam o zaman || kullanmanın önemini vurgulayamazdım diye düşündüğüm için bu yola gitmedim. Diğer söylediklerinde haklısın.
Ayrıca if/elseif kullanımı olan kodum tamamen @
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]'in mantığı anlamasına yönelikti, o kodda zaten kısa yazmaya ya da hızlı çalışmasına önelik bir kullanım yapmadım. @
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...], mantığı daha iyi anlayabilsin diye o şekilde yazdım.
Bilgilendirmelerin için tekrar teşekkür ederim @
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]. Daha önce de açıklamalı yardım iletilerini okuma fırsatı buldum, gerçekten bu işte hem uzmanlaşmış hem de nasıl yardım edileceğinin etiği konusunda bilinçli bir codersın.