On *:TEXT:!pingme:*:{
if ($chan == #whatever) { return }
var %tok = $calc($numtok(%pnick,46) + 1)
.ctcp $nick ping
.set %pnick $instok(%pnick,$nick,%tok,46)
if (#) { .set %pchan $instok(%pchan,#,%tok,46) }
else { .set %pchan $instok(%pchan,none,%tok,46) }
}
On *:TEXT:!pingus:#:{
.ctcp $chan ping
var %i = 1, %tok = $numtok(%pnick,46)
while (%i <= $nick(#,0)) {
set %pnick $instok(%pnick,$nick(#,%i),$calc(%tok + %i),46)
set %pchan $instok(%pchan,#,$calc(%tok + %i),46)
inc %i
}
}
On *:CTCPREPLY:ping *:{
var %pt = $calc($ctime - $2)
if ($istok(%pnick,$nick,46)) {
var %loc = $findtok(%pnick,$nick,1,46)
var %chan = $gettok(%pchan,%loc,46)
.notice $nick Your lag is %pt seconds.
if (%chan != none) { msg %chan Your lag is %pt seconds, $nick }
set %pnick $deltok(%pnick,%loc,46)
set %pchan $deltok(%pchan,%loc,46)
}
}
On *:DISCONNECT: unset %pchan,%pnick