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