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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Sorunları (https://www.ircforumlari.net/mirc-scripting-sorunlari/)
-   -   on TEXT ile ilgili (https://www.ircforumlari.net/mirc-scripting-sorunlari/692791-text-ile-ilgili.html)

Zifiri 09 Mayıs 2015 01:54

on TEXT ile ilgili
 
merhabalar scripting konusunda kendimi geliştirmeye çalışıyorum. "On Events" konusunda şöyle bir örnekle karşılaştım fakat bir türlü çalıştıramadım hiçbir yerde de örnek yok.

bir örnek; burda %text'e !cool değeri yüklenmiş
Kod:

on $*:text:%text:#:{
  msg $chan I am the coolest!
}

böyle bir kod yazmaya çalışsak örneğin %text'e nasıl değer yükleriz? şöyle bi saçmalamadım ama başarısız oldum;:(-:
Kod:

on $*:text:%text:#:{
  var %hile = !cool
  msg $chan I am the coolest!
}


Feragat 09 Mayıs 2015 02:10

Cevap: on TEXT ile ilgili
 
Alıntı:

Zifiri Nickli Üyeden Alıntı (Mesaj 1041649917)
merhabalar scripting konusunda kendimi geliştirmeye çalışıyorum. "On Events" konusunda şöyle bir örnekle karşılaştım fakat bir türlü çalıştıramadım hiçbir yerde de örnek yok.

bir örnek; burda %text'e !cool değeri yüklenmiş
Kod:

on $*:text:%text:#:{
  msg $chan I am the coolest!
}

böyle bir kod yazmaya çalışsak örneğin %text'e nasıl değer yükleriz? şöyle bi saçmalamadım ama başarısız oldum;:(-:
Kod:

on $*:text:%text:#:{
  var %hile = !cool
  msg $chan I am the coolest!
}


On Text event'ında $ prefix'i ile matchtext yani %text kısmına Regular Expression (regex) ifade eklersin.

Kod:

on $*:text:%text:#:{
  msg $chan I am the coolest!
}

Üstteki event için alttaki gibi bir atama yaparsan !cool veya .cool metinlerine tepki verecektir.
Kod:

//set %text /^[.!]cool$/Si
Örnek:

Kod:

on $*:text:/ircforumlari/i:#:{ kodlar }
Kod:

on $*:text:/naber|nbr|nasılsın/i:#:{ kodlar }

IrCbaStarD 09 Mayıs 2015 02:15

Cevap: on TEXT ile ilgili
 
Sonunda istek disinda teknik birsey soran cıktı sevindim :)

uFuK 09 Mayıs 2015 07:43

Cevap: on TEXT ile ilgili
 
Biz genelde text eventini kullanırken %text değişkeni şeklinde değilde :*: koyarak çalıştırırız böylelikle alt alta tek bir eventta birçok koşulu kontrol edebiliriz eğer sen %text şeklinde yaparsan o eventi sadece %text değişkenine bağlamiş olursun böyle yapmak yerine

Alıntı:

on *:text:*:#: {
if %text isin $1- {
yapılacak işlemler
}
if *!komut* iswm $1- {
yapılacak işlemler
}
if *#* iswm $1- {
mode # +b $address($nick,2) | kick # $nick kanal reklami yasaktir
}
}
Unutmadan ayni remote sayfasinda ayni eventta birden çok kullanma.

on *:text:*:#: {
işlemler
}
on *:text:%text:#: {
işlemler
}

Ayni sayfada olursa çalışmayabilirler.

Feragat 09 Mayıs 2015 13:17

Cevap: on TEXT ile ilgili
 
uFuK güzel bir konuya değinmiş. Bu konuda biraz açıklama yapmakta fayda var.

1- On Text eventını aynı sayfada bir kereden fazla kullanmak ve sonuçları.

Aynı sayfadaki 1'den fazla Text eventında matchtext'ler (eventı tetikleyen, çalışmasını sağlayan belirtilmiş stringler) farklı ise çalışma konusunda herhangi bir sorun yaşamazsınız.

Örnek1:

Kod:

on *:text:a:#deney:echo -a Sonuç: a
on *:text:b:#deney:echo -a Sonuç: b
on *:text:c:#deney:echo -a Sonuç: c

Sonuç:

Kod:

[11:53] <Feragat> a
[11:53] <deneme6> Sonuç: a
[11:53] <Feragat> b
[11:53] <deneme6> Sonuç: b
[11:53] <Feragat> c
[11:53] <deneme6> Sonuç: c

- Matchtext'ler farklı olduğu için herhangi bir sorun yaşamadık ve eventlar ayrı ayrı tetiklendi.

Örnek2:

Kod:

on *:text:*:#deney:msg # Sonuç: a
on *:text:b:#deney:msg # Sonuç: b
on *:text:c:#deney:msg # Sonuç: c

Sonuç:

Kod:

[11:55] <~Feragat> a
[11:55] <deneme6> Sonuç: a
[11:55] <~Feragat> b
[11:55] <deneme6> Sonuç: a
[11:55] <~Feragat> c
[11:55] <deneme6> Sonuç: a

- ilk event'da * (herhangi bir matchtext) karakterini kullandık, bu yüzden * karakteri, gireceğimiz tüm metinlerde tetikleneceği için tüm girilen metinlerde tetiklendi ve sonuç olarak sadece a döndü.

Not: Bazı durumlarda Remote sayfasındaki event'ların sıralarının önemi vardır. Buna örnek verecek olursak.

Sıra Örnek:

Kod:

on *:text:b:#deney:msg # Sonuç: b
on *:text:*:#deney:msg # Sonuç: a
on *:text:c:#deney:msg # Sonuç: c

Sonuç:

Kod:

[12:00] <Feragat> a
[12:00] <deneme6> Sonuç: a
[12:00] <Feragat> b
[12:00] <deneme6> Sonuç: b
[12:00] <Feragat> c
[12:00] <deneme6> Sonuç: a

Görüldüğü gibi matchtext üzerinde * bu karakteri kullanmış da olsak, sırayı önemsedi ve #deney kanalında b yazıldığında, b matchtexti geçen event ilk sırada olduğu için onu çalıştırdı.
- c metni yazıldığında ise öncelik olarak * karakteri kullanılan eventı önemsedi ve a cevabı verdi.

Sıra Örnek2:

Kod:

on *:text:b:#deney:msg # Sonuç: b
on *:text:c:#deney:msg # Sonuç: c
on *:text:*:#deney:msg # Sonuç: a

Sonuç:

Kod:

[12:06] <Feragat> a
[12:06] <deneme6> Sonuç: a
[12:06] <Feragat> b
[12:06] <deneme6> Sonuç: b
[12:06] <Feragat> c
[12:06] <deneme6> Sonuç: c

- Eventlar yine sıralamayı önemsedi ve * karakteri kullanılan event en altta olduğu için, b ve c matchtext i ile tetiklenen eventlarda doğru tetiklendi ve doğru yanıt verdi. Diğer tüm text'lerde ise a yanıtı verecektir.

Sıra Örnek3:

Kod:

on *:text:*:#deney:msg # Sonuç: b
on *:text:*:#deney:msg # Sonuç: c
on *:text:*:#deney:msg # Sonuç: a

Sonuç:

Kod:

[12:17] <Feragat> a
[12:17] <deneme6> Sonuç: b
[12:17] <Feragat> b
[12:17] <deneme6> Sonuç: b
[12:17] <Feragat> c
[12:17] <deneme6> Sonuç: b

Tüm matchtext'ler, herhangi bir metinde tetiklendiği için, sıralamayı önemsedi ve ilk eventı baz aldı. Tüm sonuçları b olarak döndü.

2- Event Prefixlerinde On Text eventının işleyişi

- & Prefixi:

Bu prefix ile On text eventında halt veya haltdef edilen metin veya metinleri belirtilen kanal veya kanallarda başka bir On text eventının etkilememesi sağlanır.

Örnek:

Kod:

on ^*:text:a:#deney:haltdef
Eğer #deney kanalında a karakteri yazılırsa görmeyeceğiz.

Eğer 2 event alt alta kullanırsak;

Kod:

on ^*:text:a:#deney:haltdef
on *:text:a:#:echo -a deneme

- 1. Event'ta #deney kanalında a karakteri yazıldığında bize gösterme dedik.
- 2. Event'ta ise # Herhangi bir kanalda a karakteri yazılırsa deneme kelimesini aktif ekrana echo yap dedik. Bu şekilde #deney kanalındaki a karakterini kapattığımız halde alttaki event yüzünden yinede a kelimesine tepki verecek ve aktif ekrana deneme yazısı yansıyacaktır.

- Biz 2. eventta & Prefixini kullanırsak eğer, alttaki event üstteki haltdef ile a harfine kapatılan eventa saygı duyacak ve #deney kanalında a karakterini haltdef ettiğimiz için deneme kelimesi echo edilmeyecek.

Kod:

on ^*:text:a:#deney:haltdef
on &*:text:a:#:echo -a deneme

3- $ Prefixinde opsiyonel m parametresi.

mIRC.chm dosyasında "Event Prefixes" başlığındaki anlatımı:

Kod:

on $*:TEXT:m/regular expression/switches:#:/echo message: $1-
The 'm' and switches are optional.

- m parametresi ile regexte kullanılan /()/ karakterlerini biçimlendirebiliriz.
(regexin başında kullanılması şartıyla..)

Örnek:

Kod:

//echo -a $regex(mirc,mxrc) - 1
- m parametresi biçimlendirici bir parametre olduğu için biz eğer $regex(mirc,/mxrc/) veya $regex(mirc,(mxrc)) şeklinde bir kalıp kullanmazsak sonuç 1 dönecektir.

Üstteki örnekte regex'imiz $regex(mirc,/rc) bu mantıkla çalışmış oldu ve mirc kelimesi içinde rc yi aradı ve buldu, sonuç 1 döndü.

- m parametresi ile / / slash karakterlerini biçimlendirmeye bir kaç örnek verelim.

Kod:

//echo -a $regex(deneme,mx(deneme)xi)
Burada m parametresi ile /(deneme)/i kalıbını mx(deneme)xi kalıbına dönüştürdük.

Kod:

//echo -a $regex(DeNeMe,m\(deneme)\i)
Üstte ise m parametresi ile / / bunlar m\ \ buna dönüşmüş oldu.

- m parametresi mirc.chm de anlatıldığı üzere On Text eventında da aynı işlevi sağlamaktadır.

- Biraz kendi kendinize örnekler ve denemeler yaparak konuyu daha iyi kavrarsınız. Kolay gelsin.

Zifiri 09 Mayıs 2015 16:26

Cevap: on TEXT ile ilgili
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] verdiğin açıklayıcı ve öğretici cevaplar için teşekkür ederim. ON eventinde $ prefixi ile ilgili merak ettiğim bir konu daha var. mesela içinde küfür kelimeleri olan bir txt dosyamız olsun. #benimkanalim'da bu sözlerin geçmesi durumunda nicke ban atacak bir script yapmak isteyelim;

Kod:

on $*:text:%kufurkoruma:#benimkanalim:{
  ban $chan $nick
}

bu scripti ayarlamamız için %kufurkoruma'yı nasıl set'lememiz gerekiyor?

Kod:

//set %kufurkoruma $read(kufurler.txt)
yine şu şekilde saçmaladım ama? yanlış yoldayım sanırım:(sweat):

Feragat 09 Mayıs 2015 16:52

Cevap: on TEXT ile ilgili
 
Alıntı:

Zifiri Nickli Üyeden Alıntı (Mesaj 1041650042)
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] verdiğin açıklayıcı ve öğretici cevaplar için teşekkür ederim. ON eventinde $ prefixi ile ilgili merak ettiğim bir konu daha var. mesela içinde küfür kelimeleri olan bir txt dosyamız olsun. #benimkanalim'da bu sözlerin geçmesi durumunda nicke ban atacak bir script yapmak isteyelim;

Kod:

on $*:text:%kufurkoruma:#benimkanalim:{
  ban $chan $nick
}

bu scripti ayarlamamız için %kufurkoruma'yı nasıl set'lememiz gerekiyor?

Kod:

//set %kufurkoruma $read(kufurler.txt)
yine şu şekilde saçmaladım ama? yanlış yoldayım sanırım:(sweat):



on text eventında $ prefixi yalnızca regex matchtext eklemek için kullanılır. Üstteki koduna örneklerde gösterdiğim gibi,

Kod:

on *:text:/kelime1|kelime2|kelime3|kelime4|kelime5/Si:#benimkanalim:{
böyle bir eklenti yaparsan, belirttiğin kelimelerde event tetiklenir ve ne uygulamak istiyorsan onu uygular.

Matchtext kısmına $read komutuda eklenebilir ama senin istediğin gibi bir olay için değil.

- Matchtext kısmına $read eklemek,

mIRC Klasöründe deneme.txt isimli bir dosyamız olduğunu farzedelim. Bu .txt dosyasının içeriği şöyle olsun.

Kod:

bir
iki
üç
dört
beş

1-
Kod:

on *:text:$($read(deneme.txt,w,ü*)):#deney:msg # Eşleşen: $matchkey

- deneme.txt içindeki ü* filtresine uyan ilk satır ile tetiklenir.

[16:44] <Feragat> üç
[16:44] <deneme6> Eşleşen: üç


2-
Kod:

on *:text:$($read(deneme.txt,w,*i*)):#deney:msg # Eşleşen: $matchkey

- deneme.txt içinde *i* filtresine uyan ilk satırla tetiklenir.

[16:45] <Feragat> bir
[16:45] <deneme6> Eşleşen: bir

3-
Kod:

on *:text:$($read(deneme.txt,1)):#deney:msg # Eşleşen: $matchkey

- deneme.txt içindeki 1. satırda geçen text ile tetiklenir.

[16:46] <Feragat> bir
[16:46] <deneme6> Eşleşen: bir

- Ve daha pek çok olasılık mümkün.

Bunun dışında .txt içindeki küfürlü kelimeleri okutup karşılaştırmak için matchtext e veri girmek yerine farklı yollar denemelisin, örnek: while döngüsü gibi..

Zifiri 10 Mayıs 2015 00:36

Cevap: on TEXT ile ilgili
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] inan while döngüsü hakkında hiçbir bilgim yok. birkaç örnek verebilir misin nasıl yapacağıma dair veya link verebilir misin?

Feragat 10 Mayıs 2015 01:06

Cevap: on TEXT ile ilgili
 
Alıntı:

Zifiri Nickli Üyeden Alıntı (Mesaj 1041650150)
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] inan while döngüsü hakkında hiçbir bilgim yok. birkaç örnek verebilir misin nasıl yapacağıma dair veya link verebilir misin?

Buradan inceleye bilirsin.

Link: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Zifiri 10 Mayıs 2015 02:06

Cevap: on TEXT ile ilgili
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] şöyle bir kod yaptım while döngüsü ile ilgili, fakat kodu /deneme komutuyla çalıştırdığımda mIRC donup kalıyor.. yanlışım nerde?

Kod:

alias deneme {
  var %x 1
  var %t $lines(kufurler.txt)
  while %x <= %t {
            echo -a $read(kufurler.txt,%x)
            inc %x
  }
}

bir de; while döngüsünü kullanarak benim istediğim şeyi nasıl yapıcaz tam olarak onu anlamadım?

Kod:

on *:TEXT:%deneme:#:{
şeklinde mi?:(nerd):


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 02:46.

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