Türkiye Burada Sohbet Ediyor
Aşağıdaki “Kanal İstatistikleri+ Eğlence Paketi v2” önceki sürümü geliştirir: mini bar-grafikler, rozet/level sistemi, “gece baykuşu / erken kuş” unvanları, gün/hafta reset komutları, anti-flood, rastgele övgüler, ve daha renkli çıktılar.
Remote (Alt+R)’ye komple yapıştırıp kullanabilirsin.
; ============================================================
; KANAL İSTATİSTİKLERİ + EĞLENCE PAKETİ v2 (TR)
; Komutlar:
; !profil [nick] → Level, rozetler, toplamlar, en aktif saat ve mini bar graf.
; !istat [nick] → Klasik satır/kelime/karakter + son/ilk görülme
; !saatlik [nick] → 24 saatlik dağılım + bar graf (00..23)
; !top [N] → En çok yazan TOP N (vars.10) — madalya/taç
; !kanal → Kanal toplamları, pik saat, bugün yazılanlar
; !reset gun|hafta (OP) → Günlük/haftalık sayaçları sıfırlar
; !rozet [nick] → Kazanılan rozetleri ve açıklamalarını gösterir
; !ben → Hızlı yardım
;
; Otomatikler:
; - Her 10 dakikada bir dosyaya kaydet (stats.hsh)
; - Join/Part/Nick ile son-aktivite güncel
; - Anti-flood: kullanıcı başına 4 sn cooldown
; - Eğlencelik övgü: belirli eşiklerde rastgele mesaj
; ============================================================
; ---------- Başlangıç/Yükleme & Otomatik Kaydet ----------
on *:START:{
if (!$hget(stats)) hmake stats 1000
if ($isfile(stats.hsh)) hload -s stats stats.hsh
if (!$hget(meta)) hmake meta 100
if ($isfile(meta.hsh)) hload -s meta meta.hsh
.timerstatsautosave 0 600 hsave -o stats stats.hsh | hsave -o meta meta.hsh
}
on *:EXIT:{ if ($hget(stats)) hsave -o stats stats.hsh | if ($hget(meta)) hsave -o meta meta.hsh }
; ---------- Yardımcılar ----------
alias _key { return $+($chan,.,$lower($1)) } ; kanal+nick anahtarı
alias _bar { ; _bar <değer> <maks> -> mini bar █
var %v = $1, %m = $max(1,$2), %n = $int($calc((%v / %m) * 10))
if (%n < 1) return ▏
if (%n == 10) return ██████████
return $str(█,%n) $+ $str(·,$calc(10 - %n))
}
alias _cool { ; _cool <nick> (4 sn)
var %k = cool. $+ $lower($1)
if ($hget(meta,%k) && $calc($ctime - $v1) < 4) return 0
hadd -m meta %k $ctime | return 1
}
alias _nowdate return $asctime(yyyy-mm-dd)
alias _hour return $asctime(HH)
alias _isop return $iif($me isop #,1,0)
; Level (satır sayısına göre)
; 0:Çaylak(0), 1:Sohbetçi(50), 2:Kıdemli(150), 3:Usta(400), 4:Efsane(800), 5:Taç(1500)
alias _level {
var %lines = $1
if (%lines >= 1500) return 5
if (%lines >= 800) return 4
if (%lines >= 400) return 3
if (%lines >= 150) return 2
if (%lines >= 50) return 1
return 0
}
alias _levelname {
if ($1 == 5) return 👑 Efsane Taç
if ($1 == 4) return 🌟 Efsane
if ($1 == 3) return 🔥 Usta
if ($1 == 2) return 💬 Kıdemli
if ($1 == 1) return 🙂 Sohbetçi
return 🌱 Çaylak
}
; Rozet kontrol (koşulları sağlanırsa anahtara işaret koyar)
alias _updateBadges {
var %k = $1, %lines = $iif($hget(stats,%k .lines),$v1,0)
var %night = 0, %day = 0, %h = 0
while (%h < 24) {
var %hh = $right(0 $+ %h,2), %v = $iif($hget(stats,%k .hour. %hh),$v1,0)
if (%h < 6) inc %night %v
if (%h >= 6 && %h <= 10) inc %day %v
inc %h
}
; eşikler:
if (%lines >= 100 && !$hget(stats,%k .badge.bird)) hadd -m stats %k .badge.bird 1 ; Muhabbet Kuşu
if (%lines >= 500 && !$hget(stats,%k .badge.master)) hadd -m stats %k .badge.master 1 ; Sohbet Efendisi
if (%lines >= 1000 && !$hget(stats,%k .badge.legend)) hadd -m stats %k .badge.legend 1 ; Efsane
if (%night > %day && !$hget(stats,%k .badge.nightowl)) hadd -m stats %k .badge.nightowl 1 ; Gece Baykuşu
if (%day > %night && !$hget(stats,%k .badge.early)) hadd -m stats %k .badge.early 1 ; Erken Kuş
}
; Rastgele övgü (eşiği geçince tetikler)
alias _praise {
var %arr = "Harikasın!" "Sohbet uçuyor!" "Bugün senden enerji saçılıyor!" "Kanalın yıldızı sensin!" "Devam!"
return $gettok(%arr,$rand(1,$numtok(%arr,32)),32)
}
; ---------- MESAJ TAKİBİ ----------
on *:TEXT:*:#:{
var %nick = $nick, %k = $(_key(%nick)), %msg = $strip($1-)
var %words = $iif(%msg,$numtok(%msg,32),0), %chars = $len(%msg), %h = $(_hour)
; toplam sayaçlar
hinc -c stats %k .lines 1
hinc -c stats %k .words %words
hinc -c stats %k .chars %chars
hinc -c stats %k .hour. $+ %h 1
; günlük toplam & bugünkü toplam (kanal)
var %d = $(_nowdate)
hinc -c stats #.day. $+ %d 1
hinc -c stats %k .day. $+ %d 1
; ilk/son görülme
if (!$hget(stats,%k .first)) hadd -m stats %k .first $ctime
hadd -m stats %k .last $ctime
; rozet güncelle
_updateBadges %k
; eğlencelik eşik bildirim (cooldown ile)
var %lines = $hget(stats,%k .lines)
if (%lines isin 50 150 400 800 1000 1500) {
if ($(_cool(%nick))) msg # 🌈 $nick seviye atladı: $+ $chr(32) $+ $_levelname($(_level(%lines))) — $_praise
}
}
; Join/Part (son görülme & hoş geldin tatlı ek)
on *:JOIN:#:{
var %k = $(_key($nick))
if (!$hget(stats,%k .first)) hadd -m stats %k .first $ctime
hadd -m stats %k .last $ctime
; nazik karşılama (notice — flood'a dikkat)
notice $nick 🌟 Hoş geldin $nick! İyi sohbetler. Tip: !ben yazarak komutları görebilirsin.
}
on *:PART:#:{ hadd -m stats $(_key($nick)) .last $ctime }
on *:NICK:{
; aynı kanallarda kayıt taşıma (v1’den)
var %old = $nick, %new = $newnick, %i = 1
while (%i <= $comchan(%new,0)) {
var %c = $comchan(%new,%i)
var %ok = %c $+ . $+ $lower(%old)
var %nk = %c $+ . $+ $lower(%new)
if ($hget(stats,%ok .lines)) {
; ana sayaçlar
hadd -m stats %nk .lines $calc($hget(stats,%nk .lines) + $hget(stats,%ok .lines))
hadd -m stats %nk .words $calc($hget(stats,%nk .words) + $hget(stats,%ok .words))
hadd -m stats %nk .chars $calc($hget(stats,%nk .chars) + $hget(stats,%ok .chars))
; saatlik
var %h = 0 | while (%h < 24) { var %hh = $right(0 $+ %h,2) | hadd -m stats %nk .hour. %hh $calc($hget(stats,%nk .hour. %hh) + $hget(stats,%ok .hour. %hh)) | inc %h }
; first/last
var %first = $iif($hget(stats,%nk .first) && $hget(stats,%ok .first),$min($v1,$hget(stats,%ok .first)),$iif($hget(stats,%nk .first),$v1,$hget(stats,%ok .first)))
var %last = $iif($hget(stats,%nk .last) && $hget(stats,%ok .last),$max($v1,$hget(stats,%ok .last)),$iif($hget(stats,%nk .last),$v1,$hget(stats,%ok .last)))
if (%first) hadd -m stats %nk .first %first
if (%last) hadd -m stats %nk .last %last
; rozetler kopya
var %toks = bird master legend nightowl early
var %i2 = 1 | while (%i2 <= $numtok(%toks,32)) {
var %b = $gettok(%toks,%i2,32)
if ($hget(stats,%ok .badge. %b) && !$hget(stats,%nk .badge. %b)) hadd -m stats %nk .badge. %b 1
inc %i2
}
; eski sil
hfree -w stats %ok*
}
inc %i
}
}
; ---------- ÇIKTI KOMUTLARI ----------
on *:TEXT:!ben:#:{ msg # $nick → kullan: !profil $nick — !istat $nick — !saatlik $nick — !top 10 — !kanal }
on *:TEXT:!istat*:#:{
if (!$(_cool($nick))) return
var %who = $iif($2,$2,$nick), %k = $(_key(%who))
var %L = $iif($hget(stats,%k .lines),$v1,0), %W = $iif($hget(stats,%k .words),$v1,0), %C = $iif($hget(stats,%k .chars),$v1,0)
var %first = $hget(stats,%k .first), %last = $hget(stats,%k .last)
var %avgw = $iif(%L,$round($calc(%W / %L),2),0), %avgc = $iif(%L,$round($calc(%C / %L),2),0)
var %seen = $iif(%last,$duration($calc($ctime - %last)) $+ önce, hiç kayıt yok)
msg # 📊 %who — Satır:%L | Kelime:%W | Karakter:%C | Ort/mesaj:%avgw kelime, %avgc karakter | Son görülme:%seen
}
on *:TEXT:!saatlik*:#:{
if (!$(_cool($nick))) return
var %who = $iif($2,$2,$nick), %k = $(_key(%who)), %h = 0, %max = 1
while (%h < 24) { var %hh = $right(0 $+ %h,2) | var %v = $iif($hget(stats,%k .hour. %hh),$v1,0) | if (%v > %max) %max = %v | inc %h }
msg # 🕒 %who için saatlik aktivite (00–23):
var %h2 = 0
while (%h2 < 24) {
var %hh2 = $right(0 $+ %h2,2), %val = $iif($hget(stats,%k .hour. %hh2),$v1,0)
msg # %hh2 $+ : $_bar(%val,%max) ( %val )
inc %h2
}
}
on *:TEXT:!profil*:#:{
if (!$(_cool($nick))) return
var %who = $iif($2,$2,$nick), %k = $(_key(%who))
var %L = $iif($hget(stats,%k .lines),$v1,0), %W = $iif($hget(stats,%k .words),$v1,0), %C = $iif($hget(stats,%k .chars),$v1,0)
var %lv = $(_level(%L)), %lvn = $(_levelname(%lv))
; en aktif saat
var %h = 0, %bestv = -1, %besth = 00
while (%h < 24) {
var %hh = $right(0 $+ %h,2), %v = $iif($hget(stats,%k .hour. %hh),$v1,0)
if (%v > %bestv) { %bestv = %v | %besth = %hh }
inc %h
}
; rozetler
var %rz
if ($hget(stats,%k .badge.bird)) %rz = %rz 🌼 MuhabbetKuşu
if ($hget(stats,%k .badge.master)) %rz = %rz 🏅 SohbetEfendisi
if ($hget(stats,%k .badge.legend)) %rz = %rz 🏆 Efsane
if ($hget(stats,%k .badge.nightowl))%rz = %rz 🌙 GeceBaykuşu
if ($hget(stats,%k .badge.early)) %rz = %rz ☀️ ErkenKuş
if (!%rz) %rz = (henüz rozet yok)
msg # 👤 PROFİL ► %who — Level: %lvn | Satır:%L | Kelime:%W | Karakter:%C | En aktif saat:%besth
; mini özet bar (4 saatlik bloklar)
var %blk = 0
while (%blk < 24) {
var %j = 0, %sum = 0
while (%j < 4) { var %hh = $right(0 $+ $calc(%blk + %j),2) | inc %sum $iif($hget(stats,%k .hour. %hh),$v1,0) | inc %j }
msg # $+ [ $right(0 $+ %blk,2) - $right(0 $+ $calc(%blk+3),2) $+ ] $_bar(%sum, $max(1,%bestv*2))
inc %blk 4
}
msg # 🎖 Rozetler: %rz
}
on *:TEXT:!rozet*:#:{
if (!$(_cool($nick))) return
var %who = $iif($2,$2,$nick), %k = $(_key(%who))
var %out = 🎖 $+ %who $+ 'in Rozetleri →
if ($hget(stats,%k .badge.bird)) %out = %out 🌼 Muhabbet Kuşu (100+ satır) |
if ($hget(stats,%k .badge.master)) %out = %out 🏅 Sohbet Efendisi (500+) |
if ($hget(stats,%k .badge.legend)) %out = %out 🏆 Efsane (1000+) |
if ($hget(stats,%k .badge.nightowl))%out = %out 🌙 Gece Baykuşu (00–06 baskın) |
if ($hget(stats,%k .badge.early)) %out = %out ☀️ Erken Kuş (06–10 baskın) |
if (%out == 🎖 $+ %who $+ 'in Rozetleri → ) %out = %out (Henüz rozet yok)
msg # %out
}
on *:TEXT:!top*:#:{
if (!$(_cool($nick))) return
var %n = $iif($2 isnum 1-50,$2,10), %i = 1, %names, %counts
while (%i <= $nick($chan,0)) {
var %who = $nick($chan,%i), %k = $(_key(%who)), %c = $iif($hget(stats,%k .lines),$v1,0)
var %pos = 1 | while (%pos <= $numtok(%counts,32)) { if (%c > $gettok(%counts,%pos,32)) break | inc %pos }
if (%pos > $numtok(%counts,32)) { %counts = %counts $+ %c | %names = %names $+ %who }
else { %counts = $instok(%counts,%c,%pos,32) | %names = $instok(%names,%who,%pos,32) }
if ($numtok(%counts,32) > %n) { %counts = $deltok(%counts,%n + 1,32) | %names = $deltok(%names,%n + 1,32) }
inc %i
}
var %j = 1, %out = 🏆 TOP $+ %n $+ — (satır)
while (%j <= $numtok(%names,32)) {
var %m = $iif(%j == 1,🥇,$iif(%j == 2,🥈,$iif(%j == 3,🥉,⭐)))
%out = %out $+ | %m $+ %j $+ . $gettok(%names,%j,32) ( $+ $gettok(%counts,%j,32) $+ )
if (%j % 5 == 0) { msg # %out | %out = }
inc %j
}
if (%out) msg # %out
}
on *:TEXT:!kanal:#:{
if (!$(_cool($nick))) return
; bugün ve tüm zamanlar
var %d = $(_nowdate), %today = $iif($hget(stats,#.day. $+ %d),$v1,0)
; pik saat (kanal geneli)
var %h = 0, %bestv = -1, %besth = 00
while (%h < 24) {
var %hh = $right(0 $+ %h,2), %sum = 0, %i = 1
while (%i <= $nick(#,0)) { var %k = $(_key($nick(#,%i))) | inc %sum $iif($hget(stats,%k .hour. %hh),$v1,0) | inc %i }
if (%sum > %bestv) { %bestv = %sum | %besth = %hh }
inc %h
}
msg # 🧭 Kanal Özeti → Bugün yazılan: %today | En yoğun saat: %besth (toplam %bestv satır)
}
; ---------- Reset (OP) ----------
on *:TEXT:!reset *:#:{
if (!$(_isop)) { notice $nick Bu komut yalnızca kanal OP’leri içindir. | return }
var %type = $lower($2)
if (%type == gun) {
hfree -w stats *.day.*
msg # ♻️ Günlük sayaçlar sıfırlandı.
}
elseif (%type == hafta) {
; basit yaklaşım: haftalık anahtarları aynı day.*’den sil
hfree -w stats *.day.*
msg # ♻️ Haftalık sayaçlar sıfırlandı. (Günlük anahtarlar temizlendi)
}
else msg # Kullanım: !reset gun | !reset hafta
}
; ---------- Yardımcı round ----------
alias round return $round($1,$2)
Level & Rozetler: Satır sayısına göre seviye; 5 farklı rozet (Muhabbet Kuşu, Sohbet Efendisi, Efsane, Gece Baykuşu, Erken Kuş).
Mini Bar Grafikleri: Saatlik dağılımda █
bloklarıyla görsel çıktı.
Anti-Flood: Komutlarda kişi başı 4 sn cooldown → spam yok.
Kanal Özeti: Bugün toplam mesaj ve en yoğun saat.
Eğlenceli Övgüler: Eşik geçince rastgele motive edici mesaj.
Gün/Hafta Reset (OP): !reset gun/hafta
.
Kullanıcıların toplam mesaj, kelime, karakter sayısını tutar.
En çok konuşanları (TOP liste) gösterir.
Saatlik grafiklerle sohbet yoğunluğunu görselleştirir.
Level ve rozet sistemi ile sohbeti oyunlaştırır.
Günlük / haftalık reset özelliği ile sıfırlanabilir.
Yeni geliştirilmiş paket ile sohbet yalnızca rakamlardan ibaret kalmaz, eğlenceli hale gelir:
🌱 Çaylak, 🙂 Sohbetçi, 🔥 Usta, 👑 Efsane gibi seviye rozetleri.
🌙 Gece Baykuşu, ☀️ Erken Kuş unvanları.
Eşik geçildiğinde otomatik çıkan rastgele övgü mesajları.
Kanala özel “Bugün en çok konuşulan saat” özeti.
Arkadaş grupları: Kim en çok mesaj atıyor, kim gececi kim gündüzcü öğrenmek için.
Sohbet siteleri: Kullanıcı bağlılığını artırmak ve eğlenceli bir ortam oluşturmak için.
Roleplay & oyun kanalları: İstatistikler ile görevler veya küçük turnuvalar düzenlemek için.
mIRC’te Alt+R ile Remote bölümünü açın.
İstatistik kodlarını yapıştırıp kaydedin.
Kanaldan !istat
, !top
, !saatlik
, !profil
gibi komutlarla deneyin.
Bu sayfanın içeriğini kopyalayamazsınız.HazanSohbet.com
Türkiye nin farklı şehirlerinden insanlarla sohbet odaları üzerinde bir araya gelerek, yeni arkadaşlar edin.