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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
[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: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#deney:msg # Sonuç: a
on *:text:b:#deney:msg # Sonuç: b
on *:text:c:#deney:msg # Sonuç: c
Sonuç: Kod: Kodu kopyalamak için üzerine çift tıklayın!
[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: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:b:#deney:msg # Sonuç: b
on *:text:*:#deney:msg # Sonuç: a
on *:text:c:#deney:msg # Sonuç: c
Sonuç: Kod: Kodu kopyalamak için üzerine çift tıklayın!
[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: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:b:#deney:msg # Sonuç: b
on *:text:c:#deney:msg # Sonuç: c
on *:text:*:#deney:msg # Sonuç: a
Sonuç: Kod: Kodu kopyalamak için üzerine çift tıklayın!
[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: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#deney:msg # Sonuç: b
on *:text:*:#deney:msg # Sonuç: c
on *:text:*:#deney:msg # Sonuç: a
Sonuç: Kod: Kodu kopyalamak için üzerine çift tıklayın!
[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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
//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: Kodu kopyalamak için üzerine çift tıklayın!
//echo -a $regex(deneme,mx(deneme)xi)
Burada
m parametresi ile
/(deneme)
/i kalıbını m
x(deneme)
xi kalıbına dönüştürdük.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
//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.