All pastes #751409 Raw Edit

Mine

public text v1 · immutable
#751409 ·published 2007-10-27 11:07 UTC
rendered paste body
alias 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,&nbsp;,$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) }