All pastes #485425 Raw Edit

Something

public text v1 · immutable
·published 2007-05-13 01:03 UTC
rendered paste body
on $*:TEXT:/^[!@.]/Si:#:{ 
  inc %ID 
  var %line10 = $remove($1,$left($1,1)) 
  tokenize 32 $strip($1-) 
  if ($right($1,-1) == stats) { 
    var %style = astats 
    if ($left($2,1) == $chr(35)) { 
      tokenize 32 $1 $remove($2,$chr(35)) $3- 
      if ($remove($2,-) isnum 30-9999) { 
        set $+(%,stats.gl.,%id) $2 
        if ($3) { set $+(%,stats.rsn.,%id) $replace($3-,$chr(32),-) } 
        elseif ($readini(DefRSN.ini,-n,RSNs,$mask($fulladdress,3))) { set $+(%,stats.rsn.,%id) $ifmatch } 
        else { 
          $iif($left($1,1) == @,msg $chan,notice $nick) You must specify a player to look up. To set a default player, use !defname <username> 
          halt 
        } 
      } 
    } 
    elseif ($2) { set $+(%,stats.rsn.,%id) $replace($2-,$chr(32),-) } 
    elseif ($readini(DefRSN.ini,-n,RSNs,$mask($fulladdress,3))) { set $+(%,stats.rsn.,%id) $ifmatch } 
    else { 
      $iif($left($1,1) == @,msg $chan,notice $nick) You must specify a player to look up. To set a default player, use !defname <username> 
      halt 
    } 
  } 
  elseif ($regex($1,/co?mb(at)?/Si)) { 
    if (*%* iswm $1) var %style = per 
    else var %style = combat 
    if ($2) { set $+(%,stats.rsn.,%ID) $replace($3-,$chr(32),-) } 
    elseif ($readini(DefRSN.ini,-n,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch 
    else { 
      $iif($left($1,1) == @,msg $chan,notice $nick) You must specify a player to look up. To set a default player, use !defname <username> 
      halt 
    } 
  } 
  elseif ($regex($1,/pc|pest(con)?(trol)?/Si)) { 
    var %style = pc 
    if ($2) { set $+(%,stats.rsn.,%ID) $replace($3-,$chr(32),-) } 
    elseif ($readini(DefRSN.ini,-n,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch 
    else { 
      $iif($left($1,1) == @,msg $chan,notice $nick) You must specify a player to look up. To set a default player, use !defname <username> 
      halt 
    } 
  } 
  elseif ($setskill($remove($1,@,!,.))) { 
    var %style = istat, %skill = $setskill($remove($1,@,!,.)) 
    if ($2) { set $+(%,stats.rsn.,%ID) $replace($3-,$chr(32),-) } 
    elseif ($readini(DefRSN.ini,-n,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch 
    else { 
      $iif($left($1,1) == @,msg $chan,notice $nick) You must specify a player to look up. To set a default player, use !defname <username> 
      halt 
    } 
  } 
  elseif ($right($1,-1) == defname) && ($2) { 
    writeini -n DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-) 
    notice $nick Your default username is now " $+ $2- $+ ". This defname is associated with the address $mask($fulladdress,3) 
    halt 
  } 
  else halt 
  if ($len($($+(%,stats.rsn.,%ID),2)) > 12) { 
    $iif($left($1,1) == @,msg $chan,notice $nick) *** [ $($+(%,stats.rsn.,%ID),2) ]: is to long to be a RSN 
    cleanup %ID 
    halt 
  } 
  set $+(%,stats.style.,%ID) %style 
  set $+(%,stats.skill.,%ID) %skill 
  set $+(%,stats.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick) 
  sockopen stats. $+ %ID hiscore.runescape.com 80 
} 
on *:SOCKOPEN:stats.*: { 
  var %id = $gettok($sockname,2,46) 
  sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1 
  sockwrite -n $sockname Host: hiscore.runescape.com 
  sockwrite -n $sockname $+($crlf,$crlf) 
} 
on *:SOCKREAD:stats.*: { 
  var %ID = $gettok($sockname,2,46) 
  if ($sockerr) { 
    $($+(%,stats.style.,%ID),2) *** [ Stats ]: Unable to connect 
    cleanup %id 
  } 
  else { 
    sockread &Incoming 
    bwrite $sockname -1 -1 &Incoming 
    if ($bfind(&Incoming, 1, </html>).text && !$($+(%,stats.active.,%id),2)) { 
      makehash $sockname 
    } 
    elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) { 
      set $+(%,stats.active.,%id) on 
      $($+(%,stats.display.,%ID),2) *** [ $($+(%,stats.rsn.,%ID),2) ]: does not appear in the hiscores list 
      cleanup %id 
    } 
  } 
} 
alias -l makehash { 
  var %file = $1 
  bread %file 1 $file(%file).size &stats 
  var %currentstat, %x = 1 
  while (%x) { 
    var %x = $bfind(&stats,$calc(%x + 1),<a href="overall.ws?table=) 
    var %currentstat = $nohtml($bvar(&stats,%x,200).text) 
    tokenize 10 %currentstat 
    hadd -m %file $1-4 
  } 
  process %file 
} 
alias process {  
  var %table = $1, %id = $gettok($1,2,46) 
  var %display = $($+(%,stats.display.,%ID),2), $& 
    %rsn = $($+(%,stats.rsn.,%ID),2), $& 
    %skill = $($+(%,stats.skill.,%ID),2), $& 
    %style = $($+(%,stats.style.,%ID),2) 
  if (!%rsn) { 
    %display You must specify a player to look up. To set a default player, use !defname <username> 
    cleanup %id 
  } 
  elseif (%style == astats) { 
    if ($($+(%,stats.gl.,%id),2)) { var %gl = $ifmatch } 
    var %x = 1 
    while (%x <= 24) { 
      tokenize 32 $hget(%table,$setskill(%x)) 
      if (!$2) { inc %x } 
      else { 
        if (%gl) { 
          if ($2 isnum %gl) { var %line = %line $setskill(%x) $2 } 
          inc %x 
        } 
        else { 
          var %line = %line $setskill(%x) $2 
          inc %x 
        } 
      } 
    } 
    tokenize 32 %line 
    if ($43) { 
      %display *** [ %rsn ]: $1-42 
      %display *** [ %rsn ]: $43- 
    } 
    else { %display *** [ %rsn ]: $1- } 
    cleanup %id 
  } 
  elseif (%style == per) { 
    var %overall = $remove($iif($gettok($hget(%table,overall),3,32),$v1,0),$chr(44)) 
    var %attack = $remove($iif($gettok($hget(%table,attack),3,32),$v1,0),$chr(44)) 
    var %defence = $remove($iif($gettok($hget(%table,defence),3,32),$v1,0),$chr(44)) 
    var %strength = $remove($iif($gettok($hget(%table,strength),3,32),$v1,0),$chr(44)) 
    var %hitpoints = $remove($iif($gettok($hget(%table,hitpoints),3,32),$v1,0),$chr(44)) 
    var %ranged = $remove($iif($gettok($hget(%table,ranged),3,32),$v1,0),$chr(44)) 
    var %prayer = $remove($iif($gettok($hget(%table,prayer),3,32),$v1,0),$chr(44)) 
    var %magic = $remove($iif($gettok($hget(%table,magic),3,32),$v1,0),$chr(44)) 
    var %cooking = $remove($iif($gettok($hget(%table,cooking),3,32),$v1,0),$chr(44)) 
    var %woodcutting = $remove($iif($gettok($hget(%table,woodcutting),3,32),$v1,0),$chr(44)) 
    var %fletching = $remove($iif($gettok($hget(%table,fletching),3,32),$v1,0),$chr(44)) 
    var %fishing = $remove($iif($gettok($hget(%table,fishing),3,32),$v1,0),$chr(44)) 
    var %firemaking = $remove($iif($gettok($hget(%table,firemaking),3,32),$v1,0),$chr(44)) 
    var %crafting = $remove($iif($gettok($hget(%table,crafting),3,32),$v1,0),$chr(44)) 
    var %smithing = $remove($iif($gettok($hget(%table,smithing),3,32),$v1,0),$chr(44)) 
    var %mining = $remove($iif($gettok($hget(%table,mining),3,32),$v1,0),$chr(44)) 
    var %herblore = $remove($iif($gettok($hget(%table,herblore),3,32),$v1,0),$chr(44)) 
    var %agility = $remove($iif($gettok($hget(%table,agility),3,32),$v1,0),$chr(44)) 
    var %thieving = $remove($iif($gettok($hget(%table,thieving),3,32),$v1,0),$chr(44)) 
    var %slayer = $remove($iif($gettok($hget(%table,slayer),3,32),$v1,0),$chr(44)) 
    var %farming = $remove($iif($gettok($hget(%table,farming),3,32),$v1,0),$chr(44)) 
    var %runecrafting = $remove($iif($gettok($hget(%table,runecraft),3,32),$v1,0),$chr(44)) 
    var %construction = $remove($iif($gettok($hget(%table,construction),3,32),$v1,0),$chr(44)) 
    var %hunter = $remove($iif($gettok($hget(%table,hunter),3,32),$v1,0),$chr(44)) 
    var %cmb = $calc( %attack + %defence + %strength + %hitpoints + %ranged + %prayer + %magic ) 
    var %exp = %overall 
    var %es = $calc( %cooking + %woodcutting + %fletching + %fishing + %firemaking + %crafting + %smithing + %mining + %herblore + %agility + %theiving + %slayer + %farming + %runecrafting + %construction + %hunter ) 
    var %percent = $calc( ( %cmb / %exp ) * 100) 
    %display *** [ %rsn ]: %rsn has $bytes(%cmb,db) Combat Xp and $bytes(%es,db) Non-Combat Xp (Total Xp: $bytes(%overall,db) $+ ) 
    %display *** [ %rsn ]: $round(%percent,2) $+ $chr(37) of %rsn $+ 's Xp is Combat related 
    cleanup %id 
  } 
  elseif (%style == istat) {  
    tokenize 32 $hget(%table,%skill) 
    if (!$2) { %display *** [ %rsn ]: does not appear in the hiscores list for %skill } 
    else { %display *** [ %rsn ]: %skill Level: $2 Rank: $1 Exp: $3 } 
    cleanup %id 
  } 
  elseif (%style == combat) { 
    var %a.mult = .32707, %s.mult = .324, %d.mult = .25, %h.mult = .25, %p.mult = .124, %r.mult = .487, %m.mult = .487 
    var %a = $iif($gettok($hget(%table,attack),2,32),$v1,-), $& 
      %s = $iif($gettok($hget(%table,strength),2,32),$v1,-), $& 
      %d = $iif($gettok($hget(%table,defence),2,32),$v1,-), $& 
      %h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,-), $& 
      %r = $iif($gettok($hget(%table,ranged),2,32),$v1,-), $& 
      %m = $iif($gettok($hget(%table,magic),2,32),$v1,-), $& 
      %p = $iif($gettok($hget(%table,prayer),2,32),$v1,-) 
    var %meleecombat  = $calc(%a * %a.mult + %s * %s.mult + %d * %d.mult + %h * %h.mult + %p * %p.mult), $& 
      %RangedCombat = $calc(%r * %r.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult), $& 
      %MagicCombat  = $calc(%m * %m.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult) 
    if (%MagicCombat == %RangedCombat && %MagicCombat == %RangedCombat && %m != %r) { 
      %display *** [ %rsn ]: does not appear in the hiscores for any combat skills 
      cleanup %id 
    } 
    elseif (%MagicCombat > %RangedCombat) && (%MagicCombat > %MeleeCombat) var %cmbstyle = Mage, %Combat = %MagicCombat 
    elseif (%RangedCombat > %MeleeCombat) var %cmbstyle = Ranger, %Combat = %RangedCombat 
    else var %cmbstyle = Warrior, %combat = %MeleeCombat 
    var %cmb.temp = $abs($calc($int($calc(%combat +1)) - %combat)), $& 
      %a.2lvl = $ceil($calc(%cmb.temp / %a.mult)), %s.2lvl = $ceil($calc(%cmb.temp / %s.mult)), $& 
      %d.2lvl = $ceil($calc(%cmb.temp / %d.mult)), %m.2lvl = $ceil($calc(%cmb.temp / %m.mult)), $& 
      %r.2lvl = $ceil($calc(%cmb.temp / %r.mult)), %p.2lvl = $ceil($calc(%cmb.temp / %p.mult)) 
    if (%cmbstyle == mage) var %dynamic.2lvl = Magic: %m.2lvl 
    elseif (%cmbstyle == Ranger) var %dynamic.2lvl = Ranged: %r.2lvl 
    else var %dynamic.2lvl = Att/Str: $round($calc(%a.2lvl * %s.2lvl / 2 ),0) 
    var %combat = $round(%combat,2), %next = $ceil(%combat) 
    %display *** [ %rsn ]: Cmb-Lvl ( $+ %cmbstyle $+ ): %combat ASDHRPM: %a %s %d %h %r %p %m 
    %display *** [ %rsn ]: Next cmb lvl in: %dynamic.2lvl $& 
      Def/Hp: %d.2lvl Prayer: %p.2lvl 
    cleanup %id 
  } 
  elseif (%style = pc) { 
    var %a = $iif($gettok($hget(%table,attack),2,32),$v1,0), $& 
      %s = $iif($gettok($hget(%table,strength),2,32),$v1,0), $& 
      %d = $iif($gettok($hget(%table,defence),2,32),$v1,0), $& 
      %h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,0), $& 
      %r = $iif($gettok($hget(%table,ranged),2,32),$v1,0), $& 
      %m = $iif($gettok($hget(%table,magic),2,32),$v1,0), $& 
      %p = $iif($gettok($hget(%table,prayer),2,32),$v1,0) 
    var %pc1 = $pc.p(%a), %pc2 = $pc.p(%s), %pc3 = $pc.p(%d), %pc4 = $pc.p(%h) 
    var %pc5 = $pc.p(%r), %pc6 = $pc.p(%m), %pc7 = $pc.pp(%p) 
    %display *** [ %rsn ]: Exp Per Point: Attack %pc1 Strength %pc2 Defence %pc3 Hitpoints %pc4 Ranged %pc5 Magic %pc6 Prayer %pc7 
    cleanup %id 
  } 
} 
alias -l pc.p { return $floor($calc( $1 * $1 / 6 )) } 
alias -l pc.pp { return $floor($calc( $1 * $1 / 12 )) } 
alias -l cleanup { 
  unset $+(%,next.*.,$1) 
  unset %stats.*. [ $+ [ $1 ] ] 
  unset $+(%,stats.*.,$1) 
  sockclose $+(Stats.,$1) 
  .remove $+(Stats.,$1) 
} 
alias -l nohtml { 
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x) 
  return $remove(%x,&nbsp;,$chr(09)) 
} 
alias -l setskill { 
  if ($1 == 1 || $regex($1,/^(st|(skill)?total|overall)$/Si)) { return Overall } 
  elseif ($1 == 2 || $regex($1,/^at(t|k|tack)$/Si)) { return Attack } 
  elseif ($1 == 3 || $regex($1,/^def(en[cs]e)?$$/Si)) { return Defence } 
  elseif ($1 == 4 || $regex($1,/^str(ength)?$/Si)) { return Strength } 
  elseif ($1 == 5 || $regex($1,/^hp|hit(s|points?)?$/Si)) { return Hitpoints } 
  elseif ($1 == 6 || $regex($1,/^range(r|d|ing)?$/Si)) { return Ranged } 
  elseif ($1 == 7 || $regex($1,/^Pray(er)?$$/Si)) { return Prayer } 
  elseif ($1 == 8 || $regex($1,/^mag(e|ic)$$/Si)) { return Magic } 
  elseif ($1 == 9 || $regex($1,/^cook(ing)?$/Si)) { return Cooking } 
  elseif ($1 == 10 || $regex($1,/^wc|wood(cut(ting)?)?$/Si)) { return Woodcutting } 
  elseif ($1 == 11 || $regex($1,/^fletch(ing)?$/Si)) { return Fletching } 
  elseif ($1 == 12 || $regex($1,/^fish(ing)?$/Si)) { return Fishing } 
  elseif ($1 == 13 || $regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) { return Firemaking } 
  elseif ($1 == 14 || $regex($1,/^craft(ing)?$/Si)) { return Crafting } 
  elseif ($1 == 15 || $regex($1,/^(smith|smelt)(ing)?$/Si)) { return Smithing } 
  elseif ($1 == 16 || $regex($1,/^min(e|ing|eing)?$/Si)) { return Mining } 
  elseif ($1 == 17 || $regex($1,/^herb(law|lore)?$/Si)) { return Herblore } 
  elseif ($1 == 18 || $regex($1,/^agil(ity)?$/Si)) { return Agility } 
  elseif ($1 == 19 || $regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) { return Thieving } 
  elseif ($1 == 20 || $regex($1,/^slay(er|ing)?$/Si)) { return Slayer } 
  elseif ($1 == 21 || $regex($1,/^farm(er|ing)?$/Si)) { return Farming } 
  elseif ($1 == 22 || $regex($1,/^(rc|runecraft)(er|ing)?$/Si)) { return Runecraft } 
  elseif ($1 == 23 || $regex($1,/^(construct)(ion|ing)?$/si)) { return Construction } 
  elseif ($1 == 24 || $regex($1,/^(hunt)(ing|er)?$/Si)) { return Hunter }