All pastes #469781 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-03 22:09 UTC
rendered paste body
;Usage: /stats [runescape username...]
;No need to replace spaces as this script will do that for you.
;If you don't specify a username with /stats the script will pop up a input dialog asking for a username to search.
;Colors are completely customizable. Just change the numbers around.
;Those german players can turn the german language support on by setting %stats.defaultlang to de

on *:UNLOAD:{ unset %stats.* }
alias stats {
  unset %stats.*
; Skill Name Color
  set %stats.color1 $+($chr(3),10)
; Skill Level Color
  set %stats.color2 $+($chr(3),14)
; Default Text Color
  set %stats.defaultcolor 05
; Default Language. For German set this to de
; example: set %stats.defaultlang de
  set %stats.defaultlang de
  if (!$1) { set %stats.searchname $$?="User to search?" }
  else { set %stats.searchname $1- }
  set %searchname $replace(%searchname,$chr(32),$chr(43)) | set %y 1 | set %x 1 | inc %statssocketvar 1
  sockopen $+(stats,%statssocketvar) hiscore.runescape.com 80
  echo %stats.defaultcolor -a Searching the hiscores for $replace(%stats.searchname,$chr(43),$chr(32)) $+ ...One moment please.
}
on *:sockopen:stats*:{
  if ($sockerr) { echo %stats.defaultcolor -a Stats Script SockOpen Error: $sock($sockname).wsmsg | return }
  sockwrite -nt $sockname GET $iif(%stats.defaultlang == de,/lang/de/hiscorepersonal.ws?user1=,/hiscorepersonal.ws?user1=) $+ %stats.searchname HTTP/1.0
  sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:sockread:stats*:{
  if ($sockerr) { echo %stats.defaultcolor -a Stats Script SockRead Error: $sock($sockname).wsmsg | halt }
  var %read | .sockread %read
  if (*does not appear* iswm %read) {
    echo -a  $+ $replace(%stats.searchname,$chr(43),$chr(32)) is not in the high scores!
    sockclose $sockname
    unset %stats.*
    halt
  }
  if ($regex(%read,/^(- Übersicht|Angriff|Verteidigung|Stärke|Lebenspunkte|Fernkampf|Gebet|Magie|Kochen|
Holzfällerei|Bognerei|Fischen|Funkenschlagen|Handwerk|Schmieden|Bergbau|Pflanzen
kunde|Gewandtheit|Diebstahl|Berserker|Landwirtschaft|Runenfertigung|Jagen|Baukun
st)?$/i)) { set %stats.skill $remove($regml(1),- $+ $chr(32)) }
  if ($regex(%read,/^& #40;Overall|Attack|Defence|Strength|Hitpoints|Ranged|Prayer|Magic|Cooking|Woodcu
tting|Fletching|Fishing|Firemaking|Crafting|Smithing|Mining|Herblore|Agility|Thi
eving|Slayer|Farming|Runecraft|Hunter|Construction)?$/i)) { set %stats.skill $regml(1) }
  if ($regex(%read,/^<td align="right">(.*)</td>$/i)) {
    if (%y == 3) && (<img class= !isin $regml(1)) { set %stats. $+ %stats.skill $+ .exp $regml(1) | inc %y 1 }
    if (%y == 2) && (<img class= !isin $regml(1)) { set %stats. $+ %stats.skill $+ .level $regml(1) | inc %y 1 }
    if (%y == 1) && (<img class= !isin $regml(1)) { set %stats. $+ %stats.skill $+ .rank $regml(1) | inc %y 1 }
    if (%y == 4) { set %y 1 }
  }
  if (</table> isin %read) {
    while ($var(%stats.*.level,%x) != $null) { set %stats.printline %stats.printline $+(%stats.color1,$gettok($var(%stats.*.level,%x),2,46),:,%stats.color2) $iif(%stats.defaultlang == de,$replace($bytes($eval($var(%stats.*.level,%x),2),b),$chr(44),$chr(46)),$bytes($eval($var(%stats.*.level,%x),2),b)) | inc %x 1 }
    if ($var(%stats.*.level,%x) == $null) && (%stats.out == $null) { echo -a %stats.printline | set %stats.out sent-out }
  }
}