All pastes #461968 Raw Edit

Someone

public text v1 · immutable
#461968 ·published 2007-04-27 23:17 UTC
rendered paste body
---------------------------------------------------------->
Author: rannmann
Network: irc.gamesurge.net
Channel: #rannmann (I'm always in #runescape also)
Notes:  
Feel free to idle #rannmann or #runescape and support current/future projects!
Also feel free to change the script as you wish, but PLEASE
leave the commented section here.
Website (should always be updated): http://rannmann.com/rannserv/runescape.php
---------------------------------------------------------->
/

alias -l htmlfree {
var %x = "", %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
return %x
}
alias priceconfig {
echo -a * *********************************
echo -a * To set price options use the following commands:
echo -a * /priceall <on $+ $chr(124) $+ off> - Allows the use of the "all" trigger.  (.price -a rune set returns rune (g) set, rune (t) set, and rune set.)  Default is off due to flooding issues.
echo -a * /pricecolor <color1 color2 color3> - Sets colors of the output text.  Default is 14 07 15 (looks like: 14Santa Hat:07 25,000,000gp |15 zybez.net)
echo -a * *********************************
}
alias priceall {
if ($1 == on) { set %priceall on | echo -a * Price All is now set to "on" | return Price All = On }
elseif ($1 == off) { set %priceall off | echo -a * Price All is now set to "off" | return Price All = Off }
else { echo -a * Invalid Syntax.  Either /priceall on or /priceall off. | return Invalid Syntax }
}
alias pricecolor {
if ($len($1) == 2) && ($len($2) == 2) && ($len($3) == 2) && ($1 isnum) && ($2 isnum) && ($3 isnum) && ($1 <= 15) && ($2 <= 15) && ($3 <= 15) {
  set %c1 $1 | set %c2 $2 | set %c3 $3
  echo -a * Colors Set.  Output will now look like below:
  echo -a *  $+ %c1 Santa Hat: $+ %c2 25,000,000gp $chr(124) $+  $+ %c3 zybez.net
}
else { 
  echo -a * Invalid color selection.  Please use two digit color codes from 01 to 15.
}
}
;Do not change priceappend.  Zybez will break the script again if you do.  Feel free to shorten it, but give credit to zybez ALWAYS.
;if it breaks again because of this, I wont release a new update.
alias priceappend {
return $+(,%c3,,http://zybez.net)
}

on *:TEXT:!price*:#: {
if (%price.busy != $null) { .notice $nick 3[14MewBot3] Sorry but %price.busy is already using this command... please wait 3 seconds and try again. | halt }
set -u3 %price.busy $nick
write -c pricedownload.txt
if ($2 == -a) { 
  set %priceflag $2 
  set %rs.item $replace($3-,$chr(32),$chr(43))
}
else {
  set %rs.item $replace($2-,$chr(32),$chr(43))
}
set %pricenick $nick
set %msg.type private
price
}
on *:TEXT:@price*:#: {
if (%price.busy != $null) { .notice $nick 3[14Mewbot3] Sorry but %price.busy is already using this command... please wait 3 seconds and try again. | halt }
set -u3 %price.busy $nick
write -c pricedownload.txt
if ($2 == -a) { 
  set %priceflag $2 
  set %rs.item $replace($3-,$chr(32),$chr(43))
}
else {
  set %rs.item $replace($2-,$chr(32),$chr(43))
}
set %pricechannel $chan
set %pricenick $nick
set %msg.type public
price
}
alias pricemsg {
if (%priceall == on) && (%priceflag == -a) {
  var %itemnamecount 1
  var %pricecount 2
  while ($read(pricedownload.txt,1)) {
    var %itemname $read(pricedownload.txt,1))
    var %price $read(pricedownload.txt,2)
    var %output  $+ %c1 $+ %itemname $+ : $+ %c2 %price $+  %type $chr(124) $+  $+ %c3 $priceappend
    if (spelling isin $read(pricedownload.txt,1)) { notice %pricenick 07Your search did not return any results. Please make sure your spelling is correct and that you are typing full words. | halt  }
    if (%msg.type == private) { notice %pricenick 3[14Mewbot3] %output }  
    elseif (%msg.type == public) { msg %pricechannel 3[14Mewbot3] %output }
    else { msg %pricechannel Error.  Please eat a sock. }
    write -dl 1 pricedownload.txt
    write -dl 1 pricedownload.txt
  }
}
else {
  var %itemname $read(pricedownload.txt,1)
  var %price $read(pricedownload.txt,2)
  var %output  $+ %c1 $+ %itemname $+ : $+ %c2 %price $+  %type $chr(124) $+  $+ %c3 $priceappend
  if (spelling isin $read(pricedownload.txt,1)) { notice %pricenick 07Your search did not return any results. Please make sure your spelling is correct and that you are typing full words. | halt  }
  if (%msg.type == private) { notice %pricenick 3[14Mewbot3] %output }  
  elseif (%msg.type == public) { msg %pricechannel 3[14Mewbot3] %output }
  else { msg %pricechannel Error.  Please eat a sock. }
}
unset %priceflag
}
alias price sockclose price | sockopen price zybez.net 80
on *:sockopen:price:{ 
sockwrite -n $sockname GET /priceguide.php?search_terms= $+ %rs.item $+ &search_area=1&price_low=&price_high=&member=1&Search HTTP/1.1
sockwrite -n $sockname Host: www.zybez.net $+ $crlf $+ $crlf
}
on *:sockread:price:{ 
if ($sockerr) {
  echo -a Error.
  halt
}
else {
  sockread %temp 
  if ($regex(%temp,/^<!--name/)) || ($regex(%temp,/^<!--price/)) {
    write pricedownload.txt $htmlfree($replace(%temp,&amp $+ $chr(59),&))
    timerSOCKET 1 1 pricemsg
  }
}
}
on *:sockclose:price:{
}
on *:TEXT:*!dmlist*:#:{ msg # To get on the dm list tell us your channel you wish to be added they should get to you ASAP. Also Dustbot can only hold one dm on all chans so be patient if you cant dm right away }
on *:TEXT:*Mouse*:#:{ msg # 14<5:13314   )13~~~   1MOUSEY MUST CHASE NOW! }
on *:TEXT:*!Invite*:#:{ msg # 4,1To invite dustbot type /invite dustbot #YOURCHANNELHERE }
on *:INVITE:#:{
.timer 1 2 join $chan
.timer 1 2 /msg # 5Hi im Mewbot if you want to see my commands say !commands
}

alias -l c1 { return $+($chr(3),14,$1-) }
alias -l c2 { return $+($chr(3),07,$1-) }
on *:TEXT:*:#: {
if ($left($strip($1),1) !isin @!.) || ($regex($strip($1),/(=|[^<]*>|<[^>]*>|<[^>]|[0-9]|$chr(95))/Si)) { halt }
if ($right($1,-1) == defname) && ($2-) && ($len($2-) <= 12) {
  writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
  notice $nick $c1(your nickname for the adress) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($2-)
  halt
}
inc %ID 1
if ($right($strip($1),-1) == stats) set $+(%,rs.style.,%ID) stats
elseif ($regex($strip($1),/co?mb(at)?/Si)) set $+(%,rs.style.,%ID) combat
elseif ($setskill($remove($strip($1),@,!,.))) set $+(%,rs.style.,%ID) single
else halt
if ($len($2-) > 12) { $iif($left($1,1) == @,msg $chan,notice $nick) $c1(The nickname) $c2($2-) $c1(is too long) | halt }  
if ($2) set $+(%,rs.rsn.,%ID) $replace($2-,$chr(32),$chr(95))   
elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,rs.rsn.,%ID) $ifmatch
elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,rs.rsn.,%ID) $ifmatch
else set $+(%,rs.rsn.,%ID) $nick
set $+(%,rs.skill.,%ID) $setskill($remove($strip($1),@,!,.))
set $+(%,rs.return.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
sockopen $+(rsh.,%ID) hiscore.runescape.com 80
}
on *:SOCKOPEN:rsh.*:{
var %ID = $gettok($sockname,2,46)
sockwrite -nt $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,rs.rsn.,%ID),2) HTTP/1.0
sockwrite -nt $sockname Host: hiscore.runescape.com $+ $str($crlf,2)
}
on *:SOCKREAD:rsh.*:{
if ($sockerr) { echo -a Error. | halt }
var %ID = $gettok($sockname,2,46), $&
  %style = $($+(%,rs.style.,%ID),2), $&
  %target = $($+(%,rs.rsn.,%ID),2), $&
  %display = $($+(%,rs.return.,%ID),2), $&
  %skill = $($+(%,rs.skill.,%ID),2)
sockread &source
bwrite $sockname -1 -1 &source
if ($bfind(&source,1,does not feature in the hiscores).text) { %display $c1(The nickname:) $c2(%target) $c1(did not feature in runescape highscores for any skill!) | remove $sockname | sockclose $sockname | halt }
bread $sockname 1 $file($sockname).size $+(&,$sockname)
var %stat, %x = 1
while (%x) {
  var %x = $bfind($+(&,$sockname),$calc(%x + 1),<a href="overall.ws?table=).text, %stat = $htmlfree($bvar($+(&,$sockname),%x,200).text)
  tokenize 10 %stat
  hadd -m $sockname $1 $2 $3 $4 $xp2next($3,$4)
}
if ($bfind($+(&,$sockname),1,<img class="mainscroll-bottom).text) {
  if (%style == stats) {
    var %y = 0
    while (%y <= 23) {
      tokenize 32 $hget($sockname,$setskill(%y))
      if ($2) var %file = %file $c1($setskill(%y)) $c2($2)
      inc %y
    }
    %display $c1(Stats for) $c2(%target) $+ $c1(:)
    %display %file  
    unset $+(%,rs.,%ID)
  }
  if (%style == single) {
    if (!$hget($sockname,%skill)) { %display $c2(%target) $c1(did not feature in higscores for) $c2(%skill) | remove $sockname | sockclose $sockname | halt }
    tokenize 32 $hget($sockname,%skill)
    %display $c2(%skill) $c1(Stats for) $c2(%target)
    %display $c1(Level:) $c2($2) $c1(Rank:) $c2($1) $c1(Exp:) $c2($3) $c1(Exp for) $c2($calc($2 + 1)) $c1(%skill $+ :) $c2($comma($4))
    unset $+(%,rs.,%ID)  
  }
  if (%style == combat) {
    var %att = $gettok($hget($sockname,attack),2,32), %def = $gettok($hget($sockname,defence),2,32), $&
      %str = $gettok($hget($sockname,strength),2,32), %hp = $gettok($hget($sockname,hitpoints),2,32), $&
      %rng = $gettok($hget($sockname,ranged),2,32), %pray = $gettok($hget($sockname,prayer),2,32), $&
      %magic = $gettok($hget($sockname,magic),2,32)
    var %combat = $cmb(%att,%def,%str,%hp,%rng,%pray,%magic)
    var %temp = $abs($calc($int($calc($gettok(%combat,1,32) +1)) - $gettok(%combat,1,32))), $& 
      %a.lvl = $ceil($calc(%temp / .32707)), %s.lvl = $ceil($calc(%temp / .324)), $& 
      %d.lvl = $ceil($calc(%temp / .25)), $&
      %m.lvl = $ceil($calc(%temp / .487)), $& 
      %r.lvl = $ceil($calc(%temp / .487)), $&
      %p.lvl = $ceil($calc(%temp / .124))
    if ($gettok(%combat,2,32) == Magic Based) var %lvl.base = Magic: %m.lvl
    elseif ($gettok(%combat,2,32) == Ranged Based) var %lvl.base = Ranged: %r.lvl
    else var %lvl.base = $c1(Att:) $c2(%a.lvl) $c1(Str:) $c2(%s.lvl)
    %display $c2(%target) $c1(is level) $c2(%combat)
    %display $c1(Att:) $c2(%att) $c1(Def:) $c2(%def) $c1(Str:) $c2(%str) $c1(hp:) $c2(%Hp) $c1(Range:) $c2(%rng) $c1(Pray:) $c2(%pray) $c1(Magic:) $c2(%magic)
    if ($floor(%combat) != 126) %display $c1(Levels for) $c2($floor($calc($gettok(%combat,1,32) +1))) $+ $c1(:) %lvl.base $c1(def/hp:) $c2(%d.lvl) $c1(Prayer:) $c2(%p.lvl)
    else %display $c2(%target) $c1(has reached the maximum combat level in) $c2(Runescape!)     
    unset $+(%,rs.,%ID)
  }
}
remove $sockname
}
alias -l cmb {
var %a = $calc($2 * 100), %b = $calc($4 * 100), %c = $calc($6 * 50)
var %base = $calc($calc(%a + %b + %c) / 400), %d = $calc($1 * 130), %e = $calc($3 * 130)
if ($and($5,1) == 0) var %f = $calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65)
elseif ($and($5,1) == 1) var %f = $calc($5 * 195)
if ($and($7,1) == 0) var %g = $calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65)
elseif ($and($7,1) == 1) var %g = $calc($7 * 195)
var %mcombat = $calc($calc(%d + %e) / 400), %rcombat = $calc(%f / 400), %macombat = $calc(%g / 400)
if (%mcombat > %rcombat) && (%mcombat > %macombat) { return $calc(%mcombat + %base) Melee Based }
elseif (%rcombat > %mcombat) && (%rcombat > %macombat) { return $calc(%rcombat + %base) Ranged Based }
elseif (%macombat > %mcombat) && (%macombat > %rcombat) { return $calc(%macombat + %base) Magic Based }
}
alias -l htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&amp;) | return %x }
alias -l comma {  Var %a, %b = $regsub($ticks,$$1,/\G([+-]?\d+?)(?=(?:\d{3})++(?=\.\d++$|$))/g,\1 $+ $chr(44),%a) | Return %a }
alias -l xp2Next { var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1)) | return $calc(%nextxp - %xp) }
alias -l xp { var %x = 1, %level = $calc($1 - 1), %xp = 0 | while (%x <= %level) { var %TempXp = $calc((%x + 300 * 2^(%x / 7)) /4) | inc %xp %TempXp | inc %x } | return $int(%xp) }
alias -l setskill {
  if ($1 == 0) || ($regex($1,/^(st|(skill)?total|overall)$/Si)) return Overall
  elseif ($1 == 1) || ($regex($1,/^at(t|k|tack)$/Si)) return Attack
  elseif ($1 == 2) || ($regex($1,/^def(en[cs]e)?$$/Si)) return Defence
  elseif ($1 == 3) || ($regex($1,/^str(ength)?$/Si)) return Strength
  elseif ($1 == 4) || ($regex($1,/^hp|hit(s|points?)?$/Si)) return Hitpoints
  elseif ($1 == 5) || ($regex($1,/^range(r|d|ing)?$/Si)) return Ranged
  elseif ($1 == 6) || ($regex($1,/^Pray(er)?$$/Si)) return Prayer
  elseif ($1 == 7) || ($regex($1,/^mag(e|ic)$$/Si)) return Magic
  elseif ($1 == 8) || ($regex($1,/^cook(ing)?$/Si)) return Cooking
  elseif ($1 == 9) || ($regex($1,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
  elseif ($1 == 10) || ($regex($1,/^fletch(ing)?$/Si)) return Fletching
  elseif ($1 == 11) || ($regex($1,/^fish(ing)?$/Si)) return Fishing
  elseif ($1 == 12) || ($regex($1,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
  elseif ($1 == 13) || ($regex($1,/^craft(ing)?$/Si)) return Crafting
  elseif ($1 == 14) || ($regex($1,/^(smith|smelt)(ing)?$/Si)) return Smithing
  elseif ($1 == 15) || ($regex($1,/^mine(ing)?$/Si)) return Mining
  elseif ($1 == 16) || ($regex($1,/^herb(law|lore)?$/Si)) return Herblore
  elseif ($1 == 17) || ($regex($1,/^agil(ity)?$/Si)) return Agility
  elseif ($1 == 18) || ($regex($1,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
  elseif ($1 == 19) || ($regex($1,/^slay(er|ing)?$/Si)) return Slayer
  elseif ($1 == 20) || ($regex($1,/^farm(er|ing)?$/Si)) return Farming
  elseif ($1 == 21) || ($regex($1,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
  elseif ($1 == 22) || ($regex($1,/^(hunt)(er|ing)?$/si)) return Hunter
  elseif ($1 == 23) || ($regex($1,/^(con)(struc?tion)?$/si)) return Construction
}