rendered paste bodyon *:input:*:{
if ($left($1,1) isin /~) && ($regex($right($1,-1),/^track(er)?$/i)) {
if (!%defname) {
if ($?("What is your rsn?")) set %defname $replace($v1,$chr(32),-,-,_)
else {
echo -agt $c1(Specify a default rsn.)
halt
}
}
var %style = $iif(/* iswm $1,echo -agt,msg $target), %sock = 1
while ($sock(track.*,%sock)) inc %sock
if ($numtok($1-,64) > 1) var %time = $iif($gettok($1-,$v1,64) isnum,$v1,$duration($v1))
else var %time = $duration(1wk)
tokenize 32 $gettok($1-,1,64)
if ($2-) {
if ($setskill($2)) {
var %skill = $v1, %time.temp = $sorttok($duration(1day) $duration(1wk) $duration(4wks) %time,32,n)
if ($findtok(%time.temp,%time,2,32)) %time.temp = $deltok(%time.temp,$v1,32)
%time = $replace(%time.temp,$chr(32),$chr(44))
if ($3-) var %rsn = $replace($v1,$chr(32),-,-,_)
else var %rsn = %defname
}
else var %rsn = $replace($2-,$chr(32),-,-,_), %skill = all
}
else var %rsn = %defname, %skill = all
if (%rsn) && (%skill) && (%time) {
sockopen $+(track,.,%sock) rscript.org 80
sockmark $+(track,.,%sock) %style %rsn %skill %time
}
haltdef
}
}
on *:sockopen:track.*:{
tokenize 32 $gettok($sock($sockname).mark,3-,32)
sockwrite -nt $sockname GET $+(/lookup.php?type=track&user=,$1,&skill=,$2,&time=,$3) HTTP/1.1
sockwrite -nt $sockname Host: rscript.org
sockwrite -nt $sockname $crlf
}
on *:sockread:track.*:{
if ($sockerr) return
tokenize 32 $sock($sockname).mark
var %sock, %style = $1-2, %rsn = $3, %skill = $4, %time = $5
sockread %sock
tokenize 58 %sock
if ($setskill(%skill)) {
if (%sock == PHP: Invalid argument supplied for foreach()) %style $c2(%rsn) $c1(does not appear in the highscores for) $+($c2(%skill),$c1(.))
if ($1 == 0) sockmark $sockname $sock($sockname).mark $2
if ($1 == started) {
var %a = 1, %b
while ($gettok(%time,%a,44)) {
if ($v1 > $2) {
%b = $+(%b,$iif(%b,$chr(44)),$2)
break
}
%b = $+(%b,$iif(%b,$chr(44)),$gettok(%time,%a,44))
inc %a
}
sockmark $sockname $puttok($sock($sockname).mark,%b,5,32)
}
if ($findtok(%time,$remove($1,*),1,44)) {
var %xp.b = $gettok($sock($sockname).mark,6,32), %xp.a = $calc(%xp.b - $2), %level.a = $rxp(%xp.a), %level.b = $rxp(%xp.b)
if ($2) sockmark $sockname $sock($sockname).mark $c1($duration($iif($remove($1,*) > $duration(1hr),$calc($v1 - ($v1 % $v2)),$v1))) $c2($+(+,$bytes($2,b))) $c2($iif(%skill != Overall,$iif($calc(%level.b - %level.a),$+($chr(40),%level.a,-,%level.b,$chr(41)),$+($chr(40),%level.a,$chr(41)))))
if ($findtok(%time,$remove($1,*),1,44) == $numtok(%time,44)) {
if ($gettok($sock($sockname).mark,7-,32)) %style $c2(%skill) $c1(gains for) $+($c2(%rsn),$c1(:)) $gettok($sock($sockname).mark,7-,32)
else %style $c2(%rsn) $c1(has gained) $c1(no) $c2(%skill) $iif(%skill != Overall,$c2($+($chr(40),%level.a,$chr(41)))) $c1(exp in the past) $+($c2($duration($iif($remove($1,*) > $duration(1hr),$calc($v1 - ($v1 % $v2)),$v1))),$c1(.))
}
}
}
else {
if (%sock == 0:-1) {
%style $c2(%rsn) $c1(does not appear in the highscores for any skills.)
sockclose $sockname
}
if ($1 == started) && ($2 < %time) sockmark $sockname $puttok($sock($sockname).mark,$2,5,32)
if ($setskill($2)) {
if (start == $1) sockmark $sockname $sock($sockname).mark $2-3
if (gain == $1) && ($findtok($sock($sockname).mark,$2,1,32)) {
var %pos = $v1, %temp = $deltok($sock($sockname).mark,$+(%pos,-,$calc(%pos + 1)),32)
if ($4) var %xp.b = $gettok($sock($sockname).mark,$calc(%pos + 1),32), %xp.a = $calc(%xp.b - $4), %level.a = $rxp(%xp.a), %level.b = $rxp(%xp.b), %fin = $iif($calc(%level.b - %level.a),$+(%level.a,-,%level.b),%level.a), %temp = $instok(%temp,$c1($2) $iif($2 != Overall,$c2($+($chr(40),%fin,$chr(41)))) $c2($+(+,$bytes($4,b))),%pos,32)
sockmark $sockname %temp
}
}
if ($1 == END) {
tokenize 32 $sock($sockname).mark
var %a = 0
while ($setskill(%a)) {
if ($findtok($1-,$v1,1,32)) tokenize 32 $deltok($1-,$+($v1,-,$calc($v1 + 1)),32)
inc %a
}
var %fin, %fin.a = $6-
if ($6) %fin = $c1(Experience gains for) $c2(%rsn) $c1(in the past) $+($c2($duration($iif(%time > $duration(1hr),$calc($v1 - ($v1 % $v2)),$v1))),$c1(:))
else %fin = $c2(%rsn) $c1(has gained) $c2(no) $c1(experience in the past) $+($c2($duration($iif(%time > $duration(1hr),$calc($v1 - ($v1 % $v2)),$v1))),$c1(.))
while ($len(%fin.a) >= $calc(450 - $len(%fin))) var %fin.b = $gettok(%fin.a,-3-,32) %fin.b, %fin.a = $deltok(%fin.a,-3-,32)
while ($len(%fin.b) >= 450) var %fin.c = $gettok(%fin.b,-3-,32) %fin.c, %fin.b = $deltok(%fin.b,-3-,32)
%style %fin %fin.a
if (%fin.b) %style $v1
if (%fin.c) %style $v1
}
}
}
alias rxp {
var %a = 1
while ($1 >= $xp(%a)) inc %a
return $calc(%a - 1)
}