Top

RuneScape Stats Script [BETA]


mIRC Code
+ 0 likes
Please Register to submit score.
Bookmark and Share
Average Score  0.0 (of 0 scores)
Date Added  Jul 04, 2009
Last Updated  Jul 05, 2009
Tags  mirc  rs  runescape  script  stat  stats  trev 

Introduction

A RuneScape stats script I made with a little help from TheNitelyfe.

The next update will contain the single skill lookup; whenever I feel like doing it lel.

Disclaimer:
The parser used to retrieve data from is property of RuneScript. I do not own the parser or the bot.
Their parser. My script.

(11:33:48 PM) (@Trev) !stats
(11:33:50 PM) —› (Notice:) -W|R|I|S|T- (Warg_Rider20™) Overall: 1780 Attack: 95 Defence: 86 Strength: 95 HP: 96 Mage: 85 Pray: 71 Cook: 82 Fletch: 92 Woodcutt: 87 Fishing: 81 Firemake: 70 Craft: 71 Smithing: 55 Mining: 67 Herblore: 55 Agility: 60 Thieving: 60 Farming: 54 Slayer: 85 Runecraft: 60 Hunter: 54 Summoning: 68
(11:33:50 PM) —› (Notice:) -W|R|I|S|T- (Warg_Rider20™) Duel: 1811 FOG: 529


Update July 5th, 2009: Fixed the bug where if the RSN you were searching for was not ranked in FOG or Dueling, it showed a blank line like so: [(11:54:45 AM) —› (Notice:) -W|R|I|S|T- (i_two_spec™)] I fixed it where it'll set it as N/R if the RSN is not ranked: [(12:31:59 PM) (@W|R|I|S|T) (i_two_spec™) FOG: N/R Duel: N/R] I don't see anymore bugs, it should be working 99.9% now.

Grab the Code

Alias cc1 return $+($chr(3),01,$1-)
Alias cc2 return $+($chr(3),02,$1-)
Alias lg return $+($cc1($chr(40)),$cc2($1 $+ $chr(153)),$cc1($chr(41))))
On $*:TEXT:/^[!.]Defname/Si:#: {
  if (!$2) { notice $nick $lg(Error) $cc2(Please specify a name to set.) | halt }
  Else {
    if ($count($1-,$,%,#,^,&,*) > 0) { notice $nick $lg(Error) $cc2(Illegal Characters. RuneScape names can only contain letters and numbers.) | halt }
    if ($len($2-) <= 12) && ($len($2-) >= 1) {
      writeini Defnames.ini DefRSN $address($nick,3) $replace($2-,$chr(32),_)
      notice $nick $lg(Defname) $cc1($2-) $cc2(has been registered to hostmask:) $cc1($address($nick,3)) $cc2(as the default RSN.)
    }
    Else { notice $nick $lg(Error) $cc2(RuneScape names can hold a maximum of only 12 characters. }
  }
}
On $*:TEXT:/^[!.@]stats/Si:#: {
  if ($2) { set %rsn.nick $replace($2-,$chr(32),$chr(95)) }
  elseif ($readini(Defnames.ini,DefRSN,$address($nick,3))) { set %rsn.nick $ifmatch }
  Else { set %rsn.nick $nick }
  set %rsn.style $iif($mid($1,1,1) == $chr(64),msg #,.notice $nick)
  sockopen Stats. www.rscript.org 80
}
On *:SOCKOPEN:Stats.: {
  sockwrite -n $sockname GET /lookup.php?type=stats&user= $+ %rsn.nick HTTP/1.1
  sockwrite -n $sockname Host: www.rscript.org
  sockwrite -n $sockname $crlf
}
On *:SOCKREAD:Stats.: {
  if ($Sockerr) { halt }
  Else {
    var %stats
    sockread %stats
    if (*STAT: not found* iswm %stats) { %rsn.style $lg(Error) $cc1($chr(40)) $cc2(%rsn.nick) $cc1($chr(41)) $cc2(was not found in the RuneScape Hiscores.) | unset %rsn.* | sockclose $sockname }
    if (*STAT:Overall* iswm %stats) { tokenize 32 %stats | set %rsn.overall $cc2(Overall:) $cc1($3) }
    if (*STAT:Attack* iswm %stats) { tokenize 32 %stats | set %rsn.attack $cc2(Attack:) $cc1($3) }
    if (*STAT:Defence* iswm %stats) { tokenize 32 %stats | set %rsn.defence $cc2(Defence:) $cc1($3) }
    if (*STAT:Strength* iswm %stats) { tokenize 32 %stats | set %rsn.Strength $cc2(Strength:) $cc1($3) }
    if (*STAT:Hitpoints* iswm %stats) { tokenize 32 %stats | set %rsn.hp $cc2(HP:) $cc1($3) }
    if (*STAT:Ranged* iswm %stats) { tokenize 32 %stats | set %rsn.ranged $cc2(Range:) $cc1($3) }
    if (*STAT:Prayer* iswm %stats) { tokenize 32 %stats | set %rsn.prayer $cc2(Pray:) $cc1($3) }
    if (*STAT:Magic* iswm %stats) { tokenize 32 %stats | set %rsn.magic $cc2(Mage:) $cc1($3) }
    if (*STAT:Cooking* iswm %stats) { tokenize 32 %stats | set %rsn.cooking $cc2(Cook:) $cc1($3) }
    if (*STAT:Woodcutting* iswm %stats) { tokenize 32 %stats | set %rsn.wc $cc2(Woodcutt:) $cc1($3) }
    if (*STAT:Fletching* iswm %stats) { tokenize 32 %stats | set %rsn.fletch $cc2(Fletch:) $cc1($3) }
    if (*STAT:Fishing* iswm %stats) { tokenize 32 %stats | set %rsn.fish $cc2(Fishing:) $cc1($3) }
    if (*STAT:Firemaking* iswm %stats) { tokenize 32 %stats | set %rsn.fm $cc2(Firemake:) $cc1($3) }
    if (*STAT:Crafting* iswm %stats) { tokenize 32 %stats | set %rsn.craft $cc2(Craft:) $cc1($3) }
    if (*STAT:Smithing* iswm %stats) { tokenize 32 %stats | set %rsn.smith $cc2(Smithing:) $cc1($3) }
    if (*STAT:Mining* iswm %stats) { tokenize 32 %stats | set %rsn.mine $cc2(Mining:) $cc1($3) }
    if (*STAT:Herblore* iswm %stats) { tokenize 32 %stats | set %rsn.herb $cc2(Herblore:) $cc1($3) }
    if (*STAT:Agility* iswm %stats) { tokenize 32 %stats | set %rsn.agil $cc2(Agility:) $cc1($3) }
    if (*STAT:Thieving* iswm %stats) { tokenize 32 %stats | set %rsn.thief $cc2(Thieving:) $cc1($3) }
    if (*STAT:Slayer* iswm %stats) { tokenize 32 %stats | set %rsn.slay $cc2(Slayer:) $cc1($3) }
    if (*STAT:Farming* iswm %stats) { tokenize 32 %stats | set %rsn.farm $cc2(Farming:) $cc1($3) }
    if (*STAT:Hunter* iswm %stats) { tokenize 32 %stats | set %rsn.hunt $cc2(Hunter:) $cc1($3) }
    if (*STAT:Construction* iswm %stats) { tokenize 32 %stats | set %rsn.con $cc2(Con:) $cc1($3) }
    if (*STAT:Summoning* iswm %stats) { tokenize 32 %stats | set %rsn.sum $cc2(Summoning:) $cc1($3) }
    if (*STAT:Runecraft* iswm %stats) { tokenize 32 %stats | set %rsn.rc $cc2(Runecraft:) $cc1($3) }
    if (*STAT:Dueling* iswm %stats) { tokenize 32 %stats | set %rsn.duel $cc2(Duel:) $cc1($3) }
    Elseif (%rsn.duel == $null) { set %rsn.duel $cc2(Duel:) $cc1(N/R) }
    if (*STAT:FOG* iswm %stats) { tokenize 32 %stats | set %rsn.fog $cc2(FOG:) $cc1($3) }
    Elseif (%rsn.fog == $null) { set %rsn.fog $cc2(FOG:) $cc1(N/R) }
    if (*DEBUG:* iswm %stats) {  
      %rsn.style $lg(%rsn.nick) %rsn.overall %rsn.attack %rsn.defence %rsn.strength %rsn.hp %rsn.range %rsn.magic %rsn.prayer %rsn.cooking %rsn.fletch %rsn.wc %rsn.fish %rsn.fm %rsn.craft %rsn.smith %rsn.mine %rsn.herb %rsn.agil %rsn.thief %rsn.farm %rsn.slay %rsn.rc %rsn.hunt %rsn.sum
      %rsn.style $lg(%rsn.nick) %rsn.fog %rsn.duel
      unset %rsn.*
      sockclose $sockname
    }
  }
}

Comments

  (4)  RSS
Aucun50
Comments: 548
 
mIRC Snippet:  RuneScape Stats Script [BETA]
Posted on Jul 5, 2009 3:44 am
By your intro it looks good i'll have to give it a try.
WorldDMT
Comments: 169
 
mIRC Snippet:  RuneScape Stats Script [BETA]
Posted on Jul 6, 2009 6:40 am
hi

u can use "sockmark" instead "set" then use var for $2/$nick

for sockread u can use a regex and hash tables also that an idea to better explain my comment

Code:
on $*:TEXT:/^[!.@]stats/Si:#:{
  if ($2) var %rsn.nick $replace($2-,$chr(32),$chr(95))
  elseif ($readini(Defnames.ini,DefRSN,$address($nick,3))) var %rsn.nick $v1
  Else var %rsn.nick $nick
  sockopen Stats. www.rscript.org 80
  sockmark Stats. $iif($mid($1,1,1) == $chr(64),msg #,.notice $nick) |www.rscript.org| %rsn.nick
}
on *:SOCKOPEN:Stats.:{
  tokenize 124 $sock($sockname).mark
  sockwrite -n $sockname GET /lookup.php?type=stats&user= $+ $3 HTTP/1.1
  sockwrite -n $sockname Host: $2
  sockwrite -n $sockname $crlf
}
on *:SOCKREAD:Stats.:{
  if ($sockerr) { halt }
  Else {
    tokenize 124 $sock($sockname).mark
    var %stats | sockread %stats
    if (%stats == STAT: not found) { $1 $lg(Error) $cc1($chr(40)) $cc2($2) $cc1($chr(41)) $cc2(was not found in the RuneScape Hiscores.) | sockclose $sockname }
    elseif $regex($1-,/STAT\:(Overall|Attack|Defence|Strength|Hitpoints|Ranged|Prayer|Magic|Cooking|Woodcutting|Fletching|Fishing|Firemaking|Crafting|Smithing|Mining|Herblore|Agility|Thieving|Slayer|Farming|Hunter|Construction|Summoning|Runecraft)\s\w+\s(\d+)/i) {
      hadd -m stats.x $regml(1) $cc2($regml(1) $+ :) $cc1($regml(2))
    }
    elseif $regex($1-,/STAT:(Dueling|FOG)\s\w+(\s(\d+))?/i) {
      hadd -m stats.y $regml(1) $cc2($regml(1) $+ :) $cc1($iif($regml(3),$v1,N/R))
    }
    elseif (*DEBUG:* iswm %stats) {
      $1 $lg($3) $regsubex($str(.,$hget(stats.x,0).data),/./g,$hget(stats.x,\n).data $+ $chr(32))
      $1 $lg($3) $regsubex($str(.,$hget(stats.y,0).data),/./g,$hget(stats.y,\n).data $+ $chr(32))
      sockclose $sockname
    }
  }
}
on *:sockclose:Stats.:hfree -w stats.*
Trev
Comments: 12
 
mIRC Snippet:  RuneScape Stats Script [BETA]
Posted on Jul 6, 2009 1:02 pm
I don't know how to use hash tables; copying your script would teach me nothing.
Thanks though.
WorldDMT
Comments: 169
 
mIRC Snippet:  RuneScape Stats Script [BETA]
Posted on Jul 7, 2009 3:11 am
hash table is like ini file

e.g

add data in:
ini file: /writeini file.ini NAME ITEM DATA
Hash tables: /hadd -m NAME ITEM DATA

read or get data

ini file: $readini(file.ini,NAME,ITEM) return DATA
Hash tables: $hget(NAME,ITEM) return DATA

take look at /help $hget

u have many parameter for $hget

$hget(NAME,0).item return the total number of item for NAME

$hget(NAME,1).item return the first item
$hget(NAME,1).data return the first data


e.g: NAME = Trev ; ITEM = testitem ; DATA = data test ok
1 2 3-
NAME ITEM DATA
/hadd -m Trev testitem data test ok

now u can try this

//echo -a $hget(trev,testitem) => return "data test ok"
//echo -a $hget(trev,1).data => return "data test ok"
//echo -a $hget(trev,1).item => return "testitem"
//echo -a $hget(trev,0).item => return "1"

now take look at /help $hget u'll find more about it :)


Commenting Options

Register or Login to Hawkee.com or use your Facebook or Twitter account by clicking the corresponding button below.

  
Bottom