All pastes #990980 Raw Edit

Unnamed

public text v1 · immutable
#990980 ·published 2008-04-20 17:09 UTC
rendered paste body
on *:Text:*:#: {
  if ($me != Louisc999) halt
  ;;Colors, Color1 is your main color, Color2 is your secondary color.
  set %Color1 03
  set %Color2 06

  ;; Do not edit anything below UNLESS you know what your doing.

  if ($left($1,1) !isin !@) halt
  var %output = $iif($left($1,1) == @,msg $chan,notice $nick), $&
    %s1 = $iif($readini(RSNs.ini,$address($nick,2),S1),$v1,%Color1), $&
    %s2 = $iif($readini(RSNs.ini,$address($nick,2),S2),$v1,%Color2)

  tokenize 32 $right($1-,-1)
  if ($regex($1,/^s(my|set)(Co?l(ou?)?r)$/Si)) {
    if ($2 !isnum 0-15) halt
    if ($3 !isnum 0-15) halt
    writeini RSNs.ini $address($nick,2) S1 $iif($len($2) < 2,0) $+ $2
    writeini RSNs.ini $address($nick,2) S2 $iif($len($3) < 2,0) $+ $3
    notice $nick $+($chr(3),$2) $+ your stats colors have been changed to $2 and $+($chr(3),$iif($len($3) < 2,0),$3) $+ $3 $+ .
    halt
  }
  if ($1 == rsn) {
    if (!$readini(RSNs.ini,$address($2,2),RSN)) {
      notice $nick $s1(%s1,I have found no match for) $s1(%s1,$qt($s2(%s2,$2-)))
      halt
    }
    notice $nick $s2(%s2,$2-,'s) $s1(%s1,rsn is) $s2(%s2,$readini(RSNs.ini,$address($2,2),RSN))
  }
  if (!$skills($1)) halt
  if ($skills($1) == Defname) {
    if ($len($2-) > 12) {
      notice $nick $s1(%s1,The RSN) $s2(%s2,$2-) $s1(%s1,is too long.)
      halt
    }
    writeini RSNs.ini $address($nick,2) RSN $2-
    notice $nick $s1(%s1,The RSN $s2($2- $s1(was successfully added for $s2($nick $+ $s1(.)))))
    halt
  }
  else {
    noop $regex($2-,/(#|[-\+][tg])(\d\d)/Si)
    if ($regml(0) == 2) var %target = $regml(2)
    var %rsn = $remove($2-,$+($regml(1),$regml(2)))
    if (!$remove(%rsn,$chr(32))) {
      if ($readini(RSNs.ini,$address($nick,2),RSN)) var %rsn = $v1
      else var %rsn = $nick
    }
    if ($len(%rsn) > 12) {
      notice $nick $s1(%s1,Your rsn is too long.)
      halt
    }
    var %hash = $+(stats.,$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9))
    hadd -m %hash skill $skills($1)
    hadd -m %hash User %rsn
    hadd -m %hash Target $iif(%target,$v1,0)
    hadd -m %hash Display %output
    hadd -m %hash s1 %s1
    hadd -m %hash s2 %s2
    sockopen %hash hiscore.runescape.com 80
  }
}
on *:SOCKOPEN:stats.*: {
  var %user = $hget($sockname,User)
  hadd -m $sockname User $replace(%user,$chr(32),_)
  sockwrite -n $sockname GET /index_lite.ws?player= $+ $hget($sockname,User) HTTP/1.1
  sockwrite -n $sockname Host: hiscore.runescape.com
  sockwrite -n $sockname $crlf
}
on *:SOCKREAD:stats.*: {
  var %hash = $sockname,%read,%ID = $gettok($sockname,2,46),%s1 = $hget(%hash,s1),%s2 = $hget(%hash,s2)
  sockread %read
  if (*Sorry, the page you were looking for was not found.* iswm %read) {
    $hget(%hash,display) $s1(%s1,The user) $s2(%s2,$hget(%hash,user)) $s1(%s1,doesn't appear in the hiscores.)
    sockclose $sockname
    if ($hget(%hash)) .hfree %hash
  }
  if ($hget(%hash,Read) == $true) {
    tokenize 44 %read
    if ($2 != 1) {
      if ($skills($hget(%hash,Inc))) hadd -m %hash $skills($hget(%hash,Inc)) $1 $2 $3
    }
    hinc -m %hash Inc 1
  }
  if (*Content-length:* iswm %read) {
    hadd -m %hash Read $true
    hadd -m %hash Inc -1
  }
}
on *:sockclose:stats.*:playstats $sockname
alias -l Playstats {
  var %hash = $1,%skill = $hget($1,skill),%user = $replace($hget($1,user),_,$chr(32)),%target = $hget($1,target),%display = $hget($1,display), $&
    %s1 = $hget($1,s1),%s2 = $hget($1,s2)
  if (%skill == stats) {
    var %x = 1,%statline
    while ($skills(%x)) {
      tokenize 32 $hget(%hash,$skills(%x))
      if ($2 > -1) var %statline = %statline $s1(%s1,$skills(%x)) $s2(%s2,$2)
      inc %x
    }
    if (!%statline) {
      %display $s1(%s1,The user) $s2(%s2,%user) $s1(%s1,doesn't appear in the hiscores. Or there was an error in the stats script.)
      goto done
    }
    tokenize 32 $hget(%hash,Overall)
    %display $s1(%s1,Stats for) $s2(%s2,%user) $iif($2 > 0,$s1(%s1,Total level) $s2(%s2,$bytes($2,b)))
    if (%statline) {
      %display $gettok(%statline,1-30,32)
      if ($gettok(%statline,31-,32)) %display $v1
    }
    goto done
  }
  if (%skill == Combat) {
    var %a = Attack,%d = Defence,%s = Strength,%hp = HitPoints,%r = Ranged,%m = Magic,%su = Summoning,%p = Prayer,%h = %hash
    var %cmb = $combat($token($hget(%h,%a),2,32),$token($hget(%h,%d),2,32),$token($hget(%h,%s),2,32),$token($hget(%h,%hp),2,32),$token($hget(%h,%p),2,32),$token($hget(%h,%r),2,32),$token($hget(%h,%m),2,32),$token($hget(%h,%su),2,32))
    var %cmbd = $calc($floor(%cmb) +1),%cmb2 = $calc(%cmbd - %cmb)

    %display $s2(%s2,%user) $s1(%s1,is) $s2(%s2,%cmb) $s1(%s1,based)
    %display $s1(%s1,Att:) $s2(%s2,$token($hget(%h,%a),2,32)) $&
      $s1(%s1,Str:) $s2(%s2,$token($hget(%h,%s),2,32)) $&
      $s1(%s1,Def:) $s2(%s2,$token($hget(%h,%d),2,32)) $&
      $s1(%s1,Hits:) $s2(%s2,$token($hget(%h,%hp),2,32)) $&
      $s1(%s1,Range:) $s2(%s2,$token($hget(%h,%r),2,32)) $&
      $s1(%s1,Pray:) $s2(%s2,$token($hget(%h,%p),2,32)) $&
      $s1(%s1,Mage:) $s2(%s2,$token($hget(%h,%m),2,32)) $&
      $s1(%s1,Summon:) $s2(%s2,$token($hget(%h,%su),2,32))

    %display $s1(%s1,Levels for) $s2(%s2,%cmbd) $+ $s1(%s1,:) $&
      $s1(%s1,Attack) $s2(%s2,$ceil($calc((%cmb2)/( 1 / 3 )))) $&
      $s1(%s1,Strength) $s2(%s2,$ceil($calc((%cmb2) / ( 1 / 3 )))) $&
      $s1(%s1,Defence) $s2(%s2,$ceil($calc((%cmb2) / ( 1 / 4 )))) $&
      $s1(%s1,HitPoints) $s2(%s2,$ceil($calc((%cmb2) / ( 1 / 4 )))) $&
      $s1(%s1,Prayer) $s2(%s2,$ceil($calc((%cmb2) / ( 1 / 8 )))) $&
      $s1(%s1,Summoning) $s2(%s2,$ceil($calc((%cmb2) / ( 1 / 8 ))))
    goto done
  }
  if (!%skill) goto done 
  if ($hget(%hash,%skill) == -1) {
    %display $s1(%s1,The user) $s2(%s2,%user) $s1(%s1,does not feature in the) $s2(%s2,%skill) $s1(%s1,hiscores) 
    if ($hget(%hash)) .hfree %hash
    halt
  }
  else {
    tokenize 32 $hget(%hash,%skill)
    if (%target < $2) var %target = $calc($2 + 1)
    var %xp = $iif($2 >= 99,$calc(200000000 - $3),$calc($exp(%target) - $3))
    %display $s1(%s1,Skill:) $s2(%s2,%skill) $s1(%s1,User:) $s2(%s2,%user)
    %display $s1(%s1,Rank:) $s2(%s2,$bytes($1,b)) $s1(%s1,Level:) $s2(%s2,$bytes($2,b)) $s1(%s1,Exp:) $s2(%s2,$bytes($3,b)) $&
      $iif(%skill != overall,$s1(%s1,Exp to lvl) $s2(%s2,%target) $+ $s1(%s1,:) $s2(%s2,$bytes(%xp,b)))
    var %x = 1,%b = 0
    while ($ini(Skills.ini,%skill,%x)) {
      var %item = $ini(Skills.ini,%skill,%x)
      var %exp = $ceil($calc(%xp / $readini(Skills.ini,%skill,%item)))
      var %string = %string $s1(%s1,%item) $s2(%s2,$bytes(%exp,b))
      inc %b
      if (%b >= 15) {
        %display $s1(%s1,<For level) $s2(%s2,%target) $+ $s1(%s1,>) %string
        %b = 0
        unset %string
      }
      inc %x
    }
    if (%string) %display $s1(%s1,<For level) $s2(%s2,%target) $+ $s1(%s1,>) %string
  }
  :done
  if ($hget(%hash)) hfree %hash
}
alias add {
  if (!$skills($1)) halt
  var %skill = $skills($1)
  var %x = 1
  while ($token($2-,%x,44)) {
    var %section = $token($2-,%x,44)
    var %exp = $token(%section,$token(%section,0,32),32)
    var %item = $token(%section,$+(1-,$calc($token(%section,0,32) -1)),32)
    writeini -n Skills.ini %skill $replace(%item,$chr(32),-) %exp
    inc %x
  }
}
alias rems {
  if (!$skills($1)) halt
  var %skill = $skills($1)
  remini Skills.ini %skill $replace($2-,$chr(32),-)
}
alias list {
  if (!$skills($1)) halt
  var %x = 1
  while ($ini(Skills.ini,$skills($1),%x)) {
    echo -a $ini(Skills.ini,$skills($1),%x) -- $readini(Skills.ini,$skills($1),$ini(Skills.ini,$skills($1),%x))
    inc %x
  }
}
alias skills { 
  if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall 
  elseif ($1 == 1) || ($regex($1,/^at(t|t?k|tack)$/Si)) return Attack 
  elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$/Si)) return Defence 
  elseif ($1 == 3) || ($regex($1,/^str(eng[th][th])?$/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 == 23) || ($regex($1,/^(poh|cons?(truct)?(ion|ing)?|carp(entry)?)$/si)) return Construction
  elseif ($1 == 22) || ($regex($1,/^hunt(er|ing)?$/Si)) return Hunter 
  elseif ($1 == 24) || ($Regex($1,/^sum(mon(ing)?)?$/Si)) return Summoning
  elseif ($regex($1,/^stats?$/Si)) return stats
  elseif ($regex($1,/^(set|def)(rsn|name)$/Si)) return Defname
  elseif ($regex($1,/^co?mba?t?$/Si)) return Combat
}
alias nohtml return $regsubex($1-,/<[^>]+>|&[^;]+;/g,)
alias exp {
  var %x = 1, %level = $1 - 1, %xp = 0
  while (%x <= %level) {
    var %TempXp = $calc($floor($calc(%x + 300 * 2 ^ (%x / 7))) / 4)
    inc %xp %TempXp
    inc %x
  }
  return $int(%xp)
}
alias s1 {
  if ($1 isnum 0-15) && ($2) return $+(,$iif($len($1) < 2,0) $+ $1,$2-,)
  elseif (!$1) return $+($( $+ %color1,2),$2-,)
  else return $+($( $+ %color1,2),$1-,)
}
alias s2 {
  if ($1 isnum 0-15) && ($2) return $+(,$iif($len($1) < 2,0) $+ $1,$2-,)
  elseif (!$1) && ($2) return $+($( $+ %color2,2),$2-,)
  else return $+($( $+ %color2,2),$1-,)
}
alias rsnfind {
  var %x = 1,%s,%t
  while ($ini(RSNs.ini,%x)) {
    %s = $v1
    if ($1 iswm $readini(RSNs.ini,%s,rsn)) %t = %t $+ , $v2
    inc %x
  }
  return $iif($mid(%t,2),$v1,$remove($1,$chr(42)))
}
alias combat.base {
  var %d = $1,%h = $2,%p = $3,%s = $4,%a = $calc(%d * 100),%b = $calc(%h * 100), $&
    %c = $iif(*.* iswm $calc(%p / 2),$calc((%p -1) * 50),$calc(%p * 50)), $&
    %d = $iif(*.* iswm $calc(%s /2),$calc((%s -1) *50),$calc(%s * 50))
  return $calc((%a + %b + %c + %d) / 400)
}
alias combat.class {
  var %att = $1,%str = $2,%range = $3,%mage = $4,%a = $calc(%att * 130),%b = $calc(%str * 130), $&
    %c = $iif(*.* iswm $calc(%range / 2),$calc(((%range - 1) + (%range * 2)) * 65),$calc(%range * 195)), $&
    %d = $iif(*.* iswm $calc(%mage / 2),$calc(((%mage - 1) + (%mage * 2)) * 65),$calc(%mage * 195)), $&
    %melee = $calc((%A + %B) / 400),%range = $calc(%C / 400),%mage = $calc(%D / 400)
  return $token($sorttok(%melee Melee| $+ %range Ranged| $+ %mage Magic,124,nr),1,124)
}
alias combat {
  if ($prop == f2p) tokenize 32 $1-7 0
  var %base = $combat.base($iif(!$2,1,$2),$iif(!$4,10,$4),$iif(!$5,1,$5),$iif(!$8,1,$8))
  var %class = $combat.class($iif(!$1,1,$1),$iif(!$3,1,$3),$iif(!$6,1,$6),$iif(!$7,1,$7))
  var %combat = $calc(%base + $token(%class,1,32))
  return %combat $token(%class,2,32)
}