aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / stats.mrc

stats.mrc — 6.9 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Stats
; *
; **********************************************************************/
;
; /scanmask [#channel|*] [mask]
alias scanmask {
  if ($_disconnected) { return }
  var %chan,%string,%tmp
  if ($1 == *) || ($_ischan($1)) { var %chan = $1,%string = $2 }
  elseif ($active ischan) { var %chan = $active,%string = $1 }
  else { var %chan = *,%string = $1 }
  if (%chan != *) {
    if (%chan !ischan) {
      error.a You are not in %chan
      return
    }
    if ($chan(%chan).ial != $true) {
      error.a IAL for %chan is not full yet... Please try again later.
      return
    }
  }
  var %tmp = Mask to scan in $iif(%chan == *,all channels,%chan),%tm = $_fixmask(%string)
  %string = $_parameter(%tm,1,Scan mask [/scanmask],1,%string,%tmp)
  if ($_fixmask(%string) == $null) {
    error.a Invalid mask to scan: %string
    return
  }
  var %mask = %string,%i = 1,%n = $ialchan(%mask,%chan,0),%len = $len(%n)
  if (%n == 0) {
    info.a No users matching $^'(%mask) in $iif(%chan == *,any channel,%chan)
    return
  }
  %:echo = echo.a $colour(info)
  ^boxbegin +l $null 40 Scanning $^'(%mask) in $iif(%chan == *,all channels,%chan)
  while (%i <= %n) {
    var %fulladdress = $ialchan(%mask,%chan,%i),%nick = $gettok(%fulladdress,1,33),%addy = $gettok(%fulladdress,2,33)
    echo.a $colour(info) $^boxitemstart %nick ( $+ %addy $+ ): $_comchansattr(%nick)
    inc %i
  }
  ^boxend +l $null 40 %n users found
  unset %:echo
}
;
alias ports {
  if ($_disconnected) { return }
  if ($isid) { return }
  .enable #_ports
  stats l $1
}
alias awayscan {
  if ($_disconnected) || ($isid) { return }
  %c.awayscan.c = $_parameter($iif($1,$1,#),1,Away scanner [/awayscan],ischan,$null,Channel:)
  .enable #_awayscan
  who %c.awayscan.c
}
alias ircopscan {
  if ($_disconnected) || ($isid) { return }
  %c.ircopscan.c = $_parameter($iif($1,$1,#),1,Ircop scanner [/ircopscan],ischan,$null,Channel:)
  .enable #_ircopscan
  who %c.ircopscan.c
}
alias chanstats {
  if ($_disconnected) || ($isid) { return }
  %c.chanstats.c = $_parameter($iif($1,$1,#),1,Channel stats [/chanstats],ischan,$null,Channel:)
  .enable #_chanstats
  who %c.chanstats.c
}
#_ports off
raw 211:*:{
  var %win = @__ports211,%port,%server
  if ($window(%win) == $null) || ($window(%win).title == $null) {
    close -@ %win
    window -hs %win
    titlebar %win $nick
  }
  %server = $window(%win).title
  if (%server != $nick) { halt }
  %port = $remove($gettok($2,$numtok($2,46),46),])
  if (%port !isnum) {
    if (*.dal.net iswm $nick) { %port = 7000 }
    else { %port = 6667 }
  }
  if (%port isnum) && (%server isin $2) { aline %win $_filleft(30,0,$calc($5 + $7)) %port $2- }
  halt
}
raw 219:*:{
  var %win = @__ports211,%server = $window(%win).title,%port,%bytes
  .disable #_ports
  if ($line(%win,0)) {
    %bytes = $round($gettok($line(%win,1),1,32),0)
    %port = $gettok($line(%win,1),2,32)
    info.a %server - $_nsingoplur($line(%win,0),port,ports) scanned, fastest port: %port $_bracket(%bytes)
  }
  else { error.a The server %server doesn't support /STATS l }
  close -@ %win
  halt
}
#_ports end
#_awayscan off
raw 352:*:{
  if ($2 == %c.awayscan.c) {
    if (G isin $7) {
      if (%c.awayscan.t == $null) {
        if ($me ison $2) { sline -r $2 }
        lecho.w $colour(info) $2 $^*** Scanning aways: $2
      }
      inc %c.awayscan.t
      echo.w $colour(info) $2 $^*** $6 $^p($_nospaces($3,@,$4))
      if ($6 ison $2) { sline -a $2 $6 }
    }
  }
  halt
}
raw 315:*:{
  if ($2 == %c.awayscan.c) {
    if (%c.awayscan.t == $null) {
      if ($me ison $2) { sline -r $2 }
      lecho.w $colour(info) $2 $^*** Scanning aways: $2
      echo.w $colour(info) $2 $^*** No aways found in $2
    }
    else { echo.w $colour(info) $2 $^*** $2 aways in %c.awayscan.t }
  }
  unset %c.awayscan.*
  .disable #_awayscan
  halt
}
#_awayscan end
#_ircopscan off
raw 352:*:{
  if ($2 == %c.ircopscan.c) {
    if (* isin $7) {
      if (%c.ircopscan.t == $null) {
        if ($me ison $2) { sline -r $2 }
        lecho.w $colour(info) $2 $^*** Ircop scanner: $2
      }
      inc %c.ircopscan.t
      echo.w $colour(info) $2 $^*** $6 $^p($_nospaces($3,@,$4))
      if ($6 ison $2) { sline -a $2 $6 }
    }
  }
  halt
}
raw 315:*:{
  if ($2 == %c.ircopscan.c) {
    if (%c.ircopscan.t == $null) {
      if ($me ison $2) { sline -r $2 }
      lecho.w $colour(info) $2 $^*** Ircop scanner: $2
      echo.w $colour(info) $2 $^*** No ircops found in $2
    }
    else { echo.w $colour(info) $2 $^*** $2 ircops %c.ircopscan.t }
  }
  unset %c.ircopscan.*
  .disable #_ircopscan
  halt
}
#_ircopscan end
#_chanstats off
raw 352:*:{
  if ($2 == %c.chanstats.c) {
    inc %c.chanstats.t
    %c.chanstats.sv = $addtok(%c.chanstats.sv,$5,32)
    set %c.chanstats.sv. [ $+ [ $5 ] ] %c.chanstats.sv. [ $+ [ $5 ] ] $6
    inc %c.chanstats.nm. [ $+ [ $5 ] ]
    set %c.chanstats.hp. [ $+ [ $5 ] ] $8
    inc %c.chanstats.hp $8
    if (* isin $7) {
      inc %c.chanstats.ic
      %c.chanstats.icns = $addtok(%c.chanstats.icns,$6,32)
    }
    if (G isin $7) { inc %c.chanstats.aw }
    if (H isin $7) { inc %c.chanstats.aq }
    if (% isin $7) { inc %c.chanstats.iv }
  }
  halt
}
raw 315:*:{
  if ($2 == %c.chanstats.c) {
    if (%c.chanstats.t == $null) { echo.w $colour(info) $2 $^*** No users found to generate stats on $2 }
    else {
      %:echo = echo.w $colour(info) $2
      ^boxbegin +l $null 40 Stats for %c.chanstats.c
      _loop c.chanstats.cl,c.chanstats.op,c.chanstats.vo,c.chanstats.nm,c.chanstats.cl,c.chanstats.aw,c.chanstats.aq,c.chanstats.ic,c.chanstats.iv _varnull2zero 
      %c.chanstats.x = 0 0
      %c.chanstats.1 = 1
      while ($gettok(%c.chanstats.sv,%c.chanstats.1,32)) {
        if ($_evaluate($_nospaces(%,c.chanstats.nm.,$ifmatch)) > $gettok(%c.chanstats.x,2,32)) { %c.chanstats.x = $gettok(%c.chanstats.sv,%c.chanstats.1,32) $ifmatch }
        inc %c.chanstats.1
      }
      var %echo = echo.w $colour(info) $2 $^boxitemstart
      %echo Users: %c.chanstats.t
      %echo Aways: %c.chanstats.aw $^p($_percent(%c.chanstats.aw,%c.chanstats.t,2))
      %echo Here: %c.chanstats.aq $^p($_percent(%c.chanstats.aq,%c.chanstats.t,2))
      %echo Ircops: %c.chanstats.ic $_bracket(%c.chanstats.icns) $^p($_percent(%c.chanstats.ic,%c.chanstats.t,2))
      %echo Invisibles: %c.chanstats.iv $^p($_percent(%c.chanstats.iv,%c.chanstats.t,2))
      %echo Hops: $round($calc(%c.chanstats.hp / %c.chanstats.t),2) average in $_nsingoplur($numtok(%c.chanstats.sv,32),server,servers)
      %echo Most used server: $gettok(%c.chanstats.x,1,32) $_bracket($_nsingoplur($gettok(%c.chanstats.x,2,32),user,users)) $^p($_percent($gettok(%c.chanstats.x,2,32),%c.chanstats.t,2))
      ^boxend + $null 40
    }
  }
  unset %c.chanstats.*
  .disable #_chanstats
  halt
}
#_chanstats end