![]() |
kontrol edip op ekletme hk. S.a arkadaşlar bi konuda yardımınıza ihtiyacım var. şimdi mesela !opekle nick yaptıgımızda nicki kanala op olarak ekliyoruz buraya kadar güzel peki eger nick sifresizse dogal olarak eklenmiyor. !opekle nick yapıldıgında eger nick sifresiz ise Kod: ChanServ- AOP, SOP, HOP ve VOP listelerine sadece kayitli nickler eklenebilir. |
Cevap: kontrol edip op ekletme hk. Kod: on *:input:*: { Kod: raw 352:*: { |
Cevap: kontrol edip op ekletme hk. Alıntı:
peki şunu nasıl yapabilirim. mesela ben webten php ile form text e nick i giriyorum gondere bastıgımda AKillat: nick seklinde gidiyor onuda bota okutup işlem yaptırıyorum nick sunucudaysa sıkıntı yokta nick sunucuda degilse. Kod: if $1 == AkillAt: { |
Cevap: kontrol edip op ekletme hk. Kod: on *:text:!opekle &:#admin:{ Düzeltme: Ben kodu yazana kadar farklı bir yoldan @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] da yazmış. İkisi de çalışır. |
Cevap: kontrol edip op ekletme hk. Bu da benden olsun baya detaylı oldu =) [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Kod: on *:text:*:#:{ |
Cevap: kontrol edip op ekletme hk. Alıntı:
Kod: on $*:text:/^(!opekle)/iS:#:{ Not: @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bana ulaşarak mantığı anlamak istediğini, aynı kodu akill vb. farklı varyasyonlara uyarlamak istediğini söylediği için yazdığım kodda fazla $regex kullanmamaya çalışmıştım. Aynı işlemi yapan, farklı yollardan gidilen farklı farklı kodlar ortaya çıkarttığımız için şimdi de nasıl daha kısa kod yazabilirizi tartışmak adına kodu düzenledim. Yanlış anlaşılmamasını diliyorum. |
Cevap: kontrol edip op ekletme hk. Alıntı:
- Bu isteğini gerçekleştirmek için 401 numaralı whois rawına bakmamız gerekli. Benim, @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]'un ve @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]'ın op eklemeyle ilgili yazdığımız kodlarda olduğu gibi yine /set komutuyla bazı verileri kaydedip bu raw üzerinden gelecek bilgiler doğrultusunda işlem yapacağız. Şöyle: Kod: on *:text:!akill &:#admin:set %nck $2 | .enable #w | whois $2 |
Cevap: kontrol edip op ekletme hk. Webten editbox'a girdiğin veriye kill attırıyorsan sunucuda, o veriyi işlediğin bot muhtemelen socket bottur. Gönderdiğin veriden nicki socketin sistemine göre sorgulayacaksın. |
Cevap: kontrol edip op ekletme hk. 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: 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 } (%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: 11.Updated libraries to PCRE v8.37. - Güzel işler çıkar bundan :) Ş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. |
Cevap: kontrol edip op ekletme hk. Güzel dostlar hepinize teşekkür ediyorum. işin Mantıgını anladım sayenizde. özellikle pc me teamviver ile baglanıp bana yardımcı olan SuLh ve bizzat konusmaya gittigim regex e ayrı ayrı teşekkürlerimi bildiriyorum. |
Cevap: kontrol edip op ekletme hk. Alıntı:
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. |
Cevap: kontrol edip op ekletme hk. Tşk ederim. Scripting betiklerinde genel özellik, alternatif kısa,uzun yolların fazlalığı. Söylediğin gibi ilk öğrenim, anlama, kavrama etaplarında kodu çalıştırabilmek önemli. short code (kısalık) veya speed performance (hız performansı) artık iş hobiye dönüştüğünde devreye giriyor. Yinede ms'e merak salan arkadaşların bunları da bilmesinde öğrenmesinde fayda var. Belli kalıplara bağlı kalmamak keyifli. Ne kadar geliştirebilirsek yapılabilecek işler o kadar güzelleşiyor. Kolaylıklar dilerim. |
Cevap: kontrol edip op ekletme hk. =) Regex buyur; Kod: on *:notice:*:?:{ Bilgi amaçlı. Ayrıca kodda her koşulu düşünerek ayarladım. Access eklemede kanal ismi doğru girilmezse uyar. Kod: if !$regex($2,/^#.+/) { msg # Lütfen kanal belirtiniz. | return } Kod: if !$regex($3,/^([a-zA-ZĞğıİöÖüÜşŞçÇ_^\133\135}{][a-zA-ZĞğıİöÖüÜşŞçÇ0-9_|^}\{\133\135`-]{0,30})$/i) { msg # Lütfen nick belirtiniz. | return } Kod: if !$regex($4,\d) { msg # Lütfen Yetki seviyesini giriniz. | return } |
Cevap: kontrol edip op ekletme hk. Alıntı:
Yani amaç sidik yarıştırmak veya gövde gösterisi yapmak değildi, ben zaten 6 yıl mIRC Scripting'den uzak kaldım, web ile uğraştım. En ufak ayrıntıları bile yeni döndüğüm için kaçırmam doğaldır ki gerçekten amacım koduna saygısızlık etmek değildi. Kurduğun if koşullarının tümünde { msg ile bilgi gönder | grubu disable et } yer aldığından hepsini tek bir if koşulunda da toplayabilirizi göstermeye çalışmıştım, bunu farklı anladıysan kusura bakma. Böyle şeyler bana göre değil. Ayrıca o zaman @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]'ın uyarılarını da göz önünde bulundurarak event içerisinde $regex'i kurabiliriz, yani daha kısa olarak || ayracını kullanmadığımız gibi if koşulu da kurmayabiliriz, özetle şöyle de olabilirdi: Kod: on $*:text:/^(!opekle)/iS:#:{ |
Cevap: kontrol edip op ekletme hk. Biz de zaten "sidik" yarıştırmıyoruz sadece "||" yı $regex'de kullandık =) |
Cevap: kontrol edip op ekletme hk. Alıntı:
|
Cevap: kontrol edip op ekletme hk. Etiketlemişsiniz bundan dolayı gördüm konuyu. Değerinizi bilin, venezuelladan yazıyorum .) Birazda can sıkıntısı. Regex'ın cılkını çıkartmışsınız. Normal /if operatorlerini kullanmaktan bu kadar uzaklaşmayın yahu. İlk olarak; Kod: !$regex($4,\d) a1a, b1, 1c, qwqwe23sasdd vb. olan textlere de işlem yapacaktır. - $4 !isnum kullanmanız en mantıklısı olacaktır. Karışıklığa gerek yok. TEXT eventinde regex kullanmışsınız. Buna da gerek yok. Ayrıca kanal girdisi için external sorgu yöntemi ile ayriyeten /if kullanmışsınız, hali hazır da event içerisinde kullanın, olsun bitsin. Örnek: Kod: on *:text:!opekle #?* &:#: /if %hmn { bla bla.. } yapmanız yeterli olur. Aynı script dosyası içinde iki aynı eventi kullanmassanız daha iyi olur. Kod: raw *:*: { Özellikle yardım edilirken kodlar en basit ve açık şekilde yazılırsa, arz eden kişiler tarafında öğrenme hevesi doğacaktır. Neyse sağlıcakla kalın. Dağılın şimdi .) Not: Feragat ischan yemez. |
Cevap: kontrol edip op ekletme hk. Nihayet Regexi Sadece Karmasık İşlemlerde, Regex Harici Yazimlarda Çok Uzun Kodlamalar Gerektiren Durumlarda, Normal Yazimin İçine Serpiştirerek Kullanılması Gerektiğini Söyleyen Birisi Çıktı :) Aynen Bahsettiğin Gibi @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Bu Şekilde Olursa Anlaşılması Daha Kolay Oluyor. |
Cevap: kontrol edip op ekletme hk. Regex sonuçta mirc içinde bir öğe. Tamamen onu kullanarak kod yazılmasa da öğrenmekte fayda var. Bazı durumlarda yapılan işi bir hayli kısalttığı da aşikar. Adam akıllı anlatımlar örnekler olmadığı için araştırıp sınırları zorlamak insanlara zor geliyor. "IF THEN ELSE" de hiç anlamayana göre zor gelebilecek bir konu. Bu konuda kızdığım nokta insanların yerinde saymakta ısrar etmesi. File handling - comobject - binary - Bitsel tanımlar ve hatta /tokenize bile kaç kodda var ki. Onlar kötü onlar zor sakın onlarla uğraşmayın aman!!! gibi bir bilinç var maalesef. Korkacak bir şey yok. Araştırmaktan öğrenmekten korkmayın. Eğer korkmaya devam ederseniz, mIRC Scripting Sorunları kategorisi şuanda da olduğu gibi HAZIR İSTEK dışında bir potansiyelden başkasına sahip olamaz. |
Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 06:28. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk