Tekil Mesaj gösterimi
Alt 29 Ekim 2010, 13:35   #34
Çevrimdışı
GeCeLer_PRenSi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Events




Bazı durumlarda IRC-daemon/Services komutları yetersiz kalır. Bu durumları yapılabilir hale getirilmek için eventler kullanılır.
Genellikle remote olarak bilinir. Kullanımı sadece bir mantık üzerine dayalıdır fakat kullanım alanı çok geniştir.
Bu eğitimde sadece mantığını kavramaya çalışcaz.
-
Konu : Events
-
Genel kullanım : on seviye:işlev: { komutlar }
-
Yazılıma yardımcı olcak konu : While , client
-
-> mIRC'in açılmasında, kanala giriş çıkışlarda, yazılan text lerde, nick değişiminde, mode değişiminde yani anlaşıldığı gibi IRC de herhangi bir değişme olduğunda devreye giren EVENT işlemleridir.
-> Aşamalı olarak ilerlemeye çalışalım.
-
Kullanımlar her zaman "on" ile başlar. Seviye dediğimiz mIRC yetki listesidir. Bu listeye eklemek için ;
-> /auser seviye nick
-
Örnek : /auser 999 aLieN
Silmek için : /ruser aLieN
-
Seviye'nin amacı : Seviye yerine genelde "*(yıldız)" işareti kullanırız. Bu herşey anlamına gelir fakat sadece aLieN nickine geçerli olmasını istiyorsanız "/auser 999 aLieN" yaptıktan sonra ;
-
on 999:işlev: { komutlar } şeklinde yapılır.
-
-
ON START : mIRC programının yeni açılması ile ilgili problemlerde çözüm üretceğimiz yol "START"'dır. Ingilizce "başlamak" anlamındadır ve mIRC'in başlaması olarak düşünebiliriz.
-
on seviye:start: { komutlar }
-
Problem1 : mIRC programını açar açmaz IRC.Chat.Com.tr ye bağlanmak ve mIRC programını açtıktan 10 saniye sonra nickimi identify etmek istiyorum. nasıl yaparım?
Kod 1 :
-

Kod:
on *:start: { .server irc.chat.com.tr | timer 1 10 identify nick-şifrem }-
Fakat bu pek kullanılmaz. Kodlamada yanlışlık yapmak çok doğaldır. Bunu daha göreceli bir derecede getirmek için her komutta satır başı yapılır. örneğin ;
-

Kod:
on *:start: {
.server irc.chat.com.tr
.timer 1 10 identify nick-şifrem
}Detaylı anlatım:

on *:start: { -> herkes : start : {
.server irc.chat.com.tr -> irc.chat.com.tr sunucusuna bağlan
.timer 1 10 identify nick-şifrem -> 1 defaya mahsus 10 saniye sonra nickimin şifresini gir
}
-
AÇIKLAMA: Satırların anlamları tam karşılarında daha iyi anlaşılması için verilmiştir. Kod'da 1 tane { açtığımız için sonunda da 1 tane } belirtmek zorundayız.
-
-
ON CONNECT : mIRC programını açtınız ve herhangi bir sunucuya bağlandınız. Bağlandığımız an ile ilgili problemlerde çözüm üretceğimiz yol "CONNECT"tir.
-
on *:connect: { komutlar }
-
Problem2 : Sunucuya bağlandığım zaman otomatik olarak nickimi identify etmek istiyorum ve #help ajoin listemde fakat ban(+b) olduğu için giremediysem kendi banımı açıp kanala nasıl girebilirim?
-
Kod2 :
-

Kod:
on *:connect: {
.identify nick-şifrem
.cs unban #help
.join #help
}Detaylı anlatım:

on *:connect: { -> herkes : connect : {
.identify nick-şifrem -> nick şifremi gir
.cs unban #help -> #help kanalından banımı kaldır
.join #help -> #help kanalına gir.
}
-
AÇIKLAMA : Satırların anlamları tam karşılarında daha iyi anlaşılması için verilmiştir. Kod'da 1 tane { açtığımız için sonunda da 1 tane } belirtmek zorundayız.
-
ON DISCONNECT : Sunucu ile bağlantınızın kesildiği anda ki problemler için çözüm üretceğimiz yol "DISCONNECT"tir.
-
Problem3 : "Ping Timeout" tan düştüğüm zaman tekrar sunucuya bağlanayım ve oper pass'ımı gireyim.
-
Kod3 :
-

Kod:
on *:disconnect: {
.connect
.oper login pass
}Detaylı anlatım:

on *:disconnect: { -> herkes : disconnect : {
.connect -> tekrar bağlan
.oper login pass -> oper pass'ımı gir
}
-
AÇIKLAMA : Satırların anlamları tam karşılarında daha iyi anlaşılması için verilmiştir. Kod'da 1 tane { açtığımız için sonunda da 1 tane } belirtmek zorundayız.
-
-
ON OP : Op olduğununuzdurumlarda kullanılan parametre "OP"tir.
-
Kullanımı : on *:OP:#kanal: { komutlar }
-
Problem4 : Herhangi bir kanalda bana op verdiği zaman op veren nicke teşekkür etmek istiyorum ve aynı anda kanalda ki bütün banları açmak istiyorum.
-
Kod4 :
-

Kod:
on *:OP:#:{
if ($opnick == nickim) {
.msg $chan teşekkür ederim $nick
.cs clear $chan bans
}
}Detaylı anlatım:

on *:OP:#: { -> herkes : op : herhangi-bir-kanal : {
if ($opnick == nickim) { -> eğer (op-olan-nick = benim-nickim) {
.msg $chan teşekkür ederim $nick -> op olduğum kanala "teşekkür ederim op-veren-nick" yaz
.cs clear $chan bans -> op olduğum kanalın ban listesini temizle
}
}
-
AÇIKLAMA : Satırların anlamları tam karşılarında daha iyi anlaşılması için verilmiştir. Kod'da 2 tane { açtığımız için sonunda da 2 tane } belirtmek zorundayız.
-
NOT1 : $channel 'in kısa şekli $chan 'dır ve bunun anlamı bütün kanallardır.
NOT2 : $nick olayı gerçekleştiren kişinin nickidir. $opnick op olan nicktir.
NOT3 : $hnick halfop olan nick, $vnick voice olan nick anlamına gelmektedir.
NOT4 : $me anlamı benim nickim demektir. " if ($opnick == nickim) {" satırında nickim yerine $me de kullanabilirdik. $me kullanılması daha uygundur.
-
AÇIKLAMA 1 : "IF" bilindiği gibi "eğer" demektir. Belirlediğiniz olayı bu kullanım ile sadece o kanala veya o nicke uygulayabilirsiniz.
if kullanımından sonra tekrar bir " { } " komut belirteci gerekmektedir. Bunun içindir ki sonda 2 adet } } kullandık. Kaç tane " { " yaptıysak o sayıda " } " yapmak zorundayız.
-
-
ON TEXT : Text ingilizce yazı, satır anlamındadır. Bot yapımlarında en çok kullanılan kodlamanın başında bu kullanım yer alır.
Amacı -> birşey yazıldığı zaman birşey yaz.
-
Kullanımı : on *:text:yazı:#kanal: { komutlar }
-
-> Bot yapımlarında kullanılan genel komutlardan 2 örnek yapalım.
-
Problem5 : Helpbot'un özeline "!selam" yazdığı zaman bot otomatikmen Install mIRC yaparken kurulan yerde ki mIRC klasörü içinde(büyük bir ihtimal ile C:/mIRC) "tanıtım" notepad belgesinde ki yazılar göndersin.
-
Kod5 :
-

Kod:
on *:text:*:?: {
if ($1 == !selam) {
.play $nick tanıtım.txt 3000
}
}Detaylı anlatım:

on *:text:*:?: { -> herkes : text : herhangi-bir-yazı : kanal-belirsiz {
if ($1 == !selam) { -> eğer (yazı == !selam) {
.play $nick tanıtım.txt 3000 -> "tanıtım" dosyasını nickin özeline yaz.
}
}
-
AÇIKLAMA : Satırların anlamları tam karşılarında daha iyi anlaşılması için verilmiştir. Kod'da 2 tane { açtığımız için sonunda da 2 tane } belirtmek zorundayız.
-
Problem6 : #Helpers kanalına aLieN nicki "!selam" yazınca bot "a.s" desin fakat Matthys nicki yazınca "sanada selam" yazsın.
-
Kod6 :
-

Kod:
on *:text:*:#: {
if ($chan == #Helpers) {
if ($1 == !selam) {
if ($nick == aLieN) {
.msg #Helpers a.s
}
if ($nick == Matthys) {
.msg #Helpers sanada selam
}
}
}
}Detaylı anlatım:

on *:text:*:#: { -> herkes : text : herhangi-bir-yazı : herhangi-bir-kanal : {
if ($chan == #Helpers) { -> eğer (kanal == #helpers) {
if ($1 == !selam) { -> eğer (yazı == !selam) {
if ($nick == aLieN) { -> eğer (nick == aLieN) {
.msg #Helpers a.s -> #helpers kanalına "a.s" yaz
}
if ($nick == Matthys) { -> eğer (nick == Matthys) {
.msg #Helpers sanada selam -> #helpers kanalına "sanada selam" yaz
}
}
}
}
-
AÇIKLAMA : Satırların anlamları tam karşılarından daha iyi anlaşılması için verilmiştir. Kod'da 4 tane { belirttiğimiz için sonunada 4 tane } yapmak zorundayız.
-
NOT1 : $chan olayın olduğu kanal
NOT2 : yazılan yazının ilk kelimesi
NOT3 : $nick olaydan etkilenen nick
Anlamlarına gelmektedir.
-
ON QUİT : Sunucudan çıkışlarda kullanılan parametre "QUIT"tir.
-
Kullanımı : on *:quit: { komutlar }
-
Genel NOT : Kodları "ALT+R" tuşlarına basarak karşınıza çıkan kutucuğa yazıcaksınız. ( Açılmıyorsa ALT+A yapıp remote bölümüne geçiniz. )
Genel NOT : Kodlarda ki satır başı için bırakılan boşlukları bırakmanız gerekmiyor. Script onu otomatik olarak ayarlıyor.
Genel NOT ;

== anlamı eşit
=== anlamı eşit ama karakter büyük küçük harflerde çalışmaz.
!= anlamı eşit değil

gibi bir çok tarif edilme yöntemi mevcut. bunları araştırmalarınız sonucu öğrenebilirsiniz.

------------------------
Events genel mantığı budur. eventlar bu kadar mı? tabi ki değil. birçok event daha mevcut (logon, notify, tabcomp, dccserver vs..). bunları kullandıkça ve kolaylaştırmak istedikçe daha iyi kod yazabilirsiniz. ingilizceniz var ise size önerebiliceğim en güvenilir kaynak ; /help

kolay gelsin..



ArkadasLar word arsivimde denk geLdım sanırım Ders aline ait.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver