All pastes #330526 Raw Edit

Miscellany

public text v1 · immutable
#330526 ·published 2007-01-28 00:03 UTC
rendered paste body
on *:SOCKOPEN:stats.*: {
  var %bleh = $gettok($sockname,2,46)
  if ($sockerr) {
    .echo 4 -s Error while connecting to the stats page: $sock($sockname).wsmsg
    return
  }
  .sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $hget($($+(u,%bleh),2),user) HTTP/1.1
  .sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:SOCKREAD:stats.*: {
  var %bleh = $gettok($sockname,2,46)
  if ($sockerr) {
    echo 4 -s Error while reading the stats: $crlf $sock($sockname).wsmsg
    return
  }
  .sockread %RSStats
  if ($+(*,$hget($($+(u,%bleh),2),user),*,not feature in the,*) iswm %RSStats) {
    $($hget($($+(u,%bleh),2),display),2) $s1(The user) $s2($hget($($+(u,%bleh),2),user)) $s1(doesn't appear in the hiscores.)
    .sockclose $sockname
    halt
  }
  if ($($+(%,RSSslvl.,%bleh),2) && !$($+(%,RSSsexp.,%bleh),2) && $($+(%,RSSsread.,%bleh),2) == 3) { .set %RSSsexp. $+ %bleh $nohtml(%RSStats) }
  if ($($+(%,RSSsrank.,%bleh),2) && !$($+(%,RSSslvl.,%bleh),2) && $($+(%,RSSsread.,%bleh),2) == 3) { .set %RSSslvl. $+ %bleh $nohtml(%RSStats) }
  if ($($+(%,RSSsskill.,%bleh),2) && !$($+(%,RSSsrank.,%bleh),2) && $($+(%,RSSsread.,%bleh),2) == 3) { .set %RSSsrank. $+ %bleh $nohtml(%RSStats) }
  if ($($+(%,RSSsread.,%bleh),2) == 2) { inc $($+(%,RSSsread.,%bleh),1) 1 }
  if ($($+(%,RSSsread.,%bleh),2) == 1) { .set %RSSsskill. $+ %bleh $nohtml(%RSStats) | inc $($+(%,RSSsread.,%bleh),1) 1 }
  if ($+(*,a href,*,$hget($($+(u,%bleh),2),user),*) iswm %RSStats) { .set %RSSsread. $+ %bleh 1 }
  if (*</tr>* iswm %RSStats && $($+(%,RSSsskill.,%bleh),2)) {
    hadd -m $($+(u,%bleh),2) $($+(%,RSSsskill.,%bleh),2) $($+(%,RSSsrank.,%bleh),2) $($+(%,RSSslvl.,%bleh),2) $($+(%,RSSsexp.,%bleh),2)
    .unset $($+(%,RSSs*.,%bleh),1)
  }
}
on *:SOCKCLOSE:stats.*: {
  var %bleh = $gettok($sockname,2,46)
  .stats.show $($+(u,%bleh),2)
}
alias s1 { return $+($chr(3),$cntn($se(color,stats.base)),$1,$chr(3)) }
alias s2 { return $+($chr(3),$cntn($se(color,stats.secondary)),$1,$chr(3)) }
alias stats.show {
  var %send = $hget($1,display),%send2 = .notice $hget($1,nick),%show = $+($mircdirSkills\,$hget($1,skill),.ini),%skill = $hget($1,skill),%user = $hget($1,user),%hash = $1,%addy = $hget($1,address),%nick = $hget($1,nick)
  var %item = $hget($1,item),%target = $hget($1,target)
  if (*echo* iswm %send) { goto skipnclear }
  if ($hget(%hash,compare)) {
    if ($hget(%hash,completed) == yes) { goto clearup }
    if ($hget($($+(u,$hget(%hash,compare)),2),%skill)) {
      .hadd $($+(u,$hget(%hash,compare))) completed yes
      var %chash = $($+(u,$hget(%hash,compare)))
      $(%send,2) $s1(Comparing) $s2(%user) $s1(and) $s2($hget(%chash,user)) $s1(in) $s2(%skill)
      $(%send,2) $s2(%user) $s1(Rank) $s2($bytes($skill(%hash,%skill).rank,b)) $s1(Level) $s2($bytes($skill(%hash,%skill).lvl,b)) $s1(Exp) $s2($bytes($skill(%hash,%skill).exp,b))
      $(%send,2) $s2($hget(%chash,user)) $s1(Rank) $s2($bytes($skill(%chash,%skill).rank,b)) $s1(Level) $s2($bytes($skill(%chash,%skill).lvl,b)) $s1(Exp) $s2($bytes($skill(%chash,%skill).exp,b))
      if ($skill(%hash,%skill).exp == $skill(%chash,%skill).exp) { $(%send,2) $s2(%user) $s1(and) $s2($hget(%chash,user)) $s1(are at a tie!) }
      if ($skill(%hash,%skill).exp > $skill(%chash,%skill).exp) { $(%send,2) $s2(%user) $s1(is) $s2($bytes($calc($skill(%hash,%skill).lvl - $skill(%chash,%skill).lvl),b)) $s1(levels,) $s2($bytes($calc($skill(%chash,%skill).rank - $skill(%hash,%skill).rank),b)) $s1(ranks and) $s2($bytes($calc($skill(%hash,%skill).exp - $skill(%chash,%skill).exp),b)) $s1(exp ahead of) $s2($hget(%chash,user)) }
      if ($skill(%chash,%skill).exp > $skill(%hash,%skill).exp) { $(%send,2) $s2($hget(%chash,user)) $s1(is) $s2($bytes($calc($skill(%chash,%skill).lvl - $skill(%hash,%skill).lvl),b)) $s1(levels,) $s2($bytes($calc($skill(%hash,%skill).rank - $skill(%chash,%skill).rank),b)) $s1(ranks and) $s2($bytes($calc($skill(%chash,%skill).exp - $skill(%hash,%skill).exp),b)) $s1(exp ahead of) $s2(%user) }
      goto clearup
    }
    else { goto skipnclear }
  }
  if (%skill == Combat) {
    var %cmb = $combat.final($skill(%hash,attack).lvl,$skill(%hash,defence).lvl,$skill(%hash,strength).lvl,$skill(%hash,hitpoints).lvl,$skill(%hash,prayer).lvl,$skill(%hash,ranged).lvl,$skill(%hash,magic).lvl)
    var %cmbc = $calc($iif(*.* !iswm %cmb,$calc(%cmb +1),$ceil(%cmb)) - %cmb)
    $(%send,2) $s1(Name:) $s2(%user) $s1(Combat:) $s2(%cmb) $&
      $s1(Attack) $s2($skill(%hash,attack).lvl) $s1(Defence) $s2($skill(%hash,defence).lvl) $s1(Strength) $s2($skill(%hash,strength).lvl) $s1(HitPoints) $s2($skill(%hash,hitpoints).lvl) $s1(Ranged) $s2($skill(%hash,ranged).lvl) $s1(Magic) $s2($skill(%hash,magic).lvl) $s1(Prayer) $s2($skill(%hash,prayer).lvl)
    $(%send,2) $s1(Levels Left: Attack) $s2($ceil($calc(( %cmbc ) / ( 1 / 3 )))) $&
      $s1(Strength) $s2($ceil($calc(( %cmbc ) / ( 1 / 3 )))) $&
      $s1(Defence) $s2($ceil($calc(( %cmbc ) / ( 1 / 4 )))) $&
      $s1(HitPoints) $s2($ceil($calc(( %cmbc ) / ( 1 / 4 )))) $&
      $s1(Prayer) $s2($ceil($calc(( %cmbc ) / ( 1 / 8 ))))
    goto clearup
  }
  if (%skill == PestControl) {
    var %att = $skill(%hash,attack).lvl,%def = $skill(%hash,defence).lvl,%str = $skill(%hash,strength).lvl,%hp = $skill(%hash,hitpoints).lvl,%mag = $skill(%hash,magic).lvl,%ran = $skill(%hash,ranged).lvl,%pra = $skill(%hash,prayer).lvl
    var %attxp = $skill(%hash,attack).exp,%defxp = $skill(%hash,defence).exp,%strxp = $skill(%hash,strength).exp,%hpxp = $skill(%hash,hitpoints).exp,%magxp = $skill(%hash,magic).exp,%ranxp = $skill(%hash,ranged).exp,%praxp = $skill(%hash,prayer).exp
    ;PC = (Level*Level)/6 for Att, Str, Def, Hp, Magic, Range
    ;PC = (Level*Level)/12 for Prayer
    ;If more than 100 pts are traded in PC = ((Level*Level)/6)*.10)+((Level*Level)/6)
    if (%att != -) { var %attn = $calc((%att * %att) /6) | var %atta = $calc((((%att * %att) /6) * .10) + ((%att * %att)/6)) }
    if (%def != -) { var %defn = $calc((%def * %def) /6) | var %defa = $calc((((%def * %def) /6) * .10) + ((%def * %def)/6)) }
    if (%str != -) { var %strn = $calc((%str * %str) /6) | var %stra = $calc((((%str * %str) /6) * .10) + ((%str * %str)/6)) }
    if (%hp != -) { var %hpn = $calc((%hp * %hp) /6) | var %hpa = $calc((((%hp * %hp) /6) * .10) + ((%hp * %hp)/6)) }
    if (%ran != -) { var %rann = $calc((%ran * %ran) /6) | var %rana = $calc((((%ran * %ran) /6) * .10) + ((%ran * %ran)/6)) }
    if (%mag != -) { var %magn = $calc((%mag * %mag) /6) | var %maga = $calc((((%mag * %mag) /6) * .10) + ((%mag * %mag)/6)) }
    if (%pra != -) { var %pran = $calc((%pra * %pra) /12) | var %praa = $calc((((%pra * %pra) /12) * .10) + ((%pra * %pra)/12)) }
    var %atte = $iif(%att >= 99,$calc(200000000 - %attxp),$calc($exp($calc(%att +1)) - %attxp))
    var %defe = $iif(%def >= 99,$calc(200000000 - %defxp),$calc($exp($calc(%def +1)) - %defxp))
    var %stre = $iif(%str >= 99,$calc(200000000 - %strxp),$calc($exp($calc(%str +1)) - %strxp))
    var %hpe = $iif(%hp >= 99,$calc(2000000000 - %hpxp),$calc($exp($calc(%hp +1)) - %hpxp))
    var %rane = $iif(%ran >= 99,$calc(200000000 - %ranxp),$calc($exp($calc(%ran +1)) - %ranxp))
    var %mage = $iif(%mag >= 99,$calc(200000000 - %magxp),$calc($exp($calc(%mag +1)) - %magxp))
    var %prae = $iif(%pra >= 99,$calc(200000000 - %praxp),$calc($exp($calc(%pra +1)) - %praxp))
    $(%send,2) $s1(PestControl Points to gain 1 level for) $s2(%user)
    $(%send,2) $iif(%attn,$s1(Attack) $s2($ceil($calc(%atte / %attn)) $chr(40) $+ $ceil($calc(%atte / %atta)) $+ $chr(41))) $&
      $iif(%defn,$s1(Defence) $s2($ceil($calc(%defe / %defn)) $chr(40) $+ $ceil($calc(%defe / %defa)) $+ $chr(41))) $&
      $iif(%strn,$s1(Strength) $s2($ceil($calc(%stre / %strn)) $chr(40) $+ $ceil($calc(%stre / %stra)) $+ $chr(41))) $&
      $iif(%hpn,$s1(HitPoints) $s2($ceil($calc(%hpe / %hpn)) $chr(40) $+ $ceil($calc(%hpe / %hpa)) $+ $chr(41))) $&
      $iif(%rann,$s1(Ranged) $s2($ceil($calc(%rane / %rann)) $chr(40) $+ $ceil($calc(%rane / %rana)) $+ $chr(41))) $&
      $iif(%magn,$s1(Magic) $s2($ceil($calc(%mage / %magn)) $chr(40) $+ $ceil($calc(%mage / %maga)) $+ $chr(41))) $&
      $iif(%pran,$s1(Prayer) $s2($ceil($calc(%prae / %praa)) $chr(40) $+ $ceil($calc(%prae / %praa)) $+ $chr(41)))
    goto clearup
  }
  if (%skill == stats) {
    $(%send,2) $s1(Stats for) $s2(%user) $+ $s1(:)
    $(%send,2) $s1(Overall) $s2($skill(%hash,overall).lvl) $s1(Attack) $s2($skill(%hash,attack).lvl) $s1(Defence) $s2($skill(%hash,defence).lvl) $s1(Strength) $s2($skill(%hash,strength).lvl) $s1(HitPoints) $s2($skill(%hash,hitpoints).lvl) $s1(Prayer) $s2($skill(%hash,prayer).lvl) $s1(Magic) $s2($skill(%hash,magic).lvl) $&
      $s1(Ranged) $s2($skill(%hash,ranged).lvl) $s1(Cooking) $s2($skill(%hash,cooking).lvl) $s1(Fishing) $s2($skill(%hash,fishing).lvl) $s1(RuneCrafting) $s2($skill(%hash,runecraft).lvl) $s1(Agility) $s2($skill(%hash,agility).lvl) $s1(Construction) $s2($skill(%hash,construction).lvl)
    $(%send,2) $s1(Herblore) $s2($skill(%hash,herblore).lvl) $s1(Thieving) $s2($skill(%hash,thieving).lvl) $s1(Crafting) $s2($skill(%hash,crafting).lvl) $s1(Fletching) $s2($skill(%hash,fletching).lvl) $s1(Slayer) $s2($skill(%hash,slayer).lvl) $s1(Mining) $s2($skill(%hash,mining).lvl) $&
      $s1(Smithing) $s2($skill(%hash,smithing).lvl) $s1(Firemaking) $s2($skill(%hash,firemaking).lvl) $s1(WoodCutting) $s2($skill(%hash,woodcutting).lvl) $s1(Farming) $s2($skill(%hash,farming).lvl) $s1(Hunter) $s2($skill(%hash,hunter).lvl)
    goto clearup
  }
  if (!$hget($1,%skill)) { $(%send,2) $s1(The user) $s2(%user) $s1(does not feature in the) $s2(%skill) $s1(hiscore table) | goto clearup }
  .tokenize 32 $remove($hget($1,%skill),$chr(44))
  .var %disp
  var %b = 0,%a = 1
  while (%target <= $skill(%hash,%skill).lvl) { .dll WhileFix.dll WhileFix . | inc %target 1 }
  var %e2l = $iif($skill(%hash,%skill).lvl >= 99,$calc(200000000 - $3),$calc($exp(%target) - $3))
  $(%send,2) $s1(Skill:) $s2(%skill) $s1(User:) $s2(%user)
  $(%send,2) $s1(Rank:) $s2($bytes($1,b)) $s1(Level:) $s2($bytes($2,b)) $s1(XP:) $s2($bytes($3,b)) $s1(XP To $iif($skill(%hash,%skill).lvl < 99,Lvl $s2(%target),$s2(Perfection)) $+ :) $s2($bytes(%e2l,b))
  if (%item != 0) {
    if ($readini(%show,%item,exp)) { $(%send,2) $s1(You will need to get) $s2(%item) $s1(a total of) $s2($bytes($ceil($calc(%e2l / $ifmatch)),b)) $s1(times at) $s2($bytes($ifmatch,b)) $s1(exp to attain level) $s2(%target) }
    goto clearup
  }
  if (%skill == overall || %e2l == 0) { goto clearup }
  if (%skill == attack || %skill == defence || %skill == strength) { var %show = $+($mircdirSkills\,melee.ini) | var %skill = melee }
  if ($se(stats,out.lines) == NONE) { goto clearup }
  var %minlvl = $iif($se(stats,under) == all,0,$calc($skill(%hash,%skill).lvl - $se(stats,under)))
  var %maxlvl = $calc($skill(%hash,%skill).lvl + $se(stats,over))
  while (%a <= $iif($ini(%show,0) >= $se(stats,out.lines),$iif($se(stats,out.lines) == ALL,$ini(%show,%skill,0),$ifmatch),$ifmatch)) {
    var %ilvl = $readini(%show,$ini(%show,%a),lvl)
    if ((%ilvl >= %minlvl && %ilvl <= %maxlvl) || ($ini(%show,0) <= $calc($se(stats,out.lines) * $se(stats,out.amt)))) {
      var %disp = %disp $s1($saka($ini(%show,%a))) $s2($bytes($ceil($calc(%e2l / $readini(%show,$ini(%show,%a),exp))),b))
      inc %b
    }
    if (%b >= $se(stats,out.amt)) {
      $(%send2,2) %disp
      var %b = 0
      .unset %disp
    }
    inc %a
  }
  if (%disp) {
    $(%send2,2) %disp
  }
  :clearup
  .hfree %hash
  .unset $($+(%,*,$remove(%hash,u)),1)
  if ($hget(%hash,compare)) {
    .hfree $($+(u,$hget(%hash,compare)),1)
    .unset $($+(%,*,$hget(%hash,compare)),1)
  }
  :skipnclear
}
on $*:TEXT:/^.(def|set)name (-s )?.{3,12}$/Si:#: {
  if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt }
  .writeini -n RSN.ini $address($nick,3) rsn $remove($iif($2 == -s,$3-,$2-),$chr(36))
  .writeini -n RSN.ini $address($nick,3) show $iif($2 == -s,$false,$true)
  .notice $nick $s1(Your default RSN has been set to) $s2($remove($iif($2 == -s,$3-,$2-),$chr(36)))
}
on *:TEXT:*:#: {
  if (!$se(private,active)) { halt }
  if ($se(status,stats) == off) { halt }
  if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt }
  if ($left($1,1) == $se(trigger,private) && $readini(chansetting.ini,$chan,private) == off) { halt }
  if (!$f2u($right($1,-1))) { halt }
  var %class = $+($r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9))
  var %class2 = $+($r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9))
  hadd -m $($+(u,%class),2) nick $nick
  if ($f2u($right($1,-1)) == Compare) {
    if (!$f2u($2)) { $iif($left($1,1) == $se(trigger,public) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) $s1(Error:) $s2($2) $s1(is not a valid skill) | halt }
    if (!$3) { $iif($left($1,1) == $se(trigger,public) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) $s1(Error:) $s2(You must specify a user to compare with.) | halt }
    hadd -m $($+(u,%class),2) compare %class2
    hadd -m $($+(u,%class2),2) user $replace($iif(!$4,$3,$4),$chr(32),_)
    hadd -m $($+(u,%class2),2) compare %class
    hadd -m $($+(u,%class2),2) skill $f2u($2)
    hadd -m $($+(u,%class2),2) nick $nick
    hadd -m $($+(u,%class2),2) completed No
    hadd -m $($+(u,%class2),2) address $address($nick,3)
    hadd -m $($+(u,%class),2) address $address($nick,3)
    hadd -m $($+(u,%class),2) skill $f2u($2)
    hadd -m $($+(u,%class),2) completed No
    hadd -m $($+(u,%class),2) user $replace($iif(!$4,$rsn($nick),$3),$chr(32),_)
    hadd -m $($+(u,%class2),2) display $iif($left($1,1) == $se(trigger,public) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick)
  }
  else {
    var %rsn = $2-,%target = next
    noop $regex(target,$2-,/#([0-9]{1,2})/Si)
    noop $regex(item,$2-,/-i"(.+?)"/Si)
    if ($regml(item,0) >= 1) { var %item = $regml(item,1) | %rsn = $remove(%rsn,$+(-i",%item,")) }
    else { var %item = 0 }
    if ($regml(target,0) >= 1) { var %target = $regml(target,1) | %rsn = $remove(%rsn,$+($chr(35),%target)) }
    else { var %target = 0 }
    hadd -m $($+(u,%class),2) address $address($nick,3)
    hadd -m $($+(u,%class),2) skill $f2u($right($1,-1))
    hadd -m $($+(u,%class),2) item %item
    hadd -m $($+(u,%class),2) target %target
    hadd -m $($+(u,%class),2) user $replace($rsn($nick,$iif(%rsn == $null,$null,%rsn)),$chr(32),_)
  }
  hadd -m $($+(u,%class),2) display $iif($left($1,1) == $se(trigger,public) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick)
  .sockopen $+(stats.,%class) hiscore.runescape.com 80
  if ($f2u($right($1,-1)) == Compare) { .sockopen $+(stats.,%class2) hiscore.runescape.com 80 }
}