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

 Kayıt ol  Topluluk
16Beğeni(ler)
  • 6 Post By WingmaN
  • 10 Post By L4roXyL

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 03 Ağustos 2011, 21:08   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
/* 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:   Kodu kopyalamak için üzerine çift tıklayın!
;ö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:   Kodu kopyalamak için üzerine çift tıklayın!
;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:   Kodu kopyalamak için üzerine çift tıklayın!
;ö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:   Kodu kopyalamak için üzerine çift tıklayın!
;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.


Konu WingmaN tarafından (04 Ağustos 2011 Saat 01:09 ) değiştirilmiştir.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Alt 04 Ağustos 2011, 01:27   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: /* Return - halt - haltdef hakkında */




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 ama /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

 
Alıntı ile Cevapla

Alt 17 Mayıs 2013, 22:53   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: /* Return - halt - haltdef hakkında */




Eline emeğine sağlık Hasan'ım

 
Alıntı ile Cevapla

Cevapla

Etiketler
halt, haltdef, return


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

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 Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
input ve halt hakkında yardım Vamp mIRC Scripting Sorunları 4 28 Eylül 2007 23:21
sapart ta halt SaintCty mIRC Scripting Sorunları 10 21 Temmuz 2007 13:58
Toplu halt Requiem mIRC Scripting Sorunları 6 29 Mayıs 2006 20:40
"halt" yerine "return" kullanımı DefauLt mIRC Scripting Sorunları 0 07 Mart 2005 15:52