rendered paste body; ##############################################################################
; # Load event - Check for dcx.dll #
; ##############################################################################
on *:load: {
if (!$findfile($mircdir,dcx.dll,1)) {
echo 4 -a **** You do not appear to have dcx.dll which is required for this addon to work
echo 4 -a **** You can download it from: http://www.mircscripts.org/download.php?id=2942&type=5
}
else {
echo 3 -a **** Successfully loaded RSStats script by Urza
echo 3 -a **** Type /RSStats or right click and select 'Runescape Stats Lookup' to use
}
}
; ##############################################################################
; # Access menu/alias #
; ##############################################################################
menu * {
Runescape Stats Lookup
.Stats lookup:RSStats
.Settings:RSStats_Settings
.Manage Columns:RSStats_Columns
}
alias RSStats {
dialog $iif($dialog(RSStats),-v,-md) RSStats RSStats
}
alias RSStats_Settings {
dialog $iif($dialog(Settings),-v,-md) Settings Settings
}
alias RSStats_Columns {
dialog $iif($Dialog(ManageCols),-v,-md) ManageCols ManageCols
}
; ##############################################################################
; # Main Dialog #
; ##############################################################################
dialog -l RSStats {
title "Runscape Stats Lookup"
size -1 -1 460 420
menu "&File", 1
item "&Settings", 2, 1
item break, 3, 1
item "E&xit", 4, 1
menu "&View", 5
item "Manage Columns", 6, 5
}
on *:dialog:RSStats:*:*: {
if ($devent == init) {
dcx Mark $dname RSStats_Events
xdialog -b $dname +ty
xdialog -c $dname 10 listview 5 5 450 345 report grid fullrow singlesel noscroll notrack showsel
if (!$readini(RSStats.ini,n,Config,Order)) || (!$readini(RSStats.ini,n,Config,Fields)) {
writeini -n RSStats.ini Config Fields 1,1,1,1,1,1
writeini -n RSStats.ini Config Order Skill,Rank,Level,Xp,Xp to lvl,% of total Xp
}
var %x = 2
while ($getitem(%x).nospace) {
var %item = $v1
if (!$readini(RSStats.ini,n,%item,Align)) writeini -n RSStats.ini %item Align $iif(%item == Skill,1,2)
if (!$readini(RSStats.ini,n,%item,Label)) writeini -n RSStats.ini %item Label $getitem(%x)
inc %x
}
BuildListView
xdialog -c $dname 11 edit 183 370 100 20 tabstop return
xdialog -c $dname 12 button 183 395 100 20 default tabstop
xdid -t $dname 12 Search
xdid -b $dname 12
xdialog -c $dname 13 text 4 351 450 18 center
xdialog -c $dname 14 check 10 395 120 20
xdid -t $dname 14 Copy colour codes?
xdid $iif($readini(RSStats.ini,n,config,CopyColours) == 1,-c,-u) $dname 14
}
elseif ($devent == menu) {
if ($did == 2) dialog $iif($dialog(Settings),-v,-md) Settings Settings
elseif ($did == 6) dialog $iif($dialog(ManageCols),-v,-md) ManageCols ManageCols
}
}
alias RSStats_Events {
var %dname = $1, %devent = $2, %did = $3, %key = $4
if (%devent == keyup) {
if (%did == 11) && (%key == 13) Lookup $xdid(%dname,11).text
}
elseif (%devent == edit) {
if (%did == 11) {
if ($len($xdid(%dname,11).text) isnum 1-12) xdid -e %dname 12
else xdid -b %dname 12
}
}
elseif (%devent == sclick) {
if (%did == 12) Lookup $xdid(%dname,11).text
elseif (%did == 13) dialog -x %dname
elseif (%did == 14) writeini -n RSStats.ini Config CopyColours $xdid(%dname,14).state
}
var %copyevent = $readini(RSStats.ini,n,config,CopyEvent)
var %copyevent = $iif(%Copyevent == 1,Sclick,$iif(%copyevent == 2,dclick,rclick))
if (%devent == %copyevent) {
var %copyformat = $readini(RSStats.ini,n,config,CopyFormat)
var %skill = $xdid(%dname,10,0).seltext
tokenize 32 $hget(RSStats,%skill)
var %rank = $1, %lvl = $2, %xp = $3, %xp2lvl = $4, %percent = $5, %rsn = $xdid(%dname,11).text
var %copy = $replace(%copyformat,[NICK],$c2(%rsn).c1,[SKILL],$c2(%skill).c1,[RANK],$c2(%rank).c1)
var %copy = $replace(%copy,[XP],$c2(%xp).c1,[LVL],$c2(%lvl).c1)
var %copy = $replace(%copy,[XP2LVL],$c2(%xp2lvl).c1,[PERCENT],$c2(%percent).c1)
if ($readini(RSStats.ini,n,config,CopyColours) == 1) clipboard $c1(%copy)
else clipboard $strip(%copy)
}
}
alias -l Lookup {
xdid -r RSStats 10
if ($hget(RSStats)) hfree RSStats
set %RSStats.rsn $1-
xdid -t RSStats 13 Looking up hiscore data for %RSStats.rsn $+ . Please wait...
sockopen RSStats hiscore.runescape.com 80
}
; ##############################################################################
; # Manage Columns dialog #
; ##############################################################################
dialog -l ManageCols {
title "Column Management"
size -1 -1 420 150
}
on *:dialog:ManageCols:*:*: {
if ($devent == init) {
dcx Mark $dname ManageCols_Events
xdialog -b $dname +ty
xdialog -c $dname 1 box 5 5 90 140
xdid -t $dname 1 Fields
xdid -c $dname 1 2 check 5 15 75 20
xdid -t $dname 2 Skill
xdid -c $dname 1 3 check 5 35 75 20
xdid -t $dname 3 Rank
xdid -c $dname 1 4 check 5 55 75 20
xdid -t $dname 4 Level
xdid -c $dname 1 5 check 5 75 75 20
xdid -t $dname 5 Xp
xdid -c $dname 1 6 check 5 95 75 20
xdid -t $dname 6 Xp to lvl
xdid -c $dname 1 7 check 5 115 75 20
xdid -t $dname 7 % of total Xp
xdialog -c $dname 8 box 100 5 155 140
xdid -t $dname 8 Order
xdid -c $dname 8 9 list 5 20 90 120
if ($exists(up.bmp)) {
xdid -c $dname 8 10 button 100 27 50 40 bitmap up.bmp
xdid -k $dname 10 +dhns $rgb(255,255,255) Up.bmp
}
else {
xdid -c $dname 8 10 button 100 27 50 40
xdid -t $dname 10 Up
}
if ($exists(down.bmp)) {
xdid -c $dname 8 11 button 100 77 50 40 bitmap down.bmp
xdid -k $dname 11 +dhns $rgb(255,255,255) Down.bmp
}
else {
xdid -c $dname 8 11 button 100 77 50 40
xdid -t $dname 11 Down
}
xdialog -c $dname 12 box 260 5 155 70
xdid -t $dname 12 Options
xdid -c $dname 12 13 text 5 18 50 20 right
xdid -t $dname 13 Alignment:
xdid -c $dname 12 14 comboex 60 15 90 100 dropdown
xdid -c $dname 12 15 text 5 48 50 20 right
xdid -t $dname 15 Label:
xdid -c $dname 12 16 edit 60 45 90 20
xdialog -c $dname 17 button 260 115 75 30
xdid -t $dname 17 Apply
xdialog -c $dname 18 button 340 115 75 30
xdid -t $dname 18 Ok
xdid -b $dname 13,14,15,16
xdid -a $dname 14 0 0 0 0 0 Left
xdid -a $dname 14 0 0 0 0 0 Right
xdid -a $dname 14 0 0 0 0 0 Center
if (!$readini(RSStats.ini,n,Config,Fields)) || (!$readini(RSStats.ini,n,Config,Order)) {
writeini -n RSStats.ini Config Fields 1,1,1,1,1,1
writeini -n RSStats.ini Config Order Skill,Rank,Level,Xp,Xp to lvl,% of total Xp
}
tokenize 44 $readini(RSStats.ini,n,Config,Fields)
var %x = 1
while ($($+($,%x),2) != $null) {
xdid $iif($v1 == 1,-c,-u) $dname $calc(%x + 1)
inc %x
}
tokenize 44 $readini(RSStats.ini,n,Config,Order)
var %x = 1
while ($($+($,%x),2) != $null) {
xdid -a $dname 9 0 $v1
inc %x
}
}
}
alias ManageCols_Events {
var %dname = $1, %devent = $2, %did = $3
if (%devent == sclick) {
if (%did isnum 2-7) {
if ($getitem(%did) == $xdid(%dname,9,$xdid(%dname,9).sel).text) var %disable = 1
if ($xdid(%dname,%did).state == 0) {
var %x = 1, %total = $xdid(%dname,9).num
while ($xdid(%dname,9,%x).text) {
if ($v1 == $getitem(%did)) xdid -d %dname 9 %x
inc %x
}
}
else xdid -a %dname 9 0 $getitem(%did)
if (%disable) {
unset %disable
xdid -b %dname 13,14,15,16
xdid -u %dname 14
xdid -r %dname 16
}
}
elseif (%did == 9) {
var %item = $replace($xdid(%dname,9,$xdid(%dname,9).sel).text,$chr(32),-)
xdid -e %dname 13,14,15,16
if (!$readini(RSStats.ini,n,%item,Align)) writeini -n RSStats.ini %item Align $iif(%item == Skill,1,2)
xdid -c %dname 14 $readini(RSStats.ini,n,%item,Align)
if (!$readini(RSStats.ini,n,%item,label)) writeini -n RSStats.ini %item Label $replace(%item,-,$chr(32))
xdid -ra %dname 16 $readini(RSStats.ini,n,%item,label)
}
elseif (%did isnum 10-11) {
var %sign = $iif(%did == 10,-,+)
var %pos = $xdid(%dname,9).sel, %newpos = $calc(%pos %sign 1), %text = $xdid(%dname,9,%pos).text
if (%newpos < 1) || (%newpos > $xdid(%dname,9).num) halt
xdid -d %dname 9 %pos
xdid -a %dname 9 %newpos %text
xdid -c %dname 9 %newpos
}
elseif (%did == 14) {
var %item = $replace($xdid(%dname,9,$xdid(%dname,9).sel).text,$chr(32),-)
writeini -n RSStats.ini %item Align $xdid(%dname,14).sel
}
elseif (%did isnum 17-18) {
SaveColOptions
BuildListView
if (%did == 18) dialog -x %dname
}
}
elseif (%devent == edit) {
if (%did == 16) {
var %item = $replace($xdid(%dname,9,$xdid(%dname,9).sel).text,$chr(32),-)
writeini -n RSStats.ini %item Label $xdid(%dname,16).text
}
}
}
; ##############################################################################
; # Settings dialog #
; ##############################################################################
dialog -l Settings {
title "Settings"
size -1 -1 266 259
}
on *:dialog:Settings:*:*: {
if ($devent == init) {
dcx Mark $dname Settings_Events
xdialog -b $dname +ty
xdialog -c $dname 1 tab 0 0 266 220 tabstop
; Local options tab
xdid -a $dname 1 0 0 Local $chr(9) 2 panel 4 22 258 178 0 0 300 200
xdid -c $dname 2 3 box 4 4 250 165
xdid -t $dname 3 Copy Format
xdid -c $dname 3 4 text 4 15 242 15
xdid -t $dname 4 Enter the format to be used when copying stats
xdid -c $dname 3 5 edit 4 30 242 20 autohs autovs tabstop
xdid -c $dname 3 6 text 4 55 242 30
xdid -t $dname 6 Note: Information not shown in the table can still be copied
xdid -c $dname 3 7 text 4 85 242 25
xdid -t $dname 7 Use the following codes to refer to relevent data items
xdid -c $dname 3 8 listview 5 115 242 45 report tabstop noscroll nolabelwrap grid noheader
xdid -t $dname 8 + 0 81 $tab + 0 80 $tab + 0 81
xdid -a $dname 8 0 0 + 0 0 0 0 -1 -1 [SKILL] $tab + 0 [NICK] $tab + 0 [RANK]
xdid -a $dname 8 0 0 + 0 0 0 0 -1 -1 [XP] $tab + 0 [LVL] $tab + 0 [XP2LVL]
xdid -a $dname 8 0 0 + 0 0 0 0 -1 -1 [PERCENT]
xdid -c $dname 2 9 text 5 175 50 20
xdid -t $dname 9 Copy on:
xdid -c $dname 2 10 comboex 55 172 150 300 tabstop dropdown
xdid -a $dname 10 0 0 0 0 0 Single Click
xdid -a $dname 10 0 0 0 0 0 Double Click
xdid -a $dname 10 0 0 0 0 0 Right Click
; Remote options tab
xdid -a $dname 1 0 0 Remote $chr(9) 11 panel 0 0 300 200 0 0 300 200
xdid -c $dname 11 12 box 4 4 250 60
xdid -t $dname 12 All Skill lookup
xdid -c $dname 12 13 check 4 15 50 20 tabstop
xdid -t $dname 13 Enable
xdid -c $dname 12 14 text 4 35 90 20
xdid -t $dname 14 Command Trigger:
xdid -c $dname 12 15 edit 100 32 100 20 autohs autovs tabstop
xdid -c $dname 11 16 box 4 70 250 60
xdid -t $dname 16 Single skill lookups
xdid -c $dname 16 17 check 4 15 50 20 tabstop
xdid -t $dname 17 Enable
xdid -c $dname 16 18 text 4 35 90 20
xdid -t $dname 18 Command Trigger:
xdid -c $dname 16 19 edit 100 32 100 20 autohs autovs tabstop
xdid -c $dname 11 33 text 4 135 242 30 center
xdid -t $dname 33 Regex can be used in triggers to block multiple options
xdid -c $dname 11 20 text 4 170 50 20
xdid -t $dname 20 Seperator:
xdid -c $dname 11 21 edit 60 167 30 20 tabstop
xdid -c $dname 11 22 text 95 170 40 20
xdid -t $dname 22 Display:
xdid -c $dname 11 23 comboex 140 167 110 100 tabstop dropdown
xdid -a $dname 23 0 0 0 0 0 Public Message
xdid -a $dname 23 0 0 0 0 0 Public Notice
xdid -a $dname 23 0 0 0 0 0 Private Message
xdid -a $dname 23 0 0 0 0 0 Private Notice
; Access tab
xdid -a $dname 1 0 0 Access $chr(9) 34 panel 0 0 300 200 0 0 300 200
xdid -c $dname 34 35 text 4 4 242 30
xdid -t $dname 35 Channel names can be prefixed with a network to make them network specific. EG: Swiftirc.#mIRC
xdid -c $dname 34 36 box 4 35 100 120
xdid -t $dname 36 Allowed
xdid -c $dname 36 37 edit 4 15 92 20
xdid -c $dname 36 44 list 4 35 92 90 vsbar
xdid -c $dname 34 38 box 152 35 100 120
xdid -t $dname 38 Blocked
xdid -c $dname 38 39 edit 4 15 92 20
xdid -c $dname 38 45 list 4 35 92 90 vsbar
xdid -c $dname 34 40 radio 4 158 242 20
xdid -t $dname 40 Allow only in specified chans, block by default
xdid -c $dname 34 41 radio 4 175 242 20
xdid -t $dname 41 Block only in specified chans, allow by default
xdid -c $dname 34 42 button 108 50 40 20
xdid -t $dname 42 Add
xdid -c $dname 34 43 button 108 80 40 20
xdid -t $dname 43 Delete
; Colour options tab
xdid -a $dname 1 0 0 Colours $chr(9) 25 panel 0 0 300 200 0 0 300 200
xdid -c $dname 25 26 text 4 15 90 20
xdid -t $dname 26 Text Colour:
xdid -c $dname 25 27 colorcombo 100 12 100 20
xdid -m $dname 27
xdid -c $dname 25 28 text 4 50 90 20
xdid -t $dname 28 Data Colour:
xdid -c $dname 25 29 colorcombo 100 47 100 20
xdid -m $dname 29
xdid -c $dname 25 30 text 4 85 90 20
xdid -t $dname 30 Seperator Colour:
xdid -c $dname 25 31 colorcombo 100 82 100 20
xdid -m $dname 31
xdid -c $dname 25 32 text 4 120 242 40
xdid -t $dname 32 Select the colours to be used when sending and copying stats
xdialog -c $dname 24 button 185 225 75 30 tabstop
xdid -t $dname 24 Close
; Populate Settings
SetDefaultSettings
xdid -a $dname 5 $readini(RSStats.ini,n,config,CopyFormat)
xdid -c $dname 10 $readini(RSStats.ini,n,config,CopyEvent)
xdid $iif($readini(RSStats.ini,n,AllSkills,state) == 1,-c,-u) $dname 13
xdid $iif($readini(RSStats.ini,n,AllSkills,state) == 1,-e,-b) $dname 14,15
xdid -a $dname 15 $readini(RSStats.ini,n,AllSkills,trigger)
xdid $iif($readini(RSStats.ini,n,SingleSkills,state) == 1,-c,-u) $dname 17
xdid $iif($readini(RSStats.ini,n,SingleSkills,state) == 1,-e,-b) $dname 18,19
xdid -a $dname 19 $readini(RSStats.ini,n,SingleSkills,trigger)
xdid -a $dname 21 $readini(RSStats.ini,n,Config,Seperator)
xdid -c $dname 23 $readini(RSStats.ini,n,Config,Display)
xdid -c $dname 27 $readini(RSStats.ini,n,Colours,Text)
xdid -c $dname 29 $readini(RSStats.ini,n,Colours,Data)
xdid -c $dname 31 $readini(RSStats.ini,n,Colours,Seperator)
if ($readini(RSStats.ini,n,config,AccessType) == allow) {
xdid -c $dname 41
xdid -b $dname 37,44
}
else {
xdid -c $dname 40
xdid -b $dname 39,45
}
loadlist block
loadlist allow
if ($readini(RSStats.ini,n,SingleSkills,state) == 0) && ($readini(RSStats.ini,n,AllSkills,state) == 0) {
xdid -b $dname 20,21,22,23
}
else xdid -e $dname 20,21,22,23
}
}
alias Settings_Events {
var %dname = $1, %devent = $2, %did = $3, %key = $4
if (%devent == keydown) {
if (%did == 15) || (%did == 19) {
if (%key == 32) {
var %x = $input(Spaces are not allowed in the command triggers,oh,Error)
xdid -ra %dname %did $remove($xdid(%dname,%did).text,$chr(32))
}
}
}
elseif (%devent == sclick) {
if (%did == 13) {
if ($xdid(%dname,13).state == 1) {
xdid -e %dname 14,15,20,21,22,23
}
else {
xdid -b %dname 14,15
if ($xdid(%dname,17).state == 0) xdid -b %dname 20,21,22,23
}
}
elseif (%did == 17) {
if ($xdid(%dname,17).state == 1) {
xdid -e %dname 18,19,20,21,22,23
}
else {
xdid -b %dname 18,19
if ($xdid(%dname,13).state == 0) xdid -b %dname 20,21,22,23
}
}
elseif (%did == 24) {
SaveSettings
dialog -x %dname
}
elseif (%did == 42) {
if ($xdid(%dname,37).text) && (!$isitem($v1,44)) {
var %item = $xdid(%dname,37).text
if (#* iswm %item) || (?*.#* iswm %item) var %chan = %item
else var %chan = $+($chr(35),%item)
xdid -a %dname 44 0 %chan
}
elseif ($xdid(%dname,39).text) && (!$isitem($v1,45)) {
var %item = $xdid(%dname,39).text
if (#* iswm %item) || (*.#* iswm %item) var %chan = %item
else var %chan = $+($chr(35),%item)
xdid -a %dname 45 0 %chan
}
}
elseif (%did == 43) {
if ($xdid(%dname,44).sel) xdid -d %dname 44 $v1
elseif ($xdid(%dname,45).sel) xdid -d %dname 45 $v1
}
elseif (%did == 44) {
xdid -ra %dname 37 $xdid(%dname,44,$xdid(%dname,44).sel).text
}
elseif (%did == 45) {
xdid -ra %dname 39 $xdid(%dname,45,$xdid(%dname,45).sel).text
}
elseif (%did == 40) {
xdid -r %dname 39
xdid -e %dname 37,44
xdid -b %dname 39,45
}
elseif (%did == 41) {
xdid -r %dname 37
xdid -b %dname 37,44
xdid -e %dname 39,45
}
}
}
; ##############################################################################
; # Text Event for remote lookups #
; ##############################################################################
on *:text:*:#: {
tokenize 32 $strip($1-)
var %TriggerRegex = $+(/,$readini(RSStats.ini,n,AllSkills,trigger),/)
if ($regex($1,%TriggerRegex)) && ($readini(RSStats.ini,n,AllSkills,state) == 1) {
var %style = Astats
}
elseif ($isskilltrigger($1)) && ($readini(RSStats.ini,n,SingleSkills,state) == 1) {
var %style = Istat, %skill = $isskilltrigger($1)
}
if (!%style) halt
if ($readini(RSStats.ini,n,config,accesstype) == block) {
if ($checklist(allow,$chan)) || ($checklist(allow,$+($network,.,$chan))) var %status = allow
else var %status = block
}
else {
if ($checklist(block,$chan)) || ($checklist(block,$+($network,.,$chan))) var %status = block
else var %status = allow
}
if (%status == block) halt
var %display = $readini(RSStats.ini,n,config,display)
if (%display == 1) %display = msg $chan
elseif (%display == 2) %display = notice $chan
elseif (%display == 3) %display = .msg $nick
elseif (%display == 4) %display = .notice $nick
if ($len($2-) > 12) { %display $c1(The nick) $c2($2-) $c1(is too long) | halt }
elseif ($2) var %rsn = $2-
else var %rsn = $nick
var %x = 1
while ($sock($+(RSStats,%x))) inc %x
set $+(%,RSStats.style.,%x) %style
set $+(%,RSStats.rsn.,%x) %rsn
set $+(%,RSStats.skill.,%x) %skill
set $+(%,RSStats.chan.,%x) $chan
set $+(%,RSStats.nick.,%x) $nick
sockopen $+(RSStats,%x) hiscore.runescape.com 80
}
; ##############################################################################
; # Sockets #
; ##############################################################################
on *:sockopen:RSStats*: {
if ($sockname != RSStats) var %RSStats.rsn = %RSStats.rsn. [ $+ [ $remove($sockname,RSStats) ] ]
sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ %RSStats.rsn HTTP/1.1
sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
}
on *:sockread:RSStats*: {
if ($sockname != RSStats) {
var %display = $readini(RSStats.ini,n,config,display), %id = $remove($sockname,RSStats)
if (%display == 1) %display = msg %RSStats.chan. [ $+ [ %id ] ]
elseif (%display == 2) %display = notice %RSStats.chan. [ $+ [ %id ] ]
elseif (%display == 3) %display = .msg %RSStats.nick. [ $+ [ %id ] ]
elseif (%display == 4) %display = .notice %RSStats.nick. [ $+ [ %id ] ]
var %RSStats.rsn = %RSStats.rsn. [ $+ [ %id ] ]
}
sockread &Incoming
bwrite $sockname -1 -1 &Incoming
if ($sockerr) {
if ($sockname == RSStats) xdid -t RSStats 13 An error occured during stats lookup
else %display $c1(An error occured during stats lookup)
cleanup $sockname
}
elseif ($bfind(&Incoming, 1, </html>).text) process $sockname
elseif ($bfind(&Incoming, 1, does not feature in the hiscores.).text) {
if ($sockname == RSStats) xdid -t RSStats 13 The nick %RSStats.rsn does not appear in the hiscores
else %display $c1(The nick) $c2(%RSStats.rsn) $c1(does not appear in the hiscores)
cleanup $sockname
}
}
; ##############################################################################
; # Process alias #
; ##############################################################################
alias -l process {
var %file = $1
if (%file != RSStats) var %id = $remove(%file,RSStats)
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 32 %currentstat
if ($1 == Overall) set %RSStats.overall.xp $4
if ($2) {
if (%file == RSStats) {
AddCol $1-
hadd -m %file $1 $2 $3 $4 $xp2next($3,$4).format $getPercent($4)
}
else {
var %id = $remove(%file,RSStats), %sep = $readini(RSStats.ini,n,config,seperator)
var %display = $readini(RSStats.ini,n,config,display)
var %chan = $($+(%,RSStats.chan.,%id),2), %nick = $($+(%,RSStats.chan.,%id),2)
var %rsn = $($+(%,RSStats.rsn.,%id),2)
if (%display == 1) %display = msg %chan
elseif (%display == 2) %display = notice %chan
elseif (%display == 3) %display = .msg %nick
elseif (%display == 4) %display = .notice %nick
if ($($+(%,RSStats.style.,%id),2) == astats) {
var %statsline = $iif(%statsline,%statsline $+(,$c3(%sep)),$+($c1([,%rsn,]))) $c1($+($1,:)) $c2($3)
if ($len(%statsline) > 420) { %display %statsline | unset %statsline }
}
elseif ($1 == $($+(%,RSStats.skill.,%id),2)) {
var %statsline = $c1($+([,%rsn,]) Skill:) $c2($1) $c3(%sep) $c1(Rank:) $c2($2)
var %statsline = %statsline $c3(%sep) $c1(Lvl:) $c2($3) $c3(%sep) $c1(Xp:) $c2($4)
var %statsline = %statsline $c3(%sep) $c1(Xp to lvl:) $c2($xp2next($3,$4).format) $c3(%sep)
var %statsline = %statsline $c2($getPercent($4)) $c1(of total xp.)
}
}
}
}
if (%file == RSStats) xdid -t RSStats 13
else %display %statsline
cleanup %file
}
alias -l AddCol {
var %skill = $1, %rank = $2, %level = $3, %xp = $4, %xp-to-lvl = $xp2next(%level,%xp).format, %%-of-total-xp = $getPercent(%xp)
var %order = $readini(RSStats.ini,n,Config,Order)
var %x = 1
while ($gettok(%order,%x,44)) {
var %item = $replace($v1,$chr(32),-)
var %StatsLine = %StatsLine $tab + 0 $($+(%,%item),2)
inc %x
}
xdid -a RSStats 10 0 0 + 0 0 0 0 -1 -1 %skill %StatsLine
}
; ##############################################################################
; # Other aliases #
; ##############################################################################
alias -l c1 {
var %col = $calc($readini(RSStats.ini,n,Colours,Text) - 1)
if ($len(%col) == 1) var %col = $+(0,%col)
return $+(,%col,$1-)
}
alias -l c2 {
var %col = $calc($readini(RSStats.ini,n,Colours,Data) -1)
if ($len(%col) == 1) var %col = $+(0,%col)
return $+(,%col,$1-,$iif($prop == c1,$c1))
}
alias -l c3 {
var %col = $calc($readini(RSStats.ini,n,Colours,Seperator) -1)
if ($len(%col) == 1) var %col = $+(0,%col)
return $+(,%col,$1-)
}
alias -l tab { return $chr(9) }
alias -l striptags { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return %x }
alias -l xp {
var %x = 1, %level = $calc($1 - 1), %xp = 0
while (%x <= %level) {
var %TempXp = $calc($floor($calc(%x + 300 * 2 ^ (%x / 7))) / 4)
inc %xp %TempXp
inc %x
}
if ($prop == format) $bytes($int(%xp),b)
else return $int(%xp)
}
alias -l xp2next {
var %lvl = $1, %xp = $remove($2,$chr(44)), %nextlvl = $calc(%lvl + 1), %nextxp = $xp(%nextlvl)
if (%lvl >= 99) return --
elseif ($prop == format) return $bytes($calc(%nextxp - %xp),b)
else return $calc(%nextxp - %xp)
}
alias -l getPercent {
var %xp = $remove($1,$chr(44)), %total = $remove(%RSStats.Overall.xp,$chr(44))
var %percent = $round($calc(%xp / %total * 100),2)
if (%xp == %total) return --
else return $+(%percent,%)
}
alias -l SaveColOptions {
var %dname = ManageCols, %x = 2
while (%x <= 7) {
var %state = $xdid(%dname,%x).state
var %Fields = $instok(%Fields,%state,0,44)
inc %x
}
var %x = 1
while ($xdid(%dname,9,%x).text) {
var %Order = $addtok(%Order,$v1,44)
inc %x
}
writeini -n RSStats.ini Config Fields %Fields
writeini -n RSStats.ini Config Order %order
}
alias -l getitem {
if ($1 == 2) var %return = Skill
elseif ($1 == 3) var %return = Rank
elseif ($1 == 4) var %return = Level
elseif ($1 == 5) var %return = Xp
elseif ($1 == 6) var %return = Xp to lvl
elseif ($1 == 7) var %return = % of total Xp
if ($prop == nospace) return $replace(%return,$chr(32),-)
else return %return
}
alias -l getfield {
if ($1 == Skill) return 1
elseif ($1 == Rank) return 2
elseif ($1 == Level) return 3
elseif ($1 == Xp) return 4
elseif ($1 == Xp to lvl) return 5
elseif ($1 == % of total Xp) return 6
}
alias -l getwidth {
if ($1 == Skill) return 90
elseif ($1 == Rank) return 65
elseif ($1 == Level) return 65
elseif ($1 == Xp) return 85
elseif ($1 == Xp-to-lvl) return 70
elseif ($1 == % $+ -of-total-Xp) return 75
}
alias -l BuildColumn {
var %item = $replace($1,$chr(32),-), %field = $2
var %fields = $readini(RSStats.ini,n,Config,Fields)
if ($gettok(%fields,%field,44) == 1) {
var %align = $readini(RSStats.ini,n,%item,Align)
var %align = $iif(%align == 1,+l,$iif(%align == 2,+r,+c))
var %Label = $readini(RSStats.ini,n,%item,Label)
var %Width = $getwidth(%item)
return %align 0 %width %label
}
}
alias -l BuildListView {
var %x = 1
while ($gettok($readini(RSStats.ini,n,Config,Order),%x,44)) {
var %ListView = %ListView $tab $BuildColumn($v1,$getfield($v1))
inc %x
}
xdid -t RSStats 10 +c 0 0 %ListView
}
alias -l SaveSettings {
writeini -n RSStats.ini config CopyFormat $xdid(Settings,5).text
writeini -n RSStats.ini config CopyEvent $xdid(Settings,10).sel
writeini -n RSStats.ini AllSkills State $xdid(Settings,13).state
writeini -n RSStats.ini AllSkills Trigger $xdid(Settings,15).text
writeini -n RSStats.ini SingleSKills State $xdid(Settings,17).state
if ([SKILL] !isin $xdid(Settings,19).text) {
var %trigger = $v2 $+ [SKILL]
var %x = $input([SKILL] must be included in single skill triggers to specifiy WHICH skill is wanted. $&
$crlf Automatically adding it the the end of your current trigger,oh,Error)
}
else var %trigger = $v2
writeini -n RSStats.ini SingleSKills Trigger %trigger
writeini -n RSStats.ini config Seperator $xdid(Settings,21).text
writeini -n RSStats.ini config Display $xdid(Settings,23).sel
writeini -n RSStats.ini Colours text $xdid(Settings,27).sel
writeini -n RSStats.ini Colours data $xdid(Settings,29).sel
writeini -n RSStats.ini Colours Seperator $xdid(Settings,31).sel
if ($xdid(Settings,40).state == 1) writeini -n RSStats.ini Config AccessType block
else writeini -n RSStats.ini config AccessType allow
Savelist 44
Savelist 45
SetDefaultSettings
}
alias -l Savelist {
var %did = $1, %x = 1, %total = $xdid(Settings,%did).num
remini -n RSStats.ini $iif(%did == 44,allow,block)
while (%x <= %total) {
writeini -n RSStats.ini $iif(%did == 44,allow,block) %x $xdid(Settings,%did,%x).text
inc %x
}
}
alias -l loadlist {
var %item = $1, %x = 1, %total = $ini(RSStats.ini,%item,0)
while (%x <= %total) {
xdid -a Settings $iif(%item == allow,44,45) 0 $readini(RSStats.ini,%item,%x)
inc %x
}
}
alias -l checklist {
var %list = $1, %item = $2, %x = 1, %total = $ini(RSStats.ini,%list,0)
while (%x <= %total) {
var %citem = $readini(RSStats.ini,%list,%x)
if (%item == %citem) return $true
inc %x
}
return $false
}
alias -l SetDefaultSettings {
var %copyformat = User: [NICK] Skill: [SKILL] Rank: [RANK] Xp: [XP] Lvl: [LVL] ([XP2LVL] from next) [PERCENT] of total Xp
if (!$readini(RSStats.ini,n,config,CopyFormat)) writeini -n RSStats.ini config CopyFormat %copyformat
if (!$readini(RSStats.ini,n,config,CopyEvent)) writeini -n RSStats.ini config CopyEvent 3
if ($readini(RSStats.ini,n,AllSkills,state) == $null) writeini -n RSStats.ini AllSkills state 1
if (!$readini(RSStats.ini,n,AllSkills,trigger)) writeini -n RSStats.ini AllSkills trigger [!@]stats
if ($readini(RSStats.ini,n,SingleSkills,State) == $null) writeini -n RSStats.ini SingleSkills state 1
if (!$readini(RSStats.ini,n,SingleSkills,trigger)) writeini -n RSStats.ini SingleSkills trigger [!@][SKILL]
if (!$readini(RSStats.ini,n,Config,Seperator)) writeini -n RSStats.ini Config Seperator *
if (!$readini(RSStats.ini,n,Config,Display)) writeini -n RSStats.ini Config Display 4
if (!$readini(RSStats.ini,n,Colours,Text)) writeini -n RSStats.ini Colours Text 6
if (!$readini(RSStats.ini,n,Colours,Data)) writeini -n RSStats.ini Colours Data 4
if (!$readini(RSStats.ini,n,Colours,Seperator)) writeini -n RSStats.ini Colours Seperator 8
if (!$readini(RSStats.ini,n,config,AccessType)) writeini -n RSStats.ini Config AccessType block
}
alias -l isskilltrigger {
var %trigger = $readini(RSStats.ini,n,SingleSkills,trigger)
if ($regex(%trigger,/(.*)\[SKILL\](.*)/Si)) {
if ($regex($1,$+(/^,$regml(1),(.*),$regml(2),$,/Si))) var %skill = $regml(1)
}
if (!%skill) return $null
elseif ($regex(%skill,/^(st|(skill)?total|overall)$/Si)) return Overall
elseif ($regex(%skill,/^at(t|k|tack)$/Si)) return Attack
elseif ($regex(%skill,/^def(en[cs]e)?$$/Si)) return Defence
elseif ($regex(%skill,/^str(ength)?$/Si)) return Strength
elseif ($regex(%skill,/^hp|hit(s|points?)?$/Si)) return Hitpoints
elseif ($regex(%skill,/^range(r|d|ing)?$/Si)) return Ranged
elseif ($regex(%skill,/^Pray(er)?$$/Si)) return Prayer
elseif ($regex(%skill,/^mag(e|ic)$$/Si)) return Magic
elseif ($regex(%skill,/^cook(ing)?$/Si)) return Cooking
elseif ($regex(%skill,/^wc|wood(cut(ting)?)?$/Si)) return Woodcutting
elseif ($regex(%skill,/^fletch(ing)?$/Si)) return Fletching
elseif ($regex(%skill,/^fish(ing)?$/Si)) return Fishing
elseif ($regex(%skill,/^(fire|fm)(make?(ing)?|ing)?$/Si)) return Firemaking
elseif ($regex(%skill,/^craft(ing)?$/Si)) return Crafting
elseif ($regex(%skill,/^(smith|smelt)(ing)?$/Si)) return Smithing
elseif ($regex(%skill,/^mine(ing)?$/Si)) return Mining
elseif ($regex(%skill,/^herb(law|lore)?$/Si)) return Herblore
elseif ($regex(%skill,/^agil(ity)?$/Si)) return Agility
elseif ($regex(%skill,/^(th(ei|ie)[fv](e|ing)?)$/Si)) return Thieving
elseif ($regex(%skill,/^slay(er|ing)?$/Si)) return Slayer
elseif ($regex(%skill,/^farm(er|ing)?$/Si)) return Farming
elseif ($regex(%skill,/^(rc|runecraft)(er|ing)?$/Si)) return Runecraft
elseif ($regex(%skill,/^cons?(truct(ion)?)?$/Si)) return Construction
}
alias -l cleanup {
if ($1 != RSStats) {
var %id = $remove($1,RSStats)
unset $(%,RSStats.*.,$(%id,2))
}
else unset %RSStats.rsn
unset %RSStats.overall.xp
.remove $1
sockclose $1
}
alias -l isitem {
var %item = $1, %did = $2, %x = 1
while (%x <= $xdid(Settings,%did).num) {
var %citem = $xdid(Settings,%did,%x).text
if (%item == %citem) return $true
inc %x
}
return $false
}
; ##############################################################################
; # dcx.dll aliases #
; ##############################################################################
alias -l dcx {
if ($isid) return $dll($findfile($mircdir,dcx.dll,1),$1,$2-)
else dll " $+ $findfile($mircdir,dcx.dll,1) $+ " $1 $2-
}
alias -l xdid {
if ($isid) return $dcx(_xdid,$1 $2 $prop $3-)
else dcx xdid $2 $3 $1 $4-
}
alias -l xdialog {
if ($isid) return $dcx(_xdialog,$1 $prop $2-)
else dcx xdialog $2 $1 $3-
}