All pastes #520385 Raw Edit

Someone

public text v1 · immutable
#520385 ·published 2007-05-29 22:25 UTC
rendered paste body
alias -l c1 { return $+($chr(3),03,$1-) }
alias -l c2 { return $+($chr(3),12,$1-) }
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 $c1(your nickname for the adress) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($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) $c1(The nickname) $c2($2-) $c1(is too long) | halt }  
  if ($2) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))   
  elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
  elseif ($readini(DefRSN.ini,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 $c1(The username) $c2(%target) $c1(did not have the skills or single skill you specified featured in the RuneScape highscores. Please make sure that you spell the name of the user correctly. CohortBot will be unable to find what you are looking for if you do not.) | 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 <= 23) {
        tokenize 32 $hget($sockname,$setskill(%y))
        if ($2) var %file = $iif(%file,$v1 $+ $chr(44)) $c1($setskill(%y)) $c2($2)

        inc %y
      }
      %display $c1(CohortBot has found the statistics for) $c2(%target) $+ $c1(:)
      %display %file  
      unset $+(%,rs.,%ID)
    }
    if (%style == single) {
      if (!$hget($sockname,%skill)) { %display $c2(%target) $c1(did not feature in higscores for) $c2(%skill) | remove $sockname | sockclose $sockname | halt }
      tokenize 32 $hget($sockname,%skill)
      %display $c2(%skill) $c1(statistics have been found for: ) $c2(%target)
      %display $c1(Level:) $c2($2) $c1(Rank:) $c2($1) $c1(Exp:) $c2($3) $c1(Exp for) $c2($calc($2 + 1)) $c1(%skill $+ :) $c2($comma($4))
      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 = $c1(Att:) $c2(%a.lvl) $c1(Str:) $c2(%s.lvl)
      %display $c2(%target) $c1(is level) $c2(%combat)
      %display $c1(Attack:) $c2(%att) . $c1(Defence:) $c2(%def) . $c1(Strength:) $c2(%str) . $c1(Hitpoints:) $c2(%Hp) . $c1(Ranged:) $c2(%rng) . $c1(Prayer:) $c2(%pray) . $c1(Magic:) $c2(%magic) .
      if ($floor(%combat) != 126) %display $c1(Levels for) $c2($floor($calc($gettok(%combat,1,32) +1))) $+ $c1(:) %lvl.base $c1(def/hp:) $c2(%d.lvl) $c1(Prayer:) $c2(%p.lvl)
      else %display $c2(%target) $c1(has reached the maximum Combat level in) $c2(RuneScape!)     
      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) Melee Based }
  elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) Ranged Based }
  elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) Magic Based }
}
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,/^(construct)(ion|ing)?$/si)) return Construction
  elseif ($1 == 23) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
}