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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Sorunları (https://www.ircforumlari.net/mirc-scripting-sorunlari/)
-   -   Bot Hakkında... (https://www.ircforumlari.net/mirc-scripting-sorunlari/6089-bot-hakkinda.html)

AsiLmavi 04 Ağustos 2005 14:29

Bot Hakkında...
 
1. #deneme Kanalında Duracak bir bot Olacak. Bu bot Kanal da Op Olmadıgında Op a cıkıcak(samode ile) Op Gelince Deop Olacak..
2. botun oldugu kanallar da 15 dk önce atılmış banları samode ile acacak.
3. form da bagzı away reklam codeleri gördüm ama benim istediğim su: bulundugum kanal da her 20 dk da userler e whois cekip reklam kontrolu yapacak. reklamı bulursa kline atacak.

bu sorular a yardım ederseniz sevinirim. şimdiden tşkler..

WideSteel 04 Ağustos 2005 14:43

Arkadasim özel bir tcl veya Özel bir Script hazirlamalisin veya hazirlatmalisin Bu işi yapan arkadaslarim var Fakat uğrasirlarmi Bilmiyorum yinede bir sorcam Kolay gelsin..

AsiLmavi 04 Ağustos 2005 15:28

Alıntı:

WideSteel Nickli Üyeden Alıntı
Arkadasim özel bir tcl veya Özel bir Script hazirlamalisin veya hazirlatmalisin Bu işi yapan arkadaslarim var Fakat uğrasirlarmi Bilmiyorum yinede bir sorcam Kolay gelsin..

Ben TCl istemiyorum Arkadaşım.bana Script için code lazım:(

Bleda 04 Ağustos 2005 15:29

Alevli mevyede istermisin?

04 Ağustos 2005 15:32

aRkadaş ßu iş için Siber IDA 2 yi kuLLanaßiLirsin ama ßundan normaL useRLeRde zaRaR GöreßiLir .. oLmazSa yeni ßir Script hazırLayacaksın

djiNn 04 Ağustos 2005 15:50

Alıntı:

Bleda Nickli Üyeden Alıntı
Alevli mevyede istermisin?


:) +9 heuaheea

goXXip 04 Ağustos 2005 15:51

:) hay Allah. Yardım edebilecekler yorum yazsa keşke...

Bleda 04 Ağustos 2005 16:17

Yardım etmeyle alakası olduğunu zannetmiyorum.Onunla ilgili bir addon falan varsa ve linki verilirse yardım etmedir anladım ama sıfırdan kod yazmak direk balık vermek.Keşke balık tutmayı öğretsek...

goXXip 04 Ağustos 2005 16:58

Alıntı:

Bleda Nickli Üyeden Alıntı
Yardım etmeyle alakası olduğunu zannetmiyorum.Onunla ilgili bir addon falan varsa ve linki verilirse yardım etmedir anladım ama sıfırdan kod yazmak direk balık vermek.Keşke balık tutmayı öğretsek...

:) Açıkçası, bu konuda balık verme işini yardım edebilecek seviyedeki insanlara bırakmak gerekir. Şu an müsait olmadığım için ilgilenemedim. Ama kendisine akşam ilgileneceğime dair p.m. attım. Ben de zamanında bu şekilde kod istedim. Fakat kod istemede ki mantığım, kendimi geliştirmekti. Kodlama sistemlerine bakarak daha zekice nasıl kod yazabilirdim. Bunun peşindeydim. Eğer bu kişiye yardım etmezsem bu nankörlük olur. Baban seni yetiştiriyor belki de milyarlarca masrafa girdi şu ana kadar, babana tekrar bunları ödeyecek misin? Hayır. Ama sen de bir çocuk yetiştirerek onun masraflarını karşılayacaksın. O da başkasına... Amaç ne olursa olsun ya da ne şekilde olursa olsun benim ihtiyacım olduğunda bunu zamanında elde edebildiysem başka bir yerde başkası bu şekilde istediğinde geri çevirmemek gerekir.

Bleda 04 Ağustos 2005 17:31

Eğer kod incelemek için yardım isteseydi direk kod istemeyeceğini düşünüyorum ve istesede açıklamalı bir biçimde istemesi gerektiğini düşünüyorum ;)

goXXip 04 Ağustos 2005 17:33

Alıntı:

Bleda Nickli Üyeden Alıntı
Eğer kod incelemek için yardım isteseydi direk kod istemeyeceğini düşünüyorum ve istesede açıklamalı bir biçimde istemesi gerektiğini düşünüyorum ;)

:) Hatırlatma

Alıntı:

goXXip Nickli Üyeden Alıntı
Amaç ne olursa olsun ya da ne şekilde olursa olsun benim ihtiyacım olduğunda bunu zamanında elde edebildiysem başka bir yerde başkası bu şekilde istediğinde geri çevirmemek gerekir.

;)

AsiLmavi 04 Ağustos 2005 18:33

Alevli Meva Tabagı Öneren Arkadaşım.. Bu Form Neden Kuruldu? Yardım amaclı Değilmi? Ben bir Soru Sordum Cevaplamak isteyen Cevaplar. + Ben Emeğe Her daim saygılıyımdır. Kodlayanın nickini Code yanına eklerim. sende Yardım etmeyi ören bence. goXXip in cok iyiliğini gördüm görücem de. Allah razı olsun. Kendine yakışanı yapıyor. cevap bekliyor olucam goXXip Şimdiden eline sağlık..

el33t 04 Ağustos 2005 20:28

1. sorun için, sen kanala girdiğinde 2 saniye aralıklı bir timer açıp o timerla bir aliası çağırıp kanalda kaç kişi olduğunu anlayıp, istediğini yapabilirsin, eğer 1'e eşitse ($nick(#kanal,0)) , sen op değilsen ve $usermode içinde o varsa samode'la kanalda op olunabilir, eğer 1'den büyükse ve sen o kanalda opsan kendini deop edebilirsin. Kanaldan çıktığında da güvenlik olsun diye timerı kapatabilirsin. Bunlar için bilmen gereken en önemli şeyler on JOIN, on PART, $nick(#kanal,0) (kanalda kaç kişi olduğu), $usermode..

on me:*:join:#deneme:{ $+(.timer,$chan) 0 2 kontrolet $chan }
on me:*:part:#deneme:{ if $timer($chan) { $+(.timer,$chan) off } }
alias kontrolet { if $1 ischan { if ($nick($1,0) = 1) && ($me !isop $1) && (o isin $usermode) { samode $1 +o $me } | elseif ($nick($1,0) > 1) && ($me isop $1) { mode $1 -o $me } } }

İkinci sorunu anlayamadım, botun olduğu kanallarda 15 dakika önce atılmış banları samode ile açacak demişsin, Bu biraz saçma olur çünkü her dakika kontrol edilse kaç dk önce atıldı banlar diye, her dakika ban atılabileceği için, her dakika ban açmak gereksiz yere flood olur, onun yerine her 15 dakikada bir tüm banlar açılabilir.

Üçüncü soruna gelince, sen servera bağlandığında her 20 dakikada bir tüm kanallara sırayla /who çekip, gelen who cevabına göre, 7. cümlede G harfi olanlara whois çekip, away mesajlarını kontrol edebilirsin, eğer away mesajlarında reklam varsa kline atabilirsin.. (Kalınla yazdığım yerler who çekilmesini istemediğin kanallar)

alias awaykontrol { var %ş = $chan(0) | while %ş { if !$istok(#deneme #help #operhelp,$chan(%ş),32) { who $chan(%ş) } | dec %ş } }
raw 352:*:{ if (G isincs $7) && ($6 isreg $2) { whois $6 | set -u60 $+(%,wcheck.,$6) $4 } }
raw 301:*:{
var %ğ = $remove($strip($3-),$chr(32))
if ($($+(%,wcheck.,$2),2)) && (*http:* iswm %ğ) || (*ftp:* iswm %ğ) || (*irc.* iswm %ğ) || (*/server* iswm %ğ) || (*.com iswm %ğ) || (*[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] iswm %ğ) {
kline $+(*@,$($+(%,wcheck.,$2),2)) Away mesajında reklam yapmak yasaktır.
}
}

Umarım anlamışsındır ve mIRC Scripting hakkında bir fikrin olmuştur.
(Not: kodların hiç birini denemedim.)

AsiLmavi 05 Ağustos 2005 10:46

SaolasıN Dostum. ikinci sorumun codesini alabilirmiyim?

MaeLStrOm 05 Ağustos 2005 11:42

on *:ban:#: { timer 1 900 samode $chan -b $banmask }
;atılan banları 15 dakka sonra acar kim tarafından atılırsa atılsın.denemedim ama calısır inş

el33t 05 Ağustos 2005 12:13

Alıntı:

el33t Nickli Üyeden Alıntı
İkinci sorunu anlayamadım, botun olduğu kanallarda 15 dakika önce atılmış banları samode ile açacak demişsin, Bu biraz saçma olur çünkü her dakika kontrol edilse kaç dk önce atıldı banlar diye, her dakika ban atılabileceği için, her dakika ban açmak gereksiz yere flood olur, onun yerine her 15 dakikada bir tüm banlar açılabilir.

Alıntı:

asilmavi Nickli Üyeden Alıntı
SaolasıN Dostum. ikinci sorumun codesini alabilirmiyim?

Çok zekice bir cevap gerçekten.. Ben ikinci sorunu anlayamadım demişim ve sana seçenekler sunmuşum, senin verdiğin cevapsa ikinci sorumun kodunu alabilir miyim? Anlama problemlerin mi var?

AsiLmavi 05 Ağustos 2005 14:00

Alıntı:

el33t Nickli Üyeden Alıntı
Çok zekice bir cevap gerçekten.. Ben ikinci sorunu anlayamadım demişim ve sana seçenekler sunmuşum, senin verdiğin cevapsa ikinci sorumun kodunu alabilir miyim? Anlama problemlerin mi var?

Tamam kendim hazırladım dostum saol. yani 15 da bir banları acan codeyi sormuştum. saolasın.

goXXip 05 Ağustos 2005 19:04

Kod:

alias _ban.chans { .whois $me | .timer.check 1 2 _ban.ccheck }

raw 353:*: { .set -u15 %::mchan $remove($4-,@) }

alias _ban.ccheck {
  if %::mchan {
        var %k = 1,%:mchan = $numtok(%::mchan,32)
        while %k <= %:mchan {
          _queue .names $gettok(%::mchan,%k,32)
          inc %k
        }
  }
}

raw 319:*: {
  if %::mchan {
        var %m = 1
        while %m <= $numtok($3-,32) {
          if *@* !iswm $gettok($3-,%m,32) && *o* iswm $usermode {
                _queue samode $gettok($3-,%m,32) +o $me
          }
          inc %m
        }
  }
}
alias _queue {
  inc %queue.count
  if ($timer(.queue) == $null) {
        hadd -m queue count 1
        hadd -m queue 1 $1-
        _doqueue 1
  }
  else {
        var %queue.count = $calc($hget(queue,count) + 1)
        hadd -m queue %queue.count $1-
        hadd -m queue count %queue.count
  }
}
alias _doqueue {
  if ($hget(queue,$1) != $null) {
        .timer.queue -mo 1 $calc((4 - $gettok(3 2 1,$1,32)) * 60) _doqueue $calc($1 + 1)
        $ifmatch
        .hdel -s queue $1
  }
  else hfree queue
}


Bu koda dokunmayın:) Akşam evde devam edeceğim. Sadece ulaşım kolaylığı olsun diye attım. Ayrıca bu kod Eğer Botun bulunduğu kanallarda op yoksa op olmayan kanallarda op a çıkar.

MaeLStrOm 05 Ağustos 2005 19:32

goxxip sen hash table kullanıyorsun sanırım kodlarda onları acıklamalı anlatırmısın bizde oğrenelim :)

goXXip 06 Ağustos 2005 09:31

Normalde hash table kullanırım ama bu kodda sadece komutları sıralamak için


alias _queue {
inc %queue.count
if ($timer(.queue) == $null) {
hadd -m queue count 1
hadd -m queue 1 $1-
_doqueue 1
}
else {
var %queue.count = $calc($hget(queue,count) + 1)
hadd -m queue %queue.count $1-
hadd -m queue count %queue.count
}
}
alias _doqueue {
if ($hget(queue,$1) != $null) {
.timer.queue -mo 1 $calc((4 - $gettok(3 2 1,$1,32)) * 60) _doqueue $calc($1 + 1)
$ifmatch
.hdel -s queue $1
}
else hfree queue
}


komut dizisini kullandım. Bu kod PnP 'den geliyor. Açıkçası bu siber2 de var. Ama multi Server kullanımını desteklemiyor malesef. Bu kodun asıl geldiği yer yani PnP de ise multi serverı destekliyor. O kodda şu şekilde


_linedance {
if ($timer(.line.dance. $+ $cid) == $null) {
hadd -m pnp.qcommand count. $+ $cid 1
hadd -m pnp.qcommand 1. $+ $cid $1-
_dolinedance 1
}
else {
hinc -m pnp.qcommand count. $+ $cid
hadd -m pnp.qcommand $hget(pnp.qcommand,count. $+ $cid) $+ . $+ $cid $1-
}
}
_dolinedance {
if ($hget(pnp.qcommand,$1 $+ . $+ $cid) != $null) {
var %data = $ifmatch
.timer.line.dance. $+ $cid -m 1 $calc(1500 - $gettok(1250 1000 750 500 250,$1,32)) _dolinedance $calc($1 + 1)
%data
}
else hdel -w pnp.qcommand *. $+ $cid
}


Bu multi Server kullanımını destekler. Elimin altında _queue(Sırala) olduğu için onu yazdım. :) Bu kodu excess flood dan düşmemek için komutların önüne koyduğunuzda komutları sıralar ve flood dan düşmezsiniz...

goXXip 06 Ağustos 2005 09:35

Bir kaç örnek vereyim... Örneğin MephisTo Arkadaşımız Token Identifier anlatımında Massdeop dan bahsetmiş... Ama 400 Kişilik bir kanalda 20 tane op olduğunu düşünün. En fazla 8. yi deop ederken flood dan düşebilirsiniz. O yüzden MephisTo arkadaşımızın bu kodunu;

Alıntı:

MephisTo Nickli Üyeden Alıntı
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
}
}



Alıntı:

goXXip Nickli Üyeden Alıntı
raw 319:* {
set %nick $2
set %kanallar $remove($3-,@)
}

alias tamdeop {
var %toplam = $numtok(%kanallar,32)
var %x = 1
while %x <= %toplam {
_linedance samode $gettok(%kanallar,%x,32) -o %nick
inc %x
}
}
_linedance {
if ($timer(.line.dance. $+ $cid) == $null) {
hadd -m pnp.qcommand count. $+ $cid 1
hadd -m pnp.qcommand 1. $+ $cid $1-
_dolinedance 1
}
else {
hinc -m pnp.qcommand count. $+ $cid
hadd -m pnp.qcommand $hget(pnp.qcommand,count. $+ $cid) $+ . $+ $cid $1-
}
}
_dolinedance {
if ($hget(pnp.qcommand,$1 $+ . $+ $cid) != $null) {
var %data = $ifmatch
.timer.line.dance. $+ $cid -m 1 $calc(1500 - $gettok(1250 1000 750 500 250,$1,32)) _dolinedance $calc($1 + 1)
%data
}
else hdel -w pnp.qcommand *. $+ $cid
}


Şeklinde değiştirirseniz sorununuz olmaz...

BoSs 06 Ağustos 2005 09:43

bu günkü dersimizin sonuna geldik dağılabilirsiniz..

goXXip 06 Ağustos 2005 10:08

Son olarak hash table lardan bahsedeyim. Bir Hash table oluşturmak için

hmake <tabloadı> <limit>

Örneğin;

Kod:

hmake goldenex 5
Yazdığımda Goldenex Tablosu oluşturacak ve 5 'in 10 Katı kadar yani 50 Datalık kapasitesi olacaktır. Eğer oraya 5 yerine 10 yazsaydım o zaman 100 Datalık bir tablo oluşturacaktı...

Eklediğimiz tabloya Kayıt Girebilmek için ise;

hadd <tabloadı> <item> <data>

Örneğin;

Kod:

hadd goldenex 1 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
veya
Kod:

hadd goldenex web [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
şeklinde olabilir. Burada item; Data nın ID Numarasını ya da Terimini simgeliyor. Bu dataları çağırırken çok işimize yarayabilir.

Tabi Bu oluşturduğunuz tablo mirci kapatıp yeniden açtığınızda gidecektir. O yüzden bu tabloları kayıt etmemiz gerekiyor...

hsave <tabloadı> <dizin>

Kod:

hsave goldenex goldenex.data
Datayı mIRC in ana dizinine yerleştirecektir..

Bunla da işimiz bitmiyor. Her açılışta bunu load etmemiz gerekiyor yani

Kod:

on 1:start: { hmake goldenex | hload goldenex goldenex.data }
gibi.

Son olarak arama ve çağırmayı anlattıktan sonra ilk bölümü bitireceğim:)

Dosyayı çağırmak için hget kullanılır.

Kod:

$hget(goldenex,1)
i çağırdığınızda yukarıda ki [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] i çağıracaktır. Kod içinde bunu rahatlıkla kullanabilirsiniz. Fakat Tablolara yazdırmak istediğinizde ya da echo ile görüntülemek istediğinizde

[/code]$hget(goldenex,1).data[/code] Şeklinde çağırmanız gerekiyor.

Örneğin bir datanın tablonuzda olup olmadığını öğrenmek istiyorsunuz;

Alın size basit bir karaliste ;) ;
Kod:

on 1:join:#: {
  ;Eğer Giren kişi KaraListe Tablosunda ise kanaldan at ve yasakla.
  if $hfind(karaliste,$nick,1,W) {
        ban $chan $nick 2
        kick $chan $nick Kara Listemdesin
  }
}

Bu karalisteyi şu şekilde düzenleyebiliriz...

Kod:

on 1:start: { 
  ;Eğer karaliste.data dosyası bilgisayarımda mevcut değilse
  if !$findfile($mircdir,karaliste.data,1) {
        ;KaraListe Tablosu oluştur ve kayıt et
        hmake karaliste 10
        hsave karaliste karaliste.data
  }
  ;Aksi taktirde Var olan dosyayı belleğe al ve kullan
  else {
        hmake karaliste
        hload karaliste karaliste.data
  }
}
 
alias karaliste {
  if $1 == ekle && $2 {
        if !$hfind(karaliste,$2,1,W) {
          hadd karaliste $r(0,99999) $2
          hsave karaliste karaliste.data
        }
        else echo Listenizde bu kişi mevcut...
  }
  elseif $1 == sil && $2 {
        if !$hfind(karaliste,$2,1,W) {
        hdel karaliste $hfind(karaliste,$2,1,W)
        hsave karaliste karaliste.data
  }
  else echo Listenizde böyle birisi yok...
  }
  elseif $1 == liste {
        var %:l = 1
        while %:l <= $hget(karaliste,0).item {
          echo -a %:l $hget(karaliste,%:l).data
          inc %:l
        }
  }
  else {
  echo -a Eklemek için /karaliste ekle nick
  echo -a Kaldırmak için /karaliste sil nick
  echo -a Listelemek için /karaliste liste
 }
}

Devam edecek:)

Dipnot: Hiç birini denemedim :)


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 07:28.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk