All pastes #593734 Raw Edit

Unnamed

public text v1 · immutable
#593734 ·published 2007-06-28 14:39 UTC
rendered paste body
on *:TEXT:*:#: {
  if ($left($strip($1),1) !isin @!) || ($regex($strip($1),/(=|[^<]*>|<[^>]*>|<[^>]|[0-9]|$chr(95))/Si)) { halt }
  if ($right($1,-1) == defname) && ($2-) && ($len($2-) <= 12) {
    writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
    .notice $nick $c2(Your nickname for the address) $c1($mask($fulladdress,3)) $c2(has been set to) $c1($2-)
    halt
  }
  inc %ID 1
  if ($right($strip($1),-1) == stats) set $+(%,rs.style.,%ID) stats
  elseif ($regex($strip($1),/co?mb(at)?/Si)) set $+(%,rs.style.,%ID) combat
  elseif ($setskill($remove($strip($1),@,!,.))) set $+(%,rs.style.,%ID) single
  else halt
  if ($len($2-) > 12) { $iif($left($1,1) == @,.msg $chan,.notice $nick) $c2(The nickname) $c1($2-) $c2(is too long) | halt }  
  if ($2) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))   
  elseif ($readini(DefRSN.ini,n,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
  elseif ($readini(DefRSN.ini,n,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
  else set $+(%,rs.rsn.,%ID) $nick
  set $+(%,rs.skill.,%ID) $setskill($remove($strip($1),@,!,.))
  set $+(%,rs.return.,%ID) $iif($left($1,1) == @,.msg $chan,.notice $nick)
  sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
on *:SOCKOPEN:rsh.*:{
  var %ID = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,rs.rsn.,%ID),2) HTTP/1.0
  sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:SOCKREAD:rsh.*:{
  if ($sockerr) { echo -a Error. | halt }
  var %ID = $gettok($sockname,2,46), $&
    %style = $($+(%,rs.style.,%ID),2), $&
    %target = $($+(%,rs.rsn.,%ID),2), $&
    %display = $($+(%,rs.return.,%ID),2), $&
    %skill = $($+(%,rs.skill.,%ID),2)
  sockread &source
  bwrite $sockname -1 -1 &source
  if ($bfind(&source,1,does not feature in the hiscores).text) { %display $c2(The RSN) $c1(%target) $c2(did not feature in runescape highscores for any skill!) | .remove $sockname | sockclose $sockname | halt }
  bread $sockname 1 $file($sockname).size $+(&,$sockname)
  var %stat, %x = 1
  while (%x) {
    var %x = $bfind($+(&,$sockname),$calc(%x + 1),<a href="overall.ws?table=).text, %stat = $htmlfree($bvar($+(&,$sockname),%x,200).text)
    tokenize 10 %stat
    hadd -m $sockname $1 $2 $3 $4 $xp2next($3,$4)
  }
  if ($bfind($+(&,$sockname),1,<img class="mainscroll-bottom).text) {
    if (%style == stats) {
      var %y = 0
      while (%y <= 17) {
        tokenize 32 $hget($sockname,$setskill(%y))
        if ($2) var %file = %file $c2($setskill(%y) $+ :) $c1($2)
        inc %y
      }
      var %j = 18
      while (%j <= 23) {
        tokenize 32 $hget($sockname,$setskill(%j))
        if ($2) var %filee = %filee $c2($setskill(%j) $+ :) $c1($2)
        inc %j
      }
      %display $c2(Stats for) $c1(%target) $+ $c2(:)
      %display %file  
      $iif(%filee,%display %filee)
      unset $+(%,rs.*,%ID)
    }
    if (%style == single) {
      if (!$hget($sockname,%skill)) { %display $c1(%target) $c2(did not feature in higscores for) $c1(%skill) | .remove $sockname | sockclose $sockname | halt }
      tokenize 32 $hget($sockname,%skill)
      %display $c1(%skill) $c2(stats for) $c1(%target) $+ $c2(:)
      %display $c2(Level:) $c1($2) $c2(Rank:) $c1($1) $c2(Exp:) $c1($3) $+($c2($chr(40)),$iif($2 != 99,$c1($round($calc(($remove($3,$chr(44)) / 13034431) * 100),5)),$c1(100)),$c2(% of) $c1(99),$c2($chr(41)))) $iif($2 != 99,$c2(Exp for) $c1($calc($2 + 1)) $c1(%skill) $+ $c2(:) $c1($comma($4)))
      if ($2 != 99) {
        if (%skill == Mining) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Tin/Copper:) $c1($comma($ceil($calc($4 / 17.5)))) $c2(Iron:) $c1($comma($ceil($calc($4 / 35)))) $c2(Silver:) $c1($comma($ceil($calc($4 / 40)))) $c2(Coal:) $c1($comma($ceil($calc($4 / 50)))) $c2(Gold:) $c1($comma($ceil($calc($4 / 65)))) $c2(Mithril:) $c1($comma($ceil($calc($4 / 80)))) $c2(Adamantite:) $c1($comma($ceil($calc($4 / 95)))) $c2(Runite:) $c1($comma($ceil($calc($4 / 120)))) }
        elseif (%skill == Fishing) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Shrimp:) $c1($comma($ceil($calc($4 / 10)))) $c2(Sardine:) $c1($comma($ceil($calc($4 / 20)))) $c2(Herring:) $c1($comma($ceil($calc($4 / 30)))) $c2(Anchovy:) $c1($comma($ceil($calc($4 / 40)))) $c2(Trout:) $c1($comma($ceil($calc($4 / 50)))) $c2(Pike:) $c1($comma($ceil($calc($4 / 60)))) $c2(Salmon:) $c1($comma($ceil($calc($4 / 70)))) $c2(Tuna:) $c1($comma($ceil($calc($4 / 80)))) $c2(Lobster:) $c1($comma($ceil($calc($4 / 90)))) $c2(Swordfish:) $c1($comma($ceil($calc($4 / 100)))) $c2(Monkfish:) $c1($comma($ceil($calc($4 / 120)))) $c2(Shark:) $c1($comma($ceil($calc($4 / 110)))) }
        elseif (%skill == Runecraft) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Air:) $c1($comma($ceil($calc($4 / 5)))) $c2(Mind:) $c1($comma($ceil($calc($4 / 5.5)))) $c2(Water:) $c1($comma($ceil($calc($4 / 6)))) $c2(Earth:) $c1($comma($ceil($calc($4 / 6.5)))) $c2(Fire:) $c1($comma($ceil($calc($4 / 7)))) $c2(Body:) $c1($comma($ceil($calc($4 / 7.5)))) $c2(Cosmic:) $c1($comma($ceil($calc($4 / 8)))) $c2(Chaos:) $c1($comma($ceil($calc($4 / 8.5)))) $c2(Astral:) $c1($comma($ceil($calc($4 / 8.7)))) $c2(Nature:) $c1($comma($ceil($calc($4 / 9)))) $c2(Law:) $c1($comma($ceil($calc($4 / 9.5)))) $c2(Death:) $c1($comma($ceil($calc($4 / 10)))) }
        elseif (%skill == Woodcutting) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Normal:) $c1($comma($ceil($calc($4 / 25)))) $c2(Oak:) $c1($comma($ceil($calc($4 / 37.5)))) $c2(Willow:) $c1($comma($ceil($calc($4 / 67.5)))) $c2(Teak:) $c1($comma($ceil($calc($4 / 85)))) $c2(Maple:) $c1($comma($ceil($calc($4 / 100)))) $c2(Mahogany:) $c1($comma($ceil($calc($4 / 125)))) $c2(Yew:) $c1($comma($ceil($calc($4 / 175)))) $c2(Magic:) $c1($comma($ceil($calc($4 / 250)))) }
        elseif (%skill == Construction) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Normal Planks:) $c1($comma($ceil($calc($4 / 25)))) $c2(Oak Planks:) $c1($comma($ceil($calc($4 / 60)))) $c2(Teak Planks:) $c1($comma($ceil($calc($4 / 90)))) $c2(Mahogany Planks:) $c1($comma($ceil($calc($4 / 140)))) }
        elseif (%skill == Agility) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Gnome Course:) $c1($comma($ceil($calc($4 / 86.5)))) $c2(Pyramid:) $c1($comma($ceil($calc($4 / 1014)))) $c2(Barbarian Course:) $c1($comma($ceil($calc($4 / 153.2)))) $c2(Ape Atoll:) $c1($comma($ceil($calc($4 / 580)))) $c2(Wilderness Course:) $c1($comma($ceil($calc($4 / 571.4)))) $c2(Werewolves' Course:) $c1($comma($ceil($calc($4 / 540)))) }
        elseif (%skill == Magic) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Superheat Item:) $c1($comma($ceil($calc($4 / 53)))) $c2(Camelot Teleport:) $c1($comma($ceil($calc($4 / 55.5)))) $c2(High Level Alchemy:) $c1($comma($ceil($calc($4 / 65)))) $c2(Charge:) $c1($comma($ceil($calc($4 / 180)))) }       
        elseif (%skill == Hunter) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Prickly Kebbit:) $c1($comma($ceil($calc($4 / 204)))) $c2(Snowy Knight:) $c1($comma($ceil($calc($4 / 44)))) $c2(Swamp Lizard:) $c1($comma($ceil($calc($4 / 152)))) $c2(Spined Larupia:) $c1($comma($ceil($calc($4 / 180)))) }
        elseif (%skill == Cooking) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Sharks:) $c1($comma($ceil($calc($4 / 210)))) $c2(Lobsters:) $c1($comma($ceil($calc($4 / 120)))) $c2(Monkfish:) $c1($comma($ceil($calc($4 / 150)))) $c2(Swordfish:) $c1($comma($ceil($calc($4 / 140)))) $c2(Tuna:) $c1($comma($ceil($calc($4 / 100)))) }
        elseif (%skill == Prayer) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Bones:) $c1($comma($ceil($calc($4 / 4.5)))) $c2(Big bones:) $c1($comma($ceil($calc($4 / 15)))) $c2(Baby-Dragon bones:) $c1($comma($ceil($calc($4 / 30)))) $c2(Dragon bones:) $c1($comma($ceil($calc($4 / 72)))) }
        elseif (%skill == Ranged) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Blue Dragons:) $c1($comma($ceil($calc($4 / 436)))) $c2(Fire giants:) $c1($comma($ceil($calc($4 / 447.2)))) $c2(Ogres:) $c1($comma($ceil($calc($4 / 240)))) }
        elseif (%skill == Attack) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Ogres:) $c1($comma($ceil($calc($4 / 240)))) $c2(Greater Demons:) $c1($comma($ceil($calc($4 / 348)))) $c2(Dust Devils:) $c1($comma($ceil($calc($4 / 420)))) $c2(Shadow Warriors:) $c1($comma($ceil($calc($4 / 268)))) $c2(Abyssal Demons:) $c1($comma($ceil($calc($4 / 600)))) }
        elseif (%skill == Strength) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Ogres:) $c1($comma($ceil($calc($4 / 240)))) $c2(Greater Demons:) $c1($comma($ceil($calc($4 / 348)))) $c2(Dust Devils:) $c1($comma($ceil($calc($4 / 420)))) $c2(Shadow Warriors:) $c1($comma($ceil($calc($4 / 268)))) $c2(Abyssal Demons:) $c1($comma($ceil($calc($4 / 600)))) }
        elseif (%skill == Defence) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Ogres:) $c1($comma($ceil($calc($4 / 240)))) $c2(Greater Demons:) $c1($comma($ceil($calc($4 / 348)))) $c2(Dust Devils:) $c1($comma($ceil($calc($4 / 420)))) $c2(Shadow Warriors:) $c1($comma($ceil($calc($4 / 268)))) $c2(Abyssal Demons:) $c1($comma($ceil($calc($4 / 600)))) }
        elseif (%skill == Fletching) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Magic Longbows:) $c1($comma($ceil($calc($4 / 183)))) $c2(Magic Shortbow:) $c1($comma($ceil($calc($4 / 166.6)))) $c2(Yew Longbow:) $c1($comma($ceil($calc($4 / 150)))) $c2(Yew Shortbow:) $c1($comma($ceil($calc($4 / 133)))) $c2(Willow Longbow:) $c1($comma($ceil($calc($4 / 83)))) $c2(Willow Shortbow:) $c1($comma($ceil($calc($4 / 66.6)))) }
        elseif (%skill == Firemaking) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Magic Logs:) $c1($comma($ceil($calc($4 / 303.8)))) $c2(Yew Logs:) $c1($comma($ceil($calc($4 / 202.5)))) $c2(Mahogany Logs:) $c1($comma($ceil($calc($4 / 157.5)))) $c2(Maple Logs:) $c1($comma($ceil($calc($4 / 135)))) $c2(Teak Logs:) $c1($comma($ceil($calc($4 / 105)))) $c2(Willow Logs:) $c1($comma($ceil($calc($4 / 90)))) }   
        elseif (%skill == Crafting) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Green Dragon-Hide:) $c1($comma($ceil($calc($4 / 62)))) $c2(Blue Dragon-Hides:) $c1($comma($ceil($calc($4 / 70)))) $c2(Red Dragon-Hides:) $c1($comma($ceil($calc($4 / 78)))) $c2(Black Dragon-Hides:) $c1($comma($ceil($calc($4 / 86)))) }
        elseif (%skill == hitpoints) { %display $c2(For level) $c1($iif(%goal,$chr(32) $+ %goal,$calc($2 + 1))) $+ $c2($chr(58)) $c2(Ogres:) $c1($comma($ceil($calc($4 / 79)))) $c2(Greater Demons:) $c1($comma($ceil($calc($4 / 115)))) $c2(Dust Devils:) $c1($comma($ceil($calc($4 / 139)))) $c2(Shadow Warriors:) $c1($comma($ceil($calc($4 / 89)))) $c2(Abyssal Demons:) $c1($comma($ceil($calc($4 / 199)))) }
      }
      unset $+(%,rs.*,%ID)  
    }
    if (%style == combat) {
      var %att = $gettok($hget($sockname,attack),2,32), %def = $gettok($hget($sockname,defence),2,32), $&
        %str = $gettok($hget($sockname,strength),2,32), %hp = $gettok($hget($sockname,hitpoints),2,32), $&
        %rng = $gettok($hget($sockname,ranged),2,32), %pray = $gettok($hget($sockname,prayer),2,32), $&
        %magic = $gettok($hget($sockname,magic),2,32)
      var %combat = $cmb(%att,%def,%str,%hp,%rng,%pray,%magic)
      var %temp = $abs($calc($int($calc($gettok(%combat,1,32) +1)) - $gettok(%combat,1,32))), $& 
        %a.lvl = $ceil($calc(%temp / .32707)), %s.lvl = $ceil($calc(%temp / .324)), $& 
        %d.lvl = $ceil($calc(%temp / .25)), $&
        %m.lvl = $ceil($calc(%temp / .487)), $& 
        %r.lvl = $ceil($calc(%temp / .487)), $&
        %p.lvl = $ceil($calc(%temp / .124))
      if ($gettok(%combat,2,32) == Magic Based) var %lvl.base = Magic: %m.lvl
      elseif ($gettok(%combat,2,32) == Ranged Based) var %lvl.base = Ranged: %r.lvl
      else var %lvl.base = $c2(Att:) $c1(%a.lvl) $c2(Str:) $c1(%s.lvl)
      %display $c1(%target) $c2(is level) $c1(%combat)
      %display $c2(Att:) $c1(%att) $c2(Def:) $c1(%def) $c2(Str:) $c1(%str) $c2(hp:) $c1(%Hp) $c2(Range:) $c1(%rng) $c2(Pray:) $c1(%pray) $c2(Magic:) $c1(%magic)
      if ($floor(%combat) != 126) %display $c2(Levels for) $c1($floor($calc($gettok(%combat,1,32) +1))) $+ $c2(:) %lvl.base $c2(def/hp:) $c1(%d.lvl) $c2(Prayer:) $c1(%p.lvl)     
      unset $+(%,rs.*,%ID)
    }
  }
  .remove $sockname
}
alias -l cmb {
  var %a = $calc($2 * 100), %b = $calc($4 * 100), %c = $calc($6 * 50)
  var %base = $calc($calc(%a + %b + %c) / 400), %d = $calc($1 * 130), %e = $calc($3 * 130)
  if ($and($5,1) == 0) var %f = $calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65)
  elseif ($and($5,1) == 1) var %f = $calc($5 * 195)
  if ($and($7,1) == 0) var %g = $calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65)
  elseif ($and($7,1) == 1) var %g = $calc($7 * 195)
  var %mcombat = $calc($calc(%d + %e) / 400), %rcombat = $calc(%f / 400), %macombat = $calc(%g / 400)
  if (%mcombat > %rcombat) && (%mcombat > %macombat) { return $calc(%mcombat + %base) $+($c2($chr(40)),$c1(Melee Based),$c2($chr(41))) }
  elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) $+($c2($chr(40)),$c1(Ranged Based),$c2($chr(41))) }
  elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) $+($c2($chr(40)),$c1(Magic Based),$c2($chr(41))) }
}
alias -l htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&amp;) | return %x }
alias -l comma {  Var %a, %b = $regsub($ticks,$$1,/\G([+-]?\d+?)(?=(?:\d{3})++(?=\.\d++$|$))/g,\1 $+ $chr(44),%a) | Return %a }
alias -l xp2Next { var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) | return $calc(%nextxp - %xp) }
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 setskill {
  if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
  elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)$/Si)) return Attack
  elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
  elseif ($1 == 3) || ($regex($1,/^str(ength)?$/Si)) return Strength
  elseif ($1 == 4) || ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
  elseif ($1 == 5) || ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
  elseif ($1 == 6) || ($regex($1,/^Pray(er)?$$/Si)) return Prayer
  elseif ($1 == 7) || ($regex($1,/^mag(e|ic)$$/Si)) return Magic
  elseif ($1 == 8) || ($regex($1,/^cook(ing)?$/Si)) return Cooking
  elseif ($1 == 9) || ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
  elseif ($1 == 10) || ($regex($1,/^fletch(ing)?$/Si)) return Fletching
  elseif ($1 == 11) || ($regex($1,/^fish(ing)?$/Si)) return Fishing
  elseif ($1 == 12) || ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
  elseif ($1 == 13) || ($regex($1,/^craft(ing)?$/Si)) return Crafting
  elseif ($1 == 14) || ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
  elseif ($1 == 15) || ($regex($1,/^mine(ing)?$/Si)) return Mining
  elseif ($1 == 16) || ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
  elseif ($1 == 17) || ($regex($1,/^agil(ity)?$/Si)) return Agility
  elseif ($1 == 18) || ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
  elseif ($1 == 19) || ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
  elseif ($1 == 20) || ($regex($1,/^farm(er|ing)?$/Si)) return Farming
  elseif ($1 == 21) || ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
  elseif ($1 == 22) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
  elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}