All pastes #284873 Raw Edit

StatsScriptFinal

public text v1 · immutable
#284873 ·published 2006-12-19 11:27 UTC
rendered paste body
on $*:text:/^((\[[a-z]{2}\])?Generic )?[@`.,!]stats */Si:#: { 
  if ($hget(disabled,$chan)) && ($1 != $me) halt
  if ($1 == $me) tokenize 32 $2-
  if ($1 != $me) && ($remove($1,$left($1,1)) != stats) halt
  if (!$2) && (!$hget(rsn,$address($nick,2))) $iif($left($1,1) == @,msg $chan,notice $nick) 14You must specify a04 Username14 to lookup!
  if ($2) || ($hget(rsn,$address($nick,2)) && !$2) {
    if ($len($2-) > 12) notice $nick 14Usernames must be under a length of 12 characters
    if ($len($2-) <= 12) {
      inc %statsid 1
      set -u60 %StatsType [ $+ [ %statsid ] ] Stats
      set -u60 %StatsName [ $+ [ %statsid ] ] $iif($hget(rsn,$address($nick,2)),$iif(!$2,$hget(rsn,$address($nick,2)),$replace($2-,$chr(32),$chr(95),$chr(35),$chr(45))))
      set -u60 %statsnick [ $+ [ %statsid ] ] $nick
      set -u60 %statschan [ $+ [ %statsid ] ] $chan
      set -u60 %statsmsg [ $+ [ %statsid ] ] $iif($left($1,1) == @,msg $chan,notice $nick)
      sockopen $+(rsstats,%statsid) hiscore.runescape.com 80
    }
  }
}
on *:SOCKOPEN:Rsstats*:{
  sockwrite -n $sockname GET /hiscorepersonal.ws?user1= $+ %StatsName [ $+ [ $right($sockname,-7) ] ] HTTP/1.1
  sockwrite -n $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}

on *:SOCKREAD:rsstats*:{
  var %stats.read
  sockread %stats.read
  if (does not feature in the hiscores isin %Stats.read) { 
    %statsmsg [ $+ [ $right($sockname,-7) ] ] $+(04,%StatsName [ $+ [ $right($sockname,-7) ] ]) 14Did not appear in the highscores.
    set -u60 %nubstats [ $+ [ $right($sockname,-7) ] ] yes
  }
  if ($regex(%Stats.read,/(Overall|Attack|Defence|Strength|Hitpoints|Woodcutting|Fletching|Hunter|Construction|Fishing|Cooking|Prayer|Magic|Ranged|Firemaking|Crafting|Smithing|Herblore|Mining|Agility|Thieving|Slayer|Farming|RuneCraft) */iS) == 1) && (<a href !isin %stats.read) && (img !isin %stats.read) && (<form action !isin %stats.read) { 
    set %Statname %Stats.read
  }
  if ((<td align="right"> isin %stats.read && </td> isin %stats.read) && ($remove($htmlfree(%stats.read),$chr(44)) isnum)) || (Not Ranked isin $htmlfree(%stats.read)) {
    if (Not Ranked isin $htmlfree(%stats.read)) {
      if (%Statname == Overall) {
        set %Overall [ $+ [ $right($sockname,-7) ] ] -
      }
      ;if (%statname == Attack) {
      ;%message [ $+ [ $right($sockname,-7) ] ] = $+(14,%statname,$chr(58),04,$chr(32),-)
      ;set -u60 %attack [ $+ [ $right($sockname,-7) ] ] 1
      ;}
      ;if (%statname != Attack && %statname != Overall) {
      ;%data = %message [ $+ [ $right($sockname,-7) ] ] $+(14,%statname,$chr(58),04,$chr(32),-)
      ;%message [ $+ [ $right($sockname,-7) ] ] = %data
      ;}
      set -u60 $+(%,%statname,$right($sockname,-7)) 1
    }
    if (%id [ $+ [ %statname ] $+ [ $right($sockname,-7) ] ] == 2) {
      set -u30 $+(%,xp,%statname,$right($sockname,-7)) $htmlfree(%stats.read)
    }    
    if (%id [ $+ [ %statname ] $+ [ $right($sockname,-7) ] ] == 1) {
      set -u30 $+(%,%statname,$right($sockname,-7)) $htmlfree(%stats.read)
      if (%statname == attack) {
        %message [ $+ [ $right($sockname,-7) ] ] = $+(14,%statname,$chr(58),04,$chr(32),$htmlfree(%stats.read))
      }
      if (%statname != attack && %STatname != Overall) {
        %data = %message [ $+ [ $right($sockname,-7) ] ] $+(14,%statname,$chr(58),04,$chr(32),$htmlfree(%stats.read))
        %message [ $+ [ $right($sockname,-7) ] ] = %data
      }
      inc %id [ $+ [ %statname ] $+ [ $right($sockname,-7) ] ] 1
    }
    if (!%id [ $+ [ %statname ] $+ [ $right($sockname,-7) ] ]) {
      set -u30 $+(%,rank,%statname,$right($sockname,-7)) $htmlfree(%stats.read)
      set -u10 %id [ $+ [ %statname ] $+ [ $right($sockname,-7) ] ] 1
    }
  }
}
on *:sockclose:Rsstats*: {
  if (%nubstats [ $+ [ $right($sockname,-7) ] ]) halt
  else {
    var %def = $calc(%defence [ $+ [ $right($sockname,-7) ] ] * 100)
    var %hp = $calc(%hitpoints [ $+ [ $right($sockname,-7) ] ] * 100)
    var %base = $calc(($calc(%defence [ $+ [ $right($sockname,-7) ] ] * 100) + $calc(%hitpoints [ $+ [ $right($sockname,-7) ] ] * 100) + $iif($regex($right(%prayer [ $+ [ $right($sockname,-7) ] ],1),[02468]),$calc(%prayer [ $+ [ $right($sockname,-7) ] ] * 50),$calc((%prayer [ $+ [ $right($sockname,-7) ] ] - 1) * 50))) / 400)
    var %melee = $calc(($calc(%attack [ $+ [ $right($sockname,-7) ] ] * 130) + $calc(%strength [ $+ [ $right($sockname,-7) ] ] * 130)) / 400)
    var %ranger = $calc($iif($regex($right(%ranged [ $+ [ $right($sockname,-7) ] ],1),[02468]),$calc(%ranged [ $+ [ $right($sockname,-7) ] ] * 195),$calc((%ranged [ $+ [ $right($sockname,-7) ] ] * 195) - 65)) / 400)
    var %mage = $calc($iif($regex($right(%magic [ $+ [ $right($sockname,-7) ] ],1),[02468]),$calc(%magic [ $+ [ $right($sockname,-7) ] ] * 195),$calc((%magic [ $+ [ $right($sockname,-7) ] ] * 195) - 65)) / 400)
    if (%melee > %ranger) && (%melee > %mage) {
      var %style = Melee
      var %combat = $calc(%melee + %base)
    }
    if (%ranger > %melee) && (%ranger > %mage) {
      var %style = Ranger
      var %combat = $calc(%ranger + %base)
    }
    if (%mage > %melee) && (%mage > %ranger) {
      var %style = Mage
      var %combat = $calc(%mage + %base)
    }
    else {
      var %style = Melee
      var %combat = $calc(%melee + %base)
    }
    if (%StatsType [ $+ [ $right($sockname,-7) ] ] == Stats) {
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Stats for04 $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) 14- Overall14:04 $iif(%Overall [ $+ [ $right($sockname,-7) ] ] > 1,%Overall [ $+ [ $right($sockname,-7) ] ],-) 14Combat:04 %combat
      %statsmsg [ $+ [ $right($sockname,-7) ] ] %message [ $+ [ $right($sockname,-7) ] ]   
      unset %message [ $+ [ $right($sockname,-7) ] ]
      unset %id* [ $+ [ $right($sockname,-7) ] ]
    }
    if (%StatsType [ $+ [ $right($sockname,-7) ] ] == cmb) {
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Name:04 $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) 14Combat:04 %combat 14(04 $+ %Style Based14)
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Att:04 %Attack [ $+ [ $right($sockname,-7) ] ] 14Def:04 %Defence [ $+ [ $right($sockname,-7) ] ] 14Str:04 %Strength [ $+ [ $right($sockname,-7) ] ] 14Hits:04 %hitpoints [ $+ [ $right($sockname,-7) ] ] 14Range:04 %ranged [ $+ [ $right($sockname,-7) ] ] 14Pray:04 %Prayer [ $+ [ $right($sockname,-7) ] ] 14Mage:04 %magic [ $+ [ $right($sockname,-7) ] ]
      unset %message [ $+ [ $right($sockname,-7) ] ] 
    }
    if (%StatsType [ $+ [ $right($sockname,-7) ] ] == skill) {
      %skill = %skill [ $+ [ $right($sockname,-7) ] ]
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14 $+ %skill [ $+ [ $right($sockname,-7) ] ] for04 $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) $+ 14:
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Rank:04 %rank [ $+ [ %skill ] $+ [ $right($sockname,-7) ] ] 14Level:04 $($+(%,%skill,$right($sockname,-7)),2) 14XP:04 $($+(%,xp,%skill,$right($sockname,-7)),2) 14XP To Next Level:04 $iif($($+(%,%skill,$right($sockname,-7)),2) != 99,$bytes($xp2next($($+(%,%skill,$right($sockname,-7)),2),$($+(%,xp,%skill,$right($sockname,-7)),2)),db),-)
      unset %message [ $+ [ $right($sockname,-7) ] ] 
    }
    if (%StatsType [ $+ [ $right($sockname,-7) ] ] == Percent) {
      %cmbxp = $calc($do($($+(%,xp,Attack,$right($sockname,-7)),2)) + $do($($+(%,xp,Strength,$right($sockname,-7)),2)) + $do($($+(%,xp,Defence,$right($sockname,-7)),2)) + $do($($+(%,xp,Hitpoints,$right($sockname,-7)),2)) + $do($($+(%,xp,Prayer,$right($sockname,-7)),2)) + $do($($+(%,xp,Ranged,$right($sockname,-7)),2)) + $do($($+(%,xp,magic,$right($sockname,-7)),2)))
      %noncmbxp = $calc($do($($+(%,xp,Overall,$right($sockname,-7)),2)) - %cmbxp)
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Combat Percent for:04 $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) $+ 14:
      %statsmsg [ $+ [ $right($sockname,-7) ] ] 14Cmb Based XP:04 $bytes(%cmbxp,db) 14Non-Cmb Based XP:04 $bytes(%noncmbxp,db) 14Cmb Percent:04 $round($calc((%cmbxp / $do($($+(%,xp,Overall,$right($sockname,-7)),2)) )*100),2) $+ $chr(37)
      unset %message [ $+ [ $right($sockname,-7) ] ]
    }
    if (%StatsType [ $+ [ $right($sockname,-7) ] ] == PestControl) {
      if (!%pcgoal [ $+ [ $right($sockname,-7) ] ]) {
        %skill = %skill [ $+ [ $right($sockname,-7) ] ]
        set -u10 %nextlevel [ $+ [ $right($sockname,-7) ] ] $xp2next($do($($+(%,%skill,$right($sockname,-7)),2)),$($+(%,xp,%skill,$right($sockname,-7)),2))
        set -u10 %pcpoints [ $+ [ $right($sockname,-7) ] ] $pest($($+(%,%skill,$right($sockname,-7)),2),%skill,$calc($($+(%,%skill,$right($sockname,-7)),2) +1),%nextlevel [ $+ [ $right($sockname,-7) ] ])
        %statsmsg [ $+ [ $right($sockname,-7) ] ] 04 $+ $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) 14needs04 $remove(%pcpoints [ $+ [ $right($sockname,-7) ] ],$left(%pcpoints [ $+ [ $right($sockname,-7) ] ],1)) 14PestControl Points for04 $calc($do($($+(%,%skill,$right($sockname,-7)),2)) +1) 14 $+ %skill [ $+ [ $right($sockname,-7) ] ]
        unset %message [ $+ [ $right($sockname,-7) ] ]
      }
      if (%pcgoal [ $+ [ $right($sockname,-7) ] ]) {
        if (%pcgoal [ $+ [ $right($sockname,-7) ] ] < $($+(%,%skill,$right($sockname,-7)),2)) %statsmsg [ $+ [ $right($sockname,-7) ] ] 14You must specify a goal which is higher than the current level. | halt
        %skill = %skill [ $+ [ $right($sockname,-7) ] ]
        set -u10 %nextlevel [ $+ [ $right($sockname,-7) ] ] $calc($xp(%pcgoal [ $+ [ $right($sockname,-7) ] ]) - $do($($+(%,xp,%skill,$right($sockname,-7)),2)))
        set -u10 %pcpoints [ $+ [ $right($sockname,-7) ] ] $pest($do($($+(%,%skill,$right($sockname,-7)),2)),%skill,%pcgoal [ $+ [ $right($sockname,-7) ] ],%nextlevel [ $+ [ $right($sockname,-7) ] ]))
        %statsmsg [ $+ [ $right($sockname,-7) ] ] 04 $+ $replace(%StatsName [ $+ [ $right($sockname,-7) ] ],$chr(95),$chr(32)) 14needs04 $remove(%pcpoints [ $+ [ $right($sockname,-7) ] ],$left(%pcpoints [ $+ [ $right($sockname,-7) ] ],1)) 14PestControl Points for04 %pcgoal [ $+ [ $right($sockname,-7) ] ] 14 $+ %skill [ $+ [ $right($sockname,-7) ] ]
        unset %message [ $+ [ $right($sockname,-7) ] ]
      }
    }
  }
}
alias -l htmlfree {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
  return %x
}

on $*:text:/^((\[[a-z]{2}\])?Generic )?[@`.,!](cmb|combat)*/Si:#: { 
  if ($hget(disabled,$chan)) && ($1 != $me) halt
  if ($1 == $me) tokenize 32 $2-
  if ($remove($1,$left($1,1)) == cmb-est) halt
  if ($1 != $me) && ($regex($remove($1,$left($1,1)),/(cmb|combat|cmb%)/i) != 1)  halt
  if (!$2) $iif($left($1,1) == @,msg $chan,notice $nick) 14You must specify a04 Username14 to lookup!
  if ($2) {
    if ($len($2-) > 12) notice $nick 14Usernames must be under a length of 12 characters
    if ($len($2) <= 12) {
      inc %statsid 1
      set -u60 %StatsType [ $+ [ %statsid ] ] $iif($right($1,1) == $chr(37),Percent,Cmb)
      set -u60 %StatsName [ $+ [ %statsid ] ] $replace($2-,$chr(32),$chr(95),$chr(35),$chr(45))
      set -u60 %statsnick [ $+ [ %statsid ] ] $nick
      set -u60 %statschan [ $+ [ %statsid ] ] $chan
      set -u60 %statsmsg [ $+ [ %statsid ] ] $iif($left($1,1) == @,msg $chan,notice $nick)
      sockopen $+(rsstats,%statsid) hiscore.runescape.com 80
    }
  }
}

alias SkillTrigger {
  if ($regex($1,/^(st|(skill)?total|overall)$/Si)) $iif($2,return yes,return Overall)
  elseif ($regex($1,/^at(t|k|tack)$/Si)) $iif($2,return yes,return Attack) 
  elseif ($regex($1,/^def(en[cs]e)?$$/Si)) $iif($2,return yes,return Defence) 
  elseif ($regex($1,/^str(ength)?$/Si)) $iif($2,return yes,return Strength) 
  elseif ($regex($1,/^hp|hits(points)??$/Si)) $iif($2,return yes,return Hitpoints) 
  elseif ($regex($1,/^range(r|d|ing)?$/Si)) $iif($2,return yes,return Ranged) 
  elseif ($regex($1,/^Pray(er)?$$/Si)) $iif($2,return yes,return Prayer) 
  elseif ($regex($1,/^mag(e|ic)$$/Si)) $iif($2,return yes,return Magic) 
  elseif ($regex($1,/^cook(ing)?$/Si)) $iif($2,return yes,return Cooking) 
  elseif ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) $iif($2,return yes,return Woodcutting) 
  elseif ($regex($1,/^fletch(ing)?$/Si)) $iif($2,return yes,return Fletching) 
  elseif ($regex($1,/^fish(ing)?$/Si)) $iif($2,return yes,return Fishing) 
  elseif ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) $iif($2,return yes,return Firemaking) 
  elseif ($regex($1,/^craft(ing)?$/Si)) $iif($2,return yes,return Crafting) 
  elseif ($regex($1,/^(smith|smelt)(ing)?$/Si)) $iif($2,return yes,return Smithing) 
  elseif ($regex($1,/^(mine|Mining)$/Si)) $iif($2,return yes,return Mining) 
  elseif ($regex($1,/^herb(law|lore)?$/Si)) $iif($2,return yes,return Herblore) 
  elseif ($regex($1,/^agil(ity)?$/Si)) $iif($2,return yes,return Agility)
  elseif ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) $iif($2,return yes,return Thieving) 
  elseif ($regex($1,/^slay(er|ing)?$/Si)) $iif($2,return yes,return Slayer)
  elseif ($regex($1,/^farm(er|ing)?$/Si)) $iif($2,return yes,return Farming)
  elseif ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) $iif($2,return yes,return Runecraft) 
  elseif ($regex($1,/^cons(truct(ion)?)?$/Si)) $iif($2,return yes,return Construction)
  elseif ($regex($1,/^hunt(er|ing)?$/Si)) $iif($2,return yes,return Hunter)
}

alias -l do {
  return $remove($1,$chr(44))
}