Posts filed under ‘mIRC Dersleri’

Socket Botu Proxy ile Bağlamak

;sock bağlama
on *:sockopen:xclusive: {
;sock hatalıysa durdur
if ( $sockerr > 0 ) { return }
;bağlandığında irc sunucusuna bağla
.sockwrite -tn $sockname CONNECT irc.server.com:port $+(HTTP/1.0,$CRLF,$CRLF)
}
;sock okuma
on *:sockread:xclusive:{
;sock hatalıysa durdur
if ( $sockerr > 0 ) { return }
;sock oku
.sockread %report
;bağlantıdaki yazı HTTP/1.0 200 yada HTTP/1.1 200 ise
if ($gettok(%report,1-2,32) == HTTP/1.0 200) || ($gettok(%report,1-2,32) == HTTP/1.1 200) {
;bu komutları uygula
;botun nickini belirtiyoruz
.sockwrite -tn $sockname NICK XcLusive
;botun ident adresini ve fullnamesini belirtiyoruz
.sockwrite -tn $sockname USER XcLusive XcLusive XcLusive : $+ Botun Adı
}
;raw numarasını belirliyoruz sock botumuz sunucuya bağlandığında istediğimiz komutları yazdırmak için
;örneğin ben kanala almak istedim
;raw numarasını alıyoruz
var %:raw = $gettok(%report,2,32)
;eğer raw numarası 266 ise deneme kanalına gir diyoruz
if ( %:raw == 266 ) { sockwrite -nt $sockname join #deneme }
}
son olarak botumuzu /sockopen xclusive proxy-ip-adresi proxy-portu şeklinde bağlıyoruz
unutmayın sock botumuzun adı xclusive olmalı aksi halde bağlanmaz
bu değerleri değiştirmek istiyorsanız
on *:sockopen:xclusive:{
on *:sockread:xclusive:{
remotelerindeki xclusive yerine başka birşey yapabilirsiniz.

Eylül 19, 2008 at 11:09 pm Yorum bırakın

mIRC Toolbar

mIRC Toolbarının kullanım parametreleri

toolbar

1. icon: Sohbetiniz bitti ve artık IRC’den ayrılacaksınız ya da başka server’a bağlanmak istiyorsunuz, bunun için ekranınızın üstünde yer alan, yukarıdaki bar’da en başta bulunan “Disconnect” icon (simge)’unu tıklamanız yeterlidir. Ayrıca yeni bir bağlantı içinde tekrar bu butonu kullanabilirsiniz.
2. icon: Ayarlar Menüsünü açar.
3. icon: Kanal Liste Menüsünü açar.
4. icon: Server’in Kanal Listesini alır (/list komudu).
5. icon: Aliases Menüsünü açar (Bu menü üst düzey kullanıcılar içindir, oynama yapıldığında program bozulabilir).
6. icon: Popups Menüsünü açar (Bu menü üst düzey kullanıcılar içindir, oynama yapıldığında program bozulabilir).
7. icon: Remote Menüsünü açar (Bu menü üst düzey kullanıcılar içindir, oynama yapıldığında program bozulabilir).
8. icon: IRC’deki gecikmeleri ölçmek için kullanılan menüyü açar.
9. icon: Online kaldığınız süreyi belirten sayaçtır.
10. icon: Renkli yazı yazmanızı sağlayacak, pencereyi açar.
11. icon: mIRC’in kendi Adres Defteri’ni açar.
12. icon: DCC ile dosya göndermek için kullanılan pencereyi açar.
13. icon: DCC ile chat yapmanızı sağlayan penceriyi açar.
14. icon: DCC Ayarlarını yapabileceğiniz menüyü açar.
15. icon: Notify (Online olduğunda bilmenizi istediğiniz kullanıcılar) listesini alır.
16. icon: mIRC’e kaydettiğiniz URL’lerin listesini alır.
17. icon: Kanal ve Query (Özel) pencerelerini yatay olarak hizalar.
18. icon: Kanal ve Query (Özel) pencerelerini basamaklı olarak hizalar.
19. icon: mIRC’in yardım menüsünü açar.
20. icon: mIRC hakkındaki bilgilerin bulunduğu pencereyi açar.

Eylül 19, 2008 at 11:08 pm Yorum bırakın

Bazı mIRC komutlarının IRC komutlarına entegrasyonu

Bu bölümde bazı mirc komutlarının irc üzerinde aktif kullanım şekilleri yer almaktadır.

Aşağıda yer alan $parametre cinsinden komutların işlevlerine ulaşmak için;

//say $parametre: belirtilen parametreyi komutun uygulandığı pencereye gönderir.
//echo $parametre: belirtilen parametreyi aktif pencerede görüntüler. Karşı tarafa göndermez.

seçeneklerini kullanabilir veya “$parametre” şeklinde yazdıktan sonra klavyenizden tab tuşuna basarak görüntüleyebilirsiniz.

$me: Aktüel nickinize eşdeğerdir.

$anick: Alternatif nickinize eşdeğerdir.

$emailaddr: Kullanmakta olduğunuz identi görüntüler.

$host: Kullanmakta olduğunuz hostu görüntüler.

$ip: IP Adresinizi görüntüler.

$fullname: Kullanmakta olduğunuz fullnameyi görüntüler.

$port: Giriş yapmış olduğunuz port numarasını görüntüler.

$server: Bağlı olduğunuz serverın adını görüntüler.

$serverip: Bağlı olduğunuz serverın ip adresini görüntüler.

$network: Bağlı olduğunuz ağın adını görüntüler.

$chanmodes: Bağlı olduğunuz sunucuda geçerli olan kanal modlarını görüntüler.

$usermode: Sahip olduğunuz kullanıcı modlarını görüntüler.

$status: Bağlantı durumunuzu görüntüler.

$idle: Ne kadar süredir yazışmadığınızı saniye cinsinden görüntüler.

$version: Kullanmakta olduğunuz mirc’in sürümünü görüntüler.

$os: Kullandığınız windows sürümünü görüntüler.

$date: Gün/ay/yıl cinsinden tarihi görüntüler.

$day: Haftanın hangi gününde olduğunuzu görüntüler.

$time: Saat/dakika/saniye cinsinden zamanı görüntüler.

$fulldate: Hangi gün/saat ve yılda olduğunuzu görüntüler.

$lower(yazı): Belirtilen yazı içerisinde yer alan karakterlerin hepsini küçük harflere çevirir.

$upper(text): Belirtilen yazı içerisinde yer alan karakterlerin hepsini büyük harflere çevirir.

$len(yazı): Belirtilen yazının kaç karakterden oluştuğunu numerik olarak görüntüler.

$query(sıra): Özelinizdeki kullanıcılardan belirtilen sırada yer alan nicke eşdeğerdir. Sıra yerine 0 yazıldığı takdirde özelinizde bulunan kullanıcı sayısını görüntülemenizi sağlar.

Özelinizdeki kullanıcı sayısını öğrenmek için: //say $query(0)

Özelinizdeki 25. sırada bulunan kullanıcıyı öğrenmek için: //say $query(25)

$chan(sıra): Bulunduğunuz kanallar arasında belirtilen sırada yer alan kanalın ismine eşdeğerdir. Sıra yerine 0 yazıldığı takdirde kaç kanalda bulunduğunuzu görüntülemenizi sağlar.

Toplam kaç kanalda olduğunuzu öğrenmek için: //say $chan(0)

Bulunduğunuz kanallar sıralamasında 7. sırada yer alan kanalın ismini öğrenmek için: //say $chan(7)

Soru: Toplam olarak 17 kanala giriş yaptım. Bu kanallardan 4,8 ve 16. sırada yer alanlardan çıkış yapmak istiyorum?
Yanıt: //part $chan(4) $+ , $+ $chan(8) $+ , $+ $chan(16)

$ignore(sıra): Belirtilen sırada yer alan ignore maskesine eşdeğerdir.

Soru: Ignore listesinde yer 17. maskenin yasağını kaldırmak için uygulamamız gereken komut nedir?
Yanıt: //ignore -r $ignore(17)

Soru: Ignore listesinde kaç maskenin yer aldığını nasıl öğrenebiliriz?
Yanıt: //say $ignore(0)

Soru: Ignore listesinde yer alan 3. maskenin hangi parametrelerde yasaklı olduğunu nasıl görüntüleriz?
Yanıt: //say $ignore(3).type

Soru: Süreli ignore yolu ile engellediğim bir ignorenin devre dışı kalması için ne kadar süre kaldığını nasıl görüntüleyebilirim?
Yanıt: //say $ignore(sıra).secs

$notify(sıra): Notify listesinde belirtilen sırada yer alan nicke eşdeğerdir.

Soru: Notify listemde 13. sırada ve query listemde 23. sırada olan nicklere whois çekmek istiyorum?
Yanıt: //whois $notify(13) $+ , $+ $query(23)

Soru: Notify listemde kaç nick olduğunu numerik olarak görüntülemek için uygulamam gereken komut nedir?
Yanıt: //say $notify(0)

$nick(#kanal,sıra,o): Belirtilen kanalda; belirtilen sırada yer alan operatörün nickine eşdeğerdir.

Soru: #help kanalında 6. sırada yer alan operatörün opunu almak için uygulamam gereken komut nedir?
Yanıt: //mode #help -o $nick(#help,6,o)

Soru: #sohbet kanalında kaç adet operatör olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $nick(#sohbet,0,o)

$nick(#kanal,sıra,h): Belirtilen kanalda; belirtilen sırada yer alan halfoperatörün nickine eşdeğerdir.

Soru: #helpmaster kanalında ilk sırada yer alan halfoperatöre +o modu vermek için uygulamam gereken komut nedir?
Yanıt: //mode #helpmaster +o $nick(#helpmaster,1,h)

Soru: #ircmaster kanalında kaç adet halfoperatör olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $nick(#ircmaster,0,h)

Soru: #help kanalında 2. sıradaki halfop’a #helpers kanalında nojoin numerik değerinde seviye vererek kanala girişini engellemek istiyorum?
Yanıt: //msg chanserv access #helpers add $nick(#help,2,h) -999

$nick(#kanal,sıra,v): Belirtilen kanalda; belirtilen sırada yer alan voice’li kullanıcının nickine eşdeğerdir.

Soru: #eğitim kanalında 2. sırada yer alan voiceli kullanıcıya +oa modları vermek için uygulamam gereken komut nedir?
Yanıt: //mode #eğitim +oa $nick(#eğitim,2,v) $nick(#eğitim,2,v)

Soru: #help kanalında kaç adet voiceli kullanıcı olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $nick(#help,0,v)

$ibl(#kanal,sıra): Belirtilen kanalda; belirtilen sırada yer alan ban maskesine eşdeğerdir.

Soru: #help kanalı ban listesinde kaç adet ban olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $ibl(#help,0)

Soru: #sohbet kanalında 5. sırada yer alan banı kaldırmak istiyorum?
Yanıt: //mode #sohbet -b $ibl(#sohbet,5)

Soru: #sohbet ve #help kanallarındayım. #sohbet kanalı ban listesinde yer alan ilk beş banı #help kanalından da banlamak istiyorum?
Yanıt: //mode #help +bbbbb #sohbet $ibl(#sohbet,1) $ibl(#sohbet,2) $ibl(#sohbet,3) $ibl(#sohbet,4) $ibl(#sohbet,5)

Soru: #sohbet kanalında ki banlardan 13. sırada olanın aktif edilme tarihini öğrenmek istiyorum?
Yanıt: //say $ibl(#sohbet,13).date

Soru: #sohbet ve #helpers kanallarındayım. #sohbet kanalında son banı atan kullanıcıyı #helpers kanalından banlamak istiyorum?
Yanıt: //mode #helpers +b $ibl(#sohbet,1).by

Soru: creep, ve X kanallarındayım. #X kanalındaki son atılan banın maskesini creep kanalında exception listesine ekleyip banı atan kişiyi ise creep kanalından banlamak istiyorum?
Yanıt: //mode #creep +eb $ibl(#X,1) $ibl(#X,1).by

$iel(#kanal,sıra): Belirtilen kanalda; belirtilen sırada yer alan exception maskesine eşdeğerdir.

Soru: #help kanalı exceptions listesinde kaç adet exception olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $iel(#help,0)

Soru: Sohbet kanalında 3 ve 7. sırada yer alan exceptionu kaldırmak için uygulamam gereken komut nedir?
Yanıt: //mode #sohbet -bb $iel(#sohbet,7) $iel(#sohbet,3)

Soru: İçerisinde olduğum #help kanalı exception listesinde 3 adet maske bulunmaktadır. Bu maskelerin korumalarını kaldırıp aynı maskere nick değiştirme yasağı koymak için uygulamam gereken komut nedir?
Yanıt: //mode #help +bbb-eee ~n: $+ $iel(#help,1) ~n: $+ $iel(#help,2) ~n: $+ $iel(#help,3) $iel(#help,1) $iel(#help,2) $iel(#help,3)

Soru: #helpers kanalında exception listesinde yer alan 3. maskenin hangi operatör tarafından eklendiğini öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $iel(#helpers,3).by

$iIl(#kanal,sıra): Belirtilen kanalda; belirtilen sırada yer alan invex maskesine eşdeğerdir.

Soru: #help kanalında kaç adet invex maskesinin aktif durumda olduğunu öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $iIl(help,0)

Soru: #help #helpers ve #sohbet kanallarındayım. mIRC’ımda invite only konumunda olan #help kanalı penceresi açık. Bu pencere üzerinde uygulayacağım bir komut ile; #helpers kanalında 3. sırada yer alan operatöre ve #sohbet kanalında bulunan 7. halfoparatöre #help kanalında davetli modu vermek için uygulamam gereken komut nedir?
Yanıt: //mode #help +II $nick(#helpers,3,o) $nick(#sohbet,7,h)

Soru: #sohbet kanalında son eklenen invex maskesinin eklendiği tarihi öğrenmek için uygulamam gereken komut nedir?
Yanıt: //say $iIl(#sohbet,1).date

Soru: X,Y ve Z kanallarında operatörüm mIRC’ımda invite only konumda bulunan X kanalı penceresi açık, aktif pencere üzerinde uygulayacağım bir komut ile Y kanalında bulunan 8. kullanıcıya, +o kipini almış 2. kullanıcıya ve Z kanalındaki ilk voiceli kullanıcıya X kanalında davetli modu vermek kanalı /invite komutunun kullanımına kapatmak ve sadece creep nickinin kanala mesaj gönderebilmesini sağlamak istiyorum?
Yanıt: //mode #X +IIIbeV $nick(#Y,8) $nick(#Y,2,o) $nick(#Z,1,v) ~q:*!*@* creep!*@*

Soru: #creep #X ve #Y kanallarındayım, #X kanalında 5. sıradaki ban maskesine #creep kanalında exception vermek, #Y kanalındaki 3. operatöre #creep kanalında davetli modu vermek, #Y kanalındaki 9. Invex maskesini #creep kanalında banlamak ve creep kanalındaki 13. banı kaldırıp aynı maskeye davetli modu vermek istiyorum?
Yanıt: //mode #creep +eIbI-b $ibl(#X,5) $nick(#Y,3,o) $+ !*@* $iIl(#Y,9) $ibl(#creep,13) $ibl(#creep,13)

Eylül 19, 2008 at 11:08 pm Yorum bırakın

Event Dersleri

on *:connect: { ( connect ) olarak adlandırdığımız event ( bağlanınca aktif olur ) disconnect bağlantı kopunca
Örneğin;
Ben diyorum ki bir sunucuya bağlandığımda direkt olarak #leader kanalına gireyim nasıl yapacağım ?

on *:connect: {
join #leader
}

*****************

Disconnect ;

Disconnect ( Kelime )’de belirtildiği gibi bağlantının sona ermesidir , ve event ‘i = on *:disconnect: { ‘dir..

Orneğin ;
Bağlantım kesildiğinde ( Disconnect ) olduğumda , nick’imi otomatik olarak önce LeadeR yapacağım daha sonra , irc.turkcoders.com adresine bağlanıp , #turkcoders kanalına gireceğim

on *:disconnect: {
.nick LeadeR
.server irc.turkcoders.com
.join #turkcoders
}

Dikkat edilmesi gereken hususlar . = Nokta , niçin nokta kullandım ( Nokta kullandığınızda yaptığınız işlem status ekranında belirtilmez ) Yazdığınızı görmezsiniz ( . ) yerine ( / ) kullanmış olsa idiniz , nick değişimini server’a bağlantı kurulumunu göz önünde görürdünüz..

***********************

Op & Deop ;

Op ( event =

on *:op:#: {

buradaki farklılık ( # ) isareti yani kanal işaretidir.. , neden kullandım ? Op(@) kanal komutları ile alakalı olduğu için event’imizi buna göre düzenledim , eğer bu event’im başına # isaretini koymamıs olsa idim kod calısmazdı , lütfen kücük noktalara dikkat edelim..

; Orneğin ;
Birisi bulunduğum kanalda bana op verir ise , kanala nick’e hitaben seslenip neden op verdin diyeceğim nasıl yapacağım ?

on *:op:#: {
if $opnick == $me {
msg # $nick Neden op verdin ?
}
}

Burada $opnick == $me ( if – then – else , dersimde de belirttiğim gibi == eşitlik demektir ) $opnick ( Op olan nick ) Eşittir ( Benim Nick’ime )
eğer op olan nick ben isem {
olarak düşünmelisiniz.. ( if = eğer )

Deop ;

Burada kullanacağımız mantık bütün event’lerde olduğu gibi aynıdır..

on *:op:#: {

event’inde kullandığımız gibi burada da on *:deop:#: { kullanacağız.. $opnick yine aynı kalacaktır..

Orneğin ;
Op olarak bulunduğum kanaldan deop edilir isem beni deop eden nick’e mesaj göndersin ( neden deop ettin ? ) olarak..

on *:deop:#: {
if $opnick == $me {
msg # $nick Neden beni deop ettin ?
}
}

Daha fazla bir acıklama gerek duymadım bu event’imiz hakkında..

*******************

Voice & Devoice

Voice ; ( event = on *:voice:#: { )

Hepsinde olduğu gibi mantık yine aynıdır , tek bir örnek ile gececeğim
Orneğin ;
Kanalda voice ( +v ) aldığımda kanala Selam yazısı gönderecek , op voice teşekkür addon’larının mantığı’da buradan gelmektedir..

on *:voice:#: {
if $vnick == $me {
msg # $nick Selam
}
}

Gördüğünüz gibi , daha fazla konuşmaya gerek yok sanırım..

****************

Join & Part

Join ; ( event = on *:join:#: { )

Not : join ( giriş ) anlamı taşımaktadır , kanal ile alakalı olduğundan ötürü event’lerinde # mevcut’tur.
Kısa kısa gececeğim ,

Orneğin ;
Birisi kanala girdiği zaman kanala kişiye hitaben seslenerek selam kanala hosgeldiniz yazmasını istiyorum

on *:join:#: {
msg # $nick Kanala hoşgeldiniz
}

*****

Part ; ( event =

on *:part:#: {

Not : Part(çıkış) anlamı taşımaktadır # mevcut’tur..
Orneğin ;
Birisi kanaldan cıktığında kişiye Tekrar bekleriz mesajı göndereceğim nasıl ?

on *:part:#: {
msg $nick Tekrar bekleriz
}

Burada ( # ) isaretimizi tek bir kanal için sabitlemek istiyorsak , Orneğin : Komutun Yalnızca #turkcoders kanalında islemesini istiyorsanız.
Kod:

on *:part:#turkcoders: {

olarak event’imizi kodlamaya başlayacağız..

*****************

Ban & Kick ;

Ban ;
Hepiniz ban ( +b )’nin ne işe yaradığını biliyorsunuz , bu event’imiz ( on *:ban:#: { ) Yalnızca kanalda +b modu gerceklestiğinde aktif olmaktadır..

Orneğin ;
Kanaldan birisi beni banlarsa otomatikman ban acılsın ve nick’e sakın beni banlama mesajı gitsin..

on *:ban:#: {
if ($bnick == $me ) {
mode # -b $me
msg $nick Beni banlama sakin
}
}

****************

Kick ;

Kick bildiğiniz gibi kanaldan atmaktır yani birisi kanaldan atıldığında aktif olur
Örnek : Birisi beni kicklemeye kalktığında beni kicklemeye calısanı ben Beni kickleme sebebi ile kickban atmak istiyorum nasıl yapacağım?

on *:kick:#: {
if ($knick == $me ) {
join #
chanserv op $me
mode # +b $nick
kick # $nick Beni kickleme
}
}

mantık aynıdır ( $knick = kicklenen nick )

***************

Notice & Snotice(Status Notice)

Notice ;

Mantık diğerlerinde olduğu gibi bundada aynı ,
Orneğin ;
Birisi size notice attığında neden notice atıyorsun mesajı göndersin

on *:notice: {
msg $nick Neden Notice Atıyorsun ?
}

*******

Snotice ;

Snotice’e bir örnek vereyim bu genellik ile sorulan sorulardan birisidir ben bir IRCOP’um ve birisi bana whois cektiğinde önce benim
ekranıma xxx nickli kisi whois cekti diye bir mesaj gelsin sonra o bana whois cekene Merhaba ben xxx size nasıl yardımcı olabilirim diye
Mesaj atsın nasıl yapacağım ?

on *:snotice:*/whois*on*you*:{ echo -a $2 Size Whois Cekti msg $2 Merhaba ben xxx size nasıl yardımcı olabilirim ? }

*********************

Action ;

action nedir ? birisi kanalda veya özelde /me kullandığında uygulanmasını istediğiniz event baslangıcıdır yani /me ‘ler icin kullanılır
Ben diyorum ki kanalda birisi /me ile selam yazdı ise o nick’e uyarı yapsın uyarı’da ne desin diyelim ki len me ile yazma desin , Nasıl
yaparım?

on *:action:#: {
if selam isin $1- {
msg $nick len me ile yazma
}
}

************

Text & Start & Open

Text ;

Text aktif olarak bulunan pencere icin yazılan yazıdır , kanala ve özele..

Örneğin ben diyorum ki #leader kanalında birisi merhaba yazdığında ona Merhaba diye geri mesaj atacağım ama kanalda yazacağım Örnek ahmet Merhaba yazdı bende kanala Merhaba ahmet
yazacağım nasıl ?

on *:text:*:#leader {
if merhaba isin $1- {
msg $chan Merhaba $nick
}
}

Burada #leader kanalı için gecerlidir bu kod , ama #leader yerine # yazarsanız , bütün kanallar icin gecerli olur , Join event’i mantığı ile aynıdır..

****

Start ;

Scriptin acılısında ( mIRC’ın ) aktif olur
Örneğin ben diyorum ki ben script’imi actığımda önüme bir yazı gelsin scriptinizi actınız kullanın diye nasıl yapacağım ?

on *:start: { echo -a scriptinizi actiniz kullanın }

Burada echo ( Ekran’a görüntü vermek icin kullanılır ) mirc.help dosyasını acıp , /echo dizinine bakarsanır , hangi harf’in ne icin yaradığını göreceksiniz , örneğin : echo -a ( aktif ekrana verir ) , echo -s ( Status Ekranına ) vs vs ..

*************

Open ;

OZEL pencereler gecerlidir genellikle ozel icin kullanılır
Orneğin ;
ben diyorum ki özelime birisi geldiğinde direkt olarak Merhaba ben LeadeR size nasıl yardımcı olabilirim ? diye mesaj atsın nasıl yaparım ?

on *:open:?: {
msg $nick Merhaba ben LeadeR size nasıl yardimci olabilirim ?
}

*************

Dipnot : # = Kanal
Dipnot : ? = Ozel

düzenlenmiştir

iyi çalışmalar , kolay gelsin

Eylül 19, 2008 at 11:07 pm Yorum bırakın

Nick Listesi Menüsün Reklendirmek

Kanal Nick Listesindeki Renkleri op, voice, user gibi gruplandırarak renklendirmenin Kodsuz yöntemi:

Nick Listesindeki nickleri Kodsuz (mirc ayarlarından) renklendirmek:

Alt+B tuşlarına basınca karşına Adres defteri ( Adress Book ) çıkıyor..
Orada Renkler ( Colors ) yerine geliyorsun ve Ekle ( Add yerine basıyorsun )

1- İlk olarak Aktifleştir ( Enabled ) yazısını işaretliyoruz.
2- Sonra Yukarıda Nick Rengi ( Nick Color) var oradan rengi seçiyorsun.
3- Daha sonra Metod ( Method ) yerine gelip secimini ediyorsun.

2 türlü seçenek var :
– Mesaj ( Message ) bu kanalda ve özelde mesaj yazdıgınızda nickinizin rengini belirler <McKruGer> rengini yani.
– Listbox ise Kanal listesindeki nicklerin listesidir. ( Bu senin istediğin şey )

4- Kullanıcılara uygun rengi kabul et ( Apply color to user mathing ) seçeneklerine gelelim

Nick veya Adres ( Nick or adress ) yerini kendi nickin için işaretle.

ve şu kodu yaz : $me

Herhangi bir Mode ( Any mode )
Mode yok ( no mode ) yerlerini işaretle..
Sonra kanala gir. ( Eğer kanaldaysan kanaldan çık tekrar gir.)
Artık nickin belirlediğin renktir.

Gelelim Op voice renklendirmelerine ?

İlk 3 aşama aynı.

1- İlk olarak Aktifleştir ( Enabled ) yazısını işaretliyoruz.
2- Sonra Yukarıda Nick Rengi ( Nick Color) var oradan rengi seciyorsun.
3- Daha sonra Metod ( Method ) yerine gelip secimini ediyorsun.

2 türlü seçenek var :
– Mesaj ( Message ) bu kanalda ve özelde mesaj yazdıgınızda nickinizin rengini belirler <McKruGer> rengini yani.
– Listbox ise Kanal listesindeki nicklerin listesidir. ( Bu senin istediğin şey )

4- Kullanıcılara uygun rengi kabul et ( Apply color to user mathing ) seçeneklerıne gelelim

Herhangi bir Mode ( Any mode )
Mode yok ( no mode ) yerlerini işaretle..
Daha sonra Liste ( Lists ) seçeneklerine gel.
Op renklendireceksen Op seçeneğini işaretle. ve Tamam ( Ok ) yazısına bas.
Sonra kanala gir. ( Eğer kanaldaysan kanaldan çık tekrar gir.)
Artık belirttiğin renkte opların rengi gözükecektir.

NOT: Voice , Protect , Ignore ve Notify renklerinde de aynı yolu izliyoruz..

Biz ” . ve % ” karakterlerinin rengini nasıl belirliyoruz.?

İlk 3 aşama gene aynı.

1- İlk olarak Aktifleştir ( Enabled ) yazısını işaretliyoruz.
2- Sonra Yukarıda Nick Rengi ( Nick Color) var oradan rengi seciyorsun.
3- Daha sonra Metod ( Method ) yerine gelip secimini ediyorsun.

2 türlü seçenek var :
– Mesaj ( Message ) bu kanalda ve özelde mesaj yazdıgınızda nickinizin rengini belirler <McKruGer> rengini yani.
– Listbox ise Kanal listesindeki nicklerin listesidir. ( Bu senin istediğin şey )

4 – Kullanıcılara uygun rengi kabul et ( Apply color to user mathing ) seçeneklerıne gelelim..
Orada Kanal Modları ( channel modes ) seçeneğini işaretle.
Oraya o karakterlerden hangisini renklendirmek istiyorsan o karakteri yaz ve Tamam ( OK ) yazısına bas.

Seçtiğin karakter artık belirttiğin renktir.

ÖNEMLİ NOT: Bu işlemler denendi ve gayet iyi çalışıyor. Eğer yapamassanız gayet iyi okuyup yolları izleyerek işlemlerini yapınız..

Eylül 19, 2008 at 11:07 pm Yorum bırakın

Hash Tablosu İle İşlem Yapmak

Yazan: Utku
Düzenleyen ve onaylayan: Alience

Öncelikle hash table nedir onu açyklamaya çalışayım, Hash table’lar bildiğiniz ini belgesine veri kaydetme yöntemine benzer. Fakat hash işlemleri hafızada(ram) yapıldığı için hdd(hard disk) işlemlerine göre çok daha hızlıdır, ama komple bir scriptte aşırı derecede kullanılıp hafızayı doldurmaya başlarsak bu avantajıda ortadan kaldırırız.

Table oluşturma /hmake:
/hmake -s <tabloismi> <slot sayısı>
Hash tablosu oluşturmak için komutumuz bu. Hash table slot ve değerlerden oluşur. Her slota istediğiniz kadar değer yerleştirebilirsiniz, fakat slot sayısını komutta önceden belirlemeniz gerekiyor. Yani 10 tane slot bile oluştursak, 1000 tane değer kaydetmemiz mümkün, çünkü slotlar sınırsız değer alabilirler. Fakat slot başına düşen değer sayısının az olması için slot sayısını fazla tutmak mIRC’i daha az kasar ve daha kısa sürede işlem yapmasını sağlar.
Komuttaki -s anahtarı ise hash table’ın oluşup oluşmadığına dair bir bilgi vermesi içindir. Onu yazmadan da komut çalışır, fakat hash table oluştu mu oluşmadı mı diye merakta kalmak istemiyorsanız -s koymalısınız. Örneğin:

/hmake -s asd 10
komutunu yazdığınızda:
* Made hash table ‘asd’ (10)
diye bir uyarı gelir, bu da işlem başarıyla tamamlandı demektir. -s koymazsanız bu uyarı gelmez.

Table silme /hfree:
Oluşturduğumuz tabloyu silmek için ise /hfree komutunu kullanacağız. Komutun kullanımı şu şekilde:
/hfree -sw <tabloismi>
Buradaki s parametresinin görevi aynı, w ise wildcard (* ve ? gibi işaretler) kullanmamıza olanak sağlıyor. Örneğin a.1 a.2 a.3 diye 3 tane tablomuz var ve bunların hepsini bir kerede silmek istiyoruz. O halde:
/hfree -sw a.*
komutunu kullanırsak, a. ile başlayan tüm tablolar silinir. Sadece belirli bir tabloyu silmek için:
/hfree -s a.1

Table’ye ekleme /hadd:
/hadd -smzuN <tabloismi> <slot> değer
Bu komutu tabloya değer eklemek için kullanıyoruz. Komuttaki “smzuN” parametrelerinin görevleri ise şöyle:
-s yukarıda da bahsettiğim gibi işlemin tamamlanıp tamamlanmadığı hakkında uyarı verir.
-m eğer isim yerine yazdığımız tablo daha önce oluşturulmadıysa şimdi oluşturur.
-u değerin kaç saniye boyunca geçerli olacağını belirtir, ve yanındaki N de saniye yerine yazılır. Örneğin -u10 yazdığımızda 10 saniye sonra değer slottan silinir.
-z değeri saniyede 1 değer küçülterek 0′a kadar indirir ve 0 olduğunda değeri siler. Yani bir nevi inc komutundaki -c parametresini burada bu şekilde kullanıyoruz. Onun dışında saniyelik değil de manual olarak düşürmek veya yükseltmek için /hinc ve /hdec komutlarını kullanabilirsiniz. inc ve dec komutlarından pek bir farkı yok. Örneğin:

Table’de bir değeri artırma /hinc:
/hinc <tabloismi> <değer> <arttırma miktarı>
/hinc -s asd x (burada asd tablosundaki x’i sadece 1 artırır)
veya
/hinc -s asd x 15 (asd tablosundaki x değerini 15 artırır)
* Inc item ‘x’ in hash table ‘asd’
Bunun dışındaki parametreler için help dosyasına bakabilirsiniz. Fakat yeni başlayanlar için şimdilik öğrenmemelerini tavsiye ederim <img src=”images/smilies/smile.gif” border=”0″ alt=”” title=”Smile” class=”inlineimg” />, ayrıca -s parametresini yukarıda da belirtilmiş olduğu gibi yazmanıza gerek yok ama şu anda öğrenme aşamasında olduğunuz için ne yapıldığını görmeniz açısından yazılmıştır.
Table’de bir değeri azaltma /hdec:[/b]
/hinc in aynısı tek farkı artırmıyor azaltıyor.
örnek: /hdec -s asd x 3 (asd tablosundaki x değerini 3 azaltır)

Table’den değer silmek /hdel:
/hdel -sw <tabloismi> <değer>
Buradaki w parametresi yine wildcard kullandığınızı belirtiyor. Eğer belirli bir değeri silecekseniz:
/hdel -s tablo1 deger1
Eğer deger ile başlayan 10 tane değeriniz varsa ve hepsini birlikte silmek istiyorsanız:
/hdel -sw tablo1 deger*
komutunu kullanacaksınız. Bu komut ile deger1 deger2 deger3 degeraaaddd gibi bütün değerler silinir.
Şimdi oluşturduğumuz hash tablolarını kaydetmeye ve yüklemeye gelelim. Eğer oluşturduğunuz tabloyu kaydetmezseniz mIRC kapandığında tablo silinir. Hatta tablonuzu kaydedip başkasına yollayıp hload komutu ile onun da kullanmasını sağlayabilirsiniz.

Table’yi hdd’den yükleme /hload:
Bir hash oluşturduk çokta iyi gidiyoruz ama bu meret ini dosyası gibi kaydolmuyor mirc kapanınca gidiyor diyorsanız /hload, /hsave kullanmanız gerekli, yok ben kendim $hget ile değerleri bulup kaydettirecem diyorsanız oda mümkün ama hem zaman alır hemde uğraştırır sizi.
/hload -sni <tabloismi> <dosyaismi>

Table’yi hdd’ye kaydetme /hsave:
/hsave -snioau <tabloismi> <dosyaismi>

/hload, /hsave parametreleri:
-s yine uyarılar için kullanılıyor.
-n sadece tablodaki slotları kaydeder/yükler, değerleri kaydetmez/yüklemez.
-i kaydedeceğimiz/yükleyeceğimiz dosyanın ini dosyası olduğunu belirtir..
-o kaydedeceğiniz dosya varsa üstüne yazmak istediğinizi belirtir.
-a kaydedeceğiniz dosya var ise dosyanın üstüne eklemek istediğinizi belirtir.
-u ise tabloya eklerken belirli bir süre sonra silinecek (-uN) değerlerle birlikte dosyaya kaydedilmesini sağlar. Normalde kaydettiğinizde
-uN ile eklediğiniz değerler süresi dolmuş olsa da olmasa da dosyaya kaydedilmez.

Table okuma $hget():
$hget(isim/numara)
Eğer varsa ismini veya sıra numarasını yazdığımız tablonun ismini verir. Bununla tablonun olup olmadığını kontrol ettiririz. Örneğin:
$hget(1) ilk tablonun ismini verir, eğer $hget(0) yazar iseniz kaçtane hash tablosu olduğunu görürsünüz.
Bununla birlikte .size parametresini kullanarak tablonun kaç slottan oluştuğunu öğrenebiliriz.
Örneğin:
/hmake tablo1 10
komutu ile bir tablo oluşturduk.
$hget(1) = tablo1
$hget(1).size = 10
cevaplarını verir. Eğer tablo yok ise:
$hget(1) = $null
$hget(1).size = 0
cevaplarını verir.

Table’deki değerleri okutma $hget(Table,değer):
$hget(isim/numara,değer)
Bu identifier ise verdiğiniz numaralı sıradaki tablodaki değerin karşılığını verir. Örneğin:
/hmake tablo1 10
10 slotlu tablo1 adında bir tablo oluşturduk.
/hadd -u10 tablo1 kanallar #a #b #c
Kanallar slotu ekledik ve buna değer olarak #a #b #c verdik, ve bu değerlerin 10 saniye sonra silinmesini istedik.
bu durumda 2 seçeneğimiz var. Eğer tablo ve slot numaralarını biliyorsak bu şekilde:
$hget(1,1).data = #a #b #c
eğer bilmiyorsak bu şekilde:
$hget(tablo1,kanallar) = #a #b #c
cevaplarını alabiliriz.
.data kullanmak için mutlaka slot numarasını bilmemiz gerekir.
.item ise slot numarasının kaç olduğunu öğrenmek için kullanılır. Örneğin tek slotunuz varsa ve bunun adı kanallar ise:
$hget(tablo1,kanallar).item = 1
cevabını verir.
.unset parametresi ise değerlerin ne zaman silineceğini, yani -uN ile belirttiğimiz sürenin bitmesine ne kadar kaldığını görmemize yarar.
10 saniyelik oluşturduğumuz bu tabloda uygularsak:
$hget(tablo1,kanallar).unset = 10
olmayan bir tablo üzerinde denersek veya süre belirtilmemiş bir tablo üzerinde denersek 0 cevabını alırız.

Table’de arama yapmak $hfind():
$hget(isim/numara,aranacak yazı,kaçıncı item,parametre)
parametre yerine nwWrR yazabilirsiniz ama benim tavsiyem bir şey yazmamanız böylece mirc default olarak n görecektir buda normal yazı karşılaştırmasıdır.

Alience’nin notu:
Hash table’lerinin tümünü görmek için aşağıdaki kodu aliasese ekleyin

/hlist {
var %i = $hget(0)
if %i { echo $color(info text) -at Hash list gösteriliyor toplam %i kadar tablo var! | echo -a $chr(160) }
else { echo $color(info text) -at Hiçbir hash tablosu yok! | halt }
while %i {
var %x = $hget(%i,0).item
echo $color(info2 text) -at $hget(%i) $iif($regex($1,^-i$),boyutu: $hget(%i).size kullanılan: %x)
while %x {
echo $color(info2 text) -at $str($chr(160),3) $hget(%i,%x).item = $hget(%i,%x).data
dec %x 1
}
echo -a $chr(160)
dec %i 1
}
echo $color(info text) -at Hlist bitti
}

ve ekledikten sonra komut olarak /hlist yazarsanız hash listesini görürsünüz /hlist -i ekstra boyutu: 10 kullanılan: 1 gibisinden açıklama içindir, kodu sizi bilgilendirmesi açısından yazdım istediğiniz gibi değiştirebilirsiniz.

Eylül 19, 2008 at 11:06 pm Yorum bırakın

Tokenize Identifiers

Token’lar sanırım mIRC de en çok işimize yarayan şeylerden biridir. Çok kapsamlı kullanım alanı vardır. En çok kullandığımdan en az kullandığıma doğru sırayla anlatayım.

Örneğin bir cümle var. Bu cümledeki toplam kelime sayısını nerden bulabilirsiniz? Ne önemi var demeyin. Mesela whois çektiğinizde karşınızdaki kişinin kanallarını görürsünüz. Peki bu kanallara sırayla girebilir misiniz? Girersiniz ama nasıl? Önce kanal sayısını bulacaksınız, sonra da 1er 1er arttırarak gireceksiniz. Veya bir kişiyi tüm kanallarda deop edeceksiniz, nasıl yaparsınız? İşte bu noktada token’lar yardımımıza yetişiyorlar. Bunlar en basitinden örnekler. Mesela $numtok $gettok kullanımına bu bahsettiğim örneklerin kodlarını yazarak başlayalım.

;319 numaralı raw kullanıcının bulunduğu kanalları gösterir. Bu raw’da $2 nicki,
;$3 $4 $5 … yani $3- de kullanıcının kanallarını gösterir. Önce yapmamız
;gereken raw’ı ayarlamak.

raw 319:* {

;Burada 319 no’lu rawı kontrölümüze alıyoruz. Şimdi yapacağımız şey buradaki
;nicki ve o nickin kanallarını bir variable’a kaydetmek.

set %nick $2

;Burada nick’i setliyoruz. $2 nick’e denk geliyor o raw’da.
;haltdef de kullanılabilir burada kanallar gözükmesin, sadece setlensin diye.
;Ama bu sadece bir örnek.

set %kanallar $remove($3-,@)

;Burada da nick’in kanallarını setliyoruz. Ama setlemeden önce @ işaretlerini
;temizlememiz gerekiyor. Burada da $remove kullanıyoruz.
;Ve bu raw ile işimiz bitiyor. Kapatıyoruz.

}

;Şimdi gelelim bu bu setlediğimiz kanallarda o kişiyi deop etmeye.
;alias’ımıza başlıyoruz.

alias tamdeop {

;Şimdi setlediğimiz kanalların sayısını buluyoruz önce. İşte bu noktada token
;kullanmak zorunda kalıyoruz. $numtok kullanacağız. setlediğimiz bir değer
;içinde kaç tane parça olduğunu bulmamız için önce ayraçın ne olduğunu
;bilmemiz gerekiyor. Her kanalın arasında boşluk olduğu için burada boşluğu
;ayraç olarak kullanacağız. Boşluğun ascii değeri 32′dir. Yani $chr(32) boşluğa
;denk gelir. Token’larda ayraç mutlaka kullanılır. Bu nedenle ascii kodlara çok
;ihtiyacını olacak. Şimdi $numtok kullanımına geliyoruz.

var %toplam = $numtok(%kanallar,32)

;Ascii kodu 32 olan karakteri yani boşluk işaretini ayraç olarak belirliyoruz ve
;%kanallar değeri içinde kaç tane bu ayraç ile ayırılmış değer olduğunu görmek
;için ise $numtok kullanıyoruz. %toplam değerine de kanal sayısını setliyoruz.

var %x = 1

;Burada yine while kullanacağımız için herhangi bir değer kullanıyoruz. İsim hiç
;önemli değil. Önemli olan bu değerin başlangıçta 1 olması.

while %x <= %toplam {

;Diyoruz ki x değeri toplam değerden küçük olduğu sürece ve eşit olana kadar
;(eşit olması durumu da dahil) ve while’a başlıyoruz. Burada $gettok
;kullanmamız gerekecek. $gettok kullanırken de bir değer içinde yine ayraç
;sayesinde verdiğimiz sıradaki değeri (1. değer 2. değer vs gibi) buluyoruz.

samode $gettok(%kanallar,%x,32) -o %nick

;Burada $gettok(değer,değer sıra numarası,ayracın ascii kodu) şeklinde
;kullanıyoruz. samode ile %nick değerindeki nicki deop ettikten sonra %x
;değerini 1 arttırıyoruz.

inc %x

;Sonra while’ı kapatıyoruz.

}

;Alias’ı da kapatıyoruz

}

Kodun tamamı şu şekilde oluyor:

raw 319:* {
set %nick $2
set %kanallar $remove($3-,@)
}

alias tamdeop {
var %toplam = $numtok(%kanallar,32)
var %x = 1
while %x <= %toplam {
samode $gettok(%kanallar,%x,32) -o %nick
inc %x
}
}

Burada asıl olan $numtok kullanımıydı. $gettok daha farklı şeylerde de kullanılır.
Mesela socks kullanıyoruz.

:asd!~asd@81.123.123.123= PRIVMSG #asd :aleyküm selam

Buradan sadece nick kısmını almak istediğimizde yine $gettok kullanabiliriz. Nasıl derseniz, nick kısmı gördüğünüz gibi ! işaretiyle bitiyor. Biz de bu yazının ! işaretine kadar olan kısmını alacağız.

$gettok($1,1,33)

Burada $1 :asd!~asd@81.123.123.123= olarak çıkacak. 1 de 33. karakteri ayraç olarak kullandığımızda ilk parçayı alacağımızı yani 1 numaralı parçayı alacağız. ! işaretinin ascii kodu 33′dür. Yani geri dönecek değer “:asd” dir.
Eğer 1 yerine 2 yazarsak :asd den sonraki kısmı bize verir. Ayracın görevi ve önemi budur. Her karakteri ayraç olarak kullanabilirsiniz. Mesela @ işaretinin ascii kodu 64′tür. Eğer 33 yerine 64 yazsaydık, @ işaretini ayraç olarak kullanacaktı ve geri dönen yazı :asd!~asd olacaktı. 2. parçayı almak istediğimizde de kullanıcının IP adresini yani @ işaretinden sonraki kısmı verecekti.

Şimdi $addtok $remtok ve $istok kullanımına örnek verelim.

Örneğin bir dokunulmazlık listesi yapıyoruz:

;Önce listeye eklemek için alias oluşturuyoruz.

alias ekle {

;Şimdi $istok ile bu ekleyeceğimiz kişinin daha önce listede olup olmadığını
;kontrol ediyoruz.

if ($istok(%dokunulmazlar,$1,46) == $true) { echo -a $1 zaten listede var. | halt }

;$istok kullanımı şu şekilde:
;$istok(değer,değer içinde aranacak parça,ayracın ascii kodu)
;Geriye $true ya de $false olarak döner.
;Burada ayraç olarak 46. karakteri yani . (nokta) kullanıyoruz diyelim.
;”Eğer %dokunulmazlar içinde $1 parçası varsa aktif pencereye $1 zaten
;listede var diye echola” dedikten sonra eğer yoksa ne yapılacağına geliyoruz.

else { set %dokunulmazlar $addtok(%dokunulmazlar,$1,46) | echo -a $1 dokunulmazlık listesine eklendi. | halt }

;if kısmı geçerli olmadığı zaman else kısmına atlıyor ve %dokunulmazlar değerini
;verdiğimiz değerle birleştirip tekrar setliyor ve işlemin gerçekleştiğine dair
;bilgi veriyor echo ile. Şimdi alias’ı kapatıyoruz

}

;Ekle alias’ımız bu kadar. /ekle xxx yaptığımızda %dokunulmazlar değerine xxx
;nickini ekleyebiliyoruz. Şimdi silme işlemine gelelim.

alias sil {

;yine önce listede olup olmadığını kontrol ediyoruz.

if ($istok(%dokunulmazlar,$1,46) == $true) { set %dokunulmazlar $remtok(%dokunulmazlar,$1,1,46) | echo -a $1 dokunulmazlık listesinden silindi. | halt }

;Eğer listede yoksa olmadığına dair bilgi gelmesini sağlıyoruz.

else { echo -a $1 listede zaten yok ki nereye çıkartıyorsun :p | halt }

;Alias’ı kapatıyoruz.

}

deltok ile remtok aynı görevi yaparlar, fakat remtok içinde x olan parçaları çıkartır ve değerin kalanın gösterir. deltok ise x numaralı parçayı çıkartıp değerin kalanını gösterir. Yani deltok kullanmak için parçanın kaçıncı sırada olduğu bilmek gerekir. remtok kullanımı ise şu şekildedir:

$remtok(deger,deger içinden silinecek parça,parça numarası,ayraç kodu)

Buradaki parça numarası, silinecek parça yerine yazılan metin ile çakışan (yani tanıma uyan) parça numarasını ifade eder. Mesela x yazdığınızda, içinde x geçen kaçıncı parçayı sileceğinizi belirtir. Bunun nedeni ise remtok’un da if ile kullanılan “isin” gibi çalışmasıdır. Yani içinde silinecek parça kısmına a yazarsanız içinde a harfi olan tüm parçalar etkilenecektir. Bu nedenle etkilenen parçaların arasından kaçıncının silineceğini belirtmeniz gerekir. Ama;

Eğer bir değer silecekseniz ve değerle çakışan başka değerler de varsa, kafanız karışıyorsa, remtok u case sensitive(yani büyük küçük harf duyarlı, === gibi) olarak kullanabilirsiniz:

$remtokcs(deger,silinecek parça, çakışan parçalardan silinecek olanın sıra numarası,ayraç kodu)

Token Identifierları

$addtok(metin,eklenecek parça,ayraç kodu)

Değerin en sonunda bir parça ekler. Ama değerin içinde o parça zaten ekliyse eklemez.

Örneğin %deger a.b.c olsun

$addtok(%deger,d,46)

yaptığımızda %deger a.b.c.d olur. Ama;

$addtok(%deger,c,46) yaptığınızda %deger değişmez. Çünkü %deger içinde c zaten vardı.

$deltok(metin,silinecek parça numarası,ayraç kodu)

Verdiğiniz sıra numarasındaki parçayı siler.

%deger = a.b.c.d

$deltok(%deger,3,46) a.b.d olur. 3. sıradaki değer c olduğu için c silinir ve diğerleri geri döner.

$deltok(%deger,2-3,46) a.d olur. 2den başlayarak 3 de dahil olmak üzere parçaları silerek kalanı bize gösterir.

$findtok(metin , parça , aranan parça numarası , ayraç kodu)

%deger = a.b.c.d

$findtok(%deger,c,1,46) yazdığımızda %deger içinde c parçası 3. sırada olduğu için 3 olarak geri döner.

$findtok(%deger,e,1,46) yazdığımızda ise %deger içinde e parçası olmadığı için

$null olarak geri döner.

Eğer aranan parça numarası yerine 0 (sıfır) yazarsak aranan parçanın kaç tane parça ile çakıştığını görürüz.

%deger = ahmet.mehmet.recep

$findtok(%deger,e,1,46) içinde e olan ilk parçayı verir. Yani ahmet’i.

$findtok(%deger,e,0,46) ise içinde e harfi olan parçaların sayısını verir. Yani 3.

Eğer belirli bir parçayı arıyorsanız ve başka parçalarla çakışmasını istemiyorsanız $findtokcs kullanabilirsiniz.

Gettok kullanımına ek olarak;

%deger = a.b.c.d.e

$gettok(%deger,2-,46) yazdığınızda 2. de dahil olmak üzere 2. parçadan itibaren en sonuncuya kadar olan parçaları geri verir. Yani b.c.d.e döner geriye.

$gettok(%deger,2-4,46) yazdığızda da 2. de dahil olmak üzere 2. parçadan itibaren 4. parça da dahil olmak üzere 4. parçaya kadar olan kısmı alır. Yani b.c.d döner geriye.

$instok(metin,eklenecek parça,ekleneceği yerin sıra numarası,ayraç kodu)

Bu da belirttiğimiz parçayı belirttiğimiz sıraya eklemeye yarayan bir token identifier’ı. Eğer eklenecek parça metinde zaten mevcut olsa bile eklenir. $addtok’tan bu yönüyle ayrılabilir. Ayrıca ekleneceği yeri belirtmek zorundasınız.

%deger = a.b.d

$instok(%deger,c,3,46) yazdığımızda 3. sıraya c parçasını ekler. Ve bize a.b.c.d olarak döner.

$instok(%deger,c,9,46) yaptığımızda ise zaten 3 parça olduğu için 9 10 11 12 farketmeyeceğinden en sona eklenir ve a.b.d.c olarak döner.

$matchtok(metin,aranan parça,çakışan parçanın sıra numarası,ayraç)

İçinde e harfi olan kaç tane parça olduğunu görmek için çakışan parçalardan kaçıncı olanı alacağımızı belirttiğimiz yere 0 yazarız.

$matchtok(one two three, e, 0, 32) yaptığımızda içinde e harfi olan 2 parça olduğu için geriye 2 olarak döner.

$matchtok(one two three, e, 2, 32) yaptığımızda ise içinde e harfi olan 2. parçayı almak istediğimizi belirttiğimiz için geriye three döner.

Eğer aradığımız parçayı tam olarak almak istiyorsak ve sıra numarasında tereddüt ediyorsak $matchtokcs kullanırız.

$puttok(metin,parça,sıra numarası,ayraç)

Sıra numarasını verdiğimiz parçayı belirttiğimiz parça ile değiştirir.

Örneğin;

%deger = a.b.c.d

$puttok(%deger,x,3,46) yazdığımızda 3. parçayı x harfi ile değiştireceği için geriye a.b.x.d döner.

$reptok(metin,değiştirlecek parça,değiştirileceği parça,sıra numarası,ayraç)

puttok’tan tek farkı sıra numarasını bilmediğimiz parçaları silmek için kullanabilmemizdir. reptok’ta ise sıra numarasını kesin olarak bilmemize gerek yok, sadece eşleşen parçalardan kaçıncının değiştirileceğini ve değiştirilecek parçayı bilmemiz yeterli.

%deger = ahmet1.ahmet2.ahmet3.ahmet11.ahmet22.ahmet33

$reptok(%deger,ahmet,mehmet,1,46) yazdığımızda içinde ahmet olan parçalar arasından 1. parça mehmet ile değiştirilir. yani mehmet.ahmet2.ahmet3.ahmet11.ahmet22.ahmet33 olarak geri döner. Eğer 1 yerine 2 yazarsak ahmet2 silinir ve yerine mehmet yazılır.

Ama biz ahmet2 yi sileceğiz diyelim ve sıra numarasını bilmiyoruz diyelim.

(Sıra numarasını bilmiyoruz derken ahmet2 2. sırada olur tabi ama 2. sırada değil diyelim :P)

$reptokcs(%deger,ahmet2,mehmet,1,46) yaptığımızda ahmet22 ile çakışmadan ahmet2 silinir ve yerine mehmet geçer.

$sorttok(metin,ayraç,ncra)

Metin içindeki parçaları büyükten küçüğe veya küçükten büyüğe olarak sıralar.

%deger = e.d.c.b.a

$sorttok(%deger,46) = a.b.c.d.e olur.

%deger = 1.3.5.2.4

$sorttok(%deger,46,nr) = 5.4.3.2.1 olur.

Varsayılanı (yani sıralama anahtarı kullanılmamış hali) alfabetik olarak sıralama yapar.

n = Numaralara göre sıralar.

c = Kanal ve nick olarak sıralar.

r = Sıralamayı tam tersine çevirir ve diğer anahtarlarla birlikte kullanılabilir.

a = Alfanumerik sıralama. Sıralamayı harf-rakam şeklinde düzenler.

$wildtok(metin,aranan wildcard,çakışan parçalardan alınacak olanın sıra numarası,ayraç)

Bunun da diğer arama identifier’larından farkı ? ve * (wildcard) kullanabilme özelliğidir.

%deger = ahmet.mehmet.hismet

$wildtok(%deger,*met*,0,46) yaptığımızda içinde met olan kaç parça olduğunu görürüz. Yani 3 olarak geri döner.

$wildtok(%deger,*met*,1,46) yaptığımızda ise içinde met olan 1. numaralı parça döner. Yani ahmet olarak geri döner.

Eylül 19, 2008 at 11:05 pm Yorum bırakın

Eski Yazılar


Takvim

Kasım 2018
P S Ç P C C P
« Kas    
 1234
567891011
12131415161718
19202122232425
2627282930  

Posts by Month

Posts by Category