IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

36Beğeni(ler)

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 26 Ağustos 2015, 23:32   #1
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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:   Kodu kopyalamak için üzerine çift tıklayın!
ChanServ- AOP, SOP, HOP ve VOP listelerine sadece kayitli nickler eklenebilir.

böyle bi uyarı alıyoruz. bu uyarı gelirse eklemesin gelmezse eklesin nasıl yapabiliriz.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Yazgulu Sohbet
Alt 26 Ağustos 2015, 23:52   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:input:*: { if $regex($1,^(!|.)opekle$) { set %eklencekkanal $chan set %kayitlimi $2 who $2 } }

diye bir input oluşturur, rawla kontrol ettirirsin.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
raw 352:*: { if $6 == %kayitlimi { haltdef if r isin $7 { chanserv access %eklencekkanal add %kayitlimi 50 | msg %eklencekkanal nicki op eklendi. } else { msg %eklencekkanal Nick kayitsiz. } unset %kayitlimi unset %eklencekkanal } }

bunları remotene ekleyebilirsin.

 
Alıntı ile Cevapla

Alt 26 Ağustos 2015, 23:56   #3
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




SuLh Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:input:*: { if $regex($1,^(!|.)opekle$) { set %eklencekkanal $chan set %kayitlimi $2 who $2 } }

diye bir input oluşturur, rawla kontrol ettirirsin.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
raw 352:*: { if $6 == %kayitlimi { haltdef if r isin $7 { chanserv access %eklencekkanal add %kayitlimi 50 | msg $chan %kayitlimi nicki op eklendi. } else { msg %eklencekkanal Nick kayitsiz. } unset %kayitlimi unset %eklencekkanal } }

bunları remotene ekleyebilirsin.

Öncelikle teşekkür ederim Sulh

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:   Kodu kopyalamak için üzerine çift tıklayın!
if $1 == AkillAt: { on *:notice:*nickli kullanici bulunamadi*:*:{ else { os killclones $2 msg $iwc_server_rapor :[A:KİLL] $2  Nickine Web'den A:KİLL atıldı. }

söyle bişey yapayım dedim ama olmadı bunu nasıl yapabiliriz. yani önce nickin sunucuda olup olmadıgını kontrol ettirip sonra komutu uygulatmak.

 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 00:01   #4
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (2)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:text:!opekle &:#admin:{ if ($regex($2,^#)) { msg # $+($nick,:) $3 için sorgulama yapılıyor. Eğer nick kayıtlıysa $2 kanalında ekleme işlemi yapılacaktır. Lütfen bekleyin. .enable #kntrl nickserv info $3 set %kntrlkanal $2 set %kntrlnick $3 } } #kntrl off on *:notice:*:?:{ if ($nick == NickServ) { if (*kay*tl* de*il* iswm $1-) msg #admin Hata: $+(%kntrlnick,$chr(44)) kayıtlı bir nick olmadığından op ekleme işlemi yapılmadı. else { chanserv access %kntrlkanal add %kntrlnick ACCESS-SEVIYESI | msg #admin Bilgi: Ekleme işlemi başarıyla tamamlandı. $+(%kntrlnick,$chr(44) %kntrlkanal üzerinde başarıyla op eklendi. } unset %kntrlnick %kntrlkanal .disable #kntrl } }

İşini görür.

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.

__________________
iz bırakanlar, unutulmaz.
 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 00:22   #5
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (1)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




Bu da benden olsun baya detaylı oldu
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#:{ if $regex($1,/[!.]opekle/Si) { if !$regex($2,/^#.+/) { msg # Lütfen kanal belirtiniz. | return } if !$regex($3,/^([a-zA-ZĞğıİöÖüÜşŞçÇ_^\133\135}{][a-zA-ZĞğıİöÖüÜşŞçÇ0-9_|^}\{\133\135`-]{0,30})$/i) { msg # Lütfen nick belirtiniz. | return } if !$regex($4,\d) { msg # Lütfen Yetki seviyesini giriniz. | return } else { .enable #opekle | set %kanal # | cs access $2 add $3- } } } #opekle off on *:notice:*:?:{ if $regex($nick,/^ChanServ$/i) { if $regex($1-,/kanal[ıiİ]\skayitl[ıiİ]\sde[gğĞ][ıiİ]l/Si) { msg %kanal $1- | .disable #opekle | return } if $regex($1-,/erisim\slistesi.+kayitli.+nick/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/Erisim\sseviyesi.+ve.+arasinda/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalindaki\serisim.+zaten/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalindaki\serisim\sseviyesi.+degisti/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalinin\serisim.+seviyeden.+eklendi/Si) { msg %kanal $1- | .disable #opekle } } } #opekle end


 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 02:04   #6
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (2)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




Toprak Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Bu da benden olsun baya detaylı oldu
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#:{ if $regex($1,/[!.]opekle/Si) { if !$regex($2,/^#.+/) { msg # Lütfen kanal belirtiniz. | return } if !$regex($3,/^([a-zA-ZĞğıİöÖüÜşŞçÇ_^\133\135}{][a-zA-ZĞğıİöÖüÜşŞçÇ0-9_|^}\{\133\135`-]{0,30})$/i) { msg # Lütfen nick belirtiniz. | return } if !$regex($4,\d) { msg # Lütfen Yetki seviyesini giriniz. | return } else { .enable #opekle | set %kanal # | cs access $2 add $3- } } } #opekle off on *:notice:*:?:{ if $regex($nick,/^ChanServ$/i) { if $regex($1-,/kanal[ıiİ]\skayitl[ıiİ]\sde[gğĞ][ıiİ]l/Si) { msg %kanal $1- | .disable #opekle | return } if $regex($1-,/erisim\slistesi.+kayitli.+nick/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/Erisim\sseviyesi.+ve.+arasinda/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalindaki\serisim.+zaten/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalindaki\serisim\sseviyesi.+degisti/Si) { msg %kanal $1- | .disable #opekle } if $regex($1-,/nick.+kanalinin\serisim.+seviyeden.+eklendi/Si) { msg %kanal $1- | .disable #opekle } } } #opekle end


Regular expression forever.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Ya da daha kısa ve yaratıcı olarak şöyle de olabilirdi:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
on $*:text:/^(!opekle)/iS:#:{ if (!$regex($2,/^#)) { msg # Lütfen kanal belirtiniz. | return } if (!$regex($3,/^([a-zA-ZĞğıİöÖüÜşŞçÇ_^\133\135}{][a-zA-ZĞğıİöÖüÜşŞçÇ0-9_|^}\{\133\135`-]{0,30})$/i)) { msg # Lütfen nick belirtiniz. | return } if (!$regex($4,\d)) { msg # Lütfen Yetki seviyesini giriniz. | return } else { .enable #opekle | set %kanal # | cs access $2 add $3- } } #opekle off 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 } } #opekle end

;p

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.

__________________
iz bırakanlar, unutulmaz.
 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 02:27   #7
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (2)
IF Ticaret Yüzdesi:(%)
Cevap: kontrol edip op ekletme hk.




cashmare Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Öncelikle teşekkür ederim Sulh

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:   Kodu kopyalamak için üzerine çift tıklayın!
if $1 == AkillAt: { on *:notice:*nickli kullanici bulunamadi*:*:{ else { os killclones $2 msg $iwc_server_rapor :[A:KİLL] $2 Nickine Web'den A:KİLL atıldı. }

söyle bişey yapayım dedim ama olmadı bunu nasıl yapabiliriz. yani önce nickin sunucuda olup olmadıgını kontrol ettirip sonra komutu uygulatmak.

Bu soru arada kaynamış. Öncelikle şunu belirteyim, event içerisinde başka bir event kullanamazsın. Yani if $1 == bilmemne { on *:... } diye bir şey olmaz.
-
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:   Kodu kopyalamak için üzerine çift tıklayın!
on *:text:!akill &:#admin:set %nck $2 | .enable #w | whois $2 #w off raw 401:*:if (%nck) { msg #admin Hata: Kişi sunucuda olmadığından işlem yapılmadı. | unset %nck | set %hmm ok } 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 } #w end

Mantığı anlaman için basit identifierlar kullandım, regular expression ya da hash dâhil etmedim. Umarım işine yarar.

__________________
iz bırakanlar, unutulmaz.
 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 09:27   #8
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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.

 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 10:28   #9
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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:   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.

__________________
The Ghost of Christmas Past...

i'm here sometimes
 
Alıntı ile Cevapla

Alt 27 Ağustos 2015, 13:40   #10
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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.

 
Alıntı ile Cevapla

Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
txt ye veriyi * * arasına ekletme cashmare mIRC Scripting Sorunları 1 04 Haziran 2011 00:14
Kelime Kısaltması Ekletme Tapanx mIRC Scripting Sorunları 3 03 Ocak 2009 16:02
bot'a IP akick ekletme Erdem mIRC Scripting Sorunları 3 25 Ekim 2008 23:07
Mesaj ekletme Leader_19 Eggdrop, NeoStats, BNC 0 22 Eylül 2007 15:19
! ile maske ekletme KiLL mIRC Scripting Sorunları 6 03 Mart 2007 15:14