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, )
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,& $+ $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,&) | 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
}