All pastes #453854 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-04-23 08:00 UTC
rendered paste body
on $*:TEXT:/^[!@]compare( .+)?$/Si:#:{
  var %t = $iif(@* iswm $1,msg $chan,.notice $nick)
  if (!$skill($2)) || (!$valid.rsn($3)) || (!$valid.rsn($4)) || ($5) {
    %t $c1(Syntax:) $c2([!@]compare <skill> <user1> <user2>)
    %t $c1(Usernames may only contain valid characters $+($chr(40),A-Z 0-9 _,$chr(41),$chr(44)) and no spaces.)
  }
  else {
    var %x = 1
    while ($sock($+(compare.,%x))) inc %x
    set $+(%,compare.target.,%x) %t
    set $+(%,compare.skill.,%x) $skill($2)
    set $+(%,compare.user1.,%x) $valid.rsn($3)
    set $+(%,compare.user2.,%x) $valid.rsn($4)
    sockopen $+(compare.,%x) jparker.x10hosting.com 80
  }
}
on *:SOCKOPEN:compare.*:{
  var %x = $gettok($sockname,2,46), %skill = $($+(%,compare.skill.,%x),2), %user1 = $($+(%,compare.user1.,%x),2), %user2 = $($+(%,compare.user2.,%x),2)
  sockwrite -nt $sockname GET $+(/compare.php?skill=,%skill,&user1=,%user1,&user2=,%user2) HTTP/1.1
  sockwrite -nt $sockname Host: jparker.x10hosting.com $+ $crlf $+ $crlf
}
on *:SOCKREAD:compare.*:{
  var %x = $gettok($sockname,2,46), %target = $($+(%,compare.target.,%x),2), %skill = $($+(%,compare.skill.,%x),2), %user1 = $($+(%,compare.user1.,%x),2), %user2 = $($+(%,compare.user2.,%x),2)
  var %read
  sockread %read
  tokenize 32 %read
  if (@* iswm $1-) {
    tokenize 32 $right($1-,-1)
    if (*hiscores. iswm $1-) %target $c1($1-2) $c2($3) $c1($4-)
    elseif (*hiscores for* iswm $1-) %target $c1($1-2) $c2($3) $c1($4-11) $c2($12)
    elseif (* is * level* and * experience above * iswm $1-) %target $c2($1) $c1($2) $c2($3) $c1($4-5) $c2($6) $c1($7-8) $c2($9) $c1($10-11) $c2($12) $c1($13) $c2($14) $c1($15-16) $c2($17)
    elseif (* same level* but * iswm $1-) %target $c2($1) $c1($2-7) $c2($8) $c1($9-10) $c2($11) $c1($12-13) $c2($14) $c1($15) $c2($16) $c1($17-18) $c2($19)
    else %target $c1($1) $c2($2) $c1($3) $c2($4) $c1($5-13) $c2($14)
    halt
  }
}
on *:SOCKCLOSE:compare.*:unset $+(%,compare.*.,$gettok($sockname,2,46))
alias valid.rsn {
  if ($regex($1,/^[a-zA-Z0-9]([a-zA-Z0-9_]*[a-zA-Z0-9])?$/Si)) && ($len($1) <= 12) {
    tokenize 95 $1
    var %a = 1
    while ($gettok($1-,%a,32)) {
      var %x = $regsubex($lower($v1),/(^[0-9]*[a-z])/g,$upper(\t)), %s = $addtok(%s,%x,95)
      inc %a
    }
    return %s
  }
}
alias -l skill {
  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
  elseif ($regex($1,/^(fm(ing)?|firemak(e|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(er|ing)?$/Si)) return Hunter
  elseif ($regex($1,/^con(struct(ion|ing)?)?$/Si)) return Construction
}
alias -l c1 { return $+(04,$1,) }
alias -l c2 { return $+(07,$1,) }