With this snippet you can track user's kick/ban activities on channels. You can choose witch nicks/channels you want to track (or not (Except)).
Syn.:
!stats nick channel
or
!stats nick
for nick's stats on every channel.
I guess I could do the same thing for voices/devoices, ops/deops, hops/dehops, words, lines etc, if you wish. :p
dialog kbstats {
title "• Kick/ban stats settup. •"
size -1 -1 283 110
option dbu
box "Channels:", 1, 7 8 86 96
list 2, 16 28 68 51, size
edit "", 3, 16 17 38 10, autohs
button "+", 4, 56 17 13 10
button "-", 5, 71 17 13 10
radio "Only for listed channels.", 6, 16 81 70 10, group
radio "Except listed channels.", 7, 16 91 67 10
box "Nicks:", 8, 98 8 86 96
list 9, 106 28 68 51, size
edit "", 10, 106 17 38 10, autohs
button "+", 11, 146 17 13 10
button "-", 12, 161 17 13 10
radio "Only for listed nicks.", 13, 106 81 64 10, group
radio "Except listed nicks.", 14, 106 91 68 10
box "Delete:", 16, 190 8 86 78
text "Channel:", 17, 195 21 24 8
edit "", 18, 195 29 42 10, autohs
button "Delete?", 19, 239 29 32 10
text "Nick:", 20, 195 45 25 8
edit "", 21, 195 53 42 10, autohs
button "Delete?", 22, 239 53 32 10
button "Delete all stats?", 23, 210 68 43 12
button "Ok/close.", 24, 190 90 86 12, ok
}
alias kbstats { dialog $iif(!$dialog(kbstats),-m,-v) kbstats kbstats }
on *:dialog:kbstats:*:*:{
if ($devent == sclick) {
if ($did == 19) {
if ($did(18) != $null) && ($chr(32) !isin $did(18)) && ($+($chr(35),*) iswm $did(18)) {
hdel -w stats $+(*.,$did(18)) | var %chn $did(18) | did -r $dname 18
noop $input(Stats for %chn successfully deleted.,oi,Done.)
}
}
if ($did == 22) {
if ($did(21) != $null) && ($chr(32) !isin $did(21)) {
hdel -w stats $+($did(21),.*) | var %nks $did(21) | did -r $dname 21
noop $input(Stats for %nks successfully deleted.,oi,Done.)
}
}
if ($did == 23) { hdel -w stats * | noop $input(All stats successfully deleted.,oi,Done.) }
if ($did == 4) {
if ($did(3) != $null) && ($chr(32) !isin $did(3)) && ($+($chr(35),*) iswm $did(3)) && (!$istok($hget(statset,channels),$did(3),32)) {
hadd statset channels $addtok($hget(statset,channels),$did(3),32)
did -a $dname 2 $did(3)
did -r $dname 3
}
}
if ($did == 5) {
if ($did(2).seltext != $null) {
hadd statset channels $remtok($hget(statset,channels),$did(2).seltext,32))
did -d $dname 2 $did(2).sel
}
}
if ($did == 11) {
if ($did(10) != $null) && ($chr(32) !isin $did(10)) && (!$istok($hget(statset,nicks),$did(10),32)) {
hadd statset nicks $addtok($hget(statset,nicks),$did(10),32)
did -a $dname 9 $did(10)
did -r $dname 10
}
}
if ($did == 12) {
if ($did(9).seltext != $null) {
hadd statset nicks $remtok($hget(statset,nicks),$did(9).seltext,32))
did -d $dname 9 $did(9).sel
}
}
if ($did == 24) { hsave statset statset.hsh | hsave stats stats.hsh }
if ($did == 6) { hadd statset chs only }
if ($did == 7) { hadd statset chs except }
if ($did == 13) { hadd statset nks only }
if ($did == 14) { hadd statset nks except }
}
if ($devent == init) {
$iif($hget(statset,chs) == only,did -c $dname 6,did -c $dname 7)
$iif($hget(statset,nks) == only,did -c $dname 13,did -c $dname 14)
didtok $dname 2 32 $hget(statset,channels)
didtok $dname 9 32 $hget(statset,nicks)
}
}
on *:start:{
$iif(!$hget(stats),hmake stats 500)
$iif(!$exists(stats.hsh),hsave stats stats.hsh)
$iif(!$hget(statset),hmake statset 100)
$iif(!$exists(statset.hsh),hsave statset statset.hsh)
hload stats stats.hsh
hload statset statset.hsh
}
on *:kick:#:{
if ($kbcheck != false) {
if (!$hget(stats,$+($nick,.,$chan))) {
hadd stats $+($nick,.,$chan) 1 0 $date(dd/mm/yyyy)
}
else {
var %blah $gettok($hget(stats,$+($nick,.,$chan)),1,32)
hadd stats $+($nick,.,$chan) $puttok($hget(stats,$+($nick,.,$chan)),$calc(%blah + 1),1,32)
}
hsave stats stats.hsh
}
}
on *:ban:#:{
if ($kbcheck != false) {
if (!$hget(stats,$+($nick,.,$chan))) {
hadd stats $+($nick,.,$chan) 0 1 $date(dd/mm/yyyy)
}
else {
var %blah $gettok($hget(stats,$+($nick,.,$chan)),2,32)
hadd stats $+($nick,.,$chan) $puttok($hget(stats,$+($nick,.,$chan)),$calc(%blah + 1),2,32)
}
hsave stats stats.hsh
}
}
alias -l kbcheck {
$iif($hget(statset,chs) == only && !$istok($hget(statset,channels),$chan,32),goto false)
$iif($hget(statset,chs) == except && $istok($hget(statset,channels),$chan,32),goto false)
$iif($hget(statset,nks) == only && !$istok($hget(statset,nicks),$nick,32),goto false)
$iif($hget(statset,nks) == except && $istok($hget(statset,nicks),$nick,32),goto false)
goto end
:false
return false
:end
}
on *:load:{
$iif(!$hget(stats),hmake stats 500)
$iif(!$exists(stats.hsh),hsave stats stats.hsh)
$iif(!$hget(statset),hmake statset 100)
$iif(!$exists(statset.hsh),hsave statset statset.hsh)
hload stats stats.hsh
hload statset statset.hsh
hadd statset channels #Help
hadd statset nicks ChanServ
hadd statset chs except
hadd statset nks except
}
menu menubar {
-
• Kick/ban stats. •:kbstats
-
}
on *:text:!stats *:#:{
if ($3) {
if (!$hget(stats,$+($2,.,$3))) {
msg # • No available kick/ban stats for $+(,$2,) on $+(,$3,.)
}
else {
msg # • $+(,$2,'s) activity since $+(,$gettok($hget(stats,$+($2,.,$3)),3,32),) on $+(,$3,:)
msg # • Kick(s): $+(,$gettok($hget(stats,$+($2,.,$3)),1,32),) • Ban(s): $+(,$gettok($hget(stats,$+($2,.,$3)),2,32),.)
}
}
if ($2 && !$3) {
var %brm 1 , %brmz1 0 , %brmz2 0
while (%brm <= $hget(stats,0).item) {
if ($+($2,.*) iswm $hget(stats,%brm).item) {
var %brmz = $addtok(%brmz,$remove($hget(stats,%brm).item,$+($2,.)) • Kick(s): $gettok($hget(stats,%brm).data,1,32) • Ban(s): $gettok($hget(stats,%brm).data,2,32),44)
}
inc %brm
}
msg # • $+(,$2,'s) kick/ban stats:
var %smor 1
while (%smor <= $numtok(%brmz,44)) {
msg # • $gettok(%brmz,%smor,44)
inc %brmz1 $gettok($gettok(%brmz,%smor,44),4,32)
inc %brmz2 $gettok($gettok(%brmz,%smor,44),7,32)
inc %smor
}
msg # •--------------------------•
msg # • Total kick(s): %brmz1 • Ban(s): %brmz2
}
}