IRCForumu.Net - Türkiye'nin IRC ve mIRC Kullanıcılarının Buluştuğu Forum muhabbet


ircforumu sekershell
bizimkiler sosyalchat


Like Tree1Beğeni(ler)
  • 1 Post By MTR-SCR
Yeni Konu aç Cevapla
 
LinkBack Seçenekler Arama Stil
Alt 10 Haziran 2016, 01:37   #1
Çevrimdışı
Signal / Sinyal


Reklam

Ders: SIGNAL
Tarih: 17 Şubat 2012
Yazan: L4roXyL - Hasan AYDENİZ


mIRC Scripting-de local-global, bazı internal ve çoğu external durumlar için oluşturulmuş bir çok event/olay vardır.
Örneğin bulunduğunuz kanaldan kicklenen bir kişinin rumuzunu ve kick-lendiği kanalın ismini, kickleyen kişiyi vb. bilgileri görmek için ON KICK olayı kullanılır. Ayrıca event dışında yine KICK olayına ait özel tanımlarda vardır. Mesela $knick tanımı kicklenen rumuzu verir. Yine KICK olayı altında $nick kullanırsanız kick-leyen rumuz döner.

Yani kısacası yukarıda söylediğim gibi hemen hemen tüm gerçekleşen durumlara ait bir olay ve o olaya ait özel tanımlar mevcuttur.
Peki diyelim ki biz özel bir durum için bir olay arıyoruz? İşte bu gibi bir durumda SIGNAL olayını kullanabiliriz.
SIGNAL olayı bizi kod yazarken biraz daha serbest bırakır. İsteğe veya belirlersek eğer "parametre" -ye göre işlev yapmamıza olanak sağlar. Zaten SIGNAL olayının Türkçe karşılığı sinyal demektir.

Kısacası sinyal-i çakarız, istediğimizi yaparız gibi düşünün.
Şimdi SIGNAL olayının kullanım şekline geçelim.

mIRC Help dosyasında;

Kod:
on *:SIGNAL:name:command
Şeklinde gösterilmiş. Görüldüğü gibi gayet basit.
Türkçe olarak belirtmek gerekirse;

Kod:
on/açık *:sinyal:belirtilen-isim:komut(lar)
Peki esas olan kısım SIGNAL olayına veri nasıl gönderilir? Nasıl işlem yapılır? SIGNAL olayı nasıl harekete geçer?
Tüm bunlar ve fazlası için /signal komutu kullanılır.

Yine mIRC Help dosyasında komut;

Kod:
/signal [-n] <name> [parameters]
Şeklinde geçer.

Komutumuzda yer alan [veri] kısımları girilmesi zorunlu alan değildir. Yani bu alanları girmediğinizde herhangi bir hata uyarısı almazsınız.

SIGNAL olayı mIRC SCripting-de esasında en çok "socket" ve "dll" işlemlerinde kullanılır.
Ama size daha anlaşılır ve daha serbest bir örnek vermek gerekirse(en basitinden başlayalım);

Kod:
/signal deneme bu bir denemedir.
Komutu uyguladığımızda;

Kod:
* signal 'deneme' (bu bir denemedir.)
Çıktısını mIRC-de görürüz.

Peki bu veriyi algılamak için ne yapacağız? SIGNAL olayını kullanacağız tabiki.

Örnek:

İlk öncelikle aşağıdaki kodu komut dosyasına yerleştirin.

Kod:
on *:signal:deneme:echo -: deneme sinyaline veri ulaştı.
Ardından aşağıdaki komutu uygulayın.

Kod:
/signal deneme bu bir denemedir.
Aktif ekranda "-: deneme sinyaline veri ulaştı." çıktısını alacaksınız.

Buraya kadar anlaşılmayan birşey olmadığını varsayıp devam ediyorum.


SIGNAL olayının içerisinde kullanabileceğimiz özel bir tanım mevcuttur.

Tanım: $signal

Bu tanım sayesinde isterseniz SIGNAL olayı içerisinde isim belirtmeyerek (wildcard (*)) gelen verinin hangi sinyale ait olduğunu görebilirsiniz.

Örnek verelim.

mIRC-e aşağıdaki kodu ekleyin.

Kod:
on *:signal:*:echo -: sinyal ismi: $signal
Devamında aşağıdaki komutu uygulayın.

Kod:
//signal deneme1 bu bir denemedir. | signal deneme2 bu ikinci denemedir.
Aktif ekranda aşağıdaki çıktıları alacaksınız.

Kod:
-: sinyal ismi: deneme1
-: sinyal ismi: deneme2
Yani kısacası $signal tanımı hangi sinyalden veri geldiğini gösterir.

Diğer bir tanım olan bildiğiniz $1- ise, en yukarıda bahsetmiş olduğum [parameters] kısmını gösterir.

Örneğin aşağıdaki kodu yine mIRC-e ekleyin.

Kod:
on *:signal:*:echo -: sinyal ismi: $signal - parametreler: $1-
Sonra aşağıdaki komutu uygulayın.

Kod:
/signal deneme3 bu kısım parametre olarak geçiyor.
Uygulanan komutdan sonra çıktı şu şekilde olacaktır:

Kod:
-: sinyal ismi: deneme3 - parametreler: bu kısım parametre olarak geçiyor.
Bu kısıma kadar SIGNAL olayından ve ait olan tanımlardan bahsettik.

Ek olarak /signal komutuna ait "n" parametresi vardır.

Nedir bu parametre?

Normal bir /signal komutu uyguladığında kod içerisindeki tüm betikler/işlevler çalıştırıldıktan sonra sinyal gönderilir.
Eğer direk sinyal göndermek isterseniz "-n" parametresini kullanabilirsiniz.

Dersin bu kısmına kadara SIGNAL olayından ve /signal komutundan tamamen bahsetmiş olduk.
Şimdi;

SIGNAL ile neler yapılabilir?

Örneğin TEXT olayına eklediğiniz bir takım text korumalarınız var. Mesela; küfür, reklam, flood vb. gibi.
Bu işlevleri yapan kişilere siz gerekli yaptırımları yapıyorsunuz diyelim. Mesela; ban, kick, extban vb. gibi.
Ama aynı zamanda kişileri, yaptığı işlevi, tarihi, sayısını vb. bilgileride ayrı bir dosyada saklamak istiyorsunuz.
Bunları-da on text event-i altında yapmak istemiyorsanız SIGNAL tam size göre.

Örnek verelim.

Kod:
on *:text:*:#: {
if (!$regex($nick(#,$nick).pnick,[@%&+.~])) {
if ($regex($1-,/ibne|göt|çük/i)) {
ban -k # $nick 2 argo kelime kullanmayınız.
}
}
}
Bu kod en basit örnek bir küfür korumasıdır.
Şimdi bu kodu SIGNAL ile bağdaştıralım.

Kod:
on *:text:*:#: {
if (!$regex($nick(#,$nick).pnick,[@%&+.~])) {
if ($regex($1-,/ibne|göt|çük/i)) {
.signal badword # $nick $date $time
ban -k # $nick 2 argo kelime kullanmayınız.
}
}
}
Kalın olarak belirttiğim kısımda /signal komutunu devreye soktuk.
Ve yukarıda belirttiğim patametreler kısmına kanalı(#) nick-i($nick) tarihi($date) ve saati($time) girdik.
Tabi bunun algılanması için SIGNAL olayını kullanmamız lazım.
Devam edelim.

Kod:
on *:signal:badword: {
inc %_bad_words
write badwords.txt Kanal: $1 - Rumuzu: $2 - Tarih: $3-4 - Sıra: %_bad_words
}
Gördüğünüz gibi gayet basit bir kod tablosu oldu.

SIGNAL olayı altında ne yaptık?

Sıra numarası belirlemek için badword sinyaline her veri geldiğinde %_bad_words değişkeninin sayısını 1 arttırdık.
/write komutu ile badwords.txt dosyasına ayrıntılı bir şekilde olan işlemi yazdırdık.
Bu kısımda kullandığımız $1 - $2 vb. 1. 2. vb. kelimeler demektir. TEXT olayı içerişine eklediğimiz /signal komutuna baktığınız zaman gayet anlaşılır.
1. kelime kanal - 2. kelime nick - 3. kelime tarih - 4. kelime ise saat oluyor.

Son notlar:

a) /signal komutu direk uygulandığında mIRC size bilgi verir. Bu bilgiyi görmemek için /.signal şeklinde kullanabilirsiniz.
b) Herhangi bir kod içerisinde sinyal gönderme işlemi varsa, ilk olarak o gerçekleşir. Diğer komut vb. işlemler devamında yapılır.
c) SIGNAL olayı yukarıda da dediğim gibi en çok DLL ve socket(lerden) gelen verilere farklı işlemler veya görevler yüklemek için kullanılır.
d) Alternatif bir uygulama şekli olan SIGNAL en az bahsi geçen olay/event kadar hızlı çalışır.
Ders: SIGNAL
Tarih: 17 Şubat 2012
Yazan: L4roXyL - Hasan AYDENİZ


mIRC Scripting-de local-global, bazı internal ve çoğu external durumlar için oluşturulmuş bir çok event/olay vardır.
Örneğin bulunduğunuz kanaldan kicklenen bir kişinin rumuzunu ve kick-lendiği kanalın ismini, kickleyen kişiyi vb. bilgileri görmek için ON KICK olayı kullanılır. Ayrıca event dışında yine KICK olayına ait özel tanımlarda vardır. Mesela $knick tanımı kicklenen rumuzu verir. Yine KICK olayı altında $nick kullanırsanız kick-leyen rumuz döner.

Yani kısacası yukarıda söylediğim gibi hemen hemen tüm gerçekleşen durumlara ait bir olay ve o olaya ait özel tanımlar mevcuttur.
Peki diyelim ki biz özel bir durum için bir olay arıyoruz? İşte bu gibi bir durumda SIGNAL olayını kullanabiliriz.
SIGNAL olayı bizi kod yazarken biraz daha serbest bırakır. İsteğe veya belirlersek eğer "parametre" -ye göre işlev yapmamıza olanak sağlar. Zaten SIGNAL olayının Türkçe karşılığı sinyal demektir.

Kısacası sinyal-i çakarız, istediğimizi yaparız gibi düşünün.
Şimdi SIGNAL olayının kullanım şekline geçelim.

mIRC Help dosyasında;

Kod:
on *:SIGNAL:name:command
Şeklinde gösterilmiş. Görüldüğü gibi gayet basit.
Türkçe olarak belirtmek gerekirse;

Kod:
on/açık *:sinyal:belirtilen-isim:komut(lar)
Peki esas olan kısım SIGNAL olayına veri nasıl gönderilir? Nasıl işlem yapılır? SIGNAL olayı nasıl harekete geçer?
Tüm bunlar ve fazlası için /signal komutu kullanılır.

Yine mIRC Help dosyasında komut;

Kod:
/signal [-n] <name> [parameters]
Şeklinde geçer.

Komutumuzda yer alan [veri] kısımları girilmesi zorunlu alan değildir. Yani bu alanları girmediğinizde herhangi bir hata uyarısı almazsınız.

SIGNAL olayı mIRC SCripting-de esasında en çok "socket" ve "dll" işlemlerinde kullanılır.
Ama size daha anlaşılır ve daha serbest bir örnek vermek gerekirse(en basitinden başlayalım);

Kod:
/signal deneme bu bir denemedir.
Komutu uyguladığımızda;

Kod:
* signal 'deneme' (bu bir denemedir.)
Çıktısını mIRC-de görürüz.

Peki bu veriyi algılamak için ne yapacağız? SIGNAL olayını kullanacağız tabiki.

Örnek:

İlk öncelikle aşağıdaki kodu komut dosyasına yerleştirin.

Kod:
on *:signal:deneme:echo -: deneme sinyaline veri ulaştı.
Ardından aşağıdaki komutu uygulayın.

Kod:
/signal deneme bu bir denemedir.
Aktif ekranda "-: deneme sinyaline veri ulaştı." çıktısını alacaksınız.

Buraya kadar anlaşılmayan birşey olmadığını varsayıp devam ediyorum.


SIGNAL olayının içerisinde kullanabileceğimiz özel bir tanım mevcuttur.

Tanım: $signal

Bu tanım sayesinde isterseniz SIGNAL olayı içerisinde isim belirtmeyerek (wildcard (*)) gelen verinin hangi sinyale ait olduğunu görebilirsiniz.

Örnek verelim.

mIRC-e aşağıdaki kodu ekleyin.

Kod:
on *:signal:*:echo -: sinyal ismi: $signal
Devamında aşağıdaki komutu uygulayın.

Kod:
//signal deneme1 bu bir denemedir. | signal deneme2 bu ikinci denemedir.
Aktif ekranda aşağıdaki çıktıları alacaksınız.

Kod:
-: sinyal ismi: deneme1
-: sinyal ismi: deneme2
Yani kısacası $signal tanımı hangi sinyalden veri geldiğini gösterir.

Diğer bir tanım olan bildiğiniz $1- ise, en yukarıda bahsetmiş olduğum [parameters] kısmını gösterir.

Örneğin aşağıdaki kodu yine mIRC-e ekleyin.

Kod:
on *:signal:*:echo -: sinyal ismi: $signal - parametreler: $1-
Sonra aşağıdaki komutu uygulayın.

Kod:
/signal deneme3 bu kısım parametre olarak geçiyor.
Uygulanan komutdan sonra çıktı şu şekilde olacaktır:

Kod:
-: sinyal ismi: deneme3 - parametreler: bu kısım parametre olarak geçiyor.
Bu kısıma kadar SIGNAL olayından ve ait olan tanımlardan bahsettik.

Ek olarak /signal komutuna ait "n" parametresi vardır.

Nedir bu parametre?

Normal bir /signal komutu uyguladığında kod içerisindeki tüm betikler/işlevler çalıştırıldıktan sonra sinyal gönderilir.
Eğer direk sinyal göndermek isterseniz "-n" parametresini kullanabilirsiniz.

Dersin bu kısmına kadara SIGNAL olayından ve /signal komutundan tamamen bahsetmiş olduk.
Şimdi;

SIGNAL ile neler yapılabilir?

Örneğin TEXT olayına eklediğiniz bir takım text korumalarınız var. Mesela; küfür, reklam, flood vb. gibi.
Bu işlevleri yapan kişilere siz gerekli yaptırımları yapıyorsunuz diyelim. Mesela; ban, kick, extban vb. gibi.
Ama aynı zamanda kişileri, yaptığı işlevi, tarihi, sayısını vb. bilgileride ayrı bir dosyada saklamak istiyorsunuz.
Bunları-da on text event-i altında yapmak istemiyorsanız SIGNAL tam size göre.

Örnek verelim.

Kod:
on *:text:*:#: {
if (!$regex($nick(#,$nick).pnick,[@%&+.~])) {
if ($regex($1-,/ibne|göt|çük/i)) {
ban -k # $nick 2 argo kelime kullanmayınız.
}
}
}
Bu kod en basit örnek bir küfür korumasıdır.
Şimdi bu kodu SIGNAL ile bağdaştıralım.

Kod:
on *:text:*:#: {
if (!$regex($nick(#,$nick).pnick,[@%&+.~])) {
if ($regex($1-,/ibne|göt|çük/i)) {
.signal badword # $nick $date $time
ban -k # $nick 2 argo kelime kullanmayınız.
}
}
}
Kalın olarak belirttiğim kısımda /signal komutunu devreye soktuk.
Ve yukarıda belirttiğim patametreler kısmına kanalı(#) nick-i($nick) tarihi($date) ve saati($time) girdik.
Tabi bunun algılanması için SIGNAL olayını kullanmamız lazım.
Devam edelim.

Kod:
on *:signal:badword: {
inc %_bad_words
write badwords.txt Kanal: $1 - Rumuzu: $2 - Tarih: $3-4 - Sıra: %_bad_words
}
Gördüğünüz gibi gayet basit bir kod tablosu oldu.

SIGNAL olayı altında ne yaptık?

Sıra numarası belirlemek için badword sinyaline her veri geldiğinde %_bad_words değişkeninin sayısını 1 arttırdık.
/write komutu ile badwords.txt dosyasına ayrıntılı bir şekilde olan işlemi yazdırdık.
Bu kısımda kullandığımız $1 - $2 vb. 1. 2. vb. kelimeler demektir. TEXT olayı içerişine eklediğimiz /signal komutuna baktığınız zaman gayet anlaşılır.
1. kelime kanal - 2. kelime nick - 3. kelime tarih - 4. kelime ise saat oluyor.

Son notlar:

a) /signal komutu direk uygulandığında mIRC size bilgi verir. Bu bilgiyi görmemek için /.signal şeklinde kullanabilirsiniz.
b) Herhangi bir kod içerisinde sinyal gönderme işlemi varsa, ilk olarak o gerçekleşir. Diğer komut vb. işlemler devamında yapılır.
c) SIGNAL olayı yukarıda da dediğim gibi en çok DLL ve socket(lerden) gelen verilere farklı işlemler veya görevler yüklemek için kullanılır.
d) Alternatif bir uygulama şekli olan SIGNAL en az bahsi geçen olay/event kadar hızlı çalışır.
Feragat bunu beğendi.
  Alıntı ile Cevapla

IRCForumu.Net - Reklam Alanı

Cevapla

Etiketler
signal, sinyal
IRCForumu.Net - Sponsor Bağlantılar


Seçenekler Arama
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 Açık
Pingbacks are Açık
Refbacks are Açık