All pastes #269903 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-06 22:20 UTC
rendered paste body
on *:text:*:#yoinx: {
  tokenize 32 $strip($1-)
  if ($1 == !setrsn) {
    writeini rsn.ini users $nick $left($2-,12)
    notice $nick Set your rsn to $left($2-,12)
  }
  var %abilities = Overall Attack Defence Strength Hitpoints Ranged Prayer Magic Cooking Woodcutting Fletching Fishing Firemaking Crafting Smithing Mining Herblore Agility Thieving Slayer Farming Runecraft Hunter Construction
  if ($regex($1,/(!|@)stats/i)) {
    set $+(%,stats.,$nick,.abilities) %abilities
    if ($2) {
      sockopen $+(rsstats.,$nick) hiscore.runescape.com 80
      sockmark $+(rsstats.,$nick) $left($2-,12)
    }
    elseif ($readini(rsn.ini,users,$nick)) {
      sockopen $+(rsstats.,$nick) hiscore.runescape.com 80
      sockmark $+(rsstats.,$nick) $v1
    }
    else {
      notice $nick You do not have an rsn stored. So you must specify your rsn using !setrsn rsn
    }
  }
  if ($regex($1,/(!|@)( $+ $replace(%abilities,$chr(32),$chr(124)) $+ )\b/i)) {
    inc %stats
    if ($sock($+(rsability.,$nick))) { 
      notice $nick Sorry, You have a search going.
      halt
    }
    set $+(%,ability.,$nick,.ability) $regml(2)
    if ($2) {
      sockopen $+(rsability.,$nick) hiscore.runescape.com 80
      sockmark $+(rsability.,$nick) $left($2-,12)
    }
    elseif ($readini(rsn.ini,users,$nick)) {
      sockopen $+(rsability.,$nick) hiscore.runescape.com 80
      sockmark $+(rsability.,$nick) $v1
    }
    else {
      notice $nick You do not have an rsn stored. So you must specify your rsn using !setrsn rsn
    }
  }
}
on *:sockopen:rsstats.*: { 
  var %username = $sock($sockname).mark 
  sockwrite -n $sockname GET $+(/lang/en/aff/runescape/hiscorepersonal.ws?user1=,%username) HTTP/1.1 
  sockwrite -n $sockname Host: $+(hiscore.runescape.com,$crlf,$crlf)
} 
on *:sockread:rsstats.*: {
  var %tmp, %tmp2
  sockread -f %tmp
  var %tmp = $htmlfree(%tmp)
  if ($istok($($+(%,$sockname,.abilities),2),%tmp,32)) {
    sockread -f %tmp2 | sockread -f %tmp2 | sockread -f %tmp2
    var %tmp2 = $htmlfree(%tmp2)
    $iif($($+(%,$sockname),2),set $+(%,$sockname) $($+(%,$sockname),2) $+(%tmp,:,$chr(32)) %tmp2 $chr(124), set $+(%,$sockname) $+(%tmp,:,$chr(32)) %tmp2 $chr(124))
  }
}
on *:sockclose:rsstats.*: {
  echo -a $gettok($sockname,2,46) $left($($+(%,$sockname),2),-2)
  notice $gettok($sockname,2,46) $left($($+(%,$sockname),2),-2)
  unset -w $+(%,$sockname,*)
  sockclose $sockname
}
on *:sockopen:rsability.*: { 
  var %username = $sock($sockname).mark 
  sockwrite -n $sockname GET $+(/lang/en/aff/runescape/hiscorepersonal.ws?user1=,%username) HTTP/1.1 
  sockwrite -n $sockname Host: $+(hiscore.runescape.com,$crlf,$crlf)
} 
on *:sockread:rsability.*: {
  var %tmp, %rs.text
  sockread -f %tmp
  var %tmp = $htmlfree(%tmp)
  if (%tmp = $($+(%,$sockname,.ability),2)) {
    var %x = 2
    while (%x <= 4) {
      sockread %rs.text
      if (align="right" isin %rs.text) {
        noop $regex($+($sockname,%x),%rs.text,/<td align="right">([^</td>]+)/i)
        inc %x 
      }
    }
    set $+(%,$sockname) $+(%tmp,:) Rank: $regml($+($sockname,2),1) Level: $regml($+($sockname,3),1) Xp: $regml($+($sockname,4),1)
  }
}
on *:sockclose:rsability.*: {
  var %info = $($+(%,$sockname),2)
  notice $gettok($sockname,2,46) %info Xp To Next Level = $bytes($calc($rs.xpnextlevel($calc($gettok(%info,5,32) + 1)) - $remove($gettok(%info,7,32),$chr(44))),b)
  unset -w $+(%,$sockname,*)
  sockclose $sockname
}
alias -l htmlfree { 
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&,$chr(9)) 
  return %x 
} 
alias rs.xpnextlevel {
  var %a = 0, %x = 1
  while (%x < $1) {
    %a = $calc(%a + $floor($calc(%x + 300 * (2^(%x / 7)))))
    inc %x
  }
  return $floor($calc(%a / 4))
}