All pastes #463350 Raw Edit

Mine

public text v1 · immutable
#463350 ·published 2007-04-28 22:32 UTC
rendered paste body
on *:START:{
  if (!$hget(LastSeen)) { .hmake LastSeen 100 }
  if ($exists(LastSeen.hsh)) { .hload LastSeen LastSeen.hsh }
}
on *:Connect:{
  if (!$hget(LastSeen)) { .hmake LastSeen 100 }
  if ($exists(LastSeen.hsh)) { .hload LastSeen LastSeen.hsh }
}
on *:TEXT:!SetSeen *:#:{
  if ($nick isop $chan) {
    if ($2 == Voice) {
      set %Seen9. $+ $chan 3
      msg $Chan $nick $+ , has allowed Voices and up to use !Seen.
    }
    if ($2 == Halfop) || ($2 == Hop) {
      set %Seen9. $+ $chan 4
      msg $Chan $nick $+ , has allowed Halfops and up to use !Seen.
    }
    if ($2 == Op) {
      set %Seen9. $+ $chan 5
      msg $Chan $nick $+ , has allowed Ops only to use !Seen.
    }
  }
}

on *:TEXT:!seen *:#:{
  if (!%seen. $+ $chan) { notice $Nick No one can use this in this channel. An op can change this. (Type !Help Seen if you are an op.) | Halt }
  if (!$2) { .notice $nick Please Supply a nick to look up. | halt }
  set %Seen9 %Seen9. $+ $chan 
  Set %Seen.nick $2
  if (%seen9 == 3) && ($nick isreg $chan) { halt }
  elseif ($nick isvoice $chan) || ($nick ishop $chan) || ($nick isop $chan) {
    Seen9 $2
    halt
  } 
  if (%seen9 == 4) && ($nick isreg $chan) || ($nick isvoice $chan) { halt }
  elseif ($nick ishop $chan) || ($nick isop $chan) {
    Seen9 $2
    halt
  } 
  if (%seen9 == 5) && ($nick !isop $chan) { halt }
  elseif ($nick isop $chan) {
    Seen9 $2
    halt
  } 
}
on *:JOIN:#:{
  .hadd -m LastSeen $nick $address $ctime JOIN $chan
}
on *:TEXT:*:#:{
  .hadd -m LastSeen $nick $address $ctime TEXT $chan $1-
}
on *:ACTION:*:#:{
  .hadd -m LastSeen $nick $address $ctime ACT $chan $1-
}
on *:PART:#:{
  .hadd -m LastSeen $nick $address $ctime PART $chan $1-
}
on *:QUIT:{
  .hadd -m LastSeen $nick $address $ctime QUIT $1-
}
on *:KICK:#:{
  .hadd -m LastSeen $nick $address $ctime KICK $knick $chan $1-
  .hadd -m LastSeen $knick $remove($address($knick,5),$knick $+ !) $ctime KICKED $nick $chan $1-
}
on *:NICK:{
  .hadd -m LastSeen $newnick $address $ctime FROMNICK $nick
  .hadd -m LastSeen $nick $address $ctime CHNICK $newnick
}
on *:DISCONNECT:{
  .hsave -o LastSeen LastSeen.hsh
}
on *:EXIT:{
  .hsave -o LastSeen LastSeen.hsh
}

Alias Seen9 {
  var %seen.entry = $hget(LastSeen,%seen.nick), %seen.action = $null, %seen.name = %seen.nick
  if ($nick == %seen.nick) { msg $chan Hey, stop looking for yourself. | halt }
  elseif (%seen.nick == $me) { describe $chan waves to $nick $+ . | halt }
  elseif (%seen.nick ison $chan) { msg $chan %seen.nick is currently in the channel! | halt }
  elseif (!%seen.entry) {
    var %seen.num = $hfind(LastSeen,* $+ %seen.nick $+ *,0,w)
    if (%seen.num == 0) {
      msg $chan I found no results for your LastSeen query.
      halt
    }
    else {
      var %seen.i = 1
      while (%seen.i <= $hfind(LastSeen,* $+ %seen.nick $+ *,0,w)) {
        write LastSeen.tmp $hfind(LastSeen,* $+ %seen.nick $+ *,%seen.i,w) $hget(LastSeen,$hfind(LastSeen,* $+ %seen.nick $+ *,%seen.i,w))
        inc %seen.i
      }
      filter -ffteu 3 32 LastSeen.tmp LastSeen2.tmp *
      msg $chan I found %seen.num results for your LastSeen query. $iif(%seen.num > 5,Here are the top 5,Here are the results) $+ , starting with the newest result: $gettok($read(LastSeen2.tmp,1),1,32) $gettok($read(LastSeen2.tmp,2),1,32) $gettok($read(LastSeen2.tmp,3),1,32) $gettok($read(LastSeen2.tmp,4),1,32) $gettok($read(LastSeen2.tmp,5),1,32)
      %seen.name = $gettok($read(LastSeen2.tmp,1),1,32)
      .remove LastSeen.tmp
      .remove LastSeen2.tmp
    }
  }
  %seen.entry = $hget(LastSeen,%seen.name)
  %seen.action = $replace($gettok(%seen.entry,3,32),JOIN,joining $gettok(%seen.entry,4,32) $+ .)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),TEXT,talking in $gettok(%seen.entry,4,32) $+ . They were saying: $gettok(%seen.entry,5-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),ACT,acting in $gettok(%seen.entry,4,32) $+ . They were saying: * $2 $gettok(%seen.entry,5-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),PART,parting from $gettok(%seen.entry,4,32) $+ $chr(44) stating: $gettok(%seen.entry,5-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),QUIT,quitting from IRC $+ $chr(44) saying: $gettok(%seen.entry,4-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),KICKED,being kicked from $gettok(%seen.entry,5,32) by $gettok(%seen.entry,4,32) $+ $chr(44) who stated: $gettok(%seen.entry,6-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),KICK,kicking $gettok(%seen.entry,4,32) from $gettok(%seen.entry,5,32) $+ $chr(44) stating: $gettok(%seen.entry,6-,32)),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),FROMNICK,changing nicknames from their old nick $+ $chr(44) which was $gettok(%seen.entry,4,32) $+ .),%seen.action)
  %seen.action = $iif(%seen.action == $gettok(%seen.entry,3,32),$replace($gettok(%seen.entry,3,32),CHNICK,changing their nickname to $gettok(%seen.entry,4,32) $+ .),%seen.action)
  %seen.entry = I last saw  $+ %seen.name $+  ( $+ $gettok(%seen.entry,1,32) $+ ) $duration($calc($ctime - $gettok(%seen.entry,2,32))) ago, %seen.action
  msg $chan %seen.entry
  unset %Seen9
}