All pastes #174076 Raw Edit

Someone

public text v1 · immutable
·published 2006-09-17 15:45 UTC
rendered paste body
alias rsstats.voice {
  if ($me isop $chan) || ($me ishop $chan) {
    var %x = 1
    while (%x <= $nick($chan,0,r)) {
      var %s = 1
      while ($sock(rsstats. $+ %s)) || ($sock(rsstat. $+ %s)) {
        inc %s
      }
      set %rsstats.skill. [ $+ [ %s ] ] autovoice
      set %rsstats.rsn. [ $+ [ %s ] ] $nick($chan,%x,r)
      set %rsstats.chan. [ $+ [ %s ] ] $chan
      if (%rsstats.settingssource == rscript) { sockopen rsstats. [ $+ [ %s ] ] rscript.org 80 }
      elseif (%rsstats.settingssource == backup) { 
        var %style = combat
        set %rsstats.rsn. [ $+ [ %s ] ] $nick
        sockopen rsstat. [ $+ [ %s ] ] hiscore.runescape.com 80 
      }
      inc %x
    }
  }
}
alias rsstats.cleanup {
  if ($1 != all) {
    unset %rsstats.*. [ $+ [ $1 ] ]
    sockclose rsstats. [ $+ [ $1 ] ]
  }
  elseif ($1 == all) {
    unset %rsstats.*.*
    var %c = 1
    while ($sock(rsstats. $+ %c)) {
      sockclose rsstats. [ $+ [ %c ] ]
    }
  }
}
on *:disconnect: {
  rsstats.cleanup all
}
on *:join:#pestcontrol: {
  if ($me isop $chan) || ($me ishop $chan) {
    if ($read(RSStatsnick.txt,w,$nick)) { halt }
    if ($read(RSCache.txt,s,$nick)) { mode $chan +v $nick }
    var %s = 1
    while ($sock(rsstats. $+ %s)) || ($sock(stat. $+ %s)) {
      inc %s
    }
    set %rsstats.skill. [ $+ [ %s ] ] autovoice
    set %rsstats.rsn. [ $+ [ %s ] ] $nick
    set %rsstats.chan. [ $+ [ %s ] ] $chan
    if (%rsstats.settingssource == rscript) { sockopen rsstats. [ $+ [ %s ] ] rscript.org 80 }
    elseif (%rsstats.settingssource == backup) { 
      var %id %s
      if ($len($nick) > 12) {
        inc %kicks
        ban -ku120 $chan $nick Your nickname is too long 12¤4 %kicks $+ 1
        cleanup %ID
        halt
      }
      set $+(%,stats.rsn.,%ID) $nick
      set $+(%,stats.style.,%ID) combat
      set $+(%,stats.skill.,%ID) %skill
      sockopen $+(stats.,%ID) hiscore.runescape.com 80 
    }
  }
}
on *:sockopen:rsstats.*: {
  sockwrite -nt $sockname GET /lookup.php?type=stats&user= $replace(%rsstats.rsn. [ $+ [ $right($sockname,-7) ] ],$chr(32),$chr(95)) HTTP/1.1
  sockwrite -nt $sockname Host: rscript.org
  sockwrite -nt $sockname $crlf 
}
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 $+ $crlf $+ $crlf
}
on *:sockread:stats.*: {
  sockread &Incoming
  bwrite $sockname -1 -1 &Incoming
  if ($bfind(&Incoming, 1, </html>).text) makehash $sockname
  elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) {
    inc %kicks
    ban -ku30 %rsstats.chan. [ $+ [ $gettok($sockname,2,46) ] ] %rsstats.rsn. [ $+ [ $gettok($sockname,2,46) ] ] Please use your Runescape Username. Use _ as spaces 12¤4 %kicks $+ 1
    sockclose $sockname
    cleanup $gettok($sockname,2,46)
  }
}
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 = $striptags($bvar(&stats,%x,200).text)
    tokenize 10 %currentstat
    hadd -m %file $1 $2 $3 $4 $xp2next($3,$4)
  }
  process %file
}
alias process {
  var %table = $1, %id = $gettok($1,2,46), %x = 0, $&
    %display = $($+(%,stats.display.,%ID),2), $&
    %rsn = $($+(%,stats.rsn.,%ID),2), $&
    %skill = $($+(%,stats.skill.,%ID),2), $&
    %style = $($+(%,stats.style.,%ID),2)

  if (%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) {
      inc %kicks
      ban -ku30 %rsstats.chan. [ $+ [ %id ] ] %rsstats.rsn. [ $+ [ %id ] ] Please use your Runescape Username. Use _ as spaces 12¤4 %kicks $+ 1
      sockclose $sockname
      cleanup %id
      halt
    }
    elseif (%MagicCombat > %RangedCombat) && (%MagicCombat > %MeleeCombat) var %cmbstyle = Magic, %Combat = %MagicCombat
    elseif (%RangedCombat > %MeleeCombat) var %cmbstyle = Ranged, %Combat = %RangedCombat
    else var %cmbstyle = melee, %combat = %MeleeCombat
    var %combat = $round(%combat,2), %next = $ceil(%combat)
    if (%combat >= 90) || ($eval($calc(%a + %s)) >= 150) {
      write Rsstatscache.txt %rsn
      mode %rsstats.chan. [ $+ [ %id ] ] +v %rsn
      inc %pcvoice
    }
    else { 
      if ($nick isreg %rsstats.chan. [ $+ [ %s ] ]) {
        inc %kicks
        ban -ku120 %rsstats.chan. [ $+ [ %s ] ] %rsstats.rsn. [ $+ [ %s ] ] 7The4 %rsstats.chan. [ $+ [ %s ] ] 7requirements:04 90 CMB or 90 Combined att+str 12¤4 %kicks $+ 1
      }
    }
  }
  sockclose $sockname
  cleanup %id
}

alias -l cleanup {
  rsstats.cleanup $1
  unset $+(%,stats.*.,$1)
  sockclose $+(Stats.,$1)
  .remove $+(Stats.,$1)
}

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 xp2Next {
  var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1))
  return $calc(%nextxp - %xp)
}

alias -l striptags { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return %x }
on *:sockread:rsstats.*: {
  var %s = $right($sockname,-8)
  sockread %rsstats.read. [ $+ [ %s ] ]
  if ($sockerr) {
    %rsstats.display. [ $+ [ %s ] ] Socket error: Please try again later.
    rsstats.cleanup %s
    halt
  }
  else {
    if (%rsstats.skill. [ $+ [ %s ] ] == autovoice) {
      var %a.mult = .32707, %s.mult = .324, %d.mult = .249, %h.mult = .25, %p.mult = .124, %r.mult = .487, %m.mult = .487
      while (1) {
        var %rsstats.read. [ $+ [ %s ] ]
        sockread %rsstats.read. [ $+ [ %s ] ]
        tokenize 32 %rsstats.read. [ $+ [ %s ] ]
        if (not found isin %rsstats.read. [ $+ [ %s ] ]) {
          inc %kicks
          ban -ku30 %rsstats.chan. [ $+ [ %s ] ] %rsstats.rsn. [ $+ [ %s ] ] Please use your Runescape Username. Use _ as spaces 12¤4 %kicks $+ 1
          rsstats.cleanup %s
          break
          halt
        }
        else {
          if (Attack isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %a = 1 }
            else { var %a = $3 }
          }
          if (Strength isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %st = 1 }
            else { var %st = $3 }
          }
          if (Defence isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %d = 1 }
            else { var %d = $3 }
          }
          if (Hitpoints isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %h = 1 }
            else { var %h = $3 }
          }
          if (prayer isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %p = 1 }
            else { var %p = $3 }
          }
          if (Ranged isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %r = 1 }
            else { var %r = $3 }
          }
          if (Magic isin %rsstats.read. [ $+ [ %s ] ]) {
            if ($3 == Ranked) { var %m = 1 }
            else { var %m = $3 }
            var %def = $calc(%d * 100)
            var %hp = $calc(%h * 100)
            if ($iif($regex($right(%p,1),[02468]),Even,Odd) == Even) { var %pray $calc(%p * 50) }
            else { var %pray $calc((%p - 1) * 50) }
            var %base = $calc((%def + %hp + %pray) / 400)
            var %att = $calc(%a * 130)
            var %str = $calc(%st * 130)
            if ($iif($regex($right(%r,1),[02468]),Even,Odd) == Even) { var %range = $calc(%r * 195) }
            else { var %range = $calc((%r * 195) - 65) }
            if ($iif($regex($right(%m,1),[02468]),Even,Odd) == Even) { var %mage = $calc(%m * 195) }
            else { var %mage = $calc((%m * 195) - 65) }
            var %melee = $calc((%att + %str) / 400)
            var %ranger = $calc(%range / 400)
            var %mage = $calc(%mage / 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)
            }
            var %next = $ceil(%combat)
            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))
            var %combat = $round(%combat,2), %next = $ceil(%combat)
            if (%combat >= 90) || ($eval($calc(%a + %s)) >= 90) {
              mode %rsstats.chan. [ $+ [ %s ] ] +v %rsstats.rsn. [ $+ [ %s ] ]
              write Rsstatscache.txt %rsn
              inc %pcvoice
            }
            else { 
              if ($nick isreg %rsstats.chan. [ $+ [ %s ] ]) {
                inc %kicks
                ban -ku120 %rsstats.chan. [ $+ [ %s ] ] %rsstats.rsn. [ $+ [ %s ] ] 7The4 %rsstats.chan. [ $+ [ %s ] ] 7requirements:04 90 CMB or 90 Combined att+str 12¤4 %kicks $+ 1
              }
            }
            rsstats.cleanup %s
            break
          }
        }
      }
    }
}
}