All pastes #744632 Raw Edit

Untitled

public text v1 · immutable
·published 2007-10-21 17:33 UTC
rendered paste body
on *:input:*:{
  if ($left($1,1) isin /~ && ?compare iswm $1) && ($setskill($2)) && ($3) {
    unset %compare.* %id.?
    set %compare.rsn.1 $3
    set %compare.rsn.2 $iif($4,$v1,$iif(%defname,$v1,$$?="What is your rsn?"))
    set %compare.style $iif($left($1,1) == $chr(47),echo -at,msg $target)
    set %compare.stat $setskill($2).num
    $iif(!%defname && %compare.rsn.2,set %defname %compare.rsn.2)
    sockopen compare.1 hiscore.runescape.com 80
    sockopen compare.2 hiscore.runescape.com 80
    haltdef
  }
}

on *:sockopen:compare.*:{
  var %compare.rsn = $($+(%,compare.rsn.,$right($sockname,1)),2)
  sockwrite -nt $sockname GET $+(/index_lite.ws?player=,%compare.rsn) HTTP/1.1
  sockwrite -nt $sockname Host: hiscore.runescape.com
  sockwrite -nt $sockname $crlf
  inc $+(%,id.,$right($sockname,1))
}

on *:sockread:compare.*:{
  if ($sockerr) halt
  else {
    var %compare = $right($sockname,1), $&
      %compare.rsn = $($+(%,compare.rsn.,%compare),2), $&
      %sockreader
    sockread %sockreader
    if (*404 Not found iswm %sockreader) {
      %compare.style $c1(The nick) $c2(%compare.rsn) $c1(does not appear in the highscores for any skills.)
      unset %compare.* %id.?
      sockclose compare.?
    }
    else {
      if ($($+(%,id.,%compare),2) == %compare.stat) {
        set $+(%,compare.stats.,%compare) %sockreader
      }
    }
    if (%compare.stats.1 && %compare.stats.2) {
      var %stat = $setskill(%compare.stat), $&
        %rsn.1 = %compare.rsn.1, %rsn.2 = %compare.rsn.2, $&
        %rank.1 = $gettok(%compare.stats.1,1,44), %rank.2 = $gettok(%compare.stats.2,1,44), $&
        %level.1 = $gettok(%compare.stats.1,2,44), %level.2 = $gettok(%compare.stats.2,2,44), $&
        %exp.1 = $gettok(%compare.stats.1,3,44), %exp.2 = $gettok(%compare.stats.2,3,44), $&
        %compare.intro, %compare.stats
      if (%rank.1 == -1 || %rank.2 == -1) {
        var %rsn = $iif(%rank.1 == -1,%rsn.1,%rsn.2)
        if (%rank.1 == -1) {
          %compare.style $c2(%rsn) $c1(does not appear in the highscores for) $c2(%stat)
          unset %compare.* %id.?
          sockclose compare.?
          halt
        }
      }
      if (%level.1 != %level.2) {
        %compare.intro = $c2(%rsn.1) $c1(is level) $c2($bytes(%level.1,b)) $c1(and) $c2(%rsn.2) $c1(is level) $c2($bytes(%level.2,b)) $+($c1($chr(40)),$c2(%stat),$c1($chr(41)))
        if (%level.1 > %level.2) && (%exp.1 > %exp.2) {
          %compare.stats = $c2(%rsn.1) $c1(is) $c2($bytes($abs($calc(%level.1 - %level.2)),b)) $c1($+($iif($abs($calc(%level.1 - %level.2)) > 1,levels,level),$chr(44))) $c2($bytes($abs($calc(%rank.1 - %rank.2)),b)) $c1($iif($abs($calc(%rank.1 - %rank.2)) > 1,ranks,rank) and) $c2($bytes($calc(%exp.1 - %exp.2),b)) $c1(exp above) $c2(%rsn.2)
        }
        if (%level.2 > %level.1) && (%exp.2 > %exp.1) {
          %compare.stats = $c2(%rsn.1) $c1(is) $c2($bytes($abs($calc(%level.1 - %level.2)),b)) $c1($+($iif($abs($calc(%level.1 - %level.2)) > 1,levels,level),$chr(44))) $c2($bytes($abs($calc(%rank.1 - %rank.2)),b)) $c1($iif($abs($calc(%rank.1 - %rank.2)) > 1,ranks,rank) and) $c2($bytes($calc(%exp.2 - %exp.1),b)) $c1(exp below) $c2(%rsn.2)
        }
        if (%level.1 > %level.2) && (%exp.2 > %exp.1) {
          %compare.stats = $c2(%rsn.1) $c1(is) $c2($bytes($abs($calc(%level.1 - %level.2)),b)) $c1($iif($abs($calc(%level.1 - %level.2)) > 1,levels,level) and) $c2($bytes($abs($calc(%rank.1 - %rank.2)),b)) $c1($iif($abs($calc(%rank.1 - %rank.2)) > 1,ranks,rank) $+(above,$chr(44)) but) $c2($bytes($calc(%exp.2 - %exp.1),b)) $c1(exp below) $c1(%rsn.2)
        }
        if (%level.2 > %level.1) && (%exp.1 > %exp.2) {
          %compare.stats = $c2(%rsn.1) $c1(is) $c2($bytes($abs($calc(%level.1 - %level.2)),b)) $c1($iif($abs($calc(%level.1 - %level.2)) > 1,levels,level) and) $c2($bytes($abs($calc(%rank.1 - %rank.2)),b)) $c1($iif($abs($calc(%rank.1 - %rank.2)) > 1,ranks,rank) $+(below,$chr(44)) but) $c2($bytes($calc(%exp.1 - %exp.2),b)) $c1(exp above) $c2(%rsn.2)
        }
      }
      else {
        if (%exp.1 > %exp.2) {
          %compare.intro = $c2(%rsn.1) $c1(and) $c2(%rsn.2) $c1(are both level) $+($c2($bytes(%level.1,b)),$c1($chr(44))) $c1(but) $c2(%rsn.1) $c1(has) $c2($bytes($calc(%exp.1 - %exp.2),b)) $c1(exp more) $+($c1($chr(40)),$c2(%stat),$c1($chr(41)))
        }
        else {
          %compare.intro = $c2(%rsn.1) $c1(and) $c2(%rsn.2) $c1(are both level) $+($c2($bytes(%level.1,b)),$c1($chr(44))) $c1(but) $c2(%rsn.1) $c1(has) $c2($bytes($calc(%exp.2 - %exp.1),b)) $c1(exp less) $+($c1($chr(40)),$c2(%stat),$c1($chr(41)))
        }
      }
      %compare.style %compare.intro
      $iif(%compare.stats,%compare.style $v1)
      unset %compare.* %id.?
      sockclose compare.?
      halt
    }
  }
  inc $+(%,id.,%compare)
}

alias setskill {
  if ($1 == 12) || ($regex($1,/^total|overall$/Si)) return $iif($prop,12,Overall)
  elseif ($1 == 13) || ($regex($1,/^at(t|k|tack)$/Si)) return $iif($prop,13,Attack)
  elseif ($1 == 14) || ($regex($1,/^def(en[cs]e)?$$/Si)) return $iif($prop,14,Defence)
  elseif ($1 == 15) || ($regex($1,/^str(ength)?$/Si)) return $iif($prop,15,Strength)
  elseif ($1 == 16) || ($regex($1,/^h(p|it(s|points?))$/Si)) return $iif($prop,16,Hitpoints)
  elseif ($1 == 17) || ($regex($1,/^rang(e(d?)|ing)$/Si)) return $iif($prop,17,Ranged)
  elseif ($1 == 18) || ($regex($1,/^pray(er)?$$/Si)) return $iif($prop,18,Prayer)
  elseif ($1 == 19) || ($regex($1,/^mag(e|ic)$$/Si)) return $iif($prop,19,Magic)
  elseif ($1 == 20) || ($regex($1,/^cook(ing)?$/Si)) return $iif($prop,20,Cooking)
  elseif ($1 == 21) || ($regex($1,/^w(c|ood(cut(ting)?))$/Si)) return $iif($prop,21,Woodcutting)
  elseif ($1 == 22) || ($regex($1,/^fletch(ing)?$/Si)) return $iif($prop,22,Fletching)
  elseif ($1 == 23) || ($regex($1,/^fish(ing)?$/Si)) return $iif($prop,23,Fishing)
  elseif ($1 == 24) || ($regex($1,/^f(m|iremak(e|ing))$/Si)) return $iif($prop,24,Firemaking)
  elseif ($1 == 25) || ($regex($1,/^craft(ing)?$/Si)) return $iif($prop,25,Crafting)
  elseif ($1 == 26) || ($regex($1,/^smith|smelt(ing)?$/Si)) return $iif($prop,26,Smithing)
  elseif ($1 == 27) || ($regex($1,/^min(e|ing)$/Si)) return $iif($prop,27,Mining)
  elseif ($1 == 28) || ($regex($1,/^herb(law|lore)?$/Si)) return $iif($prop,28,Herblore)
  elseif ($1 == 29) || ($regex($1,/^agil(ity)?$/Si)) return $iif($prop,29,Agility)
  elseif ($1 == 30) || ($regex($1,/^thie(f|v(e|ing))$/Si)) return $iif($prop,30,Thieving)
  elseif ($1 == 31) || ($regex($1,/^slay(er|ing)?$/Si)) return $iif($prop,31,Slayer)
  elseif ($1 == 32) || ($regex($1,/^farm(er|ing)?$/Si)) return $iif($prop,32,Farming)
  elseif ($1 == 33) || ($regex($1,/^r(c|unecraft)(ing)?$/Si)) return $iif($prop,33,Runecraft)
  elseif ($1 == 34) || ($regex($1,/^hunt(er|ing)?$/Si)) return $iif($prop,34,Hunter)
  elseif ($1 == 35) || ($regex($1,/^con(struct(ion|ing)?)?$/Si)) return $iif($prop,35,Construction)
}

alias c1 return $+(14,$1-)

alias c2 return $+(03,$1-)