Been playing with Twitter's Bootstrap and really loving it. CSS/JS framework for responsive web designs. Really good documentation as well. http://twitter.github.com/bootstrap/
This snippet pulls a team and users stats from the Extreme Overclocking API, as such your team needs to be added to the Extreme Overclocking site in order for the stats to work. It can be found here http://folding.extremeoverclocking.com/ (Though i think they've recently started syncing all team data, not only those who have submitted their team to the site)
Got my new Ivy Bridge setup so started crunching again on Folding@Home. Daily stats: http://goo.gl/WHhgA Project Home: http://goo.gl/3zVus
you can use "echo -t" that will echo the line prefixed with $timestamp, so you dont need to add $timestamp manually.
also you may want to look at $nick().pnick instead of repeatedly checking if $nick isop, ishop, isvoice etc. (remember you have $left() and $right() :P )
You also have a random privmsg command on line 110, but other than that looking good :)
For @chachin. Added antispam, will ignore pokes if you get poked 5 times within 5 seconds, also will reset counter at 10,000 kills.
Add channels to %ignorechans seperated by a space to stop the script in those channels
on *:action:pokes *:#: {
if ($2 == $me) {
var %ignorechans #chan1 #chan2 #chan3
if ($istok(%ignorechans,$chan,32)) { return }
inc -u5 %antispam.pokes
if (%antispam.pokes >= 5) { return }
:nickpick
var %nick = $nick(#,$r(1,$nick(#,0)))
if (%nick == $nick) || (%nick == $me) { goto nickpick }
inc %kills
describe $chan explodes, 08killing %nick $+ . 09,13(People Killed: $bytes(%kills,b) $+ )
if (%kills >= 10000) { unset %kills }
}
This is a very basic one, should cover what you need tho :) Unforunatly you cant check if a nick isop without joining the channel. The reason the check is on a timer is because the IAL isnt updated until the join event ends, so if you check if $nick isop before the join event has ended it wont see them as an op.
on *:INVITE:#: {
if (!$hget(spamcheck,$chan)) {
hadd -mz spamcheck $chan 60
hadd -mu5 invite $chan $nick
join $chan
}
else {
.notice $nick I was just invited to $chan $+ . Please wait $duration($hget(spamcheck,$chan)) before inviting me again
}
}
on *:JOIN:#: {
if ($nick == $me) && ($hget(invite,$chan)) {
$+(.timer_checkop_,$chan) 1 1 check_op $hget(invite,$chan) $chan
}
}
alias check_op {
if ($1 isop $2) || ($1 ishop $2) {
msg $2 Hi there im $me $+ . I was invited by $1 $+ .
}
else {
part $2 I was invited by a non-op. Please try again
}
}
Looks good :D
Perhaps look into the PDO class as a database handler rather than using mysql* functions. Its compiled in C++ and uses the MySQL API directly (as well as supporting many other database drivers) so its alot faster than the standard mysql* functions.
Also its OO and alot more secure against SQL Injection as it uses prepared statements and binds.
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
FYI. Should always chmod to 755 rather than 777, otherwise every user on the system will be able to write to the files, where as with 755 only the http daemon user can ;)