![]() |
| mIRC Scripting Hazır Kodlar mIRC Scriptinglerinizde kullanabileceğiniz hazır kodlara bu başlık altından ulaşabilirsiniz. |
| | Seçenekler | Stil |
| | #1 | |
| 🔐 Çift Katmanlı Güvenlik WHOIS tabanlı gerçek IRCop doğrulaması — sunucudan gelen 313/318 cevabına dayanır, taklit edilemez NickServ identify zorunluluğu — hesabına giriş yapmamış kimse oylama başlatamaz/bitiremez 🛡️ Tekrar Oy Koruması Nick değiştirse bile aynı kullanıcı ikinci kez oy kullanamaz (hesap/host bazlı takip) ⏱️ Spam/Flood Koruması Tüm komutlarda cooldown sistemi — komutları art arda hızlıca tetiklemeyi engeller 💬 Hem Kanal Hem Özel Mesaj Desteği Kurulumu #Opers kanalında yapabildiğin gibi, bota özelden de tamamlayabilirsin 📢 Sunucu Geneli Duyuru Bot oper olduğunda GLOBOPS/WALLOPS ile gerçek sunucu geneline, değilse botun bulunduğu tüm kanallara otomatik yayın 🧠 Akıllı Süre Algılama (Regex) "1 saat", "30dk", "2 günlük" gibi doğal yazımları otomatik anlıyor ⏳ Otomatik Bitiş + Manuel Bitirme Süre dolunca sonuçlar otomatik açıklanır, IRCop isterse !oybitir ile erken de bitirebilir Alıntı:
HTML-Kodu; ================================================================
; OYLAMA BOTU - TAM SÜRÜM
; Sunucu geneli, WHOIS doğrulamalı, cooldown korumalı oylama
; ================================================================
; ---------- KURULUM (İLK ÇALIŞTIRMADA BUNLARI GİRİN) ----------
; /set %oylama.nick Oylama
; /set %oylama.operuser OperKullaniciAdi
; /set %oylama.operpass OperSifresi
; /set %oylama.nickpass NickServSifresi
on *:START:{
if (%oylama.nick == $null) {
echo -a [Bot] Uyarı: Ayarlar girilmemiş. Şunları çalıştırın:
echo -a /set %oylama.nick Oylama
echo -a /set %oylama.operuser OperKullaniciAdi
echo -a /set %oylama.operpass OperSifresi
echo -a /set %oylama.nickpass NickServSifresi
}
if (!$hget(oy_kurulum)) { hmake oy_kurulum 50 }
if (!$hget(goy_bilgi)) { hmake goy_bilgi 10 }
if (!$hget(goy_secenek)) { hmake goy_secenek 200 }
if (!$hget(goy_sonuc)) { hmake goy_sonuc 200 }
if (!$hget(goy_kullanan)) { hmake goy_kullanan 2000 }
if (!$hget(oy_cooldown)) { hmake oy_cooldown 500 }
if (!$hget(oy_whois_bekleyen)){ hmake oy_whois_bekleyen 50 }
}
; ================================================================
; BAĞLANTI / OPER / NICKSERV
; ================================================================
on *:CONNECT:{
if (%oylama.nick != $null) { nick %oylama.nick }
.timer 1 3 nickserv_giris
}
alias nickserv_giris {
if (%oylama.nickpass != $null) { /msg NickServ IDENTIFY %oylama.nickpass }
.timer 1 5 oper_ol
}
alias oper_ol {
if (%oylama.operuser != $null) && (%oylama.operpass != $null) {
/oper %oylama.operuser %oylama.operpass
}
}
raw 381:*:{
echo -a [Bot] IRCop oldu: $me
set %bot.isoper $true
halt
}
on *:DISCONNECT:{ unset %bot.isoper }
; ================================================================
; YETKİ + COOLDOWN YARDIMCI FONKSİYONLAR
; ================================================================
; Spam / tekrar koruması: aynı nick, belirtilen saniye içinde tekrar tetikleyemez
alias -l oy_cooldown_kontrol {
var %anahtar = $1, %saniye = $2
var %son = $hget(oy_cooldown,%anahtar)
if (%son != $null) && ($calc($ctime - %son) < %saniye) {
notice $nick [Oylama] Çok hızlı işlem yapıyorsunuz. $calc(%saniye - ($ctime - %son)) saniye sonra tekrar deneyin.
return $false
}
hadd oy_cooldown %anahtar $ctime
return $true
}
; WHOIS doğrulama başlat: nick'i whois'le, sonucu callback alias'ına ilet
alias -l oy_dogrula_baslat {
var %nick = $1, %callback = $2, %hedef = $3
hadd oy_whois_bekleyen %nick %callback $chr(9) %hedef $chr(9) 0
whois %nick
}
; 313: "X kullanıcısı bir IRC operatörüdür" -> oper bayrağını işaretle
raw 313:*:{
var %nick = $2
if ($hget(oy_whois_bekleyen,%nick) == $null) { halt }
var %veri = $hget(oy_whois_bekleyen,%nick)
var %callback = $gettok(%veri,1,9)
var %hedef = $gettok(%veri,2,9)
hadd oy_whois_bekleyen %nick %callback $chr(9) %hedef $chr(9) 1
halt
}
; 318: WHOIS sona erdi -> sonucu değerlendir ve callback'i çağır
raw 318:*:{
var %nick = $2
if ($hget(oy_whois_bekleyen,%nick) == $null) { halt }
var %veri = $hget(oy_whois_bekleyen,%nick)
var %callback = $gettok(%veri,1,9)
var %hedef = $gettok(%veri,2,9)
var %operMi = $gettok(%veri,3,9)
hdel oy_whois_bekleyen %nick
if ($account($nick) == $null) && ($account == $null) {
msg %hedef [Oylama] $nick $+ , önce NickServ'e identify olmalısınız.
halt
}
if (%operMi == 0) {
msg %hedef [Oylama] $nick $+ , WHOIS doğrulamasına göre IRCop değilsiniz. İşlem reddedildi.
halt
}
$callback(%nick, %hedef)
halt
}
; ================================================================
; İNTERAKTİF OYLAMA KURULUMU (kanal + özel)
; ================================================================
on ^*:TEXT:!oylama başlat:#Opers,?:{
if ($oy_cooldown_kontrol($+(baslat-,$nick),15) == $false) { halt }
if ($hget(goy_bilgi,aktif) != $null) {
msg $iif($chan,$chan,$nick) [Oylama] Şu an aktif bir oylama var. Önce !oybitir ile bitirin.
halt
}
if ($hget(oy_kurulum,$nick) != $null) {
msg $iif($chan,$chan,$nick) [Oylama] $nick $+ , zaten devam eden bir kurulumunuz var. İptal: !oylama iptal
halt
}
var %hedef = $iif($chan,$chan,$nick)
msg %hedef [Oylama] $nick $+ , kimliğiniz doğrulanıyor...
oy_dogrula_baslat $nick oy_kurulum_gercek_baslat %hedef
}
alias -l oy_kurulum_gercek_baslat {
var %nick = $1, %hedef = $2
hadd oy_kurulum %nick sure $chr(9) $chr(9) $chr(9) $chr(9) %hedef
msg %hedef [Oylama] Doğrulama başarılı. %nick $+ , yeni oylama kurulumu başladı.
msg %hedef [Oylama] Süreyi girin (örn: 1 saat, 30 dakika, 2 gün):
}
on ^*:TEXT:!oylama iptal:#Opers,?:{
if ($hget(oy_kurulum,$nick) == $null) {
notice $nick [Oylama] İptal edilecek bir kurulumunuz yok.
halt
}
var %hedef = $gettok($hget(oy_kurulum,$nick),5,9)
hdel oy_kurulum $nick
msg %hedef [Oylama] $nick kurulumu iptal etti.
}
; ---------- ADIM ADIM CEVAPLARI YAKALA ----------
on ^*:TEXT:*:#Opers,?:{
if ($hget(oy_kurulum,$nick) == $null) { halt }
if ($left($1-,1) == !) { halt }
var %veri = $hget(oy_kurulum,$nick)
var %asama = $gettok(%veri,1,9)
var %sure = $gettok(%veri,2,9)
var %soru = $gettok(%veri,3,9)
var %secenekler = $gettok(%veri,4,9)
var %hedef = $gettok(%veri,5,9)
; ---- AŞAMA 1: SÜRE ----
if (%asama == sure) {
if ($regex($1-,/^\s*(\d+)\s*(saniyelik|saniye|sn|dakikalık|dakika|dk|saatlik|saat|s|günlük|gün|g)\s*$/i) == 0) {
msg %hedef [Oylama] $nick $+ , süre anlaşılamadı. Örnek: "1 saat", "30 dakika", "2 gün"
halt
}
var %sayi = $regml(1)
var %birim = $lower($regml(2))
var %saniye = 0
if ($regex(%birim,/^(sn|saniye|saniyelik)$/)) { %saniye = %sayi }
elseif ($regex(%birim,/^(dk|dakika|dakikalık)$/)) { %saniye = $calc(%sayi * 60) }
elseif ($regex(%birim,/^(s|saat|saatlik)$/)) { %saniye = $calc(%sayi * 3600) }
elseif ($regex(%birim,/^(g|gün|günlük)$/)) { %saniye = $calc(%sayi * 86400) }
if (%saniye < 10) || (%saniye > 604800) {
msg %hedef [Oylama] $nick $+ , süre 10 saniye ile 7 gün arasında olmalı. Tekrar girin:
halt
}
hadd oy_kurulum $nick soru $chr(9) %saniye $chr(9) $chr(9) %hedef
msg %hedef [Oylama] Süre kaydedildi: %sayi %birim
msg %hedef [Oylama] Sorunuzu sorun:
halt
}
; ---- AŞAMA 2: SORU ----
if (%asama == soru) {
hadd oy_kurulum $nick secenek $chr(9) %sure $chr(9) $1- $chr(9) %hedef
msg %hedef [Oylama] Soru kaydedildi: $1-
msg %hedef [Oylama] 1. seçeneği girin:
halt
}
; ---- AŞAMA 3: SEÇENEKLER ----
if (%asama == secenek) {
if ($lower($1-) == bitir) || ($lower($1-) == tamam) {
var %secenekSayisi = $numtok(%secenekler,124)
if (%secenekSayisi < 2) {
msg %hedef [Oylama] En az 2 seçenek girmelisiniz, devam edin:
halt
}
hdel oy_kurulum $nick
oylama_gercek_baslat %sure %soru %secenekler $nick
halt
}
var %yeniSecenekler = $iif(%secenekler == $null,$1-,%secenekler $+ $chr(124) $+ $1-)
var %sayac = $calc($numtok(%yeniSecenekler,124) + 1)
hadd oy_kurulum $nick secenek $chr(9) %sure $chr(9) %soru $chr(9) %yeniSecenekler $chr(9) %hedef
msg %hedef [Oylama] Seçenek eklendi: $1-
msg %hedef [Oylama] $+ %sayac $+ . seçeneği girin, ya da bitirmek için "bitir" yazın:
halt
}
}
; ================================================================
; OYLAMAYI GERÇEKTEN BAŞLATMA
; ================================================================
alias oylama_gercek_baslat {
var %saniye = $1
var %soru = $2
var %secenekler = $3
var %baslatan = $4
var %secenekSayisi = $numtok(%secenekler,124)
var %bitis = $calc($ctime + %saniye)
hadd goy_bilgi aktif %soru $chr(9) %bitis $chr(9) %secenekSayisi $chr(9) %baslatan
var %i = 1
while (%i <= %secenekSayisi) {
hadd goy_secenek %i $gettok(%secenekler,%i,124)
hadd goy_sonuc %i 0
inc %i
}
oylama_yayinla $chr(3) $+ 4[OYLAMA BAŞLADI]$chr(3) %soru
var %j = 1
while (%j <= %secenekSayisi) {
oylama_yayinla $chr(3) $+ 10 %j. $+ $chr(3) $gettok(%secenekler,%j,124)
inc %j
}
oylama_yayinla $chr(3) $+ 14Oy vermek için: !oy <numara> (herhangi bir kanaldan veya bota özelden). Bitiş: $asctime(%bitis,hh:nn:ss dd/mm)$chr(3)
.timer goybitis -oi 1 %saniye oylama_bitir_global
}
; ================================================================
; YAYINLAMA (kanal + oper ise sunucu geneli)
; ================================================================
alias oylama_yayinla {
var %c = 1
while ($chan(%c) != $null) { echo $chan(%c) $1- | inc %c }
if (%bot.isoper == $true) {
; ircd'nize göre birini aktif edin:
; /GLOBOPS $1-
; /WALLOPS $1-
; /SVSNOTICE * $1-
}
}
; ================================================================
; OY VERME (kanal + özel)
; ================================================================
on ^*:TEXT:!oy *:*:{
if ($oy_cooldown_kontrol($+(oy-,$nick),3) == $false) { halt }
if ($hget(goy_bilgi,aktif) == $null) {
notice $nick [Oylama] Şu anda aktif bir oylama yok.
halt
}
var %secim = $2
if ($regex(%secim,/^\d+$/) == 0) {
notice $nick [Oylama] Geçersiz kullanım. Örnek: !oy 2
halt
}
var %secenekSayisi = $gettok($hget(goy_bilgi,aktif),3,9)
if (%secim < 1) || (%secim > %secenekSayisi) {
notice $nick [Oylama] Geçersiz seçenek. 1 ile %secenekSayisi arasında bir sayı girin.
halt
}
var %kimlik = $iif($account != $null,acc:$account,host:$address($nick,2))
if ($hget(goy_kullanan,%kimlik) != $null) {
notice $nick [Oylama] Zaten oy kullandınız! (Verdiğiniz oy: $hget(goy_kullanan,%kimlik) $+ .seçenek)
halt
}
hadd goy_kullanan %kimlik %secim
hadd goy_sonuc %secim $calc($hget(goy_sonuc,%secim) + 1)
notice $nick [Oylama] Oyunuz kaydedildi: %secim $+ . seçenek $chr(40) $+ $hget(goy_secenek,%secim) $+ $chr(41)
}
; ================================================================
; BİTİRME
; ================================================================
alias oylama_bitir_global {
if ($hget(goy_bilgi,aktif) == $null) { return }
var %veri = $hget(goy_bilgi,aktif)
var %soru = $gettok(%veri,1,9)
var %secenekSayisi = $gettok(%veri,3,9)
var %i = 1, %enYuksek = -1, %kazananlar = $null, %toplamOy = 0
while (%i <= %secenekSayisi) {
var %oy = $hget(goy_sonuc,%i)
%toplamOy = $calc(%toplamOy + %oy)
if (%oy > %enYuksek) { %enYuksek = %oy | %kazananlar = %i }
elseif (%oy == %enYuksek) { %kazananlar = %kazananlar $+ , $+ %i }
inc %i
}
oylama_yayinla $chr(3) $+ 4[OYLAMA SONA ERDİ]$chr(3) %soru
var %i = 1
while (%i <= %secenekSayisi) {
oylama_yayinla $chr(3) $+ 10 %i. $+ $chr(3) $hget(goy_secenek,%i) $+ : $chr(3) $+ 9 $hget(goy_sonuc,%i) oy$chr(3)
inc %i
}
var %sonuc = $iif(%toplamOy == 0,Hiç oy kullanılmadı.,$iif($numtok(%kazananlar,44) > 1,Berabere: %kazananlar,Kazanan: %kazananlar $+ . $hget(goy_secenek,%kazananlar)))
oylama_yayinla $chr(3) $+ 3 $+ %sonuc (Toplam: %toplamOy oy)$chr(3)
hdel goy_bilgi aktif
var %i = 1
while (%i <= %secenekSayisi) { hdel goy_secenek %i | hdel goy_sonuc %i | inc %i }
var %j = 1
while ($hget(goy_kullanan,%j).item != $null) { hdel goy_kullanan $hget(goy_kullanan,%j).item }
.timer goybitis off
}
on ^*:TEXT:!oybitir:*:{
if ($oy_cooldown_kontrol($+(bitir-,$nick),10) == $false) { halt }
if ($hget(goy_bilgi,aktif) == $null) { notice $nick [Oylama] Aktif oylama yok. | halt }
var %hedef = $iif($chan,$chan,$nick)
msg %hedef [Oylama] $nick $+ , kimliğiniz doğrulanıyor...
oy_dogrula_baslat $nick oy_bitir_gercek %hedef
}
alias -l oy_bitir_gercek {
oylama_bitir_global
}
; ================================================================
; DURUM SORGULAMA (bonus)
; ================================================================
on ^*:TEXT:!oydurum:*:{
if ($hget(goy_bilgi,aktif) == $null) {
notice $nick [Oylama] Aktif oylama yok.
halt
}
var %veri = $hget(goy_bilgi,aktif)
var %kalan = $calc($gettok(%veri,2,9) - $ctime)
notice $nick [Oylama] Soru: $gettok(%veri,1,9) | Kalan süre: $duration(%kalan)
}
________________ "Sevilmenin kıymeti bilinmiyorsa, Uzaklaşmak En güzeli ki üzülen sen olmayasın" | ||
| |
| | #2 |
| Emeğinize sağlık. Paylaşım için teşekkürler. 👍 1
________________ Edep, içsel güzellik ve dışsal davranışlarımız arasındaki köprüdür. | |
| |
| | #3 |
|
Emeğinize sağlık.
👍 1
________________ 🍒 𝑯𝒆𝒓 𝒉𝒊𝒌𝒂𝒚𝒆𝒏𝒊𝒏 𝒊𝒌𝒊 𝒕𝒂𝒓𝒂𝒇𝒊 𝒗𝒂𝒓𝒅𝒊𝒓. : ( : | |
| |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |