mIRC Scripting  


Geri dön   mIRC Scripting > mIRC Scripting > Tutorials - Dersler

Tutorials - Dersler mIRC Scripting hakkında yazılmış özel dersleri bulup, paylaşabileceğiniz bölüm.

Like Tree2Teşekkür
  • 2 Post By L4roXyL
Cevapla
 
LinkBack Seçenekler
  #1  
Alt 04 Ağustos 2011, 01:33
Avatar Yok

mS Puan: 301
mS Derece: WingmaN MeraklıWingmaN MeraklıWingmaN MeraklıWingmaN Meraklı
 
Üyelik tarihi: 29 Temmuz 2009
Mesajlar: 15
Konular: 11
Eklentiler: 1
Alınan Teşekkür: 3
Yapılan Teşekkür: 0
Lightbulb /* Return - halt - haltdef hakkında */

Yazar: Buğra Bentürk <03.08.2011> 20:50 ( WingmaN )

Merhaba, IF kullanıcıları.

Sizlere kullanıcımızın isteği üzerine, " return , halt ve haltdef " hakkında bilgi vermek ve ufak bir döküman hazırlamak istedim.

/* RETURN ve kullanımı */

Return en kullanışlı olan işlevlerden birisidir. Orjinal anlamı " DÖNDÜR " olarak geçen olayın bizler sizin daha iyi anlayabileceğiniz şekilde, Return'u iki parçaya ayıralım, bunları da " durdur ve oku " şeklinde adlandıralım. Şimdi bu iki parça hakkında biraz bilgi edinelim.

A-) Return : DURDUR < return default-text>

Return, bulunan " alias/event " içerisinde ki sadece istenen kısmın durdurulmasını emreder ve alias/event 'ın işlevinin sadece o kısmını durdurarak işleve devam eder.
örneğin;
Kod:
;örneğin,kanal içerisinde buğra geçen her cümleyi echo'latalım aslında bir nevi, isim uyarıcı diyebiliriz :>
;eğer ki içerisinde buğra geçmiyorsa işleve alma , sadece devam et diyelim.
on ^*:text:*:#: {
  if (buğra !isin $1-) { return }
  else { echo -a $chan ( $+ $nick $+ ) $1- }
}

B-) Return : OKU (Manual read as alias < return custom-output >


Burada ki kullanımda ise kendi belirttiğimiz bir alias'a tekrar kendi ayarladığımız bir fonksiyon ile işlevi okumasını sağlayacağız.
Örneğin;
Kod:
;Diyelim ki, içerisinde ş harfi geçen kelimenin veya cümlenin içinde
; " ş harfini s " harfine değiştiren bir kod yazmak istersek eğer

alias degis return $replace($1-,ş,s)

; //echo -a $degis(şşşşşş)
; yazdığınız zaman, ş harflerin s harfine dönüştüğünü göreceksiniz.
;Kullanılan event-> $replace , mIRC help dosyasında detaylı bilgisini bulabilirsiniz.

Not:
$replace " kelime içerisinde istenilen kelime veya harf veya her noktalama işaretini bir başka işaret/harf/kelime ile değiştirmenizi sağlayan eventtır.

/* HALT ve HALTDEF kullanımı *
/

HALT ve HALTDEF olarak adlandırılan bu iki olay birbirinden çok farklı çalışmasada aynı mantığa sahiptirler. Okuyalım görelim;

A-) HALT kullanımı < using halt in default text of mirc event >

HALT, belli bir alias veya event'ın içerisinde ki verinin tamamiyle durdurulmasını ve hatta bütün alias/event script'inin durdurulmasını sağlayan olaydır, ufak bir örnekle açıklamak gerekirse,

Kod:
;örneğin, CTCP işlevi aldığımızda bunu default mirc'imizin sunduğu gibi değil
;kendi istediğimiz gibi şekillendirelim.

ctcp *:*:*: {
  echo 2 -a $nick size CTCP gönderdi: $1-
  halt
}

;burda ki halt, CTCP gördüğün anda bütün işlevi durdur ve benim belirlediğim,
;işlevi yürüt anlamında kullanılmıştır.


B-) HALTDEF <using haltdef in any default event>


haltdef, isminin de geldiği üzere, " HALT DEFAULT " yani, orjinal mirc event'ını durdur anlamındadır. Kafanızın biraz karıştığının farkındayım fakat şimdi örneğı gördüğünüzde daha iyi anlayacaksınız <.

Örnek:
Kod:
;Hemen ilk kodumuza dönmek istiyorum,
;Ne yapmıştık, içerisinde buğra geçen cümle olursa bize echo ver demiştir.
;Pekala şimdi ise, içerisinde buğra geçen cümlenin kanal satırında ki " RENGİNİ " değiştirelim, bunun için tabii ki " haltdef " kullanacağız.
on ^*:text:*:#: {
  if (buğra isin $1-) {
    echo 6 $chan < $+ $nick $+ > $1-
    haltdef
  }
  else return
}
Tavsiye: halt kullanmaktan olabildikçe vazgeçin, onun yerine daha çok " return " kullanmayı tercih edin, çünkü halt seçeneği anlatmış olduğum gibi event/alias'ı tamamen kapatır, bu nedenden dolayı bazen yazdığınız kodlarda " Neden çalışmıyor bu bölüm? " gibi sorulara mağruz kalabilirsiniz.

Şimdilik, return / halt ve haltdef hakkında ki dersimiz burada son bulmakta, hayırlı ramazanlar ve keyifli dersler dilerim.

Saygılarımla, W.
Alıntı ile Cevapla
Sponsored Links
  #2  
Alt 04 Ağustos 2011, 01:37
Avatar Yok
 DirtyCoder 

mS Puan: 1031
mS Derece: L4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisi
 
Üyelik tarihi: 10 Temmuz 2009
Yaş: 32
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 40
Yapılan Teşekkür: 0
Standart

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:
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 ama /return komutu sadece geriye dönüş yaptığı için herhangi bir bilgi göremezsiniz bu kullanımda.

Bunun için;

Kod:
//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:
//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:
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:
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:
on *:text:*:#:if (ibne isin $1-) { if ($nick !isop #) { kick # $nick sebeb. } }
Veya

Kod:
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:
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:
alias deneme2 echo -ae Bu bir bildirim.
Ve bu aliası şu şekilde kullanırsak eğer;

Kod:
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:
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:
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:
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:
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:
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:
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:
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
pckopat ve nikotinx buna teşekkür ettiler.
__________________
C/co/cod/code^man.
Alıntı ile Cevapla
Cevapla

Etiketler
halt, haltdef, return

Seçenekler

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


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Proxy Killer 2.0b CoCoRiCo Snippets - Parça kodlar 29 24 Temmuz 2015 03:35
HTTP Downloader v1.2 by ^BeAsT^ SeRDaR406 Snippets - Parça kodlar 0 21 Temmuz 2009 01:59


Yasal Uyarı

    5651 sayılı yasada belirtilen "Yer Sağlayıcı" olarak hizmet sunmaktadır. İlgili yasaya göre site yönetiminin tüm içerikleri kontrol etme yükümlülüğü yoktur. Bu sebep ile sitemiz, uyarıları dikkate alarak yasa dışı paylaşımlar hakkında gerekli işlemleri yapmaktadır. Oluşabilecek yasal sorumluluklar üyelerimize aittir. Gerekli şikayet bildirimleri yapabilmek için "burayı" tıklayarak gerekli alanları doldurup yapabilirsiniz.
mIRCScripting©
Powered by vBulletin®
Copyright © 2000-2015, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1

1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76