All pastes #733928 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-10-12 05:53 UTC
rendered paste body
on *:CONNECT: {
  //mode $me +B
  timer 1 1  //mode #silent-reckoning +s
  //msg nickserv IDENTIFY daniel
  timer 1 1  //mode #silent-reckoning +b @Swift-B5F09C05.nsw.bigpond.net.au
  timer 1 1  //mode #silent-reckoning +b @F812D055.54A0C51D.55F4DD40.IP
  timer 1 1  //mode #silent-reckoning +b @Swift-A4587F55.kappa35.maxonline.com.sg
  timer 1 1  //mode #silent-reckoning +b @Swift-38CF671D.singnet.com.sg
  timer 1 1  //mode #silent-reckoning +b @Swift-CC2ED0BD.vic.bigpond.net.au
  timer 1 1  //mode #silent-reckoning +b @6548931.BF58FD4F.F23055E8.IP
  timer 1 1  //bs kick #silent-reckoning repeat on 2 2
  timer 1 1  //mode #silent-reckoning +s
  timer 1 1  //mode #silent-reckoning +j 2:30
  timer 1 1  //bs kick #oceania repeat on 2 2
  timer 1 1  //mode #oceania +s
  timer 1 1  //mode #oceania +j 2:30
}

on *:TEXT:!ban*:#:{ 
  if ($nick isop $chan || $nick = dricho) {
    /mode $chan +b ~c: $+ $2
  }
}
on *:TEXT:!unban*:#:{ 
  if ($nick isop $chan || $nick = dricho) {
    /mode $chan -b ~c: $+ $2
  }
}

on $*:TEXT:/^[!@]mass(d|u)?[vhobk]/Si:#:{
  if ($me isop $chan) || ($me ishop $chan) {
    if ($address($me,4) == $address($nick,4)) || ($nick isop $chan) {
      goto massm
    }
    elseif ($nick ishop $chan) && ($right($1,1) == v) {
      goto massm
    }
    halt
    :massm
    var %massm = 0
    if ($mid($1,6,2) == $mid($1,6,1) $+ b) {
      while (%massm <= $ibl($chan,0)) {
        inc %massm
        var %massc = %massc $ibl($chan,%massm)
      }
    }
    else {
      while (%massm <= $nick($chan,0)) {
        inc %massm
        if ($nick($chan,%massm) != $me) {
          var %massc = %massc $iif($right($1,1) == b,$address($nick($chan,%massm),1),$nick($chan,%massm))
          if ($right($1,1) == k) {
            kick $chan $nick($chan,%massm) $iif($2 != $null, $2-, MassKick.)
          }
        }
      }
    }
    if ($right($1,1) != k) {
      mode $chan $iif($mid($1,6,1) isin ud,-,+) $+ $str($right($1,1),%massm) %massc
    }
  }
  else {
    .notice $nick I need halfop or op to preform these commands.
  }
}


on *:TEXT:!sete*:#:{ if ($nick isop $chan || $nick = dricho) {
    /mode $chan +e $2 $+ !*@*
  }
}
on *:TEXT:!dele*:#:{ if ($nick isop $chan || $nick = dricho) {
    /mode $chan -e $2 $+ !*@*
  }
}
on *:TEXT:!ic*:#:{ if ($nick isop $chan || $nick = dricho) {
    /mode $chan +s
  }
}
ON *:TEXT:!commands*:#: { 
  //msg $nick 12(!/@)stats 10 Lets you search for the runescape stats of a desired player.
  //msg $nick 12(!/@)cmb 10 Allows you to search the runescape database for a desired players combat.
  //msg $nick 12(!/@)pest <skill> #level 10 Determine the number of pest control points required for a certain level.
  //msg $nick 12(!/@)clan 10 Searches the runehead database for a player.
  //msg $nick 12(!/@)price 10 Allows you to do a pricecheck on a desired item.
  //msg $nick 12(!/@)alch 10 Finds you the high and low alch of a certain item.
  //msg $nick 12(!/@)rsforum <item> 10 Search's the Runescape Forum for the keywords specified.
  //msg $nick 12!trivia 10 A trivia game (must be enabled in your channel, visit #silent-reckoning for help).
  //msg $nick 12!uno 10 Allows you to play uno.
  //msg $nick 12!8ball 10 Ask the magic 8ball a question.
  //msg $nick 12(!/@)urban 10 Defines a word with the urban dictionary.
  //msg $nick 12(!/@)calc 10 The calculator function.
  //msg $nick 12(!/@)Part $me 10 this is my departure function.
}



on *:TEXT:!setnews*:#silent-reckoning: {
  if ($nick isop $chan || $nick = dricho) {
    set %news $2-
    unset %new
    msg $chan 10The news has been updated! Type 12!news10 to view it!
  }
}
on *:TEXT:!news*:#silent-reckoning: {
  if ($nick ishop $chan || $nick isop $chan || $nick isvoice $chan) { 
    inc %new
    /notice  $nick 12< News > < 10 $+ %news 12>
  } 
  else { /notice $nick You are unable to access this command. }
}



on *:TEXT:!v*:#: {
  if ($nick isop $chan) || ($nick ishop $chan) {
    mode $chan +v $2
    cs access $chan add $2 3 
    msg $chan $c1 $+ $2 $c2has been added to the auto voice on $chan
  }
} 
on *:TEXT:!dv*:#: {
  if ($nick isop $chan) || ($nick ishop $chan) {
    mode $chan -v $2
    cs access $chan del $2
    msg $chan $c1 $+ $2 $c2has been removed from the auto voice on $chan
  }
} 


ON *:TEXT:!teamspeak:#: { 
  //notice $nick Download TeamSpeak here: http://www.teamspeak.com
//notice $nick For info on our server type !ts sr }


ON *:TEXT:*mode f*:#: { 
//msg $chan To temporarily disable mode f type /mode Nick -f.  To permantly disable mode f then goto File>Options>Chat Options and tick "disable mode +f". }

ON *:TEXT:*register nick*:#: { 
//msg $chan To register your nick with IRC, type /ns register password email Then follow the instructions in the email on how to validate. }


ON *:TEXT:!av on:#:{ if ($nick ishop $chan || $nick isop $chan || $nick = dricho) {
    set %av $+ $chan ON
    msg $chan 14Auto Voice is now 3[ON]
  }
}
ON *:TEXT:!av off:#:{ if ($nick ishop $chan || $nick isop $chan || $nick = dricho) {
    unset %av $+ $chan
  msg $chan 14Auto Voice is now 4[OFF]  }
}


ON *:TEXT:@cln*:#:{
  msg $chan 10The nick12 $2 10was found in 121 10clans.
  msg $chan 10Divine Forces: 12 www.runehead.com/clans/ml.php?clan=dfofficial
}


ON *:JOIN:#:{
  if $chan = #ircbots { halt } 
  if $chan = #rspc { halt }
  if (%jc [ $+ [ $chan ] ] == ON) { //msg $chan 14 I have seen a total of $+ 6 %we 14joins. 
  inc %we }
  if $nick = $me { halt }
  if (%av [ $+ [ $chan ] ] == ON) { /mode $chan +v $nick }
  if $chan = #silent-reckoning { //notice $nick 10 Welcome $+ 12 $nick $+ 10 to 12 $+ $chan $+ 10 . I am the clan's official bot.  Usefull commands: 12!join 10[] 12!website 10[] 12!memberlist 10[] 12!news 10[] 12!teamspeak }
  if (%whois [ $+ [ $chan ] ] == on) {
    set %whoisnick $nick
    set %whoischan $chan
    whois $nick
  }
}
raw *:*: {
  if (%whoisnick && %whoischan) {
    if ($numeric == 319) {
      msg %whoischan 12 %whoisnick is currently on: 10 $+ $3-
      unset %whoisnick
      unset %whoischan
    }
  }
}



ON *:TEXT:!wv:#silent-reckoning: {
  //notice $chan 6You can now watch our welcome to SR vid on youtube: 10http://www.brightcove.com/title.jsp?title=1080177777
}


ON *:TEXT:!website:#silent-reckoning: {
  //notice $nick http://www.Silent-Reckoning.com
}

ON *:TEXT:!memberlist:#silent-reckoning: {
  //notice $nick http://www.runehead.com/clans/ml.php?clan=sr_clan
}

ON *:TEXT:!join:#silent-reckoning: {
  //notice $nick Check out our Welcome video: http://www.youtube.com/watch?v=zrkQsM1Cm4U
  //notice $nick For info on how to join Silent Reckoning, please visit: http://www.silent-reckoning.com/forum/forumdisplay.php?f=2
}

ON *:TEXT:!uno*:#silent-reckoning: { 
//notice $nick If you would like to play uno please goto #sr-gaming by typing /join #sr-gaming }
ON *:TEXT:!trivia*:#silent-reckoning: { 
//notice $nick If you would like to play trivia please goto #sr-gaming by typing /join #sr-gaming }


alias c1 { return $+(10,$1-) }
alias c2 { return $+(12,$1-) }
alias c3 { return $+(7,$1-) }
on *:INVITE:#:{
  if $chan = #ircbots { halt }
  if $chan = #hemmyunit { halt }
  timer 1 1 //msg $chan $c1 Hello $c2 $+ $chan $c1 $+ I am $c2 $+ $me $c1 $+ . I was invited by $c2 $+ $nick $c1 $+ . To see my commands type 12!commands10. To make me leave please type $c2 $+ !part $c1 $+ or $c2 $+ !leave
}
on *:TEXT:!part*:#:{
  if ($2 = $me) {
    //msg $chan $c1 Thankyou for using my part command. $c2 Goodbye
    timer 1 1 /part $chan
  }
}
on *:TEXT:!leave*:#:{
  if ($2 = $me) {
    //msg $chan $c1 Thankyou for using my part command. $c2 Goodbye
    timer 1 1 /part $chan
  }
}

alias c1 { return $+(12,$1-) } 
alias c2 { return $+(10,$1-) }
alias c3 { return $+(4,$1-) }
on *:TEXT:!whois*:#: {
  if ($nick isop $chan || $nick ishop $chan || $nick = dricho) {
    if ($2 == on) {
      if (%whois [ $+ [ $chan ] ] != on) {
        set %whois [ $+ [ $chan ] ] on
        msg $chan $c1 Whois on join has been enabled for $c2 $+ $chan $c1 $+ by $c2 $+ $nick $c1 $+ .
      }
      else {
        notice $nick $c1 Whois on join is allready on for $c2 $+ $chan $c1 $+ . | halt
      }
    }
    elseif ($2 == off) {
      if (%whois [ $+ [ $chan ] ] == on) {
        set %whois  [ $+ [ $chan ] ] off
        msg $chan $c1 Whois on join has been disabled for $c2 $+ $chan $c1 $+ by $c2 $+ $nick $c1 $+ .
      }
      else {
        notice $nick $c1 Whois on join is allready off for $c2 $+ $chan $+ .
      }
    }
  }
} 


on *:TEXT:!joincount on*:#: { if ($nick ishop $chan || $nick isop $chan || $nick = dricho) {
    set %jc $+ $chan ON
    msg $chan 14Join Count is now 3[ON]
  }
}
on *:TEXT:!joincount off*:#: { if ($nick ishop $chan || $nick isop $chan || $nick = dricho) {
    unset %jc $+ $chan
    msg $chan 14Join Count is now 4[OFF]
  }
}


on $*:text:/^[!@.]urban/Si:#:{
  sockclose urban
  set %word $2
  set %output.urban $iif($left($1,1) == @, msg $chan, notice $nick)
  sockopen urban www.o-ss.net 80
}
ON *:SOCKOPEN:urban:{
  sockwrite -nt $sockname GET /parsers/urban.php?word= $+ %word HTTP/1.1
  sockwrite -nt $sockname Host: www.o-ss.net
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:urban:{
  if ($sockerr) {
    echo -a Error in word lookup
    sockclose $sockname
    halt
  }
  else {
    var %read
    sockread %read
    if (*end* iswm %read || *&quot* iswm %read || *;* iswm %read) { %output.urban 12 $+ $chr(91) Urban $chr(93) : 10 $+ %word - $remove(%read,end,&quot,;) }
  }
}
on *SOCKCLOSE:urban:{
  unset %word
  unset %output.urban
  socklose $sockname
}




on $*:TEXT:/^[!@.]alch/Si:#:{
  inc %s
  set $+(%,return.,%s) $iif($left($1,1) == @, msg $chan, notice $nick)
  if ($2- == $null) { %return. [ $+ [ %s ] ] add a item to lookup! use -p switch for p2p players -f switch for f2p players example: !item rune axe or !item -f rune axe!
    halt
  }
  set $+(%,players.,%s) all
  set $+(%,item.,%s) $replace($2-,$chr(32),+)
  set $+(%,item2.,%s) $2-
  sockopen $+(item.,%s) tip.it 80
}
on *:SOCKOPEN:item.*: {
  var %s = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /runescape/index.php?rs2item=&orderby=0&keywords= $+ %item. [ $+ [ %s ] ] $+ &Players=all&category=0&subcategory=0&cmd=8&action=Manage_Items&search=1&submit=Simple+Search HTTP/1.1
  sockwrite -nt $sockname Host: tip.it
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:item.*: {
  var %s = $gettok($sockname,2,46)
  if ($sockerr) {
    %return. [ $+ [ %s ] ] Socket error, please report this to $me $+ .
    halt
  }
  var %read
  sockread %read
  if (*<p><strong>1</strong> items matched your search.</p>* iswm %read) {
    /tokenize 32 $htmlfree(%read)
    set %itemresults [ $+ [ %s ] ] $1
  }
  if (*<td><a href="index.php?rs2item_id* $+ %item2. [ $+ [ %s ] ] $+ *</a></td>* iswm %read) {
    set %read2 [ $+ [ %s ] ] $remove($htmlfree(%read),$chr(9))
    set %itemid [ $+ [ %s ] ] $remove(%read,<td><a href="index.php?rs2item_id=,</a></td>,$chr(34), $+ %read2 [ $+ [ %s ] ] $+ )
    /tokenize 62 %itemid [ $+ [ %s ] ]
    set %itemid [ $+ [ %s ] ] $remove($1,$chr(9))
    sockopen $+(item2.,%s) tip.it 80
    sockclose $sockname
  }
}
on *:SOCKOPEN:item2.*: {
  var %s = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /runescape/index.php?rs2item_id= $+ %itemid [ $+ [ %s ] ] HTTP/1.1
  sockwrite -nt $sockname Host: tip.it
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:item2.*: {
  var %s = $gettok($sockname,2,46)
  if ($sockerr) {
    %return. [ $+ [ %s ] ] Socket error, please report this to $me $+ .
    halt
  }
  var %aread
  sockread %aread 
  if (*High Alchemy</td> iswm %aread) {
    var %alchemy
    sockread %alchemy
  }
  if (*<td width="25%"> iswm %alchemy) {
    var %alch
    sockread %alch
    set %highalch [ $+ [ %s ] ] $remove(%alch,$chr(09))
  }
  if (*gp iswm %aread) {
    set %itemprice [ $+ [ %s ] ] $remove(%aread,$chr(9))
  }
  if (*Notes</td>* iswm %aread) {
    var %note
    sockread %note
  }
  if (*<td> iswm %note) {
    var %lol3
    sockread %lol3
    set %itemnote [ $+ [ %s ] ] $remove($htmlfree(%lol3),$chr(9))
    %return. [ $+ [ %s ] ] $c1(Item:) $c2 $+ %read2 [ $+ [ %s ] ]  $c1(Low Alchemy:) $c2 $+ %highalch [ $+ [ %s ] ] $c1(High Alchemy:) $c2 $+ %itemprice [ $+ [ %s ] ]


    sockclose $sockname
    /unsetvars
  }
}
alias htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;) | return %x
}
alias -l c1 return $+($chr(3),12,$1-,)
alias -l c2 return $+($chr(3),04,$1-,)
alias -l c3 return $+($chr(3),04,,$1-,)

alias unsetvars {
  /unset %return. [ $+ [ %s ] ]
  /unset %item. [ $+ [ %s ] ]
  /unset %item2. [ $+ [ %s ] ]
  /unset %read2 [ $+ [ %s ] ]
  /unset %itemid [ $+ [ %s ] ]
  /unset %memb [ $+ [ %s ] ]
  /unset %quest [ $+ [ %s ] ]
  /unset %trade [ $+ [ %s ] ]
  /unset %highalch [ $+ [ %s ] ]
  /unset %itemprice [ $+ [ %s ] ]
  /unset %itemplace [ $+ [ %s ] ]
  /unset %itemuse [ $+ [ %s ] ]
  /unset %itemnote [ $+ [ %s ] ]
} 




alias c1 { return $+(10,$1-) } 
alias c2 { return $+(12,$1-) }
alias c3 { return $+(7,$1-) }
; mIRC Teamspeak query bot by Andromeda
; Version 0.92
; Email: andromeda.gdi@gmail.com
; IRC: irc.protium.org #nbw

on *:LOAD:{ 
  if ($version < 6.03) {
    .unload -rs tsquery.mrc
    echo -ts Teamspeak Query Bot Requires mIRC v6.03 or newer to be installed successfully.
  }
  else { /echo -a mIRC Teamspeak Query Bot LOADED successfully }
}

on $*:TEXT:/^[!@.]addalias/i:*:{
  var %alias $2
  var %ip $3
  if ((%alias != $null) && (%ip != $null)) {
    .writeini query.ini tsquery %alias %ip
    /notice $chan $c2(%alias %ip $+ ) $c1(has been added to tsquery by: $c2($nick) 4$+ $chr(46) )
  }
}

;-----------------------------------------------------------------------------
; Begin TS Server Query
;-----------------------------------------------------------------------------

on $*:text:/^[!@.]ts/i:#silent-reckoning:{
  if ($nick ishop $chan || $nick isop $chan || $nick isvoice $chan) { 
  $tsquery($nick,$2) }
  else { /notice $nick You must be voiced or above to use this command. }
}

on $*:text:/^[!@.]ts/i:?:{
  $tsquery($nick,$2)
}

on *:input:#:{ 
  if ($1 == !ts) { 
    $tsquery($nick,$2)
  }
  else if ($1 == !addalias) {
    var %alias $2
    var %ip $3
    if ((%alias != $null) && (%ip != $null)) {
      .writeini query.ini tsquery %alias %ip
      /msg $chan $c1(%alias %ip $+ ) $c2(has been added to tsquery.)
    }
  }
}

on *:input:?:{ 
  if ($1 == !ts) { 
    $tsquery($nick,$2)
  }
  else if ($1 == !addalias) {
    var %alias $2
    var %ip $3
    if ((%alias != $null) && (%ip != $null)) {
      .writeini query.ini tsquery %alias %ip
      /notice $c1($nick  $+ %alias %ip $+ ) $c2(has been added to tsquery $+ $chr(46))
    }
  }
}

alias -l tsquery {
  if (($2 != $null) && ($chr(46) !isin $2)) {
    if ($readini(query.ini,tsquery,$2) != $null) { 
      var %server $readini(query.ini,tsquery,$2)
      ; %server --> 209.190.31.155:9016
      var %sockserver $1 $+ $chr(174) $+ %server
      ; %sockserver --> nick®209.190.31.155:9016
      sockclose ts. [ $+ [ %sockserver ] ]
      unset %ts. [ $+ [ %sockserver ] ]
      unset %pl. [ $+ [ %sockserver ] ]
      sockopen -tk ts. [ $+ [ %sockserver ] ] $gettok(%server,1,58) 51234
    }
    else if (server* iswm $2) {
      $gettsservers($1)
    }
    else {
      /notice $1  Please put in a valid IP or alias. Type: "!ts servers" for list of servers. 
    }
  }
  else if (($2 != $null) && ($gettok($2,2,58) != $null)) {
    var %sockserver $1 $+ $chr(174) $+ $2 $gettok($2,1,58) 51234
    ; %sockserver --> nick®209.190.31.155:9016
    sockclose ts. [ $+ [ %sockserver ] ]
    unset %ts. [ $+ [ %sockserver ] ]
    unset %pl. [ $+ [ %sockserver ] ]
    sockopen -tk ts. [ $+ [ %sockserver ] ]
  }
  else if ($2 != $null) {
    /notice $1  TS ERROR: Please put a port number. 
    /notice $1  Example: !ts ts1.dsservers.com:8767 
  }
  else { /notice $1  Please put in a valid IP or alias. Type: "!ts servers" for list of servers.  }
}

on *:SOCKOPEN:ts.*:{
  sockwrite -n $sockname si $gettok($sockname,2,58)
}

on *:SOCKOPEN:pl.*:{
  sockwrite -n $sockname pl $gettok($sockname,2,58)
}

on *:SOCKREAD:ts.*: {
  if ($sockerr > 0) { return }
  var %tmp | var %maxusers | var %tmpserv $gettok($sockname,2-,46) | var %tmpchan $gettok($gettok($sockname,2-,46),1,174)
  sockread %tmp
  while ($sockbr) {
    if (%tmp == [TS]) { sockread %tmp }
    else if (%tmp == OK) { sockclose $sockname }
    else if (server_name=* iswm %tmp) {
      set %ts. [ $+ [ %tmpserv ] ] $gettok(%tmp,2,61)
    }
    else if (server_maxusers=* iswm %tmp) {
      set %maxusers $chr(47) $+ $gettok(%tmp,2,61) $+ $chr(41)
    }
    else if (server_currentusers=* iswm %tmp) {
      set %ts. [ $+ [ %tmpserv ] ] %ts. [ $+ [ %tmpserv ] ] $+ $chr(32) $+ $chr(40) $+ $gettok(%tmp,2,61) $+ %maxusers
      /notice %tmpchan $c2(TS Server:) $c1($gettok(%tmpserv,2,174) %ts. [ $+ [ %tmpserv ] ])
      sockclose pl. [ $+ [ %tmpserv ] ]
      sockopen -tk pl. [ $+ [ %tmpserv ] ] $gettok($gettok(%tmpserv,1,58),2,174) 51234
      sockclose $sockname
      break
    }
    sockread %tmp
  }
}

on *:SOCKREAD:pl.*: {
  if ($sockerr > 0) { return }
  var %tmp | var %tmpchan $gettok($gettok($sockname,2-,46),1,174)
  sockread %tmp
  while ($sockbr) {
    if (%tmp == [TS]) { sockread %tmp }
    else if (%tmp == OK) { tspost $gettok($sockname,2-,46) | break }
    else {
      if ($len( % [ $+ [ $sockname ] ] ) < 400 ) {
        set % [ $+ [ $sockname ] ] % [ $+ [ $sockname ] ] $replace($gettok(%tmp,15,9) $+ $chr(32) , nick, $null)
      }
      else {
        /notice %tmpchan $c2(Users connected:) $c1(% [ $+ [ $sockname ] ])
        set % [ $+ [ $sockname ] ] $replace($gettok(%tmp,15,9) $+ $chr(32) , nick, $null)
      }
    }
    sockread %tmp
  }
}

alias tspost {
  sockclose *. [ $+ [ $1- ] ]
  if (%pl. [ $+ [ $1 ] ] == $chr(32)) { 
    unset %ts. [ $+ [ $1 ] ]
    unset %pl. [ $+ [ $1 ] ]
    return
  }
  /notice $gettok($1,1,174)  Users connected: %pl. [ $+ [ $1 ] ]
  unset %ts. [ $+ [ $1 ] ]
  unset %pl. [ $+ [ $1 ] ]
}

alias -l gettsservers {
  var %i 0
  var %list
  while (%i <= $ini(query.ini,tsquery,0)) {
    var %ini $ini(query.ini,tsquery,[ %i ])
    if ($gettok($readini(query.ini,tsquery,[ %ini ]),1,58)) {
      set %list %list %ini    
    }
    inc %i
  }
  /notice $1 TS Servers: %list
}



alias -l c1 { return $+($chr(3),10,$1-) }
alias -l c2 { return $+($chr(3),12,$1-) }
alias -l c3 { return $+($chr(3),4,$1-,) }
on $*:TEXT:/^[!@.]cla(ns|n)/Si:#:{
  inc %s
  set $+(%,return.,%s) $iif($left($1,1) == @, msg $chan, notice $nick)
  set $+(%,clan.,%s) $replace($2-,$chr(32),_)
  sockopen $+(clan.,%s) www.runehead.com 80
}
on *:SOCKOPEN:clan.*: {
  var %s = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /clans/search.php?search= $+ %clan. [ $+ [ %s ] ] $+ &searchtype=exact HTTP/1.1
  sockwrite -nt $sockname Host: www.runehead.com
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:clan.*: {
  var %s = $gettok($sockname,2,46)
  if ($sockerr) {
    %return. [ $+ [ %s ] ] Socket error, please report this to $me $+ .
    halt
  }
  var %read
  sockread %read
  if ($regex(results,%read,/<p>No results were found for the <b>exact</b> search <b>(.*)</b/)) {
    %return. [ $+ [ %s ] ] $c1 $+ The nick  $c2 $+ [ $+ [ %s ] ] %clan. [ $+ [ %s ] ] $c1 $+ doesnt appear on the $c2 runehead $c1 database.
    unset $+(%,clan.*)
    sockclose $+(clan.,%s)
  }
  if ($regex(results,%read,/<p>The <b>exact<\/b> search <b>(.*)<\/b> returned <b>(\d+)/)) {
    %return. [ $+ [ %s ] ] $c1 $+ The nick  $c2 $+ %clan. [ $+ [ %s ] ] $c1 $+ was found in $c2 $+ $regml(results,2) $c1 $+ clans. 
  }
  if ($regex(clan,%read,/<td class='tableborder'><a href='(.*)' title='View (.*) Memberlist'>/)) {
    inc $+(%,clan.count.,%d)
    if ($($+(%,clan.count.,%d),2) >= 4) {
      %return. [ $+ [ %s ] ] $c1 $+ There were more as $c3 $+ 4 $c2 results for %clan. [ $+ [ %s ] ] $+ , script halts.
      unset $+(%,clan.*)
      sockclose $+(clan.,%s)
    }
    else {
      %return. [ $+ [ %s ] ] $c1 $+ $regml(clan,2) $+ :  $+ $c2 $+(www.runehead.com/clans/,$regml(clan,1))
    }
  }
  if (</html> isin %read) {
    unset $+(%,clan.*)
    sockclose $+(clan.,%s)
  }
}


on *:TEXT:!8ball*:#:{ 
  if ($2 == $null) {
    //notice $nick 10You need to enter a quenstion.
  }
  else {
    /set %8ball $rand(1,11) 
    if (%8ball == 1) msg $chan 10The 8ball says: 12Nooo! 
    if (%8ball == 2) msg $chan 10The 8ball says: 12mmh, Yes 
    if (%8ball == 3) msg $chan 10The 8ball says: 12well... Maybe 
    if (%8ball == 4) msg $chan 10The 8ball says: 12haha! of course !
    if (%8ball == 5) msg $chan 10The 8ball says: 12Are you crazy?!?! Dude -.-
    if (%8ball == 6) msg $chan 10The 8ball says: 12ermm, How should I know? 
    if (%8ball == 7) msg $chan 10The 8ball says: 12What The?? what are u thinking? that i'm an idiot or something? :O of course NOT!
    if (%8ball == 8) msg $chan 10The 8ball says: 12NO!
    if (%8ball == 9) msg $chan 10The 8ball says: 12Ask zezima
    if (%8ball == 10) msg $chan 10The 8ball says: 12YES!
    if (%8ball == 11) msg $chan 10The 8ball says: 12Most Likely
  }
}


on $*:TEXT:/^[!@](math|calc) .*$/Si:#:{
  if ($left($1,1) == @) && ($left($remove($chan(#).mode,+),1) === c) || ($left($remove($chan(#).mode,+),2) === c) { set %math.color.strip on }
  if ($remove($2-,+,-,/,*,x,^,$chr(40),$chr(41),$chr(44),$chr(46),m,k,b,t) !isnum) { unset %math.* | halt }
  set %math.send $iif($left($1,1) == @,.msg $chan,.notice $nick) | set %math $remove($replace($2-,k,000,m,000000,b,000000000,t,000000000000,x,*),$chr(44),$chr(46)) | %math.send $iif(%math.color.strip != $null,$2- = $bytes($calc(%math),bd),14 $+ $2- =07 $bytes($calc(%math),bd)) | unset %math | unset %math.send | halt
}



alias c1 { return $+($chr(3),12,$1-) }
alias c2 { return $+($chr(3),10,$1-) }
alias c3 { return $+($chr(3),4,$1-) }
ON $*:TEXT:/^[!@](price)/Si:#:{
  if ($2 == $null) { notice $nick $c3(Sorry $nick You Have To Specify An Item. Example:) $c1($right($1,1) $+) $c3(Rune Scim) }
  else {
    inc %p
    set $+(%,item.name.,%p) $2-
    set $+(%,price.item.,%p) $replace($2-,$chr(32),$chr(37) $+ 20)
    set $+(%,price.style.,%p) $iif($left($1,1) == @,msg $chan,notice $nick)
    sockopen $+(price.,%p) zybez.net 80
  }
}
on *:SOCKOPEN:price.*:{
  var %id = $gettok($sockname,2,46)
  sockwrite -nt $sockname GET /priceguide.php?search_terms= $+ $($+(%,price.item.,%p),2) $+ &search_area=1&price_low=&price_high=&member=1&w13=rules HTTP/1.1
  sockwrite -nt $sockname Host: www.zybez.net
  sockwrite -nt $sockname $+($crlf,$crlf)
}
on *:SOCKREAD:price.*:{
  inc %pcount
  var %id = $gettok($sockname,2,46)
  var %style = $($+(%,price.style.,%p),2) ,  $&
    %item = $replace($($+(%,price.item.,%p),2),$chr(37) $+ 20,$chr(32))
  if ($sockerr) {
    %style $c3(An error occured while connecting)
    unset $+(%,price.*)
    sockclose $+(price.,%p)
  }
  else {
    var %price
    sockread %price

    if (*">Viewing * of * Results</td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.results.,%p) $2
      if ($($+(%,price.results.,%p),2) == 0) %style $c1(No results where found for) $c2($($+(%,item.name.,%p),2))
      elseif ($($+(%,price.results.,%p),2) > 3) %style $c1(There where) $c2($($+(%,price.results.,%p),2)) $c2(Results) $c1(found for) $c2($($+(%,item.name.,%p),2))    
      else %style $c1(Results found for) $c2($($+(%,item.name.,%p),2))
    }
    if (*<td class="tablebottom" colspan="5">Your search did not return any results. Please make sure your spelling is correct and that you are typing full words.</td>* iswm %price) {
      %style $c3(Sorry $nick No Results Were Found For:) $c1($qt(%item))
      unset $+(%,price.*.,%p)
      sockclose $+(price.,%p)
    }
    if (*<td class='tablebottom'><img src="/img/member.gif" alt="*"/></td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.members.,%p) Yes
    }   
    if (*<td class="tablebottom">&nbsp;</td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.members.,%p) No
    }
    if (*<!--name--><td class='tablebottom'>*</td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.name.,%p) $1-
    }
    if (*<!--price--><td class="tablebottom">*</td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.low.,%p) $1
      set $+(%,price.high.,%p) $3
    }
    if (*<td class="tablebottom"><a href="/priceguide.php?category=*">*</a></td>* iswm %price) {
      tokenize 32 $nohtml(%price)
      set $+(%,price.catergory.,%p) $replace($1-,&quot;,",&amp;,&)
      inc $+(%,price.times.,%p)
      if ($($+(%,price.times.,%p),2) > 3 && !$($+(%,price.stop.,%p),2)) {
        %style $c1(Max Results Of 3 Displayed.) $c1(Try Making Your Search For) $c2($qt(%item)) $c1(More Specific.)
        unset $+(%,price.*.,%p)
        set $+(%,price.stop.,%p) true
        sockclose $+(price.,%p)
      }
      elseif ($($+(%,price.times.,%p),2) <= 5) {
        %style $c1(Item:) $c2($($+(%,price.name.,%p),2)) $& $c1(Price:) $c2($($+(%,price.low.,%p),2)) $c1(-) $c2($($+(%,price.high.,%p),2)) $&
        }
    }
  }
}
alias -l nohtml {
  var %x,%i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x)
  %x = $remove(%x,&nbsp;)
  return %x
}





alias c1 return $+($chr(3),10,$1-)
alias c2 return $+($chr(3),03,$1-)
on *:TEXT:!dm:#: {
  if $chan = #silent-reckoning { /notice $nick Please do not play my games in this channel, goto #sr-gaming | halt }
  if (%starter == $null) {
    set %starter $nick
    msg $chan $c1(%starter) $c2(has started a dm! $C1(!dm too challenge him))
    halt
  }
  else {
    if (%challenger == $null) {
      if ($nick == %starter) {
        msg $chan $c2(you cant dm yourself!) | halt
      }
      set %challenger $nick
      set %firstturn $r(1,2)
      set %dm on
      msg $chan $c1(%challenger $c2(is going to dm $c1(%starter))) $+ !
      msg $chan $c2(and) $iif(%firstturn == 1,$c1(%starter) $c2(is going first),$c1(%challenger) $c2(is going first))
      msg $chan $c1($me) $c2(Gives both players) $c1(15 shark) $c2(and) $c1(99 hp.) $c2(GO GO GO!)
      set %hp [ $+ [ %starter ] ] 99
      set %hp [ $+ [ %challenger ] ] 99
      set %food [ $+ [ %starter ] ] 15
      set %food [ $+ [ %challenger ] ] 15
      set %spec [ $+ [ %challenger ] ] 100
      set %spec [ $+ [ %starter ] ] 100
    }
    if (%firstturn == 1) {
      set %turn %starter
      halt
    }
    else {
      set %turn %challenger
      halt
    }
    if (%dm == on) {
      msg $chan $c1($nick) $c2(theres already a dm going on between) $c1(%starter $c2(and $c1(%challenger)))
    }
  }
}
on *:TEXT:!dm off:#:{
  msg $chan $c1(The Dm between) $c2(%starter) $c1(and) $c2(%challenger) $c1(has ended because of) $c2($nick)
  unset %dm
  unset %c.hp [ $+ [ %challenger ] ]
  unset %s.hp [ $+ [ %starter ] ]
  unset %turn
  unset %food [ $+ [ %starter ] ]
  unset %food [ $+ [ %challenger ] ]
  unset %hp [ $+ [ %starter ] ]
  unset %hp [ $+ [ %challenger ] ]
  unset %starter
  unset %challenger
}

on *:TEXT:!whip:#:{
  if (%dm == off || %dm == $null) { notice $nick $c1(there isnt a dm in $chan) | halt }
  if (%turn == %starter) {
    set %whipped [ $+ [ %starter ] ] $rand(1,30)
    set %c.hp [ $+ [ %challenger ] ] $calc( %hp [ $+ [ %challenger ] ] - %whipped [ $+ [ %starter ] ] )
    set %hp [ $+ [ %challenger ] ] %c.hp [ $+ [ %challenger ] ]
    msg $chan $c1(%starter $c2(Hits a)) $c1(%whipped [ $+ [ %starter ] ]) $c2(Leaving) $c1(%challenger) $c2(with) $c2(%c.hp [ $+ [ %challenger ] ]) $c1(Hp)
    if (%hp [ $+ [ %challenger ] ] >= 0) {
      set %turn %challenger
      msg $chan $c1(It is now $c2(%turn $c1(turn)))
      unset %whipped [ $+ [ %starter ] ]
      unset %c.hp
      halt
    }
    else {
      msg $chan $c1(%starter $c2(wins the dm))
      set %dm off
      set %dm off
      unset %starter
      unset %challenger
      unset %c.hp [ $+ [ %challenger ] ]
      unset %s.hp [ $+ [ %starter ] ]
      unset %turn
      unset %food [ $+ [ %starter ] ]
      unset %food [ $+ [ %challenger ] ]
      unset %hp [ $+ [ %starter ] ]
      unset %hp [ $+ [ %challenger ] ]
      halt
    }
  }
  if (%dm == off || %dm == $null) { notice $nick $c1(there isnt a dm in $chan) | halt }
  if (%turn == %challenger) {
    set %whipped [ $+ [ %challenger ] ] $rand(1,30)
    set %s.hp [ $+ [ %starter ] ] $calc( %hp [ $+ [ %starter ] ] - %whipped [ $+ [ %challenger ] ] )
    set %hp [ $+ [ %starter ] ] %s.hp [ $+ [ %starter ] ]
    msg $chan $c1(%challenger $c2(hits a)) $c2(%whipped [ $+ [ %challenger ] ]) $c1(Leaving) $c2(%starter) $c1(with) $c2(%s.hp [ $+ [ %starter ] ]) $c1(Hp)
    if (%hp [ $+ [ %starter ] ] >= 0) {
      set %turn %starter
      msg $chan $c1(It is now $c2(%turn $c1(turn)))
      unset %whipped [ $+ [ %challenger ] ]
      unset %s.hp
      halt
    }
    else {
      msg $chan $c1(%challenger $c2(wins the $c1(dm)))
      set %dm off
      set %dm off
      unset %starter
      unset %challenger
      unset %c.hp [ $+ [ %challenger ] ]
      unset %s.hp [ $+ [ %starter ] ]
      unset %turn
      unset %food [ $+ [ %starter ] ]
      unset %food [ $+ [ %challenger ] ]
      unset %hp [ $+ [ %starter ] ]
      unset %hp [ $+ [ %challenger ] ]
      halt
    }
  }
}
on *:TEXT:!dds:#:{
  if (%spec [ $+ [ %starter ] ] <= 24) { notice $nick You need 25% or more special to do that | halt }
  if (%dm == off || %dm == $null) { notice $nick $c1(there isnt a dm in $chan) | halt }
  if (%turn == %starter) {
    set %dds1 [ $+ [ %starter ] ] $rand(1,20)
    set %dds2 [ $+ [ %starter ] ] $rand(1,20)
    set %spec [ $+ [ %starter ] ] $calc( %spec [ $+ [ %starter ] ] - 25 )
    set %c.hp [ $+ [ %challenger ] ] $calc( %hp [ $+ [ %challenger ] ] - ( %dds1 [ $+ [ %starter ] ] + %dds2 [ $+ [ %starter ] ] ))
    set %hp [ $+ [ %challenger ] ] %c.hp [ $+ [ %challenger ] ]
    msg $chan $c1(%starter $c2(Hits a)) $c1(%dds1 [ $+ [ %starter ] ]) $c1(and a) %dds2 [ $+ [ %starter ] ]  $c2(Leaving) $c1(%challenger) $c2(with) $c2(%c.hp [ $+ [ %challenger ] ]) $c1(Hp)
    notice $nick $c1(You have) $c2(%spec [ $+ [ %starter ] ] $+ %) $c1(special left)
    if (%hp [ $+ [ %challenger ] ] >= 0) {
      set %turn %challenger
      msg $chan $c1(It is now $c2(%turn $c1(turn)))
      unset %c.hp
      halt
    }
    else {
      msg $chan $c1(%starter $c2(wins the dm))
      set %dm off
      set %dm off
      unset %starter
      unset %challenger
      unset %c.hp [ $+ [ %challenger ] ]
      unset %s.hp [ $+ [ %starter ] ]
      unset %turn
      unset %food [ $+ [ %starter ] ]
      unset %food [ $+ [ %challenger ] ]
      unset %hp [ $+ [ %starter ] ]
      unset %hp [ $+ [ %challenger ] ]
      halt
    }
  }
  if (%spec [ $+ [ %challenger ] ] <= 24) { notice $nick You need 25% or more special to do that | halt }
  if (%dm == off || %dm == $null) { notice $nick $c1(there isnt a dm in $chan) | halt }
  if (%turn == %challenger) {
    set %dds1 [ $+ [ %challenger ] ] $rand(1,20)
    set %dds2 [ $+ [ %challenger ] ] $rand(1,20)
    set %spec [ $+ [ %challenger ] ] $calc( %spec [ $+ [ %challenger ] ] - 25 )
    set %s.hp [ $+ [ %starter ] ] $calc( %hp [ $+ [ %starter ] ] - ( %dds1 [ $+ [ %challenger ] ] + %dds2 [ $+ [ %challenger ] ] ))
    set %hp [ $+ [ %starter ] ] %s.hp [ $+ [ %starter ] ]
    msg $chan $c1(%challenger $c2(Hits a)) $c1(%dds1 [ $+ [ %challenger ] ]) $c1(and a) %dds2 [ $+ [ %challenger ] ]  $c2(Leaving) $c1(%starter) $c2(with) $c2(%s.hp [ $+ [ %starter ] ]) $c1(Hp)
    notice $nick $c1(You have) $c2(%spec [ $+ [ %challenger ] ]) $+ % $c1(special left)
    if (%hp [ $+ [ %starter ] ] >= 0) {
      set %turn %starter
      msg $chan $c1(It is now $c2(%turn $c1(turn)))
      unset %s.hp
      halt
    }
    else {
      msg $chan $c1(%challenger $c2(wins the dm))
      unset %dm
      unset %starter
      unset %challenger
      unset %c.hp [ $+ [ %challenger ] ]
      unset %s.hp [ $+ [ %starter ] ]
      unset %turn
      unset %food [ $+ [ %starter ] ]
      unset %food [ $+ [ %challenger ] ]
      unset %hp [ $+ [ %starter ] ]
      unset %hp [ $+ [ %challenger ] ]
      halt
    }
  }
}
on *:TEXT:!Eat*:#:{
  if (%turn == %challenger) && ($nick == %challenger) && (%food [ $+ [ %challenger ] ] >= 1) {
    set %food [ $+ [ %challenger ] ] $calc(%food [ $+ [ %challenger ] ] - 1)
    set %hp [ $+ [ %challenger ] ] $calc( %hp [ $+ [ %challenger ] ] + 20 )
    msg $chan $c1(%challenger) $c2(eats a shark,) $c1(%challenger now has) $c2(%hp [ $+ [ %challenger ] ]) $c1(HP) And $c2(%food [ $+ [ %challenger ] ]) Shark left
    msg $chan It is now %starter $+ 's Turn
    set %turn %starter
  }
  if (%turn == %starter) && ($nick == %starter) && (%food [ $+ [ %starter ] ] >= 1) {
    set %food [ $+ [ %starter ] ] $calc(%food [ $+ [ %starter ] ] - 1)
    set %hp [ $+ [ %starter ] ] $calc( %hp [ $+ [ %starter ] ] + 20 )
    msg $chan $c1(%starter) $c2(eats a shark,) $c1(%starter now has) $c2(%hp [ $+ [ %starter ] ]) $c1(HP) And $c2(%food [ $+ [ %starter ] ]) Shark left
    msg $chan $c1(It is now) $c2(%challenger) $c1(Turn)
    set %turn %challenger
  } 
} 


on *:TEXT:!cookie*:#: {
  if ($2) {
    /describe $chan gives $2 a cookie
  }
  else {
    /describe $chan gives $nick a cookie
  }
}

on *:TEXT:!milk*:#: {
  if ($2) {
    /describe $chan hands $2 a glass of milk
  }
  else {
    /describe $chan hands $nick a glass of milk
  }
}

on *:TEXT:!beer*:#: {
  if ($2) {
    /describe $chan throws a 6-pack at $2
  }
  else {
    /describe $chan throws a 6-pack at $nick
  }
}

on *:TEXT:!pot*:#: {
  if ($2) {
    /describe $chan turns around and rolls $2 something nice
  }
  else {
    /describe $chan turns around and rolls $nick something nice
  }
}


on *:TEXT:!aids*:#:{
  if ($chan = #rspc) { halt }
  else {
    timer 1 1 describe $chan 8m==D
    timer 1 2 describe $chan 8=m=D
    timer 1 3 describe $chan 8==mD
    timer 1 4 describe $chan 8=m=D
    timer 1 5 describe $chan 8m==D
    timer 1 6 describe $chan 8=m=D
    timer 1 7 describe $chan 8==mD------
    timer 1 9 describe $chan Hahahaha! you got aids $2!
    timer 1 11 describe $chan Protect yourself - Trojan Brand Condoms
  }
}

on $*:TEXT:/^[.!@]rsforum/Si:#:{
  inc %used
  if (%public [ $+ [ $chan ] ] == off) {
    var %sckid = $right($ticks,5)
    set %search. [ $+ [ %sckid ] ] $replace($2-,$chr(32),_)
    set %display. [ $+ [ %sckid ] ]  notice $nick
    sockopen forum. [ $+ [ %sckid ] ] forum.runescape.com 80
    halt
  }
  if (!$2) { notice $nick Syntax: !rsforum <search> | halt }
  else {
    var %sckid = $right($ticks,5)
    set %search. [ $+ [ %sckid ] ] $2-
    set %display. [ $+ [ %sckid ] ] $iif($left($1,1) == @, msg $chan, notice $nick)
    sockopen forum. [ $+ [ %sckid ] ]  forum.runescape.com 80
  }
}
on *:SOCKOPEN:forum.*: {
  sockwrite -nt $sockname GET /lang/en/aff/runescape/searchthreads.ws?search=search&srcstr= $+ %search. [ $+ [ $right($sockname,5) ] ] HTTP/1.1
  sockwrite -nt $sockname Host:  forum.runescape.com
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:forum.*: {
  var %sckid = $right($sockname,5)
  if ($sockerr) { %display. [ $+ [ %sckid ] ] Error. | halt }
  else {
    var %read
    sockread %read
    if (*<a href="forums.ws?*,*,*,*">*</a>* iswm %read) {
      set %display2. [ $+ [ %sckid ] ] $nohtml(%read)
      %display. [ $+ [ %sckid ] ] 12Search Result:10 %display2. [ $+ [ %sckid ] ] 
      %display. [ $+ [ %sckid ] ] 12Link: 10http://forum.runescape.com/forums.ws? $+ $deltok($gettok(%read,2,63),2-,34)) 
      %display. [ $+ [ %sckid ] ] 12Quik Find Code:10 $replace($deltok($gettok(%read,2,63),2-,34),$chr(44),-))
      unset %*. [ $+ [ %sckid ] ]
      sockclose $sockname
    }
  }
}
alias nohtml {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x)
  return $remove(%x,&nbsp;,$chr(09))
}


alias -l c1 { return $+($chr(3),12,$1-) }
alias -l c2 { return $+($chr(3),10,$1-) }

on *:text:*:#: {
  tokenize 32 $strip($1-)
  if ($left($1,1) !isin @!.) halt
  if ($right($1,-1) == stats) var %style = astats
  elseif ($regex($1,/co?mb(at)?/Si)) var %style = combat
  elseif ($setskill($remove($1,@,!,.))) var %style = istat, %skill = $setskill($remove($1,@,!,.))
  elseif ($right($1,-1) == defname) && ($2) {
    writeini DefRSN.ini RSNs $mask($fulladdress,3) $replace($2-,$chr(32),-)
    .notice $nick $c1(You're default RSN for the host) $c2($mask($fulladdress,3)) $c1(has been set to) $c2($2-)
    halt
  }
  else halt

  inc %ID
  if ($len($2-) > 12) {
    4 $($+(%,stats.display.,%ID),2) $c1(The nick) $c2($2-) $c1(is too long)
    cleanup %ID
    halt
  }
  elseif ($2) set $+(%,stats.rsn.,%ID) $replace($2-,$chr(32),-)
  elseif ($readini(DefRSN.ini,RSNs,$mask($fulladdress,3))) set $+(%,stats.rsn.,%ID) $ifmatch
  elseif ($readini(DefRSN.ini,RSNs,$nick)) set $+(%,stats.rsn.,%ID) $ifmatch
  else set $+(%,stats.rsn.,%ID) $nick

  set $+(%,stats.style.,%ID) %style
  set $+(%,stats.skill.,%ID) %skill
  set $+(%,stats.display.,%ID) $iif($left($1,1) == @,msg $chan,notice $nick)
  sockopen $+(stats.,%ID) hiscore.runescape.com 80
}

on *:sockopen:stats.*: {
  var %id = $gettok($sockname,2,46)
  sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1
  sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:sockread:stats.*: {
  sockread &Incoming
  bwrite $sockname -1 -1 &Incoming
  if ($bfind(&Incoming, 1, </html>).text) makehash $sockname
  elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) {
    $($+(%,stats.display.,%ID),2) $c1(The nick) $c2($($+(%,stats.rsn.,%ID),2)) $c1(Does not appear in the hiscores)
    cleanup $gettok($sockname,2,46)
  }
}
alias -l makehash {
  var %file = $1
  bread %file 1 $file(%file).size &stats
  var %currentstat, %x = 1
  while (%x) {
    var %x = $bfind(&stats,$calc(%x + 1),<a href="overall.ws?table=)
    var %currentstat = $striptags($bvar(&stats,%x,200).text)
    tokenize 10 %currentstat
    hadd -m %file $1 $2 $3 $4 $xp2next($3,$4)
  }
  process %file
}
alias process {
  var %table = $1, %id = $gettok($1,2,46), %x = 0, $&
    %display = $($+(%,stats.display.,%ID),2), $&
    %rsn = $($+(%,stats.rsn.,%ID),2), $&
    %skill = $($+(%,stats.skill.,%ID),2), $&
    %style = $($+(%,stats.style.,%ID),2)
  ;shoot;
  if (%style == astats) {
    while (%x <= 23) {
      tokenize 32 $hget(%table,$setskill(%x))
      if ($2) var %statline = %statline $c1($setskill(%x)) $c2($2)
      inc %x
    }
    %display $c1(Stats for) $c2(%rsn) $+ $c1(:)
    %display %statline
  }
  elseif (%style == istat) {
    if (!$hget(%table,%skill)) 7 %display $c1(The nick) $c2(%rsn) $c1(does not appear in the hiscores for) $c2(%skill)
    else {
      tokenize 32 $hget(%table,%skill)
      %display $c2(%skill) $c1(stats for) $c2(%rsn) $+ $c1(:)
      %display $c1(Rank:) $c2($1) $c1(Level:) $c2($bytes($2,b)) $c1(Exp:) $c2($3)
      %display $iif(%skill != Overall,$c1(Exp to lvl) $c2($calc($2 + 1)) $+ $c1(:) $c2($bytes($4,b)))
    }
  }
  elseif (%style == combat) {
    var %a.mult = .32707, %s.mult = .324, %d.mult = .25, %h.mult = .25, %p.mult = .124, %r.mult = .487, %m.mult = .487
    var %a = $iif($gettok($hget(%table,attack),2,32),$v1,-), $&
      %s = $iif($gettok($hget(%table,strength),2,32),$v1,-), $&
      %d = $iif($gettok($hget(%table,defence),2,32),$v1,-), $&
      %h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,-), $&
      %r = $iif($gettok($hget(%table,ranged),2,32),$v1,-), $&
      %m = $iif($gettok($hget(%table,magic),2,32),$v1,-), $&
      %p = $iif($gettok($hget(%table,prayer),2,32),$v1,-)

    var %Meleecombat  = $calc(%a * %a.mult + %s * %s.mult + %d * %d.mult + %h * %h.mult + %p * %p.mult), $&
      %RangedCombat = $calc(%r * %r.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult), $&
      %MagicCombat  = $calc(%m * %m.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult)

    if (%MagicCombat == %RangedCombat) && (%MagicCombat == %RangedCombat) {
      %display $c1(The nick) $c2(%rsn) $c1(does not appear in the hiscores for any combat skills)
      cleanup %id
      halt
    }
    elseif (%MagicCombat > %RangedCombat) && (%MagicCombat > %MeleeCombat) var %cmbstyle = Magic, %Combat = %MagicCombat
    elseif (%RangedCombat > %MeleeCombat) var %cmbstyle = Ranged, %Combat = %RangedCombat
    else var %cmbstyle = Melee, %combat = %MeleeCombat

    var %cmb.temp = $abs($calc($int($calc(%combat +1)) - %combat)), $&
      %a.2lvl = $ceil($calc(%cmb.temp / %a.mult)), %s.2lvl = $ceil($calc(%cmb.temp / %s.mult)), $&
      %d.2lvl = $ceil($calc(%cmb.temp / %d.mult)), %m.2lvl = $ceil($calc(%cmb.temp / %m.mult)), $&
      %r.2lvl = $ceil($calc(%cmb.temp / %r.mult)), %p.2lvl = $ceil($calc(%cmb.temp / %p.mult))

    if (%cmbstyle == Magic) var %dynamic.2lvl = $c1(Magic:) $c2(%m.2lvl)
    elseif (%cmbstyle == Ranged) var %dynamic.2lvl = $c1(Ranged:) $c2(%r.2lvl)
    else var %dynamic.2lvl = $c1(Att:) $c2(%a.2lvl) $c1(Str:) $c2(%s.2lvl)
    var %combat = $round(%combat,2), %next = $ceil(%combat)

    %display $c2(%rsn) $c1(is) $c2(%combat) $c1(combat) $c2(%cmbstyle Based) 
    %display $c1(Att:) $c2(%a) $c1(Def:) $c2(%d) $c1(Str:) $c2(%s) $c1(Hp:) $c2(%h) $& 
      $c1(Mage:) $c2(%m) $c1(Range:) $c2(%r) $c1(Pray:) $c2(%p)
    %display $c2(Levels for) $c2(%next) $+ $c2(:) %dynamic.2lvl $&
      $c1(Def/Hp:) $c2(%d.2lvl) $c1(Prayer:) $c2(%p.2lvl)
  }
  cleanup %id
}

alias -l cleanup {
  unset $+(%,stats.*.,$1)
  sockclose $+(Stats.,$1)
  .remove $+(Stats.,$1)
}

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 xp2Next {
  var %xp = $remove($2,$chr(44)), %nextxp = $xp($calc($1 + 1))
  return $calc(%nextxp - %xp)
}

alias -l striptags { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return %x }
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,/^(construct)(ion|ing)?$/si)) return Construction
}