All pastes #292863 Raw Edit

Unnamed

public text v1 · immutable
#292863 ·published 2006-12-27 00:21 UTC
rendered paste body
on $*:TEXT:/^[!@.]compare .*/Si:#:{
  if (!$rsskill($2)) {
    .notice $nick $c2($2) $c1(isn't a real skill.)
    halt
  }
  elseif (!$3) {
    .notice $nick $c1(Please specify at least one RSN.)
    halt
  }
  elseif ($8) {
    .notice $nick $c1(You can only compare up to 5 users at a time.)
    halt
  }
  else {
    var %x = 1
    while ($sock($+(compare.,%x))) inc %x
    if (!$4) tokenize 32 $1-2 $iif($readini(DefRSN.ini,RSNs,$mask($fulladdress,3)),$ifmatch,$iif($readini(DefRSN.ini,RSNs,$nick),$ifmatch,$nick)) $3
    set $+(%,compare.target.,%x) $iif(@* iswm $1,msg $chan,.notice $nick)
    set $+(%,compare.skill.,%x) $rsskill($2)
    set $+(%,compare.users.,%x) $3-
    set $+(%,compare.num.,%x) 1
    sockopen $+(compare.,%x) o-ss.net 80
  }
}
on *:SOCKOPEN:compare.*:{
  var %x = $gettok($sockname,2,46), %num = $($+(%,compare.num.,%x),2), %user = $gettok($($+(%,compare.users.,%x),2),%num,32), %skill = $($+(%,compare.skill.,%x),2)
  sockwrite -nt $sockname GET $+(/parsers/skills.php?user=,%user,&skill=,%skill) HTTP/1.1
  sockwrite -nt $sockname Host: o-ss.net $+ $crlf $+ $crlf
}
on *:SOCKREAD:compare.*:{
  var %x = $gettok($sockname,2,46), %num = $($+(%,compare.num.,%x),2), %user = $gettok($($+(%,compare.users.,%x),2),%num,32), %skill = $($+(%,compare.skill.,%x),2), %users = $($+(%,compare.users.,%x),2), %target = $($+(%,compare.target.,%x),2)
  if ($sockerr) {
    %target $c1(*** Socket error:) $c2($sock($sockname).wsmsg)
    halt
  }
  else {
    var %read
    sockread %read
    if (*END iswm %read) {
      tokenize 32 %read
      if ($1 == END) {
        set $+(%,compare.line.,%num,.,%x) $+($c1([),$c2(%skill),$c1(])) $c1(Not found.)
      }
      else {
        set $+(%,compare.line.,%num,.,%x) $+($c1([),$c2(%skill),$c1(])) $c2(%user) $c1(Rank:) $c2($1) $c1(Level:) $c2($2) $c1(Exp:) $c2($3)
      }
      if (%num == $numtok(%users,32)) {
        var %a = 1
        while ($($+(%,compare.line.,%a,.,%x),2)) {
          %target $ifmatch
          inc %a
        }
        cleanup %x
        sockclose $sockname
        halt
      }
      else {
        inc $+(%,compare.num.,%x) 1
        sockclose $sockname
        sockopen $+(compare.,%x) o-ss.net 80
      }
    }
  }
}
alias -l cleanup { unset $+(%,compare.*.,$1) }
alias -l rsskill {
  if ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
  elseif ($regex($1,/^at(t|k|tack)$/Si)) return Attack
  elseif ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
  elseif ($regex($1,/^str(ength)?$/Si)) return Strength
  elseif ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
  elseif ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
  elseif ($regex($1,/^Pray(er)?$$/Si)) return Prayer
  elseif ($regex($1,/^mag(e|ic)$$/Si)) return Magic
  elseif ($regex($1,/^cook(ing)?$/Si)) return Cooking
  elseif ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
  elseif ($regex($1,/^fletch(ing)?$/Si)) return Fletching
  elseif ($regex($1,/^fish(ing)?$/Si)) return Fishing
  elseif ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
  elseif ($regex($1,/^craft(ing)?$/Si)) return Crafting
  elseif ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
  elseif ($regex($1,/^min(e|ing)?$/Si)) return Mining
  elseif ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
  elseif ($regex($1,/^agil(ity)?$/Si)) return Agility
  elseif ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
  elseif ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
  elseif ($regex($1,/^farm(er|ing)?$/Si)) return Farming
  elseif ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
  elseif ($regex($1,/^hunt(ing|er)?$/Si)) return Hunter
  elseif ($regex($1,/^(construct)(ion|ing)?$/si)) return Construction
}