egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Adding nick and date to peak script

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
starpossen
Op


Joined: 10 Jan 2006
Posts: 139

PostPosted: Wed Dec 27, 2006 4:34 am    Post subject: Adding nick and date to peak script Reply with quote

I got this script from a friend, not much info as I know you recommend to contact the author of the script.
But I was hoping if someone could help adding date and nick to this, meaning when peak has a new record it will state nick and date
Current output when using the peak command is:
Channel Peak Record: 98 (27 minutes ago).

this is the script:
Code:

### Description:
# Keeps up with the peak number of people in the
# channel and announces it when a new record is set.

### Usage:
# To enable peak tracking for a channel:
#   .chanset #channel +peak
# There's also a !peak public command.

# Note:
# This is an old script of mine, I only make bugfixes to it nowadays.
# Do not ask for feature requests.

### History:
# 1.8 - Fixed a bug.
# 1.7 - Fixed a bug relating to the case of the channel name.
# 1.6 - Added support for a +peak chanset. To enable, type: .chanset #channel +peak
#     - No longer counts bots.
# 1.5 - Oh no! The peak.*.txt files got reset when you restarted the bot..
#     - Also the thinger that's sposta clean-up unused peak.*.txt's was deleting used ones.
# 1.4 - Minor changes.
# 1.3 - Now loads peak data from file on demand (if it's not already in memory).
# 1.2 - Now uses a file to store peak data.
#     - Added !peak public command.
#     - Now says how long ago the last record was set.
#     - Removed mIRC colors. =P
# 1.1 - uhmmmmm...
# 1.0 - Released.


### Begin Script:
setudef flag peak

bind join - * join:peak
proc join:peak {nick host hand chan} {
   if {(([lsearch -exact [channel info $chan] {+peak}] != -1) && ([set curnum [llength [chanlist $chan -b]]] > [set lastmax [lindex [set peak [getpeak $chan]] 0]]))} {
      puthelp "PRIVMSG $chan :New channel user peak! ($curnum)  Last peak was [timeago [lindex $peak 1]] ago."
      setpeak $chan $curnum [clock seconds]
   }
}

# Loads the peak data from file if it's not already in memory and returns the data:
proc getpeak {chan} { global peak
   if {[info exists peak([set chan [string tolower $chan]])]} {
      set peak($chan)
   } elseif {[file readable "peak.$chan.txt"]} {
      if {[gets [set fid [open "peak.$chan.txt" {RDONLY}]] peak($chan)] < 9} { set peak($chan) [list 0 [clock seconds]] }
      close $fid
      set peak($chan)
   } else {
      set peak($chan) [list [llength [chanlist $chan -b]] [clock seconds]]
   }
}

# Sets peak data to file:
proc setpeak {chan curnum unixtime} { global peak
   set chan [string tolower $chan]
   puts [set fid [open "peak.$chan.txt" {WRONLY CREAT}]] [set peak($chan) [list $curnum $unixtime]]
   close $fid
}

# Provides the !peak public command:
bind pub fomn|fomn -peak pub:peak
proc pub:peak {nick host hand chan arg} {
   if {[lsearch -exact [channel info $chan] {+peak}] != -1} {
      puthelp "PRIVMSG $chan :Channel Peak Record: [lindex [set peak [getpeak $chan]] 0] ([timeago [lindex $peak 1]] ago)."
   } elseif {[matchattr $hand n|n $chan]} { channel set $chan +peak
      puthelp "PRIVMSG $chan :Peak is now enabled for this channel.  To disable again, use: .chanset $chan -peak"
      savechannels
   }
   return 1
}


proc timeago {lasttime} {
   set totalyear [expr [clock seconds] - $lasttime]
   if {$totalyear >= 31536000} {
      set yearsfull [expr $totalyear/31536000]
      set years [expr int($yearsfull)]
      set yearssub [expr 31536000*$years]
      set totalday [expr $totalyear - $yearssub]
   }
   if {$totalyear < 31536000} {
      set totalday $totalyear
      set years 0
   }
   if {$totalday >= 86400} {
      set daysfull [expr $totalday/86400]
      set days [expr int($daysfull)]
      set dayssub [expr 86400*$days]
      set totalhour 0
   }
   if {$totalday < 86400} {
      set totalhour $totalday
      set days 0
   }
   if {$totalhour >= 3600} {
      set hoursfull [expr $totalhour/3600]
      set hours [expr int($hoursfull)]
      set hourssub [expr 3600*$hours]
      set totalmin [expr $totalhour - $hourssub]
      if {$totalhour >= 14400} { set totalmin 0 }
   }
   if {$totalhour < 3600} {
      set totalmin $totalhour
      set hours 0
   }
   if {$totalmin > 60} {
      set minsfull [expr $totalmin/60]
      set mins [expr int($minsfull)]
      set minssub [expr 60*$mins]
      set secs 0
   }
   if {$totalmin < 60} {
      set secs $totalmin
      set mins 0
   }
   if {$years < 1} {set yearstext ""} elseif {$years == 1} {set yearstext "$years year, "} {set yearstext "$years years, "}
   if {$days < 1} {set daystext ""} elseif {$days == 1} {set daystext "$days day, "} {set daystext "$days days, "}
   if {$hours < 1} {set hourstext ""} elseif {$hours == 1} {set hourstext "$hours hour, "} {set hourstext "$hours hours, "}
   if {$mins < 1} {set minstext ""} elseif {$mins == 1} {set minstext "$mins minute"} {set minstext "$mins minutes"}
   if {$secs < 1} {set secstext ""} elseif {$secs == 1} {set secstext "$secs second"} {set secstext "$secs seconds"}
   string trimright "$yearstext$daystext$hourstext$minstext$secstext" {, }
}

The script works fine all I wish for is to add as I said, nick and date when new channel peak has been made.
Hope I posted in the correct section.
Back to top
View user's profile Send private message
Sir_Fz
Revered One


Joined: 27 Apr 2003
Posts: 3793
Location: Lebanon

PostPosted: Wed Dec 27, 2006 11:05 am    Post subject: Reply with quote

Replace
Code:
puthelp "PRIVMSG $chan :Channel Peak Record: [lindex [set peak [getpeak $chan]] 0] ([timeago [lindex $peak 1]] ago)."

with
Code:
puthelp "PRIVMSG $chan :Channel Peak Record: [lindex [set peak [getpeak $chan]] 0] ([timeago [lindex $peak 1]] ago) at [clock format [lindex $peak 1] -format "%a %B %d, %Y"]."

As for nick, what's nick supposed to be?
_________________
Follow me on GitHub

- Opposing

Public Tcl scripts
Back to top
View user's profile Send private message Visit poster's website
starpossen
Op


Joined: 10 Jan 2006
Posts: 139

PostPosted: Wed Dec 27, 2006 12:52 pm    Post subject: Reply with quote

I mean so it shows what nick set the peak record.
Back to top
View user's profile Send private message
metroid
Owner


Joined: 16 Jun 2004
Posts: 771

PostPosted: Wed Dec 27, 2006 5:14 pm    Post subject: Reply with quote

Use something better and less outdated:

Code:
bind PUB fo|fo !peak pub:peak
bind JOIN -|- *  join:peak

setudef str peak-data
setudef flag peak

proc pub:peak {nickname hostname handle channel arguments} {
  if {![channel get $channel peak]} {return}
  if {[set peakdata [channel get $channel peak-data]] == ""} {
    puthelp "PRIVMSG $channel :No peak data available yet (try rejoining)."
  } else {
    puthelp "PRIVMSG $channel :Peak for $channel: [lindex $peakdata 3] (by [lindex $peakdata 0]![lindex $peakdata 1] at [clock format [lindex $peakdata 2] -format {%d/%m/%y %H:%M:%S}])"
  }
}

proc join:peak {nickname hostname handle channel} {
  if {[channel get $channel peak]} {
    if {[set peakdata [channel get $channel peak-data]] == ""} {
      channel set $channel peak-data [list $nickname $hostname [clock seconds] [llength [chanlist $channel]]]
    } elseif {[lindex $peakdata 3] < [llength [chanlist $channel]]} {
      channel set $channel peak-data [list $nickname $hostname [clock seconds] [llength [chanlist $channel]]]
      # if you want to announce there is a new peak, do it here (just remove the comment)
      #puthelp "PRIVMSG $channel :New peak ([llength [chanlist $channel]]) by $nickname!"
    }
  }
}


[untested]
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber