All pastes #265459 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-03 09:13 UTC
rendered paste body
on $*:TEXT:/^[!@]rank .*/Si:#:{
  var %x = 1
  while ($sock($+(rank.,%x))) inc %x
  if (!$rsskill($2)) {
    .notice $nick $c1(Please specify a RS skill.)
    halt
  }
  elseif ($remove($3,$chr(44)) !isnum 1-1000000) {
    .notice $nick $c1(Please specify a rank between 1 and 1,000,000.)
    halt
  }
  else {
    set $+(%,rank.target.,%x) $iif(@* iswm $1,.msg $chan,.notice $nick)
    set $+(%,rank.skill.,%x) $rsskill($2)
    set $+(%,rank.rank.,%x) $remove($3,$chr(44))
    set $+(%,rank.y.,%x) 1
    sockopen $+(rank.,%x) hiscore.runescape.com 80
  }
}
on *:SOCKOPEN:rank.*:{
  var %x = $gettok($sockname,2,46), %table = $gettok($($+(%,rank.skill.,%x),2),2,46), %rank = $($+(%,rank.rank.,%x),2)
  sockwrite -nt $sockname GET $+(/lang/en/aff/runescape/overall.ws?table=,%table,&rank=,%rank) HTTP/1.1
  sockwrite -nt $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:SOCKREAD:rank.*:{
  var %x = $gettok($sockname,2,46), %skill = $gettok($($+(%,rank.skill.,%x),2),1,46), %rank = $($+(%,rank.rank.,%x),2)
  if ($sockerr) {
    %target $c1(*** Socket error:) $c2($sock($sockname).wsmsg)
    halt
  }
  else {
    var %read
    sockread %read
    if (*#AA0022* iswm %read) && ($nohtml(%read) != $bytes(%rank,b)) {
      set $+(%,rank.,$replace($($+(%,rank.y.,%x),2),1,user,2,level,3,exp),.,%x) $nohtml(%read)
      inc $+(%,rank.y.,%x) 1
    }
  }
}
on *:SOCKCLOSE:rank.*:{
  var %x = $gettok($sockname,2,46), %target = $($+(%,rank.target.,%x),2), %skill = $gettok($($+(%,rank.skill.,%x),2),1,46), %rank = $($+(%,rank.rank.,%x),2), %user = $($+(%,rank.user.,%x),2), %level = $($+(%,rank.level.,%x),2), %exp = $($+(%,rank.exp.,%x),2)
  if (!%user) {
    %target $c1(No one is ranked) $c2($+($bytes(%rank,b),$right($ord(%rank),2))) $c1(in) $c2(%skill) $+ $c1(.)
  }
  else {
    %target $c1(Ranked) $c2($+($bytes(%rank,b),$right($ord(%rank),2))) $c1(in) $c2(%skill) $c1(is:) $c2(%user)
    %target $c1(Level:) $c2(%level  $+ $chr(124) $+ ) $c1(Exp:) $c2(%exp)
  }
  unset $+(%,rank.*.,%x)
}
alias -l c1 { return $+(14,$1-,) }
alias -l c2 { return $+(07,$1-,) }
alias -l rsskill {
  if ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall.0
  elseif ($regex($1,/^at(t|k|tack)$/Si)) return Attack.1
  elseif ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence.2
  elseif ($regex($1,/^str(ength)?$/Si)) return Strength.3
  elseif ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints.4
  elseif ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged.5
  elseif ($regex($1,/^Pray(er)?$$/Si)) return Prayer.6
  elseif ($regex($1,/^mag(e|ic)$$/Si)) return Magic.7
  elseif ($regex($1,/^cook(ing)?$/Si)) return Cooking.8
  elseif ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting.9
  elseif ($regex($1,/^fletch(ing)?$/Si)) return Fletching.10
  elseif ($regex($1,/^fish(ing)?$/Si)) return Fishing.11
  elseif ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking.12
  elseif ($regex($1,/^craft(ing)?$/Si)) return Crafting.13
  elseif ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing.14
  elseif ($regex($1,/^min(e|ing)?$/Si)) return Mining.15
  elseif ($regex($1,/^herb(law|lore)?$/Si)) return Herblore.16
  elseif ($regex($1,/^agil(ity)?$/Si)) return Agility.17
  elseif ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving.18
  elseif ($regex($1,/^slay(er|ing)?$/Si)) return Slayer.19
  elseif ($regex($1,/^farm(er|ing)?$/Si)) return Farming.20
  elseif ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft.21
  elseif ($regex($1,/^hunt(ing|er)?$/Si)) return Hunter.22
  elseif ($regex($1,/^(construct)(ion|ing)?$/si)) return Construction.23
}
alias -l nohtml {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x)
  %x = $replace(%x,&nbsp;,$null)
  return %x
}