All pastes #158148 Raw Edit

Stuff

public text v1 · immutable
·published 2006-09-01 23:49 UTC
rendered paste body
alias c1 { return $+(4,$1-) } 
alias c2 { return $+(3,$1-) } 

on *:text:*:#: { 

  tokenize 32 $strip($1-) 
  if ($left($1,1) !isin @!.) halt 
  elseif ($regex($1,/(pest|pc)/Si)) var %style = pest
  else halt 

  inc %ID 
  if ($len($2-) > 12) { 
    $($+(%,stats.display.,%ID),2) $c1(The nick) $c2($2-) $c1(is too long) 
    cleanup %ID 
    halt 
  } 
  elseif ($2) set $+(%,stats.rsn.,%ID) $replace($2-,$chr(32),-) 
  elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch 
  elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,stats.rsn.,%ID) $ifmatch 
  else set $+(%,stats.rsn.,%ID) $nick 

  set $+(%,stats.style.,%ID) %style 
  set $+(%,stats.skill.,%ID) %skill 
  set $+(%,stats.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick) 
  sockopen $+(stats.,%ID) hiscore.runescape.com 80 
} 

on *:sockopen:stats.*: { 
  var %id = $gettok($sockname,2,46) 
  sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1 
  sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf 
} 
on *:sockread:stats.*: { 
  sockread &Incoming 
  bwrite $sockname -1 -1 &Incoming 
  if ($bfind(&Incoming, 1, </html>).text) makehash $sockname 
  elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) { 
    $($+(%,stats.display.,%ID),2) $c1(The nick) $c2($($+(%,stats.rsn.,%ID),2)) $c1(Does not appear in the hiscores) 
    cleanup $gettok($sockname,2,46) 
  } 
} 
alias -l makehash { 
  var %file = $1 
  bread %file 1 $file(%file).size &stats 
  var %currentstat, %x = 1 
  while (%x) { 
    var %x = $bfind(&stats,$calc(%x + 1),<a href="overall.ws?table=) 
    var %currentstat = $striptags($bvar(&stats,%x,200).text) 
    tokenize 10 %currentstat 
    hadd -m %file $1 $2 $3 $4 $xp2next($3,$4) 
  } 
  process %file 
} 
alias process { 
  var %table = $1, %id = $gettok($1,2,46), %x = 0, $& 
    %display = $($+(%,stats.display.,%ID),2), $& 
    %rsn = $($+(%,stats.rsn.,%ID),2), $& 
    %skill = $($+(%,stats.skill.,%ID),2), $& 
    %style = $($+(%,stats.style.,%ID),2) 

  if (%style == pest) { 
    var %a = $iif($gettok($hget(%table,attack),2,32),$v1,-), $& 
      %s = $iif($gettok($hget(%table,strength),2,32),$v1,-), $& 
      %d = $iif($gettok($hget(%table,defence),2,32),$v1,-), $& 
      %h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,-), $& 
      %r = $iif($gettok($hget(%table,ranged),2,32),$v1,-), $& 
      %m = $iif($gettok($hget(%table,magic),2,32),$v1,-), $& 
      %p = $iif($gettok($hget(%table,prayer),2,32),$v1,-) 

    var %apc = $ceil($calc(%a * %a / 6 - 1)), $&
      %spc = $ceil($calc(%s * %s / 6 - 1)), %hpc = $ceil($calc(%h * %h / 6 - 1)), $& 
      %dpc = $ceil($calc(%d * %d / 6 - 1)), %mpc = $ceil($calc(%m * %m / 6 - 1)), $& 
      %rpc = $ceil($calc(%r * %r / 6 - 1)), %ppc = $ceil($calc(%p * %p / 12 - 1)), $&

    var %attack = $iif($gettok($hget(%table,attack),3,32),$v1,-), %defence = $iif($gettok($hget(%table,defence),3,32),$v1,-) $& 
      %strength = $iif($gettok($hget(%table,strength),3,32),$v1,-), %magic = $iif($gettok($hget(%table,Magic),3,32),$v1,-) $& 
      %range = $iif($gettok($hget(%table,range),3,32),$v1,-), %prayer = $iif($gettok($hget(%table,prayer),3,32),$v1,-) $& 
      %HP = $iif($gettok($hget(%table,hitpoints),3,32),$v1,-)

    var %attack = $remove(%attack,$chr(44)), %strength = $remove(%strength,$chr(44)), $&
      %range = $remove(%range,$chr(44)), %defence = $remove(%defence,$chr(44)), $&
      %magic = $remove(%magic,$chr(44)), %prayer = $remove(%prayer,$chr(44)), $&
      %HP = $remove(%HP,$chr(44))

    var %pestatt = $ceil($calc(%apc / ($xp($calc(%attack + 1)) - %attack)))


    tokenize 32 $hget(%table,%skill)
    %display $c2(Pest Control) $c1(points required for) $c2(%rsn) $+ $c1(:)
    %display $c1(Attack:) $c2(%pestatt) $c1($chr(40)) $+ $c2(%apc) $c1(xp/point) $+ $c1($chr(41)) $c1(Defence:) $c2(%pestdef) $c1($chr(40)) $+ $c2(%dpc) $c1(xp/point) $+ $c1($chr(41)) $&
      $c1(Strenth:) $c2(%peststr) $c1($chr(40)) $+ $c2(%spc) $c1(xp/point) $+ $c1($chr(41)) $c1(Hitpoints:) $c2(%pesthp) $c1($chr(40)) $+ $c2(%hpc) $c1(xp/point) $+ $c1($chr(41)) $&
      $c1(Range:) $c2(%pestr) $c1($chr(40)) $+ $c2(%rpc) $c1(xp/point) $+ $c1($chr(41)) $c1(Magic:) $c2(%pestmag) $c1($chr(40)) $+ $c2(%mpc) $c1(xp/point) $+ $c1($chr(41)) $&
      $c1(Prayer:) $c2(%pestpray) $c1($chr(40)) $+ $c2(%ppc) $c1(xp/point) $+ $c1($chr(41)) 
  }
  cleanup %id 
} 
alias -l cleanup { 
  unset $+(%,stats.*.,$1) 
  sockclose $+(Stats.,$1) 
  .remove $+(Stats.,$1) 
} 
alias -l xp { 
  var %x = 1, %level = $calc($1 - 1), %xp = 0 
  while (%x <= %level) { 
    var %TempXp = $calc((%x + 300 * 2^(%x / 7)) /4) 
    inc %xp %TempXp 
    inc %x 
  } 
  return $int(%xp) 
} 
alias -l xp2Next { 
  var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) 
  return $calc(%nextxp - %xp) 
}