Üst Alt
  • Cevap yazabilmek için lütfen kayıt olun ya da giriş yapın. Foruma giriş yaparak veya kayıt olarak tüm özelliklere erişebilirsiniz.

Çözüldü Oper/admin takip hk

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Merhaba sunucudaki Oper/Admin takip kodu gerekiyor yardımcı olurmusunuz.

Pazartesi, salı vs vs vs tarih,saat,süre vs vs gibi şimdiden tsk ederim
Kendiniz mi takip edeceksiniz, bot üzerinden mi takip edeceksiniz?
 
Şunu bir deneyin;

Kod:
; --- Ayarlar Bölümü ---
alias -l log_kanal { return #OperTakip }
; ----------------------

on *:rawmode:#:{
  ; Bir kullanıcı +o (Oper) modu aldığında (Giriş)
  if ($1 == +o) {
    var %nick = $2
    set -u30000 %oper_giris. [ $+ [ %nick ] ] $ctime
    msg $log_kanal() 03[GİRİŞ] %nick Sunucuda Oper/Admin görevine başladı. Tarih: $asd($ctime)
  }
  ; Bir kullanıcı -o (Oper) modu verdiğinde/bıraktığında
  if ($1 == -o) {
    var %nick = $2
    if (%oper_giris. [ $+ [ %nick ] ]) {
      var %sure = $duration($calc($ctime - %oper_giris. [ $+ [ %nick ] ]))
      msg $log_kanal() 04[ÇIKIŞ] %nick Oper/Admin görevini bıraktı. Görev Süresi: %sure - Tarih: $asd($ctime)
      unset %oper_giris. [ $+ [ %nick ] ]
    }
  }
}

; Kullanıcı sunucudan çıktığında (Quit) veya Deconnect olduğunda takip
on *:quit:{
  if (%oper_giris. [ $+ [ $nick ] ]) {
    var %sure = $duration($calc($ctime - %oper_giris. [ $+ [ $nick ] ]))
    msg $log_kanal() 04[QUIT] $nick Sunucudan ayrıldı (Quit). Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %oper_giris. [ $+ [ $nick ] ]
  }
}

; Kullanıcı kanaldan çıktığında (Part) takip
on *:part:#:{
  if (%oper_giris. [ $+ [ $nick ] ]) {
    ; İsteğe bağlı: Sadece genel takibi quit üzerinden yapmak daha sağlıklıdır
    ; ama oper kanaldan çıkarsa da süre sıfırlansın isterseniz burası tetiklenebilir.
  }
}

; Gün, Tarih, Saat ve Süre formatlama fonksiyonu
alias -l asd {
  ; Örnek çıktı: Pazartesi - 02/06/2026 - 19:00:00
  return $günbul($asctime($1,dddd)) - $asctime($1,dd/mm/yyyy - HH:nn:ss)
}

; İngilizce gün isimlerini Türkçe'ye çevirir
alias -l günbul {
  if ($1 == Monday) { return Pazartesi }
  if ($1 == Tuesday) { return Salı }
  if ($1 == Wednesday) { return Çarşamba }
  if ($1 == Thursday) { return Perşembe }
  if ($1 == Friday) { return Cuma }
  if ($1 == Saturday) { return Cumartesi }
  if ($1 == Sunday) { return Pazar }
  return $1
}

Kodun en üstünde bulunan #OperTakip kısmını, raporların hangi kanala yansıtılmasını istiyorsanız ona göre değiştirebilirsiniz (Örn: #Opers, #Admin vb.).
 
Kendim takip edeceğim mirc üzerinden

Kod:
on *:rawmode:#:{
  ; Bir kullanıcı +o (Oper) modu aldığında (Giriş)
  if ($1 == +o) {
    var %nick = $2
    set -u30000 %oper_giris. [ $+ [ %nick ] ] $ctime
    .optakip_yaz 03[GİRİŞ] %nick Sunucuda Oper/Admin görevine başladı. Tarih: $asd($ctime)
  }
  ; Bir kullanıcı -o (Oper) modu verdiğinde/bıraktığında
  if ($1 == -o) {
    var %nick = $2
    if (%oper_giris. [ $+ [ %nick ] ]) {
      var %sure = $sure_cevir($calc($ctime - %oper_giris. [ $+ [ %nick ] ]))
      .optakip_yaz 04[ÇIKIŞ] %nick Oper/Admin görevini bıraktı. Görev Süresi: %sure - Tarih: $asd($ctime)
      unset %oper_giris. [ $+ [ %nick ] ]
    }
  }
}

; Kullanıcı sunucudan çıktığında (Quit) takip
on *:quit:{
  if (%oper_giris. [ $+ [ $nick ] ]) {
    var %sure = $sure_cevir($calc($ctime - %oper_giris. [ $+ [ $nick ] ]))
    .optakip_yaz 04[QUIT] $nick Sunucudan ayrıldı. Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %oper_giris. [ $+ [ $nick ] ]
  }
}

; Özel Pencereye Yazdırma Fonksiyonu
alias -l optakip_yaz {
  ; @OperTakip adında özel pencere yoksa açar
  if (!$window(@OperTakip)) { window -e @OperTakip }
  echo -t @OperTakip $1-
}

; Gün, Tarih ve Saat Formatı
alias -l asd {
  return $günbul($asctime($1,dddd)) - $asctime($1,dd/mm/yyyy - HH:nn:ss)
}

; İngilizce gün isimlerini Türkçe'ye çevirir
alias -l günbul {
  if ($1 == Monday) { return Pazartesi }
  if ($1 == Tuesday) { return Salı }
  if ($1 == Wednesday) { return Çarşamba }
  if ($1 == Thursday) { return Perşembe }
  if ($1 == Friday) { return Cuma }
  if ($1 == Saturday) { return Cumartesi }
  if ($1 == Sunday) { return Pazar }
  return $1
}

; Süre çıktısını Türkçe yapar (Örn: 1 saat 15 dakika 20 saniye)
alias -l sure_cevir {
  var %s = $1
  var %h = $floor($calc(%s / 3600))
  var %m = $floor($calc(($calc(%s % 3600)) / 60))
  var %sec = $calc(%s % 60)
  var %res = ""
  if (%h > 0) { var %res = %res %h saat }
  if (%m > 0) { var %res = %res %m dakika }
  if (%sec > 0) { var %res = %res %sec saniye }
  return %res
}

(@OperTakip): Sunucuda bir oper giriş veya çıkış yaptığında, mIRC'inizde otomatik olarak sol/sağ taraftaki pencere listesine @OperTakip adında gizli bir pencere açılır ve loglar buraya akar. Kanallara veya ortak alanlara hiçbir şey yansımaz.
 
tum userleri gosteriyor
Kod:
on ^*:snotice:*:{
  ; Sunucuda birisi /oper yetkisi aldığında veya oper olarak giriş yaptığında
  if (*is now an IRC Operator* iswm $1-) || (*has opered as* iswm $1-) {
    var %nick = $regml(optakip,1)
    ; Snotice içeriğinden nicki cımbızla çekelim
    if ($regex($1-,/(\S+)\s+(is now an IRC|has opered)/i)) {
      var %n = $regml(1)
      set -u30000 %gercek_oper. [ $+ [ %n ] ] $ctime
      .optakip_yaz 03[OPER GİRİŞ] %n şu anda sunucu yetkisini (OPER/ADMIN) aktif etti. Tarih: $asd($ctime)
    }
  }
}

; Kullanıcı sunucudan çıktığında (Quit) veya Deoper olduğunda süre hesaplama
on *:quit:{
  if (%gercek_oper. [ $+ [ $nick ] ]) {
    var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ $nick ] ]))
    .optakip_yaz 04[OPER ÇIKIŞ/QUIT] $nick Sunucudan ayrıldı veya yetkiyi kapattı. Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %gercek_oper. [ $+ [ $nick ] ]
  }
}

; Eğer kullanıcı sunucudan çıkmadan /deoper olduysa (Mod değişikliği takibi)
on *:rawmode:#:{
  ; Bu kısım sadece halihazırda gerçek oper olarak kaydettiğimiz kişi yetkisini kaybederse tetiklenir
  if ($1 == -o) && (%gercek_oper. [ $+ [ $2 ] ]) {
    var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ $2 ] ]))
    .optakip_yaz 04[OPER DEOPER] $2 Oper yetkisini bıraktı. Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %gercek_oper. [ $+ [ $2 ] ]
  }
}

; --- YARDIMCI FONKSİYONLAR (Pencere, Saat, Dil Çeviri) ---

alias -l optakip_yaz {
  if (!$window(@OperTakip)) { window -e @OperTakip }
  echo -t @OperTakip $1-
}

alias -l asd {
  return $günbul($asctime($1,dddd)) - $asctime($1,dd/mm/yyyy - HH:nn:ss)
}

alias -l günbul {
  if ($1 == Monday) { return Pazartesi }
  if ($1 == Tuesday) { return Salı }
  if ($1 == Wednesday) { return Çarşamba }
  if ($1 == Thursday) { return Perşembe }
  if ($1 == Friday) { return Cuma }
  if ($1 == Saturday) { return Cumartesi }
  if ($1 == Sunday) { return Pazar }
  return $1
}

alias -l sure_cevir {
  var %s = $1
  var %h = $floor($calc(%s / 3600))
  var %m = $floor($calc(($calc(%s % 3600)) / 60))
  var %sec = $calc(%s % 60)
  var %res = ""
  if (%h > 0) { var %res = %res %h saat }
  if (%m > 0) { var %res = %res %m dakika }
  if (%sec > 0) { var %res = %res %sec saniye }
  return %res
}

Bunu denermisin? ben de test edeyim.
 
Konu Sahibi
Kod:
on ^*:snotice:*:{
  ; Sunucuda birisi /oper yetkisi aldığında veya oper olarak giriş yaptığında
  if (*is now an IRC Operator* iswm $1-) || (*has opered as* iswm $1-) {
    var %nick = $regml(optakip,1)
    ; Snotice içeriğinden nicki cımbızla çekelim
    if ($regex($1-,/(\S+)\s+(is now an IRC|has opered)/i)) {
      var %n = $regml(1)
      set -u30000 %gercek_oper. [ $+ [ %n ] ] $ctime
      .optakip_yaz 03[OPER GİRİŞ] %n şu anda sunucu yetkisini (OPER/ADMIN) aktif etti. Tarih: $asd($ctime)
    }
  }
}

; Kullanıcı sunucudan çıktığında (Quit) veya Deoper olduğunda süre hesaplama
on *:quit:{
  if (%gercek_oper. [ $+ [ $nick ] ]) {
    var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ $nick ] ]))
    .optakip_yaz 04[OPER ÇIKIŞ/QUIT] $nick Sunucudan ayrıldı veya yetkiyi kapattı. Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %gercek_oper. [ $+ [ $nick ] ]
  }
}

; Eğer kullanıcı sunucudan çıkmadan /deoper olduysa (Mod değişikliği takibi)
on *:rawmode:#:{
  ; Bu kısım sadece halihazırda gerçek oper olarak kaydettiğimiz kişi yetkisini kaybederse tetiklenir
  if ($1 == -o) && (%gercek_oper. [ $+ [ $2 ] ]) {
    var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ $2 ] ]))
    .optakip_yaz 04[OPER DEOPER] $2 Oper yetkisini bıraktı. Aktif Süresi: %sure - Tarih: $asd($ctime)
    unset %gercek_oper. [ $+ [ $2 ] ]
  }
}

; --- YARDIMCI FONKSİYONLAR (Pencere, Saat, Dil Çeviri) ---

alias -l optakip_yaz {
  if (!$window(@OperTakip)) { window -e @OperTakip }
  echo -t @OperTakip $1-
}

alias -l asd {
  return $günbul($asctime($1,dddd)) - $asctime($1,dd/mm/yyyy - HH:nn:ss)
}

alias -l günbul {
  if ($1 == Monday) { return Pazartesi }
  if ($1 == Tuesday) { return Salı }
  if ($1 == Wednesday) { return Çarşamba }
  if ($1 == Thursday) { return Perşembe }
  if ($1 == Friday) { return Cuma }
  if ($1 == Saturday) { return Cumartesi }
  if ($1 == Sunday) { return Pazar }
  return $1
}

alias -l sure_cevir {
  var %s = $1
  var %h = $floor($calc(%s / 3600))
  var %m = $floor($calc(($calc(%s % 3600)) / 60))
  var %sec = $calc(%s % 60)
  var %res = ""
  if (%h > 0) { var %res = %res %h saat }
  if (%m > 0) { var %res = %res %m dakika }
  if (%sec > 0) { var %res = %res %sec saniye }
  return %res
}

Bunu denermisin? ben de test edeyim.
Bunda @opertakip sayfa açtı giris gösterdi çıkış yok
 
  • Beğen
Tepkiler: DT
Bunda @opertakip sayfa açtı giris gösterdi çıkış yok

Kod:
on ^*:snotice:*:{
  ; GERÇEK OPER GİRİŞ TAKİBİ
  ; Sunucu formatına göre "is now an IRC Operator" veya "has opered as" mesajlarını yakalar
  if (*is now an IRC Operator* iswm $1-) || (*has opered as* iswm $1-) {
    if ($regex($1-,/(\S+)\s+(is now an IRC|has opered)/i)) {
      var %n = $regml(1)
      ; Eğer nick başında @, +, . gibi karakterler varsa temizle
      var %n = $regsubex(%n,/[+@.~&%]/g,)
      
      set %gercek_oper. [ $+ [ %n ] ] $ctime
      .optakip_yaz 03[OPER GİRİŞ] %n şu anda sunucu yetkisini (OPER/ADMIN) aktif etti. Tarih: $asd($ctime)
    }
  }

  ; GERÇEK OPER ÇIKIŞ TAKİBİ (Snotice üzerinden Quit/Signoff)
  ; Sunucudan çıkan operların snotice üzerindeki çıkış mesajını yakalar
  if (*Client exiting:* iswm $1-) || (*Signoff:* iswm $1-) {
    if ($regex($1-,/Client exiting:\s+(\S+)/i)) || ($regex($1-,/Signoff:\s+(\S+)/i)) {
      var %n = $regml(1)
      var %n = $regsubex(%n,/[+@.~&%]/g,)
      
      ; Eğer bu nick daha önce giriş yapmış bir oper ise
      if (%gercek_oper. [ $+ [ %n ] ]) {
        var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ %n ] ]))
        .optakip_yaz 04[OPER ÇIKIŞ] %n Sunucudan ayrıldı (Quit/Signoff). Aktif Süresi: %sure - Tarih: $asd($ctime)
        unset %gercek_oper. [ $+ [ %n ] ]
      }
    }
  }
}

; Alternatif Deoper Takibi (Kullanıcı quit çekmeden /deoper olursa)
on *:rawmode:#:{
  if ($1 == -o) {
    var %n = $2
    if (%gercek_oper. [ $+ [ %n ] ]) {
      var %sure = $sure_cevir($calc($ctime - %gercek_oper. [ $+ [ %n ] ]))
      .optakip_yaz 04[OPER DEOPER] %n Yetkisini elinden aldı veya deoper oldu. Aktif Süresi: %sure - Tarih: $asd($ctime)
      unset %gercek_oper. [ $+ [ %n ] ]
    }
  }
}

; --- YARDIMCI FONKSİYONLAR ---

alias -l optakip_yaz {
  if (!$window(@OperTakip)) { window -e @OperTakip }
  echo -t @OperTakip $1-
}

alias -l asd {
  return $günbul($asctime($1,dddd)) - $asctime($1,dd/mm/yyyy - HH:nn:ss)
}

alias -l günbul {
  if ($1 == Monday) { return Pazartesi }
  if ($1 == Tuesday) { return Salı }
  if ($1 == Wednesday) { return Çarşamba }
  if ($1 == Thursday) { return Perşembe }
  if ($1 == Friday) { return Cuma }
  if ($1 == Saturday) { return Cumartesi }
  if ($1 == Sunday) { return Pazar }
  return $1
}

alias -l sure_cevir {
  var %s = $1
  var %h = $floor($calc(%s / 3600))
  var %m = $floor($calc(($calc(%s % 3600)) / 60))
  var %sec = $calc(%s % 60)
  var %res = ""
  if (%h > 0) { var %res = %res %h saat }
  if (%m > 0) { var %res = %res %m dakika }
  if (%sec > 0) { var %res = %res %sec saniye }
  return %res
}

Bunu eklermisin, giriş ve çıkış denedim çalışıyor.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı kanunun 8. maddesi ve T.C.K'nın 125. maddesine göre; ircforumlari.gen.tr olan forum sitemize eklenen içeriklerden, içeriği ekleyen kullanıcı sorumludur. Kullanıcı bazlı herhangi bir telif hakkından ircforumlari.gen.tr sitesi ve site yetkilileri sorumlu değildir. Telif hakkı kapsamında bulunan içerikler ile ilgili hukuksal bildirimleriniz için buradan iletişime geçebilirsiniz. ircforumlari.gen.tr yönetimi size en geç 48 saat içerisinde dönüş yapacaktır.
Geri