rendered paste bodyalias rsstats.voice {
if ($me isop $chan) || ($me ishop $chan) {
var %x = 1
while (%x <= $nick($chan,0,r)) {
if ($read(RSstatsCache.txt,s,$nick($chan,%x,r))) { mode $chan +v $nick | inc %cache | continue }
if ($read(listofaddresses.txt, w, $address(nick($chan,%x,r),2)) iswm $address(nick($chan,%x,r),5)) { inc %s | halt }
var %s = 1
while ($sock(rsstats. $+ %s)) || ($sock(stats. $+ %s)) {
inc %s
}
if ($len($nick($chan,%x,r)) > 12) {
inc %kicks
ban -ku120 $chan $nick Your nickname is too long 12¤4 %kicks $+ 1
cleanup %ID
halt
}
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 %id %s
set $+(%,stats.rsn.,%ID) $nick($chan,%x,r)
set $+(%,stats.style.,%ID) combat
sockopen $+(stats.,%ID) hiscore.runescape.com 80
}
inc %x
}
}
}
on *:join:#pestcontrol: {
if ($me isop $chan) || ($me ishop $chan) {
if ($read(RSStatsnick.txt,s,$nick)) || ($read(RSStatsnick.txt,w,$nick)) { halt }
if ($read(RSstatsCache.txt,s,$nick)) { mode $chan +v $nick | inc %cache }
if ($len($nick) > 13) {
inc %kicks
ban -ku120 $chan $nick Your nickname is too long 12¤4 %kicks $+ 1
cleanup %ID
halt
}
var %s = 1
while ($sock(rsstats. $+ %s)) || ($sock(stats. $+ %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
set $+(%,stats.rsn.,%ID) $nick
set $+(%,stats.style.,%ID) combat
sockopen $+(stats.,%ID) hiscore.runescape.com 80
}
}
}
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 *: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.*: {
if ($sockerr) { set %rsstats.settingssource rscript }
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
if ($nick ison %rsstats.chan. [ $+ [ $gettok($sockname,2,46) ] ]) {
ban -ku30 %rsstats.chan. [ $+ [ $gettok($sockname,2,46) ] ] 5 %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 > %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 >= 89) || ($eval($calc(%a + %s)) >= 149) {
write Rsstatscache.txt %rsn
mode %rsstats.chan. [ $+ [ %id ] ] +v %rsn
inc %pcvoice
}
elseif (%combat < 89) && ($eval($calc(%a + 5)) < 149) {
inc %kicks
ban -ku120 %rsstats.chan. [ $+ [ %id ] ] %rsstats.rsn. [ $+ [ %id ] ] 2 7The4 %rsstats.chan. [ $+ [ %id ] ] 7requirements:04 90 CMB or 150 Combined att+str 12¤4 %kicks $+ 1
}
else { echo -a Error }
}
sockclose $sockname
cleanup %id
}
alias -l cleanup {
rsstats.cleanup $1
unset $+(%,stats.*.,$1)
sockclose $+(Stats.,$1)
.remove $+(Stats.,$1)
if ($hget($+(Stats.,$1))) {
.hfree $+(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)
if ($sockerr) {
%rsstats.display. [ $+ [ %s ] ] Socket error: Please try again later.
set %rsstats.settingssource backup
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 ] ] 5 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 >= 149) || ($eval($calc(%a + %s)) >= 89) {
mode %rsstats.chan. [ $+ [ %s ] ] +v %rsstats.rsn. [ $+ [ %s ] ]
write Rsstatscache.txt %rsn
inc %pcvoice
}
else {
inc %kicks
ban -ku120 %rsstats.chan. [ $+ [ %s ] ] %rsstats.rsn. [ $+ [ %s ] ] 2 7The4 %rsstats.chan. [ $+ [ %s ] ] 7requirements:04 90 CMB or 150 Combined att+str 12¤4 %kicks $+ 1
}
rsstats.cleanup %s
break
}
}
}
}
}
}