Top

!Top10 Script


mIRC Code
+ 0 likes
Please Register to submit score.
Bookmark and Share
Average Score  0.0 (of 0 scores)
Date Added  Oct 21, 2007
Last Updated  Oct 21, 2007
Tags  script  top10 

Introduction

Hello ..
This Is OnLy For BOt
Type !Top10 To See The Top 10 User Of Channel ;)
More Commands
!Top10
!ttop10
!tstats <nick>
!stats <nick>
!delstats <nick>
!clearstats <nick>



Grab the Code

; =========================================================
; AbbasBot IRC Bot 5.6
; Channel statistics
; $Id: chanstats.mrc,v 1.2 21.02.2007 8:34 Brax $
; Email <hassan_abbas_786@hotmail.com>
; Join Server DalNet And My Channel #PinoyBigBrothers For Help :)
; =======================================
 
 
/*
Commands:
!stats [nick] => Overall stats for $nick|$2 in $network@#Channel
!top10 => Overall top 10 chatters in $network@channel
!tstats [nick] => Today's stats about $nick|$2
!ttop10 => Today's top 10 chatters in $network@#Channel
!delstats <nick> => Removing statistics about $2 in $network@#Channel
!clearstats => Removing all statistics collected for $network@#Channel
*/
 
; Binding all channel text to the parsing routine
; NB! No more "on text" events
 
/*
Version history:
21.02.2007 v1.2 bugfix release. (Fixed output bug resulting top9 instead of top10)
*/
 
 
ON *:TEXT:*:#: {
  if %stats_module == On {
    IF ($1 == %c $+ top10) {
      IF (%stats_floodpro >= 3) {
        halt
      }
      inc -u30 %stats_floodpro 1
      msg $chan $maketop10($network $+ @ $+ $chan)
      unset %stats_top10_*
      window -c @top10source
    }
    IF ($1 == %c $+ ttop10) {
      IF (%stats_floodpro >= 3) {
        halt
      }
      inc -u30 %stats_floodpro 1
      msg $chan $maketodaytop10($network $+ @ $+ $chan)
      unset %stats_top10_*
      window -c @top10source
    }
    IF ($1 == %c $+ stats) {
      IF (%stats_floodpro >= 3) {
        halt
      }
      inc -u30 %stats_floodpro 1
      IF ($2) {
        msg $chan $getstats($network $+ @ $+ $chan $+ @ $+ $2)
      }
      IF (!$2) {
        msg $chan $getstats($network $+ @ $+ $chan $+ @ $+ $nick)
      }
    }
    IF ($1 == %c $+ tstats) {
      IF (%stats_floodpro >= 3) {
        halt
      }
      inc -u30 %stats_floodpro 1
      IF ($2) {
        msg $chan $gettodaystats($network $+ @ $+ $chan $+ @ $+ $2)
      }
      IF (!$2) {
        msg $chan $gettodaystats($network $+ @ $+ $chan $+ @ $+ $nick)
      }
    }
    IF ($1 == %c $+ delstats) && ($2) &&  ($level($address($nick,2)) == 500) {
      remove-stats-nick $network $+ @ $+ $chan $+ @ $+ $2
      .msg $chan Erasing entries for nick $2
    }
    IF ($1 == %c $+ clearstats) &&  ($level($address($nick,2)) == 500) {
      remove-stats-channel $network $+ @ $+ $chan
      .msg $chan Channelstats erased.
    }
    IF ($left($1,1) == %c) {
 
      hinc -m totalcommands $network $+ @ $+ $chan $+ @ $+ $nick 1
      hinc -m todaytotalcommands $network $+ @ $+ $chan $+ @ $+ $nick 1
    }
    hinc -m totalwords $network $+ @ $+ $chan $+ @ $+ $nick $numtok($1-,32)
    hinc -m totalletters $network $+ @ $+ $chan $+ @ $+ $nick $len($1-)
    hinc -m totallines $network $+ @ $+ $chan $+ @ $+ $nick 1
 
    hinc -m todaytotalwords $network $+ @ $+ $chan $+ @ $+ $nick $numtok($1-,32)
    hinc -m todaytotalletters $network $+ @ $+ $chan $+ @ $+ $nick $len($1-)
    hinc -m todaytotallines $network $+ @ $+ $chan $+ @ $+ $nick 1
  }
}
; Action counting
; Will add all used words in action to the total spoken words as well
 
ON *:ACTION:*:#: {
  if %stats_module == on {
    hinc -m totalactions $network $+ @ $+ $chan $+ @ $+ $nick 1
    hinc -m totalwords $network $+ @ $+ $chan $+ @ $+ $nick $numtok($1-,32)
    hinc -m totalletters $network $+ @ $+ $chan $+ @ $+ $nick $len($1-)
    ;--
    hinc -m todaytotalactions $network $+ @ $+ $chan $+ @ $+ $nick 1
    hinc -m todaytotalwords $network $+ @ $+ $chan $+ @ $+ $nick $numtok($1-,32)
    hinc -m todaytotalletters $network $+ @ $+ $chan $+ @ $+ $nick $len($1-)
  }
}
ALIAS statsave {
  hsave -i totalwords chanstats.dat totalwords
  hsave -i totalletters chanstats.dat totalletters
  hsave -i totalcommands chanstats.dat totalcommands
  hsave -i totalactions chanstats.dat totalactions
  hsave -i totallines chanstats.dat totallines
}
 
ALIAS todaystatclear {
  hfree -w todaytotal*
  hmake todaytotalwords 10
  hmake todaytotalletters 10
  hmake todaytotalcommands 10
  hmake todaytotalactions 10
  hmake todaytotallines 10
}
 
ALIAS statload {
  hmake totalwords 10
  hmake totalletters 10
  hmake totalcommands 10
  hmake totalactions 10
  hmake totallines 10
  hload -i totalwords chanstats.dat totalwords
  hload -i totalletters chanstats.dat totalletters
  hload -i totalcommands chanstats.dat totalcommands
  hload -i totalactions chanstats.dat totalactions
  hload -i totallines chanstats.dat totallines
}
 
alias clearstats {
  var %stats_clearconfirm = $input(Are you sure you want to completely clear the statistics database?,yvqd,Channelstats :: Dreambot 5.6)
  IF (%stats_clearconfirm == $yes) {
    hfree -sw total*
    hmake totalwords 10
    hmake totalletters 10
    hmake totalcommands 10
    hmake totalactions 10
    hmake totallines 10
    todaystatclear
  }
}
 
ALIAS remove-stats-nick {
  var %stats-remnick = $1 $+ *
  hdel -w totalwords %stats-remnick
  hdel -w totalletters %stats-remnick
  hdel -w totalcommands %stats-remnick
  hdel -w totalactions %stats-remnick
  hdel -w totallines %stats-remnick
  hdel -w todaytotalwords %stats-remnick
  hdel -w todaytotalletters %stats-remnick
  hdel -w todaytotalcommands %stats-remnick
  hdel -w todaytotalactions %stats-remnick
  hdel -w todaytotallines %stats-remnick
  statsave
}
 
ALIAS remove-stats-channel {
  var %stats-remchan = $1 $+ *
  hdel -w totalwords %stats-remchan
  hdel -w totalletters %stats-remchan
  hdel -w totalcommands %stats-remchan
  hdel -w totalactions %stats-remchan
  hdel -w totallines %stats-remchan
  hdel -w todaytotalwords %stats-remchan
  hdel -w todaytotalletters %stats-remchan
  hdel -w todaytotalcommands %stats-remchan
  hdel -w todaytotalactions %stats-remchan
  hdel -w todaytotallines %stats-remchan
  statsave
}
 
ALIAS getstats {
  IF ($hget(totalwords, $1) != $null) {
    IF ($hget(totalwords, $1) != $null) {
      var %t.words = $hget(totalwords, $1)
    }
    ELSE {
      var %t.words = 0
    }
    IF ($hget(totalletters, $1) != $null) {
      var %t.letters = $hget(totalletters, $1)
    }
    ELSE {
      var %t.letters = 0
    }
    IF ($hget(totalcommands, $1) != $null) {
      var %t.commands = $hget(totalcommands, $1)
    }
    ELSE {
      var %t.commands = 0
    }
    IF ($hget(totallines, $1) != $null) {
      var %t.lines = $hget(totallines, $1)
    }
    ELSE {
      var %t.lines = 0
    }
    IF ($hget(totalactions, $1)) {
      var %t.actions = $hget(totalactions, $1)
    }
    ELSE {
      var %t.actions = 0
    }
    return [ $+ $gettok($1,3,64) $+ ] Spoken words: %t.words ( $+ %t.letters letters) Commands used %t.commands $+ . %t.lines lines and %t.actions actions.
    halt
  }
  return I have no stats about $gettok($1,3,64)
  halt
}
 
ALIAS gettodaystats {
  IF ($hget(todaytotalwords, $1) != $null) {
    IF ($hget(todaytotalwords, $1) != $null) {
      var %t.words = $hget(todaytotalwords, $1)
    }
    ELSE {
      var %t.words = 0
    }
    IF ($hget(todaytotalletters, $1) != $null) {
      var %t.letters = $hget(todaytotalletters, $1)
    }
    ELSE {
      var %t.letters = 0
    }
    IF ($hget(todaytotalcommands, $1) != $null) {
      var %t.commands = $hget(todaytotalcommands, $1)
    }
    ELSE {
      var %t.commands = 0
    }
    IF ($hget(todaytotallines, $1) != $null) {
      var %t.lines = $hget(todaytotallines, $1)
    }
    ELSE {
      var %t.lines = 0
    }
    IF ($hget(todaytotalactions, $1)) {
      var %t.actions = $hget(todaytotalactions, $1)
    }
    ELSE {
      var %t.actions = 0
    }
    return [ $+ $gettok($1,3,64) $+ ] Spoken words today: %t.words ( $+ %t.letters letters) Commands used today %t.commands $+ . %t.lines lines and %t.actions actions.
    halt
  }
  return I have no stats about $gettok($1,3,64)
  halt
}
 
ALIAS maketop10 {
  ; Save the hash table into .dat
  ; I know that this will make answer delayed especially in bigger channels... but well.... i dont care.
  ; This is about the best way to ensure that we will get the most recent result and also to ensure that we have backup of the hashtables.
  statsave
  ; Loading total spoken words into window
  window -hk0n @top10source
  clear @top10source
  var %stats_findbegin = $read(chanstats.dat, s, [totalwords])
  var %stats_looppoint = $calc($readn + 1 )
  WHILE (!%stats_loophalt) {
    var %stats_putline = $read(chanstats.dat, %stats_looppoint)
    IF ($left(%stats_putline,1) != $chr(91)) && ($left(%stats_putline,$len($1)) == $1) {
      var %statscleanline = $gettok($read(chanstats.dat, %stats_looppoint),3,64)
      aline @top10source %statscleanline
    }
    ELSEIF ($left(%stats_putline,1) == $chr(91)) {
      var %stats_loophalt = true
    }
    inc %stats_looppoint
  }
  ; Filtering the window
  filter -cetuww 2 61 @top10source @top10source *
  ; Now lets read the first 10 lines and store it to variables (%stats_top10_xx)
  ; Thats it if we have 10 lines of course
  ; If we have less then we will output only existing numbers of lines.
  var %stats_loop10 = 1
  WHILE (!%statssecondloophalt) {
    IF ($line(@top10source, %stats_loop10)) {
      set -e %stats_top10_ [ $+ [ %stats_loop10 ] ] $gettok($line(@top10source, %stats_loop10),1,61) ( $+ $gettok($line(@top10source, %stats_loop10),2,61) $+ )
      inc %stats_loop10
    }
    IF (!$line(@top10source, %stats_loop10)) || (%stats_loop10 >= 11) {
      var %statssecondloophalt = true
    }
  }
  IF (%stats_loop10 != 12) {
    var %stats_loop10 = $calc(%stats_loop10 - 1)
  }
  return Top %stats_loop10 chatters by total spoken words: %stats_top10_1 %stats_top10_2 %stats_top10_3 %stats_top10_4 %stats_top10_5 %stats_top10_6 %stats_top10_7 %stats_top10_8 %stats_top10_9 %stats_top10_10
}
 
ALIAS maketodaytop10 {
  window -hk0n @top10source
  clear @top10source
  hsave -i todaytotalwords tempstats.dat totalwords
  var %stats_loopline = 1
  WHILE (%stats_loopline <= $lines(tempstats.dat)) {
    IF ($gettok($read(tempstats.dat,%stats_loopline),1,64) == $gettok($1,1,64)) && ($gettok($read(tempstats.dat,%stats_loopline),2,64) == $gettok($1,2,64)) {
      aline -p @top10source $gettok($read(tempstats.dat,%stats_loopline),3,64)
    }
    inc %stats_loopline
  }
  filter -cetuww 2 61 @top10source @top10source *
  var  %stats_loop10 = 1
  WHILE (!%statssecondloophalt) {
    IF ($line(@top10source, %stats_loop10)) {
      set -e %stats_top10_ [ $+ [ %stats_loop10 ] ] $gettok($line(@top10source, %stats_loop10),1,61) ( $+ $gettok($line(@top10source, %stats_loop10),2,61) $+ )
      inc  %stats_loop10
    }
    IF (!$line(@top10source, %stats_loop10)) || (%stats_loop10 >= 11) {
      var  %statssecondloophalt = true
    }
  }
  IF (%stats_loop10 != 12) {
    var %stats_loop10 = $calc(%stats_loop10 - 1)
  }
  .remove tempstats.dat
  return Todays top %stats_loop10 chatters by total spoken words: %stats_top10_1 %stats_top10_2 %stats_top10_3 %stats_top10_4 %stats_top10_5 %stats_top10_6 %stats_top10_7 %stats_top10_8 %stats_top10_9 %stats_top10_10
}
 
ON *:START: {
  statload
  if %stats_module == $null { set %stats_module on }
  timerresettodaystats 0:00 1 1 dailystatsflush
}
 
ON *:EXIT: {
  echo -a ::: Stats ::: Storing stats.
  statsave
}
 
ALIAS dailystatsflush {
  timerresettodaystats 0:00 dailystatsflush
  todaystatclear
  ;.amsg Resetting daily statistics
}

Comments

  (9)  RSS
Abbas
Comments: 15
 
mIRC Snippet:  !Top10 Script
Posted on Oct 21, 2007 6:41 am
Its Work Great
Thank You...
Noutrious
Comments: 365
 
mIRC Snippet:  !Top10 Script
Posted on Oct 21, 2007 10:07 am
Why are u thanking to yourself? :o
Anyway, the snippets fine.
Abbas
Comments: 15
 
mIRC Snippet:  !Top10 Script
Posted on Oct 21, 2007 11:12 am
lol NouTroues :D but how is script ?
Nick
Comments: 7
 
mIRC Snippet:  !Top10 Script
Posted on Oct 22, 2007 4:39 pm
O.o Ummm the snippet is fine but again from where did you copy it ?
lol NouTroues :D but how is script ? (make me think twice)?
Noutrious
Comments: 365
 
mIRC Snippet:  !Top10 Script
Posted on Oct 23, 2007 3:20 am
I would be glad if you could write my nick right.
P.S. I am starting to think that this is ripped, sorry.
Gummo
Comments: 153
 
mIRC Snippet:  !Top10 Script
Posted on Oct 23, 2007 3:25 am
The fact that Abbas felt the need to make a comment pretending to be someone giving a good comment is worrying..
DaNzO
Comments: 72
 
mIRC Snippet:  !Top10 Script
Posted on Jan 27, 2008 5:20 pm
Don't work
mr_president
Comments: 26
 
mIRC Snippet:  !Top10 Script
Posted on Jun 4, 2009 10:26 am
rofl,
Im starting to think it ripped to.
If it is you should at least include a url and tell us THAT YOU DID NOT SCRIPT IT.
VinX
Comments: 56
 
mIRC Snippet:  !Top10 Script
Posted on Oct 29, 2009 10:23 am
would really like an updated script :D

Commenting Options

Register or Login to Hawkee.com or use your Facebook or Twitter account by clicking the corresponding button below.

  
Bottom