rendered paste bodyalias c1 { return $+($chr(3),14,$1-) }
alias c2 { return $+($chr(3),07,$1-) }
on $*:text:/^[!@]def|set(rsn|name)/si:#: {
var %sckid = $right($ticks,5)
if ($left($1,1) == !) set %way. [ $+ [ %sckid ] ] notice $nick
if ($left($1,1) == @) set %way. [ $+ [ %sckid ] ] msg $chan
if ($len($2-) > 12) {
.notice $nick $c1(The RSN) $c2($2-) $c1(is too long.)
halt
}
if ($remove($2-,_,-,$chr(32)) !isalnum) {
.notice $nick $c1(The RSN) $c2($2-) $c1(contains invalid characters.)
halt
}
writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
writeini DefRSN.ini RSNs $nick $replace($2-,$chr(32),-)
.notice $nick $c1(Your default RSN has been set to) $c2($2-) $+ $c1(.)
halt
}
on $*:text:/^[!@]xptime help/Si:#: {
set %helpxpmessage $iif($left($1,1) == @,msg $chan,notice $nick)
%helpxpmessage The commands are: !start (skill) (rsn) !end (skill (rsn) !defname (rsn) or !setname (rsn)
}
on $*:text:/^[!@]start/Si:#: {
if (!$2) { /notice $nick $c1 $+ Please use the correct syntaxt: $c2 $+ !start (skill) (rsn) $c1 $+ <-- The rsn is not needed if a def name is set. $c2 $+ For help type $c1 $+ !xptime help | halt }
var %sckid = $right($ticks,5)
if ($left($1,1) == !) set %way. [ $+ [ %sckid ] ] notice $nick
if ($left($1,1) == @) set %way. [ $+ [ %sckid ] ] msg $chan
var %ID = 1
if ($len($3-) > 12) {
.notice $nick $c1(The RSN) $c2($2-) $c1(is too long.)
cleanup %ID
halt
}
elseif ($3) {
if (&* iswm $2) {
set $+(%,skill.rsn.) $iif($readini(DefRSN.ini,RSNs,$address($right($2,-1),3)),$ifmatch,$iif($readini(DefRSN.ini,RSNs,$right($2,-1)),$ifmatch,$right($2,-1)))
}
else {
set $+(%,skill.rsn.) $replace($3-,$chr(32),-)
}
}
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,skill.rsn.) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,skill.rsn.) $ifmatch
else set $+(%,skill.rsn.) $nick
set %skill.name $rsskill($2)
set %skill.fulldate $fulldate
set %skill.user $nick
set %skill.useraddress $address( $+ %skill.user $+ ,2)
if ($ini(Skilltimers.ini, $+ %skill.useraddress , $+ %skill.name $+ )) { /notice $nick $c1 $+ I am sorry but you already have a timer set for that skill. $c2 $+ Please end the current timer with $c1 $+ !end (skill) (rsn) $c2 $+ before setting a timer for that skill. | unset %skill.* | halt }
sockopen rsnchecker. [ $+ [ %sckid ] ] www.slushpuppy.silverinterlocution.org 80
sockopen Exptimer. [ $+ [ %sckid ] ] www.users.on.net 80
}
on *:SOCKOPEN:rsnchecker.*: {
sockwrite -nt $sockname GET /rsstats.php?stats= $+ %skill.rsn. HTTP/1.1
sockwrite -nt $sockname Host: www.slushpuppy.silverinterlocution.org
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:rsnchecker.*: {
if ($sockerr) {
%way. [ $+ [ $right($sockname,5) ] ] Socket Error: $sockname $+ . Error code: $sockerr Please inform $me of this error message.
halt
}
else {
var %sockreader
sockread %sockreader
if (*does not feature in the hiscores.<br>* iswm %sockreader) {
set %skill.norsn $nohtml(%sockreader)
%way. [ $+ [ $right($sockname,5) ] ] $c1 $+ Sorry $c2 $+ %skill.norsn
unset %skill.*
unset %*. [ $+ [ $right($sockname,5) ] ]
sockclose $sockname
}
}
}
on *:SOCKOPEN:Exptimer.*: {
sockwrite -nt $sockname GET /~adtory/stats.php?user= $+ %skill.rsn. HTTP/1.1
sockwrite -nt $sockname Host: www.users.on.net
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:Exptimer.*: {
if ($sockerr) {
%way. [ $+ [ $right($sockname,5) ] ] Socket Error: $sockname $+ . Error code: $sockerr Please inform $me of this error message.
halt
}
else {
var %sockreader
sockread %sockreader
if (* $+ %skill.name $+ * iswm %sockreader-1) {
tokenize 32 $remove(%sockreader,$1,$2)
set %skill.startexp $nohtml(%sockreader)
/writeini Skilltimers.ini %skill.useraddress %skill.name $c1 $+ Starting exp for the name $c2 $+ %skill.rsn. $+ , $c1 $+ with $c2 $+ %skill.name $+ , $c1 $+ is $c2 $+ $3- $+ . $c1 $+ Recorded on: $c2 $+ $date at $ctime
if ($ini(Skilltimers.ini, $+ %skill.useraddress , %skill.name )) %way. [ $+ [ $right($sockname,5) ] ] $c1 $+ %skill.user $+ : $c2 $+ $replace($readini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ ), $ctime , $time ))
unset %*. [ $+ [ $right($sockname,5) ] ]
unset %sockreader*
sockclose $sockname
}
if ($len($remove(%sockreader,$chr(9),$chr(32))) > 0) {
var %x = 0
while (%x > -1) {
if ($len(%sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]) <= 850) set %sockreader [ $+ [ $+(-,$calc(%x + 1)) ] ] %sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]
dec %x
}
}
}
}
on $*:text:/^[!@]end/si:#: {
if (!$2) { /notice $nick $c1 $+ Please use the correct syntaxt: $c2 $+ !start (skill) (rsn) $c1 $+ <-- The rsn is not needed if a def name is set. $c2 $+ For help type $c1 $+ !xptime help | halt }
var %sckid = $right($ticks,5)
if ($left($1,1) == !) set %way. [ $+ [ %sckid ] ] notice $nick
if ($left($1,1) == @) set %way. [ $+ [ %sckid ] ] msg $chan
var %ID = 1
if ($len($3-) > 12) {
.notice $nick $c1(The RSN) $c2($2-) $c1(is too long.)
cleanup %ID
halt
}
elseif ($3) {
if (&* iswm $2) {
set $+(%,skill.rsn.) $iif($readini(DefRSN.ini,RSNs,$address($right($2,-1),3)),$ifmatch,$iif($readini(DefRSN.ini,RSNs,$right($2,-1)),$ifmatch,$right($2,-1)))
}
else {
set $+(%,skill.rsn.) $replace($3-,$chr(32),-)
}
}
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,skill.rsn.) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,skill.rsn.) $ifmatch
else set $+(%,skill.rsn.) $nick
set %skill.name $rsskill($2)
set %skill.user $nick
set %skill.useraddress $address( $+ %skill.user $+ ,2)
if ($ini(Skilltimers.ini, $+ %skill.useraddress $+ , %skill.name )) {
if ($remove($gettok($readini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ ),6,32),$chr(44)) != %skill.rsn. ) { /notice $nick $c1 $+ You do not have a timer set for $c2 $+ %skill.rsn. $c1 $+ with $c2 $+ %skill.name $+ . $c1 $+ You have $c2 $+ %skill.name $c1 $+ set for $c2 $+ $remove($gettok($readini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ ),6,32),$chr(44)) $+ . | unset %skill.* | halt }
sockopen Exptimerend. [ $+ [ %sckid ] ] www.users.on.net 80
}
else { /notice $nick $c1 $+ I am sorry but you do not have a timer set for that skill. | unset %skill.* | halt }
}
on *:SOCKOPEN:Exptimerend.*: {
sockwrite -nt $sockname GET /~adtory/stats.php?user= $+ %skill.rsn. HTTP/1.1
sockwrite -nt $sockname Host: www.users.on.net
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:Exptimerend.*: {
if ($sockerr) {
%way. [ $+ [ $right($sockname,5) ] ] Socket Error: $sockname $+ . Error code: $sockerr Please inform $me of this error message.
halt
}
else {
var %sockreader
sockread %sockreader
if (* $+ %skill.name $+ * iswm %sockreader-1) {
tokenize 32 $remove(%sockreader,$1,$2)
set %skill.endexp $nohtml(%sockreader)
set %skill.startexp $remove($gettok($readini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ ),10,32),.)
set %skill.endexp $3-
set %skill.expgained $calc($remove( %skill.endexp - %skill.startexp,$chr(44)))
set %skill.timestart $remove($gettok($readini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ ),15,32),:)
set %skill.timeend $ctime
set %skill.timetotal $calc( %skill.timeend - %skill.timestart )
set %skill.exppermin $calc($remove(( %skill.expgained / %skill.timetotal ) * 60 , $chr(44)))
set %skill.expperhr $calc($remove(( %skill.expgained / %skill.timetotal ) * 3600 , $chr(44)))
set %skill.timetolvl $duration($calc($remove((( $xp($calc($2 + 1)) - %skill.endexp ) / %skill.expgained ) * %skill.timetotal ,$chr(44))),HH:nn:ss))
set %skill.expleft $calc($remove($xp($calc($2 + 1)) - %skill.endexp , $chr(44)))
if ($ini(Skilltimers.ini, $+ %skill.useraddress $+ , $+ %skill.name $+ )) %way. [ $+ [ $right($sockname,5) ] ] $c1 $+ %skill.user $+ : $c2 $+ The $c1 $+ %skill.name $c2 $+ exp for $c1 $+ %skill.rsn. $c2 $+ is : $c1 $+ $3- $+ . $c2 $+ Exp Gained: $bytes(%skill.expgained,b) Exp Till level: $bytes(%skill.expleft,b) Current Level: $2
%way. [ $+ [ $right($sockname,5) ] ] $c1 $+ Estimated exp per min: $c2 $+ $round(%skill.exppermin,1) $c1 $+ Estimated exp per hour: $c2 $+ $round(%skill.expperhr,1) $c1 $+ Estimated time to level: $c2 $+ %skill.timetolvl
%way. [ $+ [ $right($sockname,5) ] ] $c2 $+ Total time passed: $c1 $+ $duration( %skill.timetotal , HH:nn:ss)
/remini Skilltimers.ini %skill.useraddress %skill.name
unset %skill.*
unset %*. [ $+ [ $right($sockname,5) ] ]
unset %sockreader*
sockclose $sockname
}
if ($len($remove(%sockreader,$chr(9),$chr(32))) > 0) {
var %x = 0
while (%x > -1) {
if ($len(%sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]) <= 850) set %sockreader [ $+ [ $+(-,$calc(%x + 1)) ] ] %sockreader [ $+ [ $iif(%x != 0,$+(-,%x)) ] ]
dec %x
}
}
}
}
alias -l cleanup {
unset $+(%,stats.*.,$1)
sockclose $+(Stats.,$1)
.remove $+(Stats.,$1)
hfree $+(stats.,$1)
}
alias c1 { return $+($chr(3),12,$1-) }
alias c2 { return $+($chr(3),04,$1-) }
alias -l rsskill {
if ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
elseif ($regex($1,/^at(t|k|tack)$/Si)) return Attack
elseif ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
elseif ($regex($1,/^str(ength)?$/Si)) return Strength
elseif ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
elseif ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
elseif ($regex($1,/^Pray(er)?$$/Si)) return Prayer
elseif ($regex($1,/^mag(e|ic)$$/Si)) return Magic
elseif ($regex($1,/^cook(ing)?$/Si)) return Cooking
elseif ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
elseif ($regex($1,/^fletch(ing)?$/Si)) return Fletching
elseif ($regex($1,/^fish(ing)?$/Si)) return Fishing.11
elseif ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
elseif ($regex($1,/^craft(ing)?$/Si)) return Crafting
elseif ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
elseif ($regex($1,/^min(e|ing)?$/Si)) return Mining
elseif ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
elseif ($regex($1,/^agil(ity)?$/Si)) return Agility
elseif ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
elseif ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
elseif ($regex($1,/^farm(er|ing)?$/Si)) return Farming
elseif ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
elseif ($regex($1,/^hunt(ing|er)?$/Si)) return Hunter
elseif ($regex($1,/^(construct)(ion|ing)?$/si)) return Construction
}
alias -1 defname {
if ($regex($1,/^(def|set)?$/si)) return Defname
}
alias -l nohtml {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x)
%x = $replace(%x, ,$null)
return %x
}
alias xp {
var %x = 1, %level = $calc($1 - 1), %xp = 0
while (%x <= %level) {
var %tempxp = $calc($floor($calc(%x + 300 * 2 ^ (%x / 7))) / 4)
inc %xp %tempxp
inc %x
}
return $int(%xp)
}
alias comma { return $bytes($1,b) }