All pastes #563699 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-13 08:05 UTC
rendered paste body
on *:TEXT:*:#:{
  if ($regex($1,/^[!@]compare/Si)) {
    if (!$StatsID(! $+ $2)) $iif($left($1,1) == @,msg $chan,notice $nick) $+($c1,[,$2 $c2,isn't a valid skill,$c1,])
    else {
      inc %sc
      var %name = $+(compare.,%sc)
      hadd -m %name sendway $iif($left($1,1) == @,msg $chan,notice $nick)
      hadd -m %name skill $StatsID(! $+ $2)
      hadd -m %name user1 $3
      hadd -m %name user2 $4
      sockopen %name hiscore-web.runescape.com 80
    }
  }
}

on *:SOCKOPEN:compare.*:{
  sockwrite -nt $sockname GET /aff/runescape/compare.ws?user1= $+ $hr($hget($sockname,user1)) $+ &user2= $+ $hr($hget($sockname,user2)) $+ &submit=Compare HTTP/1.0
  sockwrite -nt $sockname Host: $+(hiscore-web.runescape.com,$str($crlf,2))
}
on *:SOCKREAD:compare.*:{
  while ($sock($sockname).rq) {
    sockread &compare
    bwrite $sockname -1 -1 &compare
  }
  bread $sockname 0 $file($sockname).size &compare
  if ($bfind(&compare,1,</HTML>)) {
    if (($bfind(&compare,1,does not feature in the hiscores)) && ($bfind(&compare,$calc($v1 + 50),does not feature in the hiscores))) {
      $hget($sockname,sendway) $+($c1,[,$c2,None of these players are in the $c1,RuneScape Highscores])
    }
    else {
      hadd -m $sockname rp $bfind(&compare,$bfind(&compare,1,$regsubex($hget($sockname,skill),/(.)/g,$+($asc(\1),$chr(32)))),</a></td>)
      hadd -m $sockname result $htmlfree($replace($bvar(&compare,$hget($sockname,rp),300).text,$chr(10),$chr(32)))
      hadd -m $sockname result2 $htmlfree($replace($bvar(&compare,$bfind(&compare,$bfind(&compare,$calc($hget($sockname,rp) + 10),$regsubex($right($hget($sockname,skill),-2),/(.)/g,$+($asc(\1),$chr(32)))),</a></td>),300).text,$chr(10),$chr(32)))
      $hget($sockname,sendway) $iif(Not Ranked * iswm $hget($sockname,result),$+($c1,[,$c2,User,$c1 $flc($hget($sockname,user1)) $c2,is not ranked,$c1,]),$+($c1,[,$c2,$hget($sockname,skill) for,$c1 $flc($hget($sockname,user1)),] [,$c2,Level:,$c1 $gettok($hget($sockname,result),2,32) |,$c2 Rank:,$c1 $gettok($hget($sockname,result),1,32) |,$c2 Exp:,$c1 $gettok($hget($sockname,result),3,32),]))
      $hget($sockname,sendway) $iif(Not Ranked * iswm $hget($sockname,result2),$+($c1,[,$c2,User,$c1 $flc($hget($sockname,user2)) $c2,is not ranked,$c1,]),$+($c1,[,$c2,$hget($sockname,skill) for,$c1 $flc($hget($sockname,user2)),] [,$c2,Level:,$c1 $gettok($hget($sockname,result2),2,32) |,$c2 Rank:,$c1 $gettok($hget($sockname,result2),1,32) |,$c2 Exp:,$c1 $gettok($hget($sockname,result2),3,32),]))
      if ($remove($gettok($hget($sockname,result),3,32),$chr(44)) !isnum) hadd -m $sockname lose 1
      elseif ($remove($gettok($hget($sockname,result2),3,32),$chr(44)) !isnum) hadd -m $sockname lose 2
      else hadd -m $sockname lose $iif($remove($gettok($hget($sockname,result),3,32),$chr(44)) > $remove($gettok($hget($sockname,result2),3,32),$chr(44)),2,1)
      $hget($sockname,sendway) $+($c1,[,$c2,Winner:,$c1 $flc($hget($sockname,$iif($hget($sockname,lose) == 1,user2,user1))),] [,$c2,Levels:,$c1 $iif($calc($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),2,32) - $gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),2,32)),$v1,None) |,$c2 Ranks:,$c1 $iif($bytes($calc($remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),1,32),$chr(44)) - $remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),1,32),$chr(44))),b),$v1,None) |,$c2 Ranks:,$c1 $iif($bytes($calc($remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result2,result)),3,32),$chr(44)) - $remove($gettok($hget($sockname,$iif($hget($sockname,lose) == 1,result,result2)),3,32),$chr(44))),b),$v1,None),])
    }
    .hdel -sw $sockname *
    ;.remove $sockname
    sockclose $sockname
  }
}

alias -l StatsID {
  if ($regex($1,/^[@!.](stats|overall?|total)$/Si)) return Overall
  elseif ($regex($1,/^[@!]co?mb(at)?%$/Si)) return Combatp
  elseif ($regex($1,/^[@!]co?mb(at)?$/Si)) return Combat
  elseif ($regex($1,/^[@!]at[tk](ack)?$/Si)) return Attack
  elseif ($regex($1,/^[@!]de[fv](en[cs]e)?$/Si)) return Defence
  elseif ($regex($1,/^[@!]str(eng(ht|th))?$/Si)) return Strength
  elseif ($regex($1,/^[@!]h(p|it(points?|s))$/Si)) return Hitpoints
  elseif ($regex($1,/^[@!]range?d?$/Si)) return Ranged
  elseif ($regex($1,/^[@!]pray(er)?$/Si)) return Prayer
  elseif ($regex($1,/^[@!]mag(ic|e)$/Si)) return Magic
  elseif ($regex($1,/^[@!]cook(e|ing)?$/Si)) return Cooking
  elseif ($regex($1,/^[@!]w(ood)?c(utting)?$/Si)) return Woodcutting
  elseif ($regex($1,/^[@!]flet(ch|hc)(ing|e)?$/Si)) return Fletching
  elseif ($regex($1,/^[@!]fish(ing|e)?$/Si)) return Fishing
  elseif ($regex($1,/^[@!]f(ire)m(ak(e|ing))?$/Si)) return Firemaking
  elseif ($regex($1,/^[@!]craft(ing|er?)?$/Si)) return Crafting
  elseif ($regex($1,/^[@!]smith(ing|er?)?$/Si)) return Smithing
  elseif ($regex($1,/^[@!]min(ing|er?)?$/Si)) return Mining
  elseif ($regex($1,/^[@!]herb(lor[ye])?$/Si)) return Herblore
  elseif ($regex($1,/^[@!]agi(lity)?$/Si)) return Agility
  elseif ($regex($1,/^[@!]th(ie|ei)[fv](ing|er)?$/Si)) return Thieving
  elseif ($regex($1,/^[@!]slay(ing|er?)$/Si)) return Slayer
  elseif ($regex($1,/^[@!]farm(ing|er?)$/Si)) return Farming
  elseif ($regex($1,/^[@!]r(une)?c(raft(ing|er?)?)?$/Si)) return Runecraft
  elseif ($regex($1,/^[@!]hunt(ing|er?)?$/Si)) return Hunter
  elseif ($regex($1,/^[@!]cons?(truct(ion)?)?$/Si)) return Construction
}
alias -l htmlfree return $regsubex($regsubex($1-,/<.*>|&[^#].*;/gU,),/&#(.*);/gU,$chr(\1))
alias -l flc return $regsubex($replace($1-,+,$chr(32),-,$chr(32),_,$chr(32)),/\b(.)/Sg,$upper(\1))
alias -l hr return $replace($1-,$chr(32),+,-,+,_,+)
alias -l c1 return $chr(3)
alias -l c2 return $+($chr(3),07)