All pastes #281605 Raw Edit

compare

public text v1 · immutable
#281605 ·published 2006-12-16 22:54 UTC
rendered paste body
alias -l cc1 { return $+(14,$1-,) }
alias -l cc2 { return $+(07,$1-,) }

on $*:text:/^[!@.]compare */Si:#:{
  if (!$3) { notice $nick $cc1(Syntax:) $cc2(!compare SKILL USER1 USER2) | halt }
  elseif (!$rsskill($2)) { notice $nick $cc2($2) $cc1(is not a real skill.) | halt }
  elseif ($3 == $4) { notice $nick $cc1(Please use two different users.) | halt }
  var %x 1
  while ($sock($+(compare.,%x))) inc %x
  set $+(%,comp.display.,%x) $iif($left($1,1) == @,msg $chan,notice $nick)
  set $+(%,comp.user1.,%x) $3
  set $+(%,comp.user2.,%x) $iif($4,$4,$iif($readini(DefRSN.ini,RSNs,$mask($fulladdress,3)),$ifmatch,$iif($readini(DefRSN.ini,RSNs,$nick),$ifmatch,$nick)))
  set $+(%,comp.skill.,%x) $rsskill($2)
  sockopen $+(compare.,%x) o-ss.net 80
}
on *:SOCKOPEN:compare.*:{
  var %x $gettok($sockname,2,46)
  sockwrite -nt $sockname GET $+(/parsers/compare.php?user1=,$($+(%,comp.user1.,%x),2),&user2=,$($+(%,comp.user2.,%x),2),&skill=,$($+(%,comp.skill.,%x),2)) HTTP/1.1
  sockwrite -nt $sockname Host: o-ss.net $+ $crlf $+ $crlf
}
on *:SOCKREAD:compare.*:{
  var %x = $gettok($sockname,2,46), %display = $($+(%,comp.display.,%x),2), %user1 = $($+(%,comp.user1.,%x),2), %user2 = $($+(%,comp.user2.,%x),2), %skill = $($+(%,comp.skill.,%x),2)
  if ($sockerr) { %target $cc1(*** Socket error:) $cc2($sock($sockname).wsmsg) | halt }
  else {
    var %read | sockread %read | tokenize 32 %read
    if (*END* iswm $1-) {
      if ($1 == $2) { %display $cc2(%user1) $cc1(and) $cc2(%user2) $cc1(both have) $cc2($1 %skill) $+ $cc1(.) }
      elseif ($1 == =) { %display $cc1(One/both of the users do not appear in the hiscores for) $cc2(%skill) $+ $cc1(.) }
      else { %display $cc2(%user1) $cc1(is level) $cc2($1) $cc1(and) $cc2(%user2) $cc1(is level) $cc2($2) $+($cc1($chr(40)),$cc2(%skill),$cc1($chr(41))) | %display $cc2($($+(%,user,$replace($3,0,2)),2)) $cc1(is) $cc2($4) $cc1($iif($4 == 1,level,levels) $+ $iif($left($5,1) == -,$+($chr(32),above)) $+ $chr(44) $iif($left($5,1) == -,but,and)) $cc2($bytes($remove($5,-),b)) $cc1(exp $iif($left($5,1) == -,below,above)) $cc2($($+(%,user,$replacex($3,0,1,1,2)),2)) }
    }
  }
}
on *:SOCKCLOSE:compare.*:{
  unset $+(%,comp.*.,$gettok($sockname,2,46))
}
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
  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
}