menu * { Runescape tool .Exp Counter: /dialog -m ExpCount ExpCount .Combat: /Dialog -m Combat Combat .Stats: /dialog -m Stats Stats } dialog Combat { title "Combat" size -1 -1 166 90 option dbu text "Username:", 2, 5 9 57 12, center edit "", 3, 70 10 63 10, center edit "", 4, 36 66 14 10, read edit "", 5, 36 52 14 10, read edit "", 6, 36 39 14 10, read edit "", 7, 90 66 14 10, read edit "", 8, 90 52 14 10, read edit "", 9, 90 39 14 10, read edit "", 10, 144 61 14 10, read edit "", 11, 144 48 14 10, read box "Levels", 1, 2 28 160 60 box "Combat", 13, 2 2 160 86 text "Attack:", 14, 5 38 25 8, center text "Defence:", 15, 5 51 25 8, center text "Strength:", 16, 5 65 25 8, center text "Hitpoints:", 17, 60 38 25 8, center text "Ranged:", 18, 60 51 25 8, center text "Prayer:", 19, 60 65 25 8, center text "Magic:", 12, 114 47 25 8, center text "Summon:", 20, 114 60 25 8, center text "F2P level:", 21, 5 77 28 8, center edit "", 22, 36 77 22 10, read text "|", 23, 62 77 25 8, center text "P2P level:", 24, 93 77 28 8, center button "Look up", 26, 41 21 58 9, flat edit "", 25, 124 77 22 10, read } on *:DIALOG:Combat:sclick:26:{ if (!$did(3)) { did -ra Combat 3 Error, No username. } if ($len($did(3)) > 12) { did -ra Combat 3 Error, Invalid username. } else { var %s = $ticks var %User $replace($did(3),$chr(32),$chr(95)) sockopen Combat. [ $+ [ %s ] ] hiscore.runescape.com 80 sockmark Combat. [ $+ [ %s ] ] $+(username,~,%User) } } on *:SOCKOPEN:Combat.*:{ var %User $gettok($sock($sockname).mark,2,126) sockwrite -n $sockname GET $+(/index_lite.ws?player=,%User) HTTP/1.1 sockwrite -n $sockname Host: hiscore.runescape.com sockwrite -n $sockname $crlf } on *:SOCKREAD:Combat.*:{ var %s = $gettok($sockname,2,$asc(.)) if ($sockerr) { sockclose $sockname | did -ra Combat 3 Socket error. | halt } else { var %Combat sockread %Combat if (*404 - Page not found* iswm %Combat) { did -ra Combat 3 User not found. } if (*,*,* iswm %Combat) { set %Stats. [ $+ [ %s ] ] %Stats. [ $+ [ %s ] ] $gettok(%Combat,2,44) tokenize 32 %Stats. [ $+ [ %s ] ] ;str = 4, attk = 6,def = 5, hp = 5, pray = 7,range = 8, mage = 8,summon = 10 did -ra Combat 4 $4 did -ra Combat 6 $2 did -ra Combat 5 $3 did -ra Combat 7 $7 did -ra Combat 8 $6 did -ra Combat 9 $5 did -ra Combat 10 $25 did -ra Combat 11 $8 var %cmbp2p = $remove($cmbp2p($2,$3,$4,$5,$6,$7,$8,$iif(-1 iswm $25,1,$25)),Melee,Ranged,Magic,Based) var %cmbf2p = $remove($cmbf2p($2,$3,$4,$5,$6,$7,$8),Melee,Ranged,Magic,Based) did -ra Combat 22 %cmbf2p did -ra Combat 25 %cmbp2p } } } on *:SOCKCLOSE:Combat.*:{ var %s = $gettok($sockname,2,$asc(.)) unset %Stats. [ $+ [ %s ] ] sockclose $sockname } dialog Stats { title "Stats" size -1 -1 197 139 option dbu text "Firemaking:", 14, 112 48 29 8, center text "Strength:", 15, 6 26 25 8, center text "Thieving:", 16, 6 115 25 8, center text "Attack:", 17, 6 15 25 8, center text "Construct:", 18, 144 77 26 8, center text "Hitpoints:", 20, 59 37 25 8, center text "Prayer:", 21, 6 59 25 8, center text "Hunter:", 22, 144 96 25 8, center text "Summon:", 23, 144 115 25 8, center text "Cooking:", 24, 112 37 25 8, center text "Slayer:", 25, 75 96 25 8, center text "Overall:", 26, 164 30 25 8, center text "Defence:", 27, 6 37 25 8, center text "Magic:", 28, 59 15 25 8, center text "Fletching:", 29, 75 77 25 8, center text "Fishing:", 30, 112 26 25 8, center text "Farming:", 31, 75 115 25 8, center text "Mining:", 32, 59 59 25 8, center text "Smithing:", 33, 112 15 25 8, center text "Ranged:", 34, 6 48 25 8, center text "Runecraft:", 35, 59 26 26 8, center text "Woodcut:", 36, 112 59 24 8, center text "Herblore:", 37, 6 96 25 8, center text "Crafting:", 38, 59 48 25 8, center text "Username:", 40, 5 6 41 7, center edit "", 41, 41 6 90 10, center button "Look up!", 42, 137 6 53 9 box "P2P Skills", 43, 1 68 196 61 edit "", 44, 32 78 16 10, read box "F2P", 53, 1 -1 196 130 edit "", 45, 32 97 16 10, read edit "", 46, 32 116 16 10, read edit "", 47, 101 116 16 10, read edit "", 48, 101 78 16 10, read edit "", 49, 170 78 16 10, read edit "", 50, 170 97 16 10, read edit "", 51, 101 97 16 10, read edit "", 52, 170 116 16 10, read text "Agility:", 19, 6 77 25 8, center edit "", 54, 35 16 16 10, read edit "", 55, 88 16 16 10, read edit "", 56, 35 39 16 10, read edit "", 57, 35 27 16 10, read edit "", 58, 88 38 16 10, read edit "", 59, 88 60 16 10, read edit "", 60, 35 50 16 10, read edit "", 61, 35 61 16 10, read edit "", 62, 88 49 16 10, read edit "", 63, 88 27 16 10, read edit "", 64, 141 16 16 10, read edit "", 65, 141 27 16 10, read edit "", 66, 141 38 16 10, read edit "", 67, 141 49 16 10, read edit "", 68, 141 59 16 10, read edit "", 69, 164 40 26 10, read, center text "Combat F2P:", 1, 3 130 53 8, center text "Combat P2P:", 2, 100 130 53 8, center edit "", 3, 62 129 28 10, read edit "", 4, 159 129 28 10, read } on *:DIALOG:Stats:sclick:42:{ if (!$did(41)) { //dialog -m NoNameError NoNameError halt } else { if ($len($did(41)) > 12) { //dialog -m TooLongError TooLongError halt } else { var %s = $ticks set %StatsUser. [ $+ [ %s ] ] $replace($did(41),$chr(32),$chr(95)) sockopen Stats. [ $+ [ %s ] ] hiscore.runescape.com 80 } } } on *:SOCKOPEN:Stats.*:{ var %s = $gettok($sockname,2,$asc(.)) sockwrite -n $sockname GET $+(/index_lite.ws?player=,%StatsUser. [ $+ [ %s ] ]) HTTP/1.1 sockwrite -n $sockname Host: hiscore.runescape.com sockwrite -n $sockname $crlf } on *:SOCKREAD:Stats.*:{ var %s = $gettok($sockname,2,$asc(.)) if ($sockerr) { sockclose $sockname | did -ra Combat 40 Socket error. | halt } else { var %Stats sockread %Stats if (*404 - Page not found* iswm %Stats) { //dialog -m StatsError StatsError halt } if (*,*,* iswm %Stats) { set %Stats. [ $+ [ %s ] ] %Stats. [ $+ [ %s ] ] $gettok(%Stats,2,44) tokenize 32 %Stats. [ $+ [ %s ] ] ;attk = 54 2, str = 57 4,def = 56 3, hp = 58 5,agi = 44 18,herb = 45 17,thiev = 46 19,fletch = 48 11,cons = 49 24 ;summon = 52 25,hunter = 50 23,runecraft = 63 22,overall = 69 1,wc = 68 10, range = 60 6,pray = 61 7,mage = 55 8,craft = 62 14 ;mining = 59 16,slayer = 51 20,farm = 47 21,smithing = 64 15,fish = 65 12,cook = 66 9,fm = 67 13, did -ra Stats 54 $2 did -ra Stats 57 $4 did -ra Stats 56 $3 did -ra Stats 58 $5 did -ra Stats 45 $17 did -ra Stats 44 $18 did -ra Stats 48 $11 did -ra Stats 49 $24 did -ra Stats 52 $25 did -ra Stats 50 $23 did -ra Stats 63 $22 did -ra Stats 69 $bytes($1,db) did -ra Stats 68 $10 did -ra Stats 46 $19 did -ra Stats 60 $6 did -ra Stats 61 $7 did -ra Stats 55 $8 did -ra Stats 62 $14 did -ra Stats 59 $16 did -ra Stats 51 $20 did -ra Stats 47 $21 did -ra Stats 64 $15 did -ra Stats 65 $12 did -ra Stats 66 $9 did -ra Stats 67 $13 var %cmbp2p = $remove($cmbp2p($2,$3,$4,$5,$6,$7,$8,$iif(-1 iswm $25,1,$25)),Melee,Ranged,Magic,Based) var %cmbf2p = $remove($cmbf2p($2,$3,$4,$5,$6,$7,$8),Melee,Ranged,Magic,Based) did -ra Stats 3 %cmbf2p did -ra Stats 4 %cmbp2p } } } on *:SOCKCLOSE:Stats.*:{ var %s = $gettok($sockname,2,$asc(.)) unset %StatsUser. [ $+ [ %s ] ] unset %Stats. [ $+ [ %s ] ] sockclose $sockname } alias -l cmbp2p { ;$cmb(attack,defence,strength,hitpoints,ranged,prayer,magic,summoning) var %a = $calc($2 * 100), %b = $calc($4 * 100), %e = $calc($1 * 130), %f = $calc($3 * 130) var %c = $iif($and($6,1) == 1,$calc($calc($6 - 1) * 50),$calc($6 * 50)), %d = $iif($and($8,1) == 1,$calc($calc($8 - 1) * 50),$calc($8 * 50)) var %g = $iif($and($5,1) == 1,$calc($calc($calc($5 - 1) + $calc($5 * 2)) * 65),$calc($5 * 195)), %h = $iif($and($7,1) == 1,$calc($calc($calc($7 - 1) + $calc($7 * 2)) * 65),$calc($7 * 195)) var %base = $calc($calc(%a + %b + %c + %d) / 400), %mclass = $calc($calc(%e + %f) / 400), %rclass = $calc(%g / 400), %maclass = $calc(%h / 400) if ((%mclass > %rclass) && (%mclass > %maclass)) { return $calc(%mclass + %base) Melee Based } elseif ((%rclass > %mclass) && (%rclass > %maclass)) { return $calc(%rclass + %base) Ranged Based } elseif ((%maclass > %mclass) && (%maclass > %rclass)) { return $calc(%maclass + %base) Magic Based } } alias -l cmbf2p { tokenize 32 $1- var %rsc1 [ $+ [ $8 ] ] $calc((($1 * 130) + ($3 * 130)) / 400) var %rsc2 [ $+ [ $8 ] ] $calc($iif($and($5,1) == 0,$calc($5 * 195),$calc((($5 - 1) + ($5 * 2)) * 65)) / 400) var %rsc3 [ $+ [ $8 ] ] $calc($iif($and($7,1) == 0,$calc($7 * 195),$calc((($7 - 1) + ($7 * 2)) * 65)) / 400) if ((%rsc1 [ $+ [ $8 ] ] >= %rsc2 [ $+ [ $8 ] ]) && (%rsc1 [ $+ [ $8 ] ] >= %rsc3 [ $+ [ $8 ] ])) return $calc(%rsc1 [ $+ [ $8 ] ] + ((($2 * 100) + ($4 * 100) + ($iif($and($6,1) == 0,$6,$calc($6 - 1)) * 50)) / 400)) Melee Based elseif ((%rsc2 [ $+ [ $8 ] ] >= %rsc3 [ $+ [ $8 ] ]) && (%rsc2 [ $+ [ $8 ] ] >= %rsc1 [ $+ [ $8 ] ])) return $calc(%rsc2 [ $+ [ $8 ] ] + ((($2 * 100) + ($4 * 100) + $iif($and($6,1) == 0,$6,$calc($6 - 1)) * 50) / 400)) Ranged Based elseif ((%rsc3 [ $+ [ $8 ] ] >= %rsc1 [ $+ [ $8 ] ]) && (%rsc3 [ $+ [ $8 ] ] >= %rsc2 [ $+ [ $8 ] ])) return $calc(%rsc3 [ $+ [ $8 ] ] + ((($2 * 100) + ($4 * 100) + $iif($and($6,1) == 0,$6,$calc($6 - 1)) * 50) / 400)) Magic Based } dialog TooLongError { title "Error" size -1 -1 90 54 option dbu text "- Error -", 1, 31 7 25 8, center text "Username is too long", 2, 20 22 49 8, center button "Cancel", 3, 26 37 37 12, cancel } dialog StatsError { title "Error" size -1 -1 90 54 option dbu text "- Error -", 1, 31 7 25 8, center text "User was not found.", 2, 20 22 49 8, center button "Cancel", 3, 26 37 37 12, cancel } dialog NoNameError { title "Error" size -1 -1 90 54 option dbu text "- Error -", 1, 31 7 25 8, center text "You must specify a user", 2, 20 22 49 8, center button "Cancel", 3, 26 37 37 12, cancel } dialog ExpCount { title "Average Exp" size -1 -1 183 156 option dbu box "User and Skill", 1, 1 2 181 51 text "User:", 2, 5 10 40 8, center edit "", 3, 59 9 88 10, center text "Skill:", 4, 5 24 42 8, center edit "", 5, 59 23 88 10, center button "Start", 6, 49 40 72 9 text "Starting Exp:", 8, 5 62 37 8, center edit "", 9, 69 61 45 10, read center text "Ending Exp:", 11, 5 85 40 8, center edit "", 12, 69 84 45 10, read center box "Exp. Made", 13, 1 96 181 58 box "Starting/Ending Exp.", 7, 1 53 181 101 button "Stop", 10, 118 59 61 37 text "Per 5 mins:", 14, 5 105 35 8, center text "Per 15 mins:", 15, 99 105 35 8, center edit "", 16, 135 104 45 10, read center edit "", 17, 48 104 46 10, read center text "Per 30 mins:", 18, 5 120 35 8, center edit "", 19, 48 119 46 10, read center text "By hours:", 20, 99 119 35 8, center edit "", 21, 135 118 45 10, read center edit "", 22, 6 136 172 10, read center } on *:DIALOG:ExpCount:sclick:6:{ if (!$did(3)) { dialog -m NoUser NoUser } else { if (!$did(5)) { dialog -m NoSkill NoSKill } else { set %StartExp on set %Time $ctime var %s = $ticks set %Skill $skill($did(5)) set %User $did(3) sockopen ExpStart. $+ %s nou.stirk.org 80 } } } on *:SOCKOPEN:ExpStart.*:{ sockwrite -n $sockname GET $+(/parsers/skill.php?user=,%User,&skill=,%Skill) HTTP/1.1 sockwrite -n $sockname Host: nou.stirk.org sockwrite -n $sockname $crlf } on *:SOCKREAD:ExpStart.*:{ if ($sockerr) { dialog -m SockErr SockErr halt } else { var %S sockread %S if (*Exp:* iswm %S) { did -ra ExpCount 9 $remove($gettok(%S,2,124),Exp:) set %Start $remove($gettok(%S,2,124),Exp:,$chr(44)) set %LevelStart $remove($gettok(%S,1,124),Level:) sockclose $sockname } } } on *:DIALOG:ExpCount:sclick:10:{ if (%StartExp != on) { dialog -m StartOff StartOff halt } else { unset %StartExp var %s = $ticks sockopen ExpEnd. $+ %s nou.stirk.org 80 } } on *:SOCKOPEN:ExpEnd.*:{ sockwrite -n $sockname GET $+(/parsers/skill.php?user=,%User,&skill=,%Skill) HTTP/1.1 sockwrite -n $sockname Host: nou.stirk.org sockwrite -n $sockname $crlf } on *:SOCKREAD:ExpEnd.*:{ if ($sockerr) { dialog -m SockErr SockErr halt } else { var %E sockread %E if (*Exp:* iswm %E) { set %LevelEnd $remove($gettok(%E,1,124),Level:) did -ra ExpCount 12 $remove($gettok(%E,2,124),Exp:) set %End $remove($gettok(%E,2,124),Exp:,$chr(44)) did -ra ExpCount 21 $bytes($round($calc((3600/($ctime - %Time))*(%End - %Start)),0),db) did -ra ExpCount 16 $bytes($round($calc((900/($ctime - %Time))*(%End - %Start)),0),db) did -ra ExpCount 17 $bytes($round($calc((300/($ctime - %Time))*(%End - %Start)),0),db) did -ra ExpCount 19 $bytes($round($calc((1800/($ctime - %Time))*(%End - %Start)),0),db) did -ra ExpCount 22 You've gained $iif(%LevelStart != %LevelEnd,$calc(%LevelEnd - %LevelStart) $iif($calc(%LevelEnd - %LevelStart) = 1,level,levels) $+($chr(40),$bytes($calc(%End - %Start),db),$chr(41)) in $duration($calc($ctime - %time)) $+ .,$bytes($calc(%End - %Start),db) xp in $duration($calc($ctime - %Time)) $+ .) } } } on *:SOCKCLOSE:ExpEnd.*:{ unset %End %Skill %User %End %Time %Start %LevelStart %LevelEnd } dialog NoSkill { title "Error - No Skill" size -1 -1 67 47 option dbu text "- Error -", 1, 21 6 19 8, center box "", 2, 1 -1 65 46 text "No Skill Specified.", 3, 5 20 54 8, center button "Cancel", 4, 13 32 37 8, cancel } dialog NoUser { title "Error - No Username" size -1 -1 67 47 option dbu text "- Error -", 1, 21 6 19 8, center box "", 2, 1 -1 65 46 text "No User Specified.", 3, 5 20 54 8, center button "Cancel", 4, 13 32 37 8, cancel } dialog SockErr { title "Socket Error" size -1 -1 67 47 option dbu text "- Error -", 1, 19 8 27 8, center text "Socket error, try again", 2, 3 19 60 8, center button "Cancel", 3, 15 33 37 10, cancel } dialog StartOff { title "Start" size -1 -1 67 47 option dbu text "- Error -", 1, 19 8 27 8, center text "You haven't started one yet.", 2, 3 19 60 14, center button "Cancel", 3, 15 34 37 10, cancel } alias skill { if ($did(5) == overall || $1 == total) { return Overall } if ($did(5) == attack || $1 == att || $1 == attk) { return Attack } if ($did(5) == def || $1 == defence) { return Defence } if ($did(5) == str || $1 == strength) { return Strength } if ($did(5) == hp || $1 == hitpoints || $1 == hits) { return Hitpoints } if ($did(5) == range || $1 == ranged || $1 == ranging) { return Ranged } if ($did(5) == pray || $1 == prayer || $1 == praying) { return Prayer } if ($did(5) == mage || $1 == magic) { return Magic } if ($did(5) == cook || $1 == cooking) { return Cooking } if ($did(5) == wc || $1 == wcing || $1 == woodcut || $1 == woodcutting) { return Woodcutting } if ($did(5) == fletch || $1 == fletching) { return Fletching } if ($did(5) == fishing || $1 == fish) { return Fishing } if ($did(5) == fm || $1 == firemaking) { return Firemaking } if ($did(5) == craft || $1 == crafting) { return Crafting } if ($did(5) == smith || $1 == smithing) { return Smithing } if ($did(5) == mining) { return Mining } if ($did(5) == herb || $1 == herblore) { return Herblore } if ($did(5) == agility || $1 == agil || $1 == agi) { return Agility } if ($did(5) == thiev || $1 == thieving) { return Thieving } if ($did(5) == slay || $1 == slaying || $1 == slayer) { return Slayer } if ($did(5) == farm || $1 == farming) { return Farming } if ($did(5) == rc || $1 == runecraft || $1 == runecrafting) { return Runecraft } if ($did(5) == construct || $1 == con || $1 == cons || $1 == construction) { return Construction } if ($did(5) == hunt || $1 == hunter || $1 == hunting) { return Hunter } if ($did(5) == summ || $1 == sum || $1 == summo || $1 == summon || $1 == summoning) { return Summoning } }