WingmaN güzel bir konuya değinmiş bende ek açıklamalar yapayım.
-
/return [value] scripting geri dönüş işlevlerini yapmak için kullanılır. E tabiki
[value] kısmı girilmesi zorunlu alan değildir. Unutmayın ki eğer bir komut tanımında ek kullanımlar
[] bracket-ları içerisinde tanımlanıyor ise, girilmesi mecbur alan değildir.
Bu bilgiye bakarak,
/return komutu aslında belirtilen
değeri döndürmek için kullanılır. Lakin eğer herhangi bir değer girilmez ise, sorgu veya tanım sonucu gerçekleşecek işlem olmaz. Dolayısıyla boş sonuçlandırma işlemi gerçekleşir. Yani aslında
/return komutu durdurmak için değil, sonuçlamak için kullanılır.
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias deneme return Bu bir denemedir.
Şeklinde bir alias oluşturup,
/deneme komutu girdiğimizde size bir sonuç vermez. Aslında default olarak sonuç gerçekleşir am
a /return komutu sadece geriye dönüş yaptığı için herhangi bir bilgi göremezsiniz bu kullanımda.
Bunun için; Kod: Kodu kopyalamak için üzerine çift tıklayın!
//echo -: $deneme
Yaptığınızda sonuç;
"Bu bir denemedir." olarak size gösterilir(/echo kullandık)
Bu bilgilere ek olarak
/return komutuna bağlı olarak çalışan bir tanımda vardır mIRC-de.
Tanım ismi: $result
Bu tanım
/return komutundan dönen veriyi
göstermek/tanımlamak için kullanılabilir. Mesela az önceki örnekde dediğim gibi, sadece
/deneme yaptığınızda size bir sonuç dönmez ama internal(iç döngü) olarak bu işlev gerçekleşir demiştim. Bunu en iyi anlamak aşağıdaki örneği kullanalım(yukarıdaki
/deneme aliasını mIRC-e ekleyin);
Kod: Kodu kopyalamak için üzerine çift tıklayın!
//deneme | echo -: $result
Yaptığınızda,
"Bu bir denemedir." yazısı döneceketir.
Sanırım buraya kadar anlaşılmayan birşey yok.
-
Şimdi gelelim
/halt - /haltdef olaylarına.
/halt komutu genel mIRC Scripting dilinde özellikle Türkiye'de çokca ve bilinçsizce kullanılmaktadır.
/halt komutu kelimenin tam manası ile
durdurma işlemi yapar. Aynı işlev satırı içerisinde kendisinden sonra gelen
hiçbir komutu çalıştırmaz. Yani; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:halt | echo -: $1-
Yaptığınızda herhangi bir
/echo çıktısı alamazsınız. Çünkü artık
on text (yazı olayı) eventi sonlandırılmıştır. Scripting kodlayıcılarının yaptığı en büyük hata
/halt komutunu gereksiz yerlerde kullanmasıdır.
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#: {
if (ibne isin $1-) {
if ($nick isop #) { halt }
else { kick # $nick küfür etme vs. }
}
}
Gibi kodlar sık kullanılmaktadır ve bu şekildeki kullanımlar birer kodlama hatası olup, aynı zamanda kodun yavaş çalışmasınada sebeb olur.
Bunun yerine; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#:if (ibne isin $1-) { if ($nick !isop #) { kick # $nick sebeb. } }
Veya Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#:if (ibne isin $1- && $nick !isop #) { kick # $nick sebeb. }
on *:text:*ibne*:#:if ($nick !isop #) { kick # $nick sebeb. }
Ve benzeri kodlar kullanınız.
Zaten
/halt ve /haltdef (halting text) komutunun oluşum sebebi aslında;
^ ön eki içindir.
^ öneki nedir derseniz;
Olaylara gerçekleştiği anda müdahale etmenizi sağlar. Daha doğrusu mIRC size o olayı kendi yapısında bildirmeden önce sizin yeni bildirim eklemenize veya bildirimi durdurmanıza yarar. Bu durdurma işlemi local olarak çalışır, global etkisi olmaz.
Yani siz; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:halt
Yaptığınızda, kanala gelen text-leri
siz görmezsiniz, yani mIRC size
bildirim yapmaz. Bu kullanım karşı tarafın kanala text/yazı göndermesini
engellemez/etkilemez.
Ayrıca
/halt komutunu olay içerisinde kullanmanız bağımsız bir alias komutunada etki eder.
Örneğin; deneme2 diye bir aliasımız var ve bu aliasımız bize bildirim yapıyor şöyleki;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
alias deneme2 echo -ae Bu bir bildirim.
Ve bu aliası şu şekilde kullanırsak eğer; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:halt | deneme2
Burada
/deneme2 komutu
gerçekleşmez. Çünkü ilk baştada dediğim gibi,
/halt komutu kendisinden sonra gelen ve aynı işlev içerisinde bulunan hiçbir komutu veya işlevi
çalışmasına izin vermez.
İşte bu noktada bunun için
/haltdef komutuna başvurmanız gerekmektedir.
/haltdef komutuda
/halt gibi çalışır ama sadece belirtilen olayın size çıktı yapmasını engeller. Ve kendisinden sonra gelen herhangi bir işleve karışmaz/engellemez.
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:haltdef | echo -ae # kanalına $nick text gönderdi: $1-
Yaptığınızda, kanala
dışardan gelen text(^*) mIRC tarafından size gösterilmez ve sizin
/haltdef komutundan sonra girdiğiniz
/echo komutu çalışır. Yani dolayısıyla siz mIRC-in kendi çıktısını önler ve kendi çıktınızı aktif edersiniz bu kullanımda.
Aynı şeyi
/halt kullanarak da yapabilirsiniz lakin,
/halt komutunu
/haltdef komutu gibi olay başına değil işlevler sonrasına koymanız gerekmektedir.
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:echo -ae # kanalına $nick text gönderdi: $1- | halt
Yaptığınızda, yukarıdaki işlevin aynısı gerçekleşir.
-
Bu komutları doğrulamak için birde
$halted tanımı eklenmiş mIRC-e.
Tanımımız: $halted
Bu tanım olay içerisinde
/haltdef veya
/halt komutunun kullanılıp kullanılmadığı, daha doğrusu olay içerisinde
durdurma işleminin olup olmadığını gösterir. Dönen sonuçlar 2 şekildedir; 1- $true (durdurma işlemi var)
2- $false (durdurma işlemi yok)
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:*:haltdef | echo -ea Durdurma işlemi: $halted
Yaptığınızda sonuç
$true olarak dönecektir. Çünkü bir durdurma işlemi vardır
(bknz: /haltdef) Diğer örnek; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:*:echo -ea: Durdurma işlemi: $halted
Yaptığınızda sonuç
$false olarak dönecektir. Çünkü herhangi bir
durdurma işlemi yoktur.
-
Ve son ön ek bilgimiz (/halt - halting text ile alakalı): &
Nedir bu
"&" ön eki?
Bu ön ek belirtilen olayda herhangi bir durdurma işlemi varsa, aynı olay altına yazılmış başka kodlara müdahale/ilave etmenize olanak sağlar. Bu cümlem size karmaşık gelmiş olabilir, örneklerle daha iyi anlayacaksınız.
Örneğin; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#deneme:halt
Kodu ile deneme kanalına dışarıdan gelen text-leri mIRC-in size göstermesiniz engellediniz/durdurdunuz diyelim.
Ve bu kodun altına aynı olayı kullanarak; Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:text:*:#:echo -ae # kanalına $nick text gönderdi: $1-
Kodunu eklediğinizde, ikinci olay(ikinci verdiğim kod) çalışacaktır.
Yani üst tarafta
/halt ile durdurmanız 2. olaya veya 3.
vb. olaylara müdahale etmenizi sağlamaz.
İşte burada bunun için;
"&" prefix-ini (önekini) kullanırız.
Nasılmı? Kod: Kodu kopyalamak için üzerine çift tıklayın!
on ^*:text:*:#:halt
on &*:text:*:#:echo -ae # kanalına $nick text gönderdi: $1-
Yaptığınızda, 2. olayda
/halt(durdurma işlemi) olan olaya müdahale eder. Daha doğrusu 2. olayı kendisine ilave ederek, gerçekleşmesini engeller. Yani kısacası 2. olayda durdurulur. Aynı biçim ve özellik
/haltdef içinde geçerlidir.
Ek bilgi: 2. ve diğer (aynı) olaylarda
$halted tanımı dönebilir.
-
Buraya kadar,
/return - /halt - /haltdef - $result - $halted hakkında anlaşılmayan birşey yok sanırım.
Birde
/return komutu ile hemen hemen aynı olan ama işlevi biraz daha farklı olan ve mIRC help içerisinde bulunmayan bir komutunuz daha mevcuttur.
/returnex
Komutu kullanım şekline göre boşlukların biçimi korumak için kullanılır. mIRC bazı kullanımlarda bazen boşluk karakterlerini görmez, işte
/returnex komutu bunun için mIRC-e entegre edilmiştir. Boşluk karakterlerinin yerlerini ve biçimlerini korur. mIRC help dosyasında olmamasının sebebi ise profesyonel kodlamaya girmektedir ve sık kullanılacak bir komut olmamasıdır.
-
Ek açıklama niteliğinde başladığım konu, neredeyse başlı başına bir makale haline geldi. .) Neyse sağlık olsun ve umarım işinize yarar diyorum.
-
L4roXyL - Hasan AYDENİZ