rendered paste bodyon *: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
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 $+(rs.,%ID) hiscore.runescape.com 80
}
on *:SOCKOPEN:rs.*:{
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:rs.*:{
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 nickname:) $c2(%target) $c1(did not feature in runescape highscores for any skill!) | 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 = %file $c1($setskill(%y)) $c2($2)
inc %y
}
%display $c1(Stats for) $c2(%target) $+ $c1(:)
%display %file
unset $+(%,rs.*)
}
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(Stats 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.*)
}
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(Att:) $c2(%att) $c1(Def:) $c2(%def) $c1(Str:) $c2(%str) $c1(hp:) $c2(%Hp) $c1(Range:) $c2(%rng) $c1(Pray:) $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.*)
}
}
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,&) | 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,/^(hunt)(er|ing)?$/si)) return Hunter
elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}
ALIAS F7 {
/dialog -miedo combat.main combat.main
}
menu * {
Combat stats:/dialog -meido combat.main combat.main
}
dialog combat.main {
title "Combat Stats Dialog"
size -1 -1 182 79
option dbu
button "Lookup", 1, 7 8 37 12
button "Channels", 2, 7 25 37 12
button "Close", 3, 7 41 37 12
box "Combat Stats", 4, 55 8 113 56
edit "", 5, 80 17 20 10
text "Attack", 6, 59 18 20 8
text "Strength", 7, 58 28 23 8
text "Defence", 8, 57 38 25 8
text "Hitpoints", 9, 56 48 25 8
text "Combat", 10, 105 53 25 8
text "Mage", 11, 109 18 25 8
text "Range", 12, 109 29 25 8
text "Prayer", 13, 107 38 25 8
edit "", 14, 80 27 20 10
edit "", 15, 80 37 20 10
edit "", 16, 127 17 20 10
edit "", 17, 80 47 20 10
edit "", 18, 133 52 20 10
edit "", 19, 127 38 20 10
edit "", 20, 127 28 20 10
}
dialog combat.results {
title "Combat Stats Dialog"
size -1 -1 182 79
option dbu
button "OK", 1, 7 8 37 12
box "Combat Stats", 4, 55 8 113 56
edit "", 5, 80 17 20 10
text "Attack", 6, 59 18 20 8
text "Strength", 7, 58 28 23 8
text "Defence", 8, 57 38 25 8
text "Hitpoints", 9, 56 48 25 8
text "Combat", 10, 105 53 25 8
text "Mage", 11, 109 18 25 8
text "Range", 12, 109 29 25 8
text "Prayer", 13, 107 38 25 8
edit "", 14, 80 27 20 10
edit "", 15, 80 37 20 10
edit "", 16, 127 17 20 10
edit "", 17, 80 47 20 10
edit "", 18, 133 52 20 10
edit "", 19, 127 38 20 10
edit "", 20, 127 28 20 10
}
dialog combat.who {
title "Enter RSN"
size -1 -1 130 58
option dbu
edit "", 1, 15 14 83 10
text "RSN:", 2, 16 6 25 8
button "OK", 3, 13 28 37 12
button "Cancel", 4, 59 28 37 12
}
dialog channels {
title "Enter RSN"
size -1 -1 108 58
option dbu
button "#[-God-]", 3, 13 10 37 12
button "#RsTalk", 4, 13 25 37 12
button "#FastPcw", 1, 13 40 37 12
button "Back", 2, 57 10 37 12
}
dialog error.nonick {
title "ERROR: no nick entered"
size -1 -1 108 36
option dbu
button "Retry", 1, 12 10 37 12
button "Cancel", 2, 57 10 37 12
}
on *:dialog:combat.main:sclick:3: {
/combat.die
unset %user
unset %attack.search
unset %strength.search
unset %defence.search
unset %hp.search
unset %mage.search
unset %range.search
unset %prayer.search
unset %combat }
on *:dialog:combat.main:sclick:2: {
/dialog -x combat.main combat.main
/dialog -m channels channels }
on *:dialog:combat.main:sclick:1: {
/dialog -x combat.main combat.main
unset %user
unset %attack.search
unset %strength.search
unset %defence.search
unset %hp.search
unset %mage.search
unset %range.search
unset %prayer.search
unset %combat
/dialog -m combat.who combat.who }
on *:dialog:channels:sclick:3: {
/join #[-God-] }
on *:dialog:channels:sclick:4: {
/join #RsTalk }
on *:dialog:channels:sclick:1: {
/join #FastPcw }
on *:dialog:channels:sclick:2: {
/dialog -x channels channels
/dialog -m combat.main combat.main }
on *:dialog:combat.who:sclick:4: {
/dialog -x combat.who combat.who
/dialog -m combat.main combat.main
}
on *:dialog:combat.who:sclick:3: {
if ($did(1) == $null) {
dialog -x combat.who combat.who
dialog -m error.nonick error.nonick }
else {
set %user $replace($did(1),$chr(32),_)
sockopen combat www.slushpuppy.silverinterlocution.org 80
/dialog -x combat.who combat.who
/dialog -miedo combat.results combat.results
}
}
on *:dialog:error.nonick:sclick:2: {
/dialog -x error.nonick error.nonick
/dialog -m combat.main combat.main
}
on *:dialog:error.nonick:sclick:1: {
/dialog -x error.nonick error.nonick
/dialog -m combat.who combat.who
}
on *:dialog:combat.results:sclick:1: {
/dialog -x combat.results combat.results
/dialog -m combat.main combat.main
}
alias combat.die {
var %i 182
while (%i >= 0) {
dialog -srb combat.main -1 -1 %i %i
var %t 1
while (%t <= 79) inc %t
dec %i
}
dialog -c combat.main
}
on *:SOCKOPEN:combat*:{
sockwrite -nt $sockname GET /pestcontrol.php?pestcontrol= $+ %user HTTP/1.1
sockwrite -nt $sockname Host: www.slushpuppy.silverinterlocution.org
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:combat*:{
var %sockread
sockread %sockread
if (<b> isin %sockread) {
did -a combat.results 5 $gettok($htmlfree(%sockread),4,32)
did -a combat.results 14 $gettok($htmlfree(%sockread),8,32)
did -a combat.results 15 $gettok($htmlfree(%sockread),6,32)
did -a combat.results 17 $gettok($htmlfree(%sockread),10,32)
did -a combat.results 16 $gettok($htmlfree(%sockread),16,32)
did -a combat.results 20 $gettok($htmlfree(%sockread),12,32)
did -a combat.results 19 $gettok($htmlfree(%sockread),14,32) }
if (<br> isin %sockread) {
var %combat = $htmlfree(%sockread)
did -a combat.results 18 %combat
}
}
on *:Sockclose:combat*:{
Sockclose $sockname
}
alias -l htmlfree {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x, )
return %x }