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

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

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 10 Şubat 2008, 02:44   #1
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Hash tablo kullanımı(Detaylı ve örneklemelerle)




Ders: Hash tablosu (Hash table)
Yazan: L4roXyL
Tarih: 9 Şubat Cumartesi 2008
Amaç: Forum'da olmasına rağmen, daha açıklayıcı bir lisan ile yazmak istedim. Bir kaç mIRC ile uğraşan arkadaşımız, bu konu hakkında detaylı bilgi'de istemişti.

-

İlk öncelikle hash tables nedir?
Aşşağıdaki şekilde bir tablo düşünün;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/-----Tablo-----\ < ITEM - DATA > \---------------/ Parça | Değer | | |


Yukarı görmüş olduğunuz tablo, hash tablosunun mantığıdır. Yani ini dosyası gibi.
Yani veriler bu şekilde kayıt olmaktadır. Tabi kayıt derken, hdd(hard disk)'e kayıt etmez(Tabi isterseniz edebilirsiniz)
Hash tablosunun üzerinde yaptığınız tüm işlevler, random access memory(ram)'da gerçekleşir. Bunun için, gayet hızlıdır.

Komut'lara geçelim;

1- Tablo oluşturma: /hmake -s <name> <N>
Buradaki -s parametresi, tabloyu oluşturduğunuza dair uyarı almak için kullanılır.
Yani kullanıp/kullanmamanız tablonun oluşumunu etkilemez.
Komut'daki <N> kısmına, tablonun slot sayısı yazılır. Yani kaç slot'luk tablo oluşturacağınızı <N> kısmına girersiniz.
Fakat bu <N> kısmına yazdığınız, sayı 10'da olsa 100'de olsa, sonsuz bir şekilde parça alabilmektedir.
Eğer slot sayısı girmezseniz, 100 slot'luk bir tablo oluşturmuş olursunuz.
Örnek kullanım: /hmake -s deneme 100


2- Tablo(yu/ları) serbest bırakma: /hfree -sw <name>
Buradaki -s patametresi, yine tabloyu serbest bıraktığınıza dair uyarı almak için kullanılır.
Diğer -w parametresi ise, wildcard(*,?) kullanarak tablo yada tabloları serbest bırakmanıza yarar.
Örneğin; /hfree -sw *deneme* (İçinde deneme geçen tüm tablolar, serbest bırakılır)
Örneğin; /hfree -s deneme (Sadece deneme tablosu serbest bırakılır)


3- Tabloya parça ekleme: /hadd -smbczuN <name> <item> [data | &binvar]
Bu komut gerçekten öğrenmek isteyenlerin, dikkat ile dinlemesi gereken komut'dur.
Komut temel olarak, belirtilen tabloya parça eklemek için kullanılır.
Tabi parametreler ile, daha geniş bir kapsamı vardır.

Parametreler;
-s:
Yine tabloya parça eklendiğine dair bilgilendirme mesajı almak için kullanılır.
-m: Bu parametre, belirtilen tablo-ismi daha önce oluşturulmamış ise, şimdi oluşturmak için kullanılır.
-z: Bu parametre, data(değer) kısmına girdiğiniz değer'i, saniye'de bir 1 değer düşürerek sıfır yapar. Ve sıfır olduğunda, slot silinir.
-uN: Bu parametre, eklediğiniz parçayı "N" kısmına girilen saniye sona erdiğinde, slot tablodan silecektir.

NOT: Diğer "bc" parametreleri binary variable(/help binary files) ile alakalıdır. İşinize yaracağını düşünmediğim için tam bilgiyi vermedim. İlla'da ne olduklarını öğrenmek istiyorsanız, söyleyin anlatırım.(Beni binary vs bulaştırmayın) .)

/hadd için örneklemeler;
Yukarıdaki gibi bir tablo hayal edin;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
-----Tablo----- ITEM - DATA --------------- Parça | Değer | |

Örneğin; /hadd -sm deneme deneme 15 yaptığımız'da tablo;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
-----deneme---- ITEM - DATA --------------- deneme | 15 | |


Şeklinde değişecektir.
Örneğin bir parça daha ekledik; /hadd -s deneme dnm2 100

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
----deneme----- ITEM - DATA --------------- deneme | 15 dnm2 | 100 |

Şeklini alıcaktır.


4- Tablodaki herhangi bir parçanın değerini yükseltmek veya parça ile beraber değer yükletmek vs: /hinc -smzcuN <tablo-ismi> <parça> <N>

Normal'de mIRC help dosyasında, bu komut üzerinde hiç durulmamış.
Ama gerçekten, işinize yarayacak komutlardan bir tanesi(özellikle flood vb. koruma yazmak isteyenler için)

Parametreler;
-s:
Yine uyguladığınız işlevin gerçekleşip/gerçekleşmediği hakkında uyarı almak için kullanılır.
-m: Daha önce tablo oluşturulmadıysa, tabloyu şimdi oluşturur.
-z: Yükselttiğiniz değeri veya değer biçtiğiniz değeri saniye'de bir, bir değer düşürerek sıfır'a indirir. Ve sıfır'a indiği zaman, değer ve parça tablodan silinir.
-c: Bu parametre ise, -z parametresinin yaptığı işlev'in tam tersini yapar. Data(değer) kısmına, girdiğiniz değer kadar yükseltir. Ve her saniye girdiğiniz değer'i bir arttırır. Eğer değer girmezseniz, sıfır'dan başlıyarak her saniye belirttiğiniz parça'nın data(değer)sını bir arttırır.
-uN: Bu parametre, eklediğiniz parçayı "N" kısmına girilen saniye sona erdiğinde, tablodan silecektir. Eğer varolan bir parçanın üzerine, data(değer) eklerseniz, saniye sona erdiğinde değer ile beraber parçayıda yani slot'u silecektir.

NOT: /hinc komutun'da, eklediğiniz yeni bir parça için data(değer) girmezseniz, otomatik olarak "1" değeri atanacaktır. Yani örneğin; /hinc -ms deneme dnm yaptığınız'da, dnm parçasının değeri 1 olucaktır. Çünki adı üstünde /hinc kullanıyorsunuz .)


5- Tablodaki herhangi bir parçanın değerini düşürmek veya parça ile beraber değer düşürmek: /hdec -smcuN <tablo-ismi> <parça> <N>

Parametreler;
-s: Yine uyguladığınız işlevin gerçekleşip/gerçekleşmediği hakkında uyarı almak için kullanılır.
-m: Daha önce tablo oluşturulmadıysa, tabloyu şimdi oluşturur.
-c: Daha önce biçmiş olduğunuz parça'daki değeri, saniye'de bir 1 değer düşürür. Sıfır'ı bulduğunda, slot'u siler.
-uN: Aynı şekilde, "N" kısmına girilen saniye sona erdiğinde, parça silinir. Bakın dikkatinizi çekiyorum yanlış anlamayın. Mesela diyelim, deneme ismindeki tabloda deneme parçası var. Ve bu deneme parçasının data(değer)'sı 100. Siz eğer, /hdec -su10 deneme deneme 20 yaparsanız, deneme parçasının değer'i 80'e düşer. Ve 10 saniye sonra deneme parçaso komple silinir. Yani 10 saniye sonra, tekrar 100 olmasını beklemeyin. .)

NOT: /hdec komutun'da, eklediğiniz yeni bir parça için data(değer) girmezseniz, eklediğiniz parça otomatik olarak -1 değerini alıcaktır.

/HINC & /HDEC örneklemeleri;

Yine yukarı'daki tabloyu hayal edin;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
----deneme----- ITEM - DATA --------------- deneme | 15 dnm2 | 100 |

Örneğin; /hdec -s deneme dnm2 20 yaptık.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
----deneme----- ITEM - DATA --------------- deneme | 15 dnm2 | 80 |

Şeklini alıcaktır.

Önemli not: /hinc veya /hdec ile yeni bir parça oluşturduğunuz'da, oluşturmuş olduğunuz parça tabloda en son sırayı alıcaktır. Yani örneğin; /hinc -s deneme dnm 100 yaptığınız'da tablo;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
----deneme----- ITEM - DATA --------------- deneme | 15 dnm2 | 80 dnm | 100

Şeklini alıcaktır.


6- Tablo'dan belirtilen parça yada parçaları silmek: /hdel -sw <name> <item>

Bu komut;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
----deneme----- ITEM - DATA --------------- deneme | 15 dnm2 | 80 dnm | 100

Örnek tablosundaki ITEM(parça(ları)) silmek için kullanılır.

Örneğin; /hdel -s deneme dnm yaptığınız'da, deneme tablosunda "dnm" slot'u tamamen silinir.
Yani bakın dikkat edin, eğer bir parça silinirse karşısındaki değer'de otomatik olarak silinecektir.
Çünki, parça değer'e bağlı değildir ama değer ğarçaya bağlıdır.

Parametreler;
-w:
Wildcard(?,*) kullanarak parça(lar) silmek için kullanılır.
Örneğin; /hdel -sw deneme dnm* yaptığınız'da, deneme tablosunda'ki 2 parça(dnm2 ve dnm) tamamen silinecektir.


7- Tablo'yu belirtilen dosyaya kayıt etmek: /hsave -sbniau <name> <filename> [section]

Bu komut, herhangi bir tabloyu belirttiğiniz dosyaya kayıt etmek için kullanılır.

Örnek kullanım: /hsave -i deneme deneme.deneme (Deneme tablosunu, deneme.deneme dosyasına kayıt ediyoruz)

Parametreler;
-s: Kayıt işleminin gerçekleştiğini görmek için kullanabilirsiniz.
-n: Tabloyu kayıt ederken, sadece data(değer)lerı kayıt eder. Yani değer'e ait olan, parça'lar kayıt edilmez. Parça isimleri yerine, slot numaraları kayıt edilir.
-i: Kayıt dosyasının bir ini dosyası olduğunu belirtirsiniz. Bu ne işe yarar? Demeyin.
Eğer kayıt edilen dosyanın ini dosyası olduğunu belirtirseniz, kayıt ettiğiniz dosyayı açtığında;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
[hashtables] parça=değer parça2=değer2

Şeklinde düzenli bir şekilde görebilirsiniz.
Eğerini dosyası olduğunu belirtmezseniz, parça-değer-parça-değer şeklinde yan-yana kayıt etmiş olursunuz. Daha doğrusu alt alt'a kayıt edersiniz ama, dosyayı açtığınız'da yan-yana gözükür. Arada bir $crlf identifier'ı vardır.
-a: Eğer kayıt edeceğimiz dosya ismi, mIRC klasöründe mevcut ise; aynı dosyanın üzerine yazacağınızı belirtirsiniz. Eğer belirtmezseniz, dosyayı kayıt etmeden önce mIRC klasöründeki aynı dosyayı silecek ve yeniden oluşturacaktır.
NOT: Diğer (-b) parametresi yine binary files ile ilgilidir. Sizi ilgilendirtmez. .) Zaten binary files'dan anlıyacak seviyeye gelmiş olsanız, bu dersi "bakalım nasıl yazmış?" şeklinde okursunuz. Çünki zaten bu yollardan geçmişsinizdir.
-u: Bu parametre gerçekten önemli. Şimdi mesela diyelim, (-uN) parametresi ile tablonuzu kayıt etmeden önce, tablonuza parça eklediniz. Eğer /hsave komutun'da normalde, bu parçalar(X süre içerisinde silinecek olan) kayıt edilmez. İşte buradaki "-u" parametresi, bu parçaların'da kayıt edilebilmesini sağlamaktadır.

ÖNEMLİ not: /hsave komutunda, -i(ini) parametresini kullanıpta [section] kısmını boş bırakırsanız;

[hashtables]
parça=değer
parça2=değer2


Şeklinde kayıt edilecektir. Eğer boş bırakmazsanız(/hsave -is deneme deneme.hash deneme) [hashtables] kısmına, section kısmına yazdığınız isim gelicektir.


8- Kayıtlı olan dosyadaki verileri, hash tablosuna yükletmek: /hload -sbni <name> <filename> [section]

Bu komut, daha önce kayıt ettiğiniz(/hsave) hash tablolarını, belirttiğiniz tabloya yükletmek için kullanılır.

Parametreler;

ÖNEMLİ NOT: Herhangi bir hash kayıtlı dosyasını, bir tabloya yüklemek için, ilk başta o tabloyu oluşturun "/hmake deneme" şeklinde.
-s: Dosyanın tabloya yüklendiğini görmek için kullanabilirsiniz.
-n: Yükletilen dosyadaki, item(parça)'ları numara olarak yükletir. Yani bir parçaları yüklemez. Sadece değer'leri yükler.
-i: Yükletilen dosyanın, ini dosyası olduğunu belirtir.

Önemli not(/hload & /hsave): Eğer yükletilen dosya, ini dosyası olarak kayıt edilmiş ise ve siz "-i" kullanmayarak yükletirseniz, dosyadaki item(parça)/data(değer)'ler hash tablosunda karmakarışık bir şekilde birbirine girecektir. Yani kısacası verim alamazsınız.
Ek bilgi(/hload & /hsave): Yani kısacası, tabloyu "ini" olarak kaydetdiyseniz, "ini" olarak yükletin. Normal kaydettiyseniz, normal olarak yükletin.

-
Komutlar bu kadar.
-

Sıra identifier'larda.(Bir çok şeye olanak sağlıyan identifier'ları görünce, hash tablosunu bundan sonra kullanmaya karar vericeksiniz)

Identifier'lar:

1- $hget(name/N) - Prop: size
Bu identifier, belirtilen isim yada numaraya ait tablonun var olup olmadığını kontrol eder.
Örneğin; //echo -a $hget(0) yaptığınız'da, kaç adet tablo olduğunu öğrenebilirsiniz.
Örneğin; //echo -a $hget(3) yaptığınız'da, eğer 3. tablo var ise, tablonun imini öğrenebilirsiniz.
Prop kullanımı:
Örnek kullanım; //echo -a $hget(deneme).size (Deneme ismindeki tablonun, kaç slot'dan oluştuğunu gösterir.)


2- $hget(name/N, item) - Prop: unset
Bu identifier, belirtilen topladaki parça(data)'nın değerini verir.
Deneme: "/hadd -ms deneme dnm 100" yaptık.
Örneğin; //echo -a $hget(deneme,dnm) yaptığımız'da 100 olarak döner. Yani değer'ini alırız. Eğer parçaya atanmış bir değer yok ise, hiçbir cevap alınmaz.
Örneğin; //echo -a $hget(deneme,dnm).item veya //echo -a $hget(deneme,dnm).data yaptığımız'da, "dnm" parçasının bulunduğu slot'un rakamını verir.
Örneğin; //echo -a $hget(deneme,0).item yaptığımız'da, deneme tablosunda kaç adet parça'nın bulunduğunu öğreniriz. 0 yerine 1 yazarsanız 1. sıradaki parçayı görürsünüz. 2 yazarsanız 2. sıradaki vs vs.
Prop kullanımı:
Deneme: 100 saniye sonra silinecek bir değer ekleyelim deneme2 tablosuna. Ve "unset" prop'unun işlevini anlıyalım. Ekleyelim;(/hadd -mu100 deneme2 silincek 100)
Ve şimdi: //echo -a $hget(deneme2,silincek).unset yaptığımız'da devamlı değişen rakamları görürüz. Bu rakamlar, "silincek" parçasının silinmesine kalan saniyeyi vermektedir.
Yani silinecek olan, parçanın kaç saniye sonra silineceğini öğreniyoruz.


3- $hfind(name/N, text, N, M) - Prop: data
Bu identifier, belirtilen tablo içindeki parçalarda, text kısmına yazılan text'i "N" kısmına yazılan item'de, "M" kısmına yazılan parametre ile arar.
İlk önce deneme yapacağımız için, bir tablo oluşturup parçalar yerleştirelim.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
alias tablo { if (!$hget(tablo) { hmake -s tablo 100 } hadd -s tablo deneme1 100 | hadd -s tablo deneme2 200 | hadd -s tablo deneme3 300 hadd -s tablo falan1 100 | hadd -s tablo falan2 100 | hadd -s tablo falan3 100 hadd -s tablo yaa1 100 | hadd -s tablo ya22 200 | hadd -s tablo yaa33 300 }

Bknz: /tablo yazın. Ve aşşağıdaki örneklere 4 gözünüzle bakın/deneyin.

Parametreler($hfind içindeki, "M" kısmı);
n: Normal text karşılaştırma.
w: Wildcard(?,*) text.
W: Wildcard(?,*) text. (Tablo için)
r: Regular text.
R: Regular text. (Tablo için)

İlk öncelikle, şu "n" parametresini aklınız'dan çıkartın.(Varsayılan için kullanılmaz)
Şimdi yukarı'daki alias'ı ekledikten sonra;
Mesela; "Tablo" tablosunda, "deneme" kelime ile başlayan kaç parça var? Nasıl öğreniriz?

//echo -a $hfind(tablo,deneme*,0,w) yaptığımız'da, cevap "3" olarak dönecektir. Çünki deneme kelimesi ile başlayan, tam 3 parçamız var.
Mesela; "Tablo" tablosunda, "a" harfinin 2 tane olup'da yan yana bulunduğu kaç adet kelime var ve hangileri?
//echo -a $hfind(tablo,a{2},0,r) yaptığımız'da, cevap "2" olarak dönecektir. Nedir bunlar? Bknz: (yaa33 ve yaa1) kelimeleri. 0 yerine 1/2 koyarak sizde görebilirsiniz.


4- $hmatch(tablo-ismi,parça-ismi,N)
Bu identifier normalde mIRC Help dosyasında bulunmamaktadır. Yani bahsi edilmemiş.
İdentifier'ın yaptığı işlev, tablo içerisinde parça ismi arama. Tabi bu parça isimlerini wildcards(*,?) kullanarak arıyabiliyoruz.
Mantığını anlamak için, yukarıdaki /tablo alias'ını kullanın ve aşşağıdaki örneklemeleri yapın.
Örneğin; //echo -a $hmatch(tablo,*deneme*,0) yaptığınız'da, tablo içerisinde deneme kelimesi geçen kaç adet parçanın olduğunu gösterir. 0 yerine 1 yazarsanız, 1. parçanın ismini verir.
Örneğin; //echo -a $hmatch(tablo,deneme*,1) yaptığınız'da, deneme ile başlayan 1. parçanın ismini verir.

-
HASH TABLES hakkında anlatıcaklarım bu kadar. Zaten eksik birşey kalmadı. En geniş ve anlayacağınız bir dilde anlattım.
Şimdi hash tablosu ile neler yapılabilir?

1- Kanal için küfür/flood vb. korumalar.
2- Clone tarayıcı vb. snippet'lar.
Vs. vs. Yani daha doğrusu sizin kapasitenize kalmış.


Mesela, hash tablosu kullanarak basit bir tekrar koruması yapalım(örnek);

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
;op olduğumuz herhangi bir kanal'da, on @*:text:*:#: { ;kanal'da (@,%,&,~) prefix'lerine sahip olmayan herhangi bir nick text gönderdiği zaman, if (!$regex($nick(#,$nick).pnick,@|&|%|~)) { ;20 saniye sonra silinmek üzere # perfix'den aldığımız, kanal ismi üzerine daha önce oluşturulmamış ise bir tablo oluşturuyoruz. ;Yani burada tablonun ismi # prefix'inden aldığımız kanal olarak dönüyor. ;Ve bu tabloya parça(item) olarak, $+(#,$nick,$encode($1-)) (kanal,nick,encode ile şifreleştirilmiş mesajı) ekliyoruz ve data(değer)'ı 1 olarak yükseltiyoruz. hinc -mu20 # $+(#,$nick,$encode($1-)) 1 ;Burada diyoruzki, eğer #kanal parçasının değer'i(data'sı) 2 olursa, /msg ile nick'e uyarı yap. if ($hget(#,$+(#,$nick,$encode($1-))) == 2) { msg # $nick tekrar yapmayınız. } ;Burada'da diyoruzki, eğer #kanal parçasının değer'i(data'sı) 3 olursa, /ban komutu ile kullanıcını kanal'dan banla ve kickle, son olarak tablodan parçayı sil. if ($hget(#,$+(#,$nick,$encode($1-))) == 3) { ban -k # $nick 2 tekrar yaptınız. | hdel # $+(#,$nick,$encode($1-)) } } }


Şimdi'de daha kapsamlı ve işinize yarayacak bir kod yazalım. Mesela kanal'da konuşan user'lara puan verelim, bu puan belirlediğimiz seviyeye gelince voice/halfop verelim. Ve bunları yaparken hemen hemen, hash tablosunun tüm komutlarını kullanalım. Zevkli bir kod yani.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
;#Kanal kanal'ına gönderilen text'lerde; on *:text:*:#kanal: { ;Eğer 1. kelime !puan ise ve 2. kelime mevcut ise, if ($regex($1,^!puan$) && $2) { ;Eğer, eğer belirtilen nick puan tablosun'daki parça'larda yoksa, uyarı veriyoruz. if (!$hmatch(puan,$2)) { msg # $+($nick,:) $qt($2) rumuzu, listede kayıtlı değil. | halt } ;Aksi taktirde(puan listesinde olduğu zaman) kullanıcının puanını sorsan kişiye /msg ile söylüyoruz. else { msg # $+($nick,:) $qt($2) rumuzunun puanı: $hget(puan,$nick) } } ;#Kanal kanalına text gönderen nicklerin prefix'lerinde, (&,@,~) bulunmuyorsa, if (!$regex($nick(#,$nick).pnick,&|@|~)) { ;/hinc komutu ile puan tablosuna nick'i ekliyoruz, ve değer olarak yazdığınız yazının uzunluğunu biçiyoruz. hinc -m puan $nick $len($1-) | hsave -i puan puan.hash ;Eğer $nick parçasının, datası(değer'i) 10000 olursa, if ($hget(puan,$nick) >= 10000) { ;Ve nick kanal'da +(voice) değilse, if (!$regex($nick(#,$nick).pnick,\+)) { ;/msg ile tebrik mesajını yolluyoruz .) msg # $+($nick,:) tebrikler 10000 puan'a ulaştınız. Voice listesine eklendiniz. ;/mode ile voice veriyoruz. Ve vnick tablosuna nick'i ekliyoruz. Son olarak vnick tablosunu, vnick.hash dosyasını kayıt ediyoruz. mode # +v $nick | hadd -m vnick $nick 1 | hsave -i vnick vnick.hash } } ;Eğer $nick parçasının, datası(değer'i) 20000 olursa, if ($hget(puan,$nick) >= 20000) { ;Ve nick kanal'da %(halfop) yetkisine sahip değilse, if (!$regex($nick(#,$nick).pnick,%)) { ;Eğer vnick tablosunda, nick bulunuyorsa, vnick tablosundan nick'i siliyoruz ve vnick tablosunu tekrar vnick.hash dosyasına kayıt ediyoruz. if ($hmatch(vnick,$nick)) { hdel vnick $nick | hsave -i vnick vnick.hash } ;/msg komutu ile tebrik mesajını yolluyoruz .) msg # $+($nick,:) tebrikler 20000 puan'a ulaştınız. Halfop listesine eklendiniz. ;/mode ile halfop veriyoruz. Ve hnick tablosuna nick'i ekliyoruz. Son olarak hnick tablosunu, hnick.hash dosyasını kayıt ediyoruz. mode # +h $nick | hadd -m hnick $nick 1 | hsave -i hnick hnick.hash } } } } ;mIRC açılışında, on *:start: { ;Eğer puan.hash isminde bir tablo mevcut ise, puan isminde bir tablo oluşturuyoruz. Ve puan.hash dosyasını, puan tablosuna yüklüyoruz. if ($isfile(puan.hash)) { hmake puan 100 | hload -i puan puan.hash } ;Eğer vnick.hash isminde bir tablo mevcut ise, vnick isminde bir tablo oluşturuyoruz. Ve vnick.hash dosyasını, vnick tablosuna yüklüyoruz. if ($isfile(vnick.hash)) { hmake vnick 100 | hload -i vnick vnick.hash } ;Eğer hnick.hash isminde bir tablo mevcut ise, hnick isminde bir tablo oluşturuyoruz. Ve hnick.hash dosyasını, hnick tablosuna yüklüyoruz. if ($isfile(hnick.hash)) { hmake hnick 100 | hload -i hnick hnick.hash } } ;#Kanal kanalına giren kullanıcı ben değilsem, on !*:join:#a: { ;Eğer giren kullanıcı vnick tablosunda var ise, if ($hmatch(vnick,$nick)) { ;/mode ile voice veriyoruz. mode # +v $nick ;/msg ile bilgilendirme mesajı atıyoruz. msg # $+($nick,:) daha önce, aldığınız $+($chr(40),$hget(puan,$nick),$chr(41)) puan'dan dolayı, voice listesindesiniz. } ;Eğer kullanıcı hnick tablosunda var ise, if ($hmatch(hnick,$nick)) { ;/mode ile halfop veriyoruz mode # +h $nick ;/msg ile bilgilendirme mesajı atıyoruz. msg # $+($nick,:) daha önce, aldığınız $+($chr(40),$hget(puan,$nick),$chr(41)) puan'dan dolayı, halfop listesindesiniz. } }


Dersimiz burada tamamen sona ermiştir.
Umarım birşeyler öğrenebilirsiniz. Hash kullanın, iyidir .)

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 17 Ağustos 2008, 21:41   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Çok güzel bir döküman emeğe saygı..

 
Alıntı ile Cevapla

Alt 23 Ağustos 2008, 18:34   #3
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Cok güzel bir DöküMan. emeğe saygı Duyalim..

__________________
Our brain is Our Weapon
 
Alıntı ile Cevapla

Alt 07 Aralık 2008, 11:17   #4
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Abi , Peki Hash Tablolar Hangi Kodlarda Yardımcı Olcak Bize? Korumalarda Mı Nerelerde Faydalancaz?

 
Alıntı ile Cevapla

Alt 12 Ekim 2012, 12:40   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Merhaba,

Öncelikle anlatımın için teşekkürler. Çok yararı oldu.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Kendim de hash tablosu kullanmayı denemek için bazı scriptler yazmaya çalıştım. Denediğim şeyde CS'den levels list çekip bunu hast tablosuna aktararak bir dialog oluşturma oldu. Fakat hash tablosuna verileri aktarırken verileri CS'den aldığım sıralama ile aktarmadı. Karman çorman bir şey oldu dolayısıyla. Diyalogdaki yerleştirmeyi $did ile hallettim ama yine de kafamda bir soru işareti oldu neden böyle olduğuna dair. Benim eksik olarak yaptığım bir şeyden kaynaklı mı yoksa zaten durum bu mudur? Ve eğer varsa bunu çözmenin yolu nedir?

 
Alıntı ile Cevapla

Alt 13 Ekim 2012, 11:39   #6
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Teşekkürler L4roXyL faydalı bir doküman paylaşmışsınız.

 
Alıntı ile Cevapla

Alt 14 Kasım 2012, 11:27   #7
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Emeğine sağlık

 
Alıntı ile Cevapla

Alt 15 Kasım 2013, 22:43   #8
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash tablo kullanımı(Detaylı ve örneklemelerle)




Emeğinize sağlık hocam teşekkürler çok güzel bi anlatım olmuş işimede yaradı yalnız bi konuyu çözemedim yardımcı olurmusunuz acaba.
ben botuma şunu eklemek istiyorum botumun özelinde ve belirlediğim kanallarda !yetkili diye yazıldıgında oluşturdugum Hash tablolarında o an kanalımda olan op durumundakilerle karşılaştırıp hangi kıdemde kaç tane yetkilinin online olduguna dair cevap almak istedim ama yapamadım bunu yapmak mümkünmü ?
Ek bilgi ;bendeki hash tabloları ise
Founder
kıdem1
kıdem2
kıdem3
kıdem4
kıdem5
kıdem6
diye mevcut

 
Alıntı ile Cevapla

Cevapla

Etiketler
hash, kullanimidetayli, kullanımıdetaylı, mirc, mirc download, mirc indir, orneklemelerle, tablo, ve, örneklemelerle


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
Hash Tablo Görüntüleyici/Düzenleyici JohnGalt mIRC Scripting Hazır Kodlar 2 03 Mart 2013 23:01
vBulletin Panel Kullanımı Hakkında Açıklamalı Detaylı Bilgiler! Bahtiyar vBulletin Sorunları ve Çözümleri 0 09 Ekim 2011 20:32
Hash Tablo Örnek Yardım pls. daRkMoRGaN mIRC Scripting Sorunları 4 27 Aralık 2008 13:31
Hash Tables RedLine mIRC Scripting Sorunları 1 18 Şubat 2008 19:58