on *:SOCKOPEN:stats.*: { var %bleh = $gettok($sockname,2,46) if ($sockerr) { .echo 4 -s Error while connecting to the stats page: $sock($sockname).wsmsg return } .set %sread. $+ %bleh No .sockwrite -n $sockname GET /index_lite.ws?player= $+ $hget($($+(u,%bleh),2),user) HTTP/1.1 .sockwrite -n $sockname User-Agent: FreeBot (Crawler Bot; thefreebot.com;) .sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf } on *:SOCKREAD:stats.*: { var %bleh = $gettok($sockname,2,46) if ($sockerr) { echo 4 -s Error while reading the stats: $sock($sockname).wsms return } .sockread %RSStats if (*404 Not Found* iswm %RSStats) { $($hget($($+(u,%bleh),2),display),2) $s1(%nick,The user) $s2(%nick,$hget($($+(u,%bleh),2),user)) $s1(%nick,doesn't appear in the hiscores.) .sockclose $sockname halt } if ($numtok(%RSStats,44) < 2) { .set %sread. $+ %bleh No } if ($numtok(%RSStats,44) >= 3 || ($($+(%,sread.,%bleh),2) == YES && %RSStats != $null)) { .set %sread. $+ %bleh Yes .inc $($+(%,snum.,%bleh),1) .tokenize 44 %RSStats .hadd -m $($+(u,%bleh),2) $u2fid($($+(%,snum.,%bleh),2)) $1- } } on *:SOCKCLOSE:stats.*: { var %bleh = $gettok($sockname,2,46) .stats.show $($+(u,%bleh),2) } alias s1 { return $+($chr(3),$cntn($clr(stats.base,$address($1,1))),$2-,$chr(3)) } alias s2 { return $+($chr(3),$cntn($clr(stats.secondary,$address($1,1))),$2-,$chr(3)) } alias stats.show { var %send = $hget($1,display),%send2 = .notice $hget($1,nick),%show = $+($mircdirSkills\,$hget($1,skill),.ini),%skill = $hget($1,skill),%user = $hget($1,user),%hash = $1,%addy = $hget($1,address),%nick = $hget($1,nick),%user_s = $hget($1,user_s) var %item = $hget($1,item),%target = $hget($1,target) if (*echo* iswm %send) { goto skipnclear } if ($hget(%hash,compare)) { if ($hget(%hash,completed) == yes) { goto clearup } if ($hget($($+(u,$hget(%hash,compare)),2),%skill)) { .hadd $($+(u,$hget(%hash,compare))) completed yes var %chash = $($+(u,$hget(%hash,compare))) var %cuser = $hget(%chash,user) var %cuser_s = $hget(%chash,user_s) var %cnick = $hget(%chash,nick) $(%send,2) $s1(%nick,$lr(%nick,stats,cp)) $s2(%nick,$iif($right(%user,1) == ?,%user_s,%user)) $s1(%nick,$lr(%nick,stats,and)) $s2(%nick,$iif($right($hget(%chash,user),1) == ?,%cuser_s,%cuser)) $s1(%nick,$lr(%nick,stats,in)) $s2(%nick,%skill) $(%send,2) $s2(%nick,%user) $s1(%nick,Rank) $s2(%nick,$bytes($skill(%hash,%skill).rank,b)) $s1(%nick,Level) $s2(%nick,$bytes($skill(%hash,%skill).lvl,b)) $s1(%nick,Exp) $s2(%nick,$bytes($skill(%hash,%skill).exp,b)) $(%send,2) $s2(%nick,$iif($right($hget(%chash,user),1) == ?,%cnick,%cuser)) $s1(%nick,Rank) $s2(%nick,$bytes($skill(%chash,%skill).rank,b)) $s1(%nick,Level) $s2(%nick,$bytes($skill(%chash,%skill).lvl,b)) $s1(%nick,Exp) $s2(%nick,$bytes($skill(%chash,%skill).exp,b)) if ($skill(%hash,%skill).exp == $skill(%chash,%skill).exp) { $(%send,2) $s2(%nick,%user) $s1(%nick,and) $s2(%nick,$iif($right($hget(%chash,user),1) == ?,%cnick,%cuser)) $s1(%nick,are at a tie!) } if ($skill(%hash,%skill).exp > $skill(%chash,%skill).exp) { $(%send,2) $s2(%nick,%user) $s1(%nick,is) $s2(%nick,$bytes($calc($skill(%hash,%skill).lvl - $skill(%chash,%skill).lvl),b)) $s1(%nick,levels,) $s2(%nick,$bytes($calc($skill(%chash,%skill).rank - $skill(%hash,%skill).rank),b)) $s1(%nick,ranks and) $s2(%nick,$bytes($calc($skill(%hash,%skill).exp - $skill(%chash,%skill).exp),b)) $s1(%nick,exp ahead of) $s2(%nick,$iif($right($hget(%chash,user),1) == ?,%cnick,%cuser)) } if ($skill(%chash,%skill).exp > $skill(%hash,%skill).exp) { $(%send,2) $s2(%nick,$iif($right($hget(%chash,user),1) == ?,%cnick,%cuser)) $s1(%nick,is) $s2(%nick,$bytes($calc($skill(%chash,%skill).lvl - $skill(%hash,%skill).lvl),b)) $s1(%nick,levels,) $s2(%nick,$bytes($calc($skill(%hash,%skill).rank - $skill(%chash,%skill).rank),b)) $s1(%nick,ranks and) $s2(%nick,$bytes($calc($skill(%chash,%skill).exp - $skill(%hash,%skill).exp),b)) $s1(%nick,exp ahead of) $s2(%nick,%user) } goto clearup } else { goto skipnclear } } if (%skill == cmb%) { var %total = $skill(%hash,overall).exp var %cmb = $calc($skill(%hash,attack).exp + $skill(%hash,defence).exp + $skill(%hash,strength).exp + $skill(%hash,hitpoints).exp + $skill(%hash,ranged).exp + $skill(%hash,prayer).exp + $skill(%hash,magic).exp + $skill(%hash,summoning).lvl) var %perc = $round($calc((%cmb / %total) * 100),2) $(%send,2) $s2(%nick,Combat Percentage) $s1(%nick,for) $s2(%nick,$iif($right(%user,1) == ?,%user_s,%user) $+ :) $s2(%nick,$bytes(%perc,db) $+ %) $s1(%nick,combat based exp $+ $chr(44) with) $s2(%nick,$bytes(%cmb,db)) $& $s1(%nick,combat based exp $+ $chr(44) and) $s2(%nick,$bytes(%total,db)) $s1(%nick,total exp.) goto clearup } if ($regex(%skill,$+(/^,$chr(40),duel,$chr(124),bh,$chr(41),/Si))) { var %oskill = $replace(%skill,duel,Duel Arena,bhr,Rogue Bounty Hunter,bh,Bounty Hunter) if ($skill(%hash,%skill).rank !isnum) { $(%send,2) $s1(%nick,$iif($right(%user,1) == ?,%user_s,%user)) $s2(%nick,was not found in the) $s1(%nick,%oskill) $s2(%nick,hiscore list) | goto clearup } $(%send,2) $+($s1(%nick,::),$s2(%nick,%oskill),$s1(%nick,::)) $s2(%nick,User) $s1(%nick,$iif($right(%user,1) == ?,%user_s,%user)) $s2(%nick,Rank) $s1(%nick,$skill(%hash,%skill).rank) $s2(%nick,Points) $s1(%nick,$skill(%hash,%skill).lvl) goto clearup } if (%skill == Combat) { var %cmb = $combat.final($skill(%hash,attack).lvl,$skill(%hash,defence).lvl,$skill(%hash,strength).lvl,$skill(%hash,hitpoints).lvl,$skill(%hash,prayer).lvl,$skill(%hash,ranged).lvl,$skill(%hash,magic).lvl,$skill(%hash,summoning).lvl) var %cmbc = $calc($iif(*.* !iswm %cmb,$calc(%cmb +1),$ceil(%cmb)) - %cmb) $(%send,2) $s1(%nick,$lr(%nick,stats,name)) $s2(%nick,$iif($rsns(%nick,%user) == $true,%user,%nick)) $s1(%nick,$lr(%nick,stats,cmb)) $s2(%nick,%cmb) $& $s1(%nick,Attack) $s2(%nick,$skill(%hash,attack).lvl) $s1(%nick,Defence) $s2(%nick,$skill(%hash,defence).lvl) $s1(%nick,Strength) $s2(%nick,$skill(%hash,strength).lvl) $s1(%nick,HitPoints) $s2(%nick,$skill(%hash,hitpoints).lvl) $s1(%nick,Ranged) $s2(%nick,$skill(%hash,ranged).lvl) $s1(%nick,Magic) $s2(%nick,$skill(%hash,magic).lvl) $s1(%nick,Prayer) $s2(%nick,$skill(%hash,prayer).lvl) $s1(%nick,Summoning) $s2(%nick,$skill(%hash,summoning).lvl) $(%send,2) $s1(%nick,$lr(%nick,stats,ll) Attack) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 3 )))) $& $s1(%nick,Strength) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 3 )))) $& $s1(%nick,Defence) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 4 )))) $& $s1(%nick,HitPoints) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 4 )))) $& $s1(%nick,Prayer) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 8 )))) $& $s1(%nick,Summoning) $s2(%nick,$ceil($calc(( %cmbc ) / ( 1 / 8 )))) goto clearup } if (%skill == PestControl) { var %att = $skill(%hash,attack).lvl,%def = $skill(%hash,defence).lvl,%str = $skill(%hash,strength).lvl,%hp = $skill(%hash,hitpoints).lvl,%mag = $skill(%hash,magic).lvl,%ran = $skill(%hash,ranged).lvl,%pra = $skill(%hash,prayer).lvl var %attxp = $skill(%hash,attack).exp,%defxp = $skill(%hash,defence).exp,%strxp = $skill(%hash,strength).exp,%hpxp = $skill(%hash,hitpoints).exp,%magxp = $skill(%hash,magic).exp,%ranxp = $skill(%hash,ranged).exp,%praxp = $skill(%hash,prayer).exp ;PC = (Level*Level)/6 for Att, Str, Def, Hp, Magic, Range ;PC = (Level*Level)/12 for Prayer ;If more than 100 pts are traded in PC = ((Level*Level)/6)*.10)+((Level*Level)/6) if (%att != -) { var %attn = $calc((%att * %att) /6) | var %atta = $calc((((%att * %att) /6) * .10) + ((%att * %att)/6)) } if (%def != -) { var %defn = $calc((%def * %def) /6) | var %defa = $calc((((%def * %def) /6) * .10) + ((%def * %def)/6)) } if (%str != -) { var %strn = $calc((%str * %str) /6) | var %stra = $calc((((%str * %str) /6) * .10) + ((%str * %str)/6)) } if (%hp != -) { var %hpn = $calc((%hp * %hp) /6) | var %hpa = $calc((((%hp * %hp) /6) * .10) + ((%hp * %hp)/6)) } if (%ran != -) { var %rann = $calc((%ran * %ran) /6) | var %rana = $calc((((%ran * %ran) /6) * .10) + ((%ran * %ran)/6)) } if (%mag != -) { var %magn = $calc((%mag * %mag) /6) | var %maga = $calc((((%mag * %mag) /6) * .10) + ((%mag * %mag)/6)) } if (%pra != -) { var %pran = $calc((%pra * %pra) /12) | var %praa = $calc((((%pra * %pra) /12) * .10) + ((%pra * %pra)/12)) } var %atte = $iif(%att >= 99,$calc(200000000 - %attxp),$calc($exp($calc(%att +1)) - %attxp)) var %defe = $iif(%def >= 99,$calc(200000000 - %defxp),$calc($exp($calc(%def +1)) - %defxp)) var %stre = $iif(%str >= 99,$calc(200000000 - %strxp),$calc($exp($calc(%str +1)) - %strxp)) var %hpe = $iif(%hp >= 99,$calc(2000000000 - %hpxp),$calc($exp($calc(%hp +1)) - %hpxp)) var %rane = $iif(%ran >= 99,$calc(200000000 - %ranxp),$calc($exp($calc(%ran +1)) - %ranxp)) var %mage = $iif(%mag >= 99,$calc(200000000 - %magxp),$calc($exp($calc(%mag +1)) - %magxp)) var %prae = $iif(%pra >= 99,$calc(200000000 - %praxp),$calc($exp($calc(%pra +1)) - %praxp)) $(%send,2) $s1(%nick,$lr(%nick,stats,pc1l)) $s2(%nick,$iif($rsns(%nick,%user) == $true,%user,%nick)) $(%send,2) $iif(%attn,$s1(%nick,Attack) $s2(%nick,$ceil($calc(%atte / %attn)) $chr(40) $+ $ceil($calc(%atte / %atta)) $+ $chr(41))) $& $iif(%defn,$s1(%nick,Defence) $s2(%nick,$ceil($calc(%defe / %defn)) $chr(40) $+ $ceil($calc(%defe / %defa)) $+ $chr(41))) $& $iif(%strn,$s1(%nick,Strength) $s2(%nick,$ceil($calc(%stre / %strn)) $chr(40) $+ $ceil($calc(%stre / %stra)) $+ $chr(41))) $& $iif(%hpn,$s1(%nick,HitPoints) $s2(%nick,$ceil($calc(%hpe / %hpn)) $chr(40) $+ $ceil($calc(%hpe / %hpa)) $+ $chr(41))) $& $iif(%rann,$s1(%nick,Ranged) $s2(%nick,$ceil($calc(%rane / %rann)) $chr(40) $+ $ceil($calc(%rane / %rana)) $+ $chr(41))) $& $iif(%magn,$s1(%nick,Magic) $s2(%nick,$ceil($calc(%mage / %magn)) $chr(40) $+ $ceil($calc(%mage / %maga)) $+ $chr(41))) $& $iif(%pran,$s1(%nick,Prayer) $s2(%nick,$ceil($calc(%prae / %praa)) $chr(40) $+ $ceil($calc(%prae / %praa)) $+ $chr(41))) goto clearup } if (%skill == stats) { $(%send,2) $s1(%nick,$lr(%nick,stats,sf)) $s2(%nick,$iif($rsns(%nick,%user) == $true,%user,%nick)) $+ $s1(%nick,:) $(%send,2) $s1(%nick,Overall) $s2(%nick,$skill(%hash,overall).lvl) $s1(%nick,Attack) $s2(%nick,$skill(%hash,attack).lvl) $s1(%nick,Defence) $s2(%nick,$skill(%hash,defence).lvl) $s1(%nick,Strength) $s2(%nick,$skill(%hash,strength).lvl) $s1(%nick,HitPoints) $s2(%nick,$skill(%hash,hitpoints).lvl) $s1(%nick,Prayer) $s2(%nick,$skill(%hash,prayer).lvl) $s1(%nick,Magic) $s2(%nick,$skill(%hash,magic).lvl) $& $s1(%nick,Ranged) $s2(%nick,$skill(%hash,ranged).lvl) $s1(%nick,Cooking) $s2(%nick,$skill(%hash,cooking).lvl) $s1(%nick,Fishing) $s2(%nick,$skill(%hash,fishing).lvl) $s1(%nick,RuneCrafting) $s2(%nick,$skill(%hash,runecraft).lvl) $s1(%nick,Agility) $s2(%nick,$skill(%hash,agility).lvl) $s1(%nick,Construction) $s2(%nick,$skill(%hash,construction).lvl) $(%send,2) $s1(%nick,Herblore) $s2(%nick,$skill(%hash,herblore).lvl) $s1(%nick,Thieving) $s2(%nick,$skill(%hash,thieving).lvl) $s1(%nick,Crafting) $s2(%nick,$skill(%hash,crafting).lvl) $s1(%nick,Fletching) $s2(%nick,$skill(%hash,fletching).lvl) $s1(%nick,Slayer) $s2(%nick,$skill(%hash,slayer).lvl) $s1(%nick,Mining) $s2(%nick,$skill(%hash,mining).lvl) $& $s1(%nick,Smithing) $s2(%nick,$skill(%hash,smithing).lvl) $s1(%nick,Firemaking) $s2(%nick,$skill(%hash,firemaking).lvl) $s1(%nick,WoodCutting) $s2(%nick,$skill(%hash,woodcutting).lvl) $s1(%nick,Farming) $s2(%nick,$skill(%hash,farming).lvl) $s1(%nick,Hunter) $s2(%nick,$skill(%hash,hunter).lvl) $s1(%nick,Summoning) $s2(%nick,$skill(%hash,summoning).lvl) goto clearup } if (%skill = closest || %skill == furthest) { var %a = 1 while (%a <= $hget(%hash,0).item) { .dll WhileFix.dll WhileFix . var %itm = $hget(%hash,%a).item if (%itm == Overall || %itm == display || %itm == address || %itm == user || %itm == user_s || %itm == nick || %itm == skill || %itm == bh || %itm == bhr || %itm == duel) { noop } elseif ($skill(%hash,%itm).exp == -) { noop } elseif ($skill(%hash,%itm).lvl == 99) { noop } elseif (!$skill(%hash,%itm).exp) { noop } else { var %tmp = $skill(%hash,%itm).exp var %tmp2 = $skill(%hash,%itm).lvl var %tmp3 = $exp($calc(%tmp2 + 1)) var %perc = $calc((%tmp * 100) / %tmp3) var %nt = $calc($exp($calc(%tmp2 + 1)) - %tmp) if ((%nt < $gettok(%close,2,124) || %close == $null) && %skill == Closest) { var %close = $+(%a,$chr(124),%nt) } if ((%nt > $gettok(%close,2,124) || %close == $null) && %skill == Furthest) { var %close = $+(%a,$chr(124),%nt) } } ;echo -s %a - %itm - %tmp - %tmp2 - %nt - %close inc %a } if ($gettok(%close,1,124) == 0 || %close == $null) { $(%send,2) $s1(%nick,$lr(%nick,stats,aoe)) $s2(%nick,$lr(%nick,stats,cl)) $s1(%nick,$lr(%nick,stats,wrs)) | goto clearup } else { $(%send,2) $s2(%nick,$+($iif($rsns(%nick,%user) == $true,%user,%nick),'s)) $s1(%nick,$lr(%nick,stats,$iif(%skill == Closest,csl,fsl))) $s2(%nick,$hget(%hash,$gettok(%close,1,124)).item) $s1(%nick,$lr(%nick,stats,wj)) $s2(%nick,$bytes($gettok(%close,2,124),b) ( $+ $bytes(%perc,b) $+ $chr(37) $+ )) $s1(%nick,$lr(%nick,stats,ell)) $s2(%nick,$calc($skill(%hash,$hget(%hash,$gettok(%close,1,124)).item).lvl +1)) goto clearup } } if (!$hget($1,%skill) && %skill != Closest) { $(%send,2) $s1(%nick,The user) $iif(%nick,$rsns(%nick,%user) == $true,$s2(%nick,%user)) $s1(%nick,does not feature in the) $s2(%nick,%skill) $s1(%nick,hiscore table) | goto clearup } .tokenize 32 $remove($hget($1,%skill),$chr(44)) .var %disp var %b = 0,%a = 1 while (%target <= $skill(%hash,%skill).lvl) { .dll WhileFix.dll WhileFix . | inc %target 1 } var %nlp = $round($calc(($skill(%hash,%skill).exp - $exp($skill(%hash,%skill).lvl)) / ( $exp($calc($skill(%hash,%skill).lvl + 1)) - $exp($skill(%hash,%skill).lvl)) * 100),2) var %tlp = $round($calc(($skill(%hash,%skill).exp - $exp($skill(%hash,%skill).lvl)) / ( $exp(%target) - $exp($skill(%hash,%skill).lvl)) * 100),2) var %e2l = $iif($skill(%hash,%skill).lvl >= 99,$calc($iif(%skill = Overall,5000000000,200000000) - $3),$calc($exp(%target) - $3)) $(%send,2) $s1(%nick,$lr(%nick,stats,skill)) $s2(%nick,%skill) $s1(%nick,$lr(%nick,stats,user)) $s2(%nick,$iif($rsns(%nick,%user) == $true,%user,%nick)) $(%send,2) $s1(%nick,$lr(%nick,stats,rank)) $s2(%nick,$bytes($1,b)) $s1(%nick,$lr(%nick,stats,lvl)) $s2(%nick,$bytes($2,b)) $s1(%nick,$lr(%nick,stats,exp)) $s2(%nick,$bytes($3,b)) $clr_gsu(%nick,( $+ %nlp $+ $chr(37) to $calc($skill(%hash,%skill).lvl +1) $+ )) $s1(%nick,$lr(%nick,stats,xp2) $iif($skill(%hash,%skill).lvl < 99,Lvl $s2(%nick,%target),$s2(%nick,$lr(%nick,stats,prf))) $+ :) $s2(%nick,$bytes(%e2l,b)) $clr_gsu(%nick,( $+ %tlp $+ $chr(37) to %target $+ )) if (%item != 0) { if (%skill == attack || %skill == strength || %skill == defence) { var %skill = melee } if ($left(%item,1) == & || $left(%item,1) == ?) { var %m = $iif($left(%item,1) == &,r,w) | var %item = $right(%item,-1) } else { var %m = n } var %a = 1,%b = $iif($hfind(%skill,%item,0,%m) > 3,1,$v1) while (%a <= %b) { .dll WhileFix.dll WhileFix . var %out1 = $calc(%e2l / $gettok($hget(%skill,$hfind(%skill,%item,%a,%m)),2,124)),%out2 = $gettok($hget(%skill,$hfind(%skill,%item,%a,%m)),2,124) | $(%send,2) $s1(%nick,You will need to get) $s2(%nick,$replace($hfind(%skill,%item,%a,%m),_,$chr(32))) $s1(%nick,$lr(%nick,stats,ato)) $s2(%nick,$bytes($ceil(%out1),b)) $s1(%nick,$lr(%nick,stats,ta)) $s2(%nick,$bytes(%out2,b)) $s1(%nick,$lr(%nick,stats,etal)) $s2(%nick,%target) inc %a 1 } if ($hfind(%skill,%item,0,%m) > 3) { $(%send,2) $s1(%nick,Your item lookup returned a total of) $s2(%nick,$hfind(%skill,%item,0,%m)) $s1(%nick,matches. Due to this your search was truncated to the 1st match.) $s2(%nick,Please narrow your search for a more accurate result.) } goto clearup } if (%skill == overall || %e2l == 0) { goto clearup } if (%skill == attack || %skill == defence || %skill == strength) { var %skill = melee } if ($se(stats,out.lines) == NONE) { goto clearup } var %minlvl = $iif($se(stats,under) == all,0,$calc($skill(%hash,%skill).lvl - $se(stats,under))) var %maxlvl = $calc($skill(%hash,%skill).lvl + $se(stats,over)) while (%a <= $iif($ini(%show,0) >= $se(stats,out.lines),$iif($se(stats,out.lines) == ALL,$ini(%show,%skill,0),$ifmatch),$ifmatch)) { .dll WhileFix.dll WhileFix . var %ilvl = $readini(%show,$ini(%show,%a),lvl) if ((%ilvl >= %minlvl && %ilvl <= %maxlvl) || ($ini(%show,0) <= $calc($se(stats,out.lines) * $se(stats,out.amt)))) { var %disp = %disp $s1(%nick,$saka($ini(%show,%a))) $s2(%nick,$bytes($ceil($calc(%e2l / $readini(%show,$ini(%show,%a),exp))),b)) inc %b } if (%b >= $se(stats,out.amt)) { $(%send2,2) %disp var %b = 0 .unset %disp } inc %a } if (%disp) { $(%send2,2) %disp } :clearup if ($se(private,debug)) { var %a = 1 while (%a <= $hget(%hash,0).item) { .dll WhileFix.dll WhileFix . echo @debug # $+ %a $+ # :: Hash: %hash Item: $hget(%hash,%a).item Data: $hget(%hash,%a).data inc %a } } .hfree %hash .unset $($+(%,*,$remove(%hash,u)),1) if ($hget(%hash,compare)) { .hfree $($+(u,$hget(%hash,compare)),1) .unset $($+(%,*,$hget(%hash,compare)),1) } :skipnclear } on $*:TEXT:/^.(def|set)(name|rsn) (-s )?.{3,12}$/Si:#: { if (!$regex($1, /^[ $+ $se(trigger,private) $+ $se(trigger,public) $+ ]/Si)) { halt } .writeini -n RSN.ini $address($nick,3) rsn $remove($iif($2 == -s,$3-,$2-),$chr(36)) .writeini -n RSN.ini $address($nick,3) show $iif($2 == -s,$false,$true) .notice $nick $s1(%nick,$lr(%nick,stats,drsn)) $s2(%nick,$remove($iif($2 == -s,$3-,$2-),$chr(36))) $iif($2 == -s,$s1(%nick,$lr(%nick,stats,rsnh))) } on $*:TEXT:/^.rsn /Si:#: { if (!$regex($1, /^[ $+ $se(trigger,private) $+ $se(trigger,public) $+ ]/Si)) { halt } var %send = $iif($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) || $readini(chansetting.ini,$chan,public) == off,.notice $nick,.msg $chan) if (!$2 && $rsn($nick)) { $(%send,2) $s1($nick,RSN:) $s2($nick, $rsn($nick)) | halt } if ($2 !ison $chan) { halt } if (!$readini(RSN.ini,$address($2,3),rsn)) { $(%send,2) $s1(%nick,$lr($nick,stats,nstrsn)) $s2($nick,$2) | halt } if ($rsns($2) == $true) { $(%send,2) $s1($nick,$lr($nick,stats,trsnf)) $s2($nick,$2) $s1($nick,$lr($nick,stats,is)) $s2($nick,$iif($right($rsn($2),1) == ?,$2,$left($rsn($2),-1))) | halt } else { $(%send,2) $s1($nick,$lr($nick,stats,trsnf)) $s2($nick,$2) $s1($nick,$lr($nick,stats,ist)) $s2($nick,$lr($nick,stats,h)) } } alias -l gotonclear { var %hash = $1 .hfree %hash .unset $($+(%,*,$remove(%hash,u)),1) if ($hget(%hash,compare)) { .hfree $($+(u,$hget(%hash,compare)),1) .unset $($+(%,*,$hget(%hash,compare)),1) } } on $*:TEXT:/.{2}+/Si:#: { if (!$se(private,active)) { halt } if ($se(status,stats) == off) { halt } if (!$regex($1, /^[ $+ $se(trigger,private) $+ $se(trigger,public) $+ ]/Si)) { halt } if ($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) && $readini(chansetting.ini,$chan,private) == off) { halt } if (!$f2u($right($1,-1))) { halt } var %class = $+($r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9)) var %class2 = $+($r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9),$r(0,9)) hadd -m $($+(u,%class),2) nick $nick if ($f2u($right($1,-1)) == Compare) { if (!$f2u($2)) { $iif($regex($1,/^[ $+ $se(trigger,public) $+ ]/Si) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) $s1($nick,Error:) $s2($nick,$2) $s1($nick,is not a valid skill) | halt } if (!$3) { $iif($regex($1,/^[ $+ $se(trigger,public) $+ ]/Si) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) $s1($nick,Error:) $s2($nick,You must specify a user to compare with.) | halt } hadd -m $($+(u,%class),2) compare %class2 var %tmpusr2 = $iif(!$4,$3,$4) if ($+(*,$chr(38),*) iswm %tmpusr2) { if ($remove(%tmpusr2,$chr(38)) !ison $chan) { $($iif($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) || $readini(chansetting.ini,$chan,public) == off,.notice $nick,.msg $chan),2) $s1($nick,An) $s2($nick,Error) $s1($nick,occured when attempting to initiate a stats lookup) .gotonclear $($+(u,%class2),2) halt } %tmpusr2 = $rsn($remove(%tmpusr2,$chr(28))) if (!%tmpusr2) { $($iif($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) || $readini(chansetting.ini,$chan,public) == off,.notice $nick,.msg $chan),2) $s1($nick,An) $s2($nick,Error) $s1($nick,occured when attempting to initiate a stats lookup) .gotonclear $($+(u,%class2),2) halt } } hadd -m $($+(u,%class2),2) user $replace(%tmpusr2,$chr(32),_) hadd -m $($+(u,%class2),2) compare %class hadd -m $($+(u,%class2),2) skill $f2u($2) hadd -m $($+(u,%class2),2) nick $nick hadd -m $($+(u,%class2),2) completed No hadd -m $($+(u,%class2),2) address $address($nick,3) hadd -m $($+(u,%class),2) address $address($nick,3) hadd -m $($+(u,%class),2) skill $f2u($2) hadd -m $($+(u,%class),2) completed No hadd -m $($+(u,%class),2) user $replace($iif(!$4,$rsn(%tmpusr2),$3),$chr(32),_) hadd -m $($+(u,%class),2) user_s %tmpusr2 hadd -m $($+(u,%class2),2) display $iif($regex($1,/^[ $+ $se(trigger,public) $+ ]/Si) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) } else { var %rsn = $2-,%target = next noop $regex(target,$2-,/#([0-9]{1,2})/Si) noop $regex(item,$2-,/-i"(.+?)"/Si) if ($regml(item,0) >= 1) { var %item = $regml(item,1) | %rsn = $remove(%rsn,$+(-i",%item,")) } else { var %item = 0 } if ($regml(target,0) >= 1) { var %target = $regml(target,1) | %rsn = $remove(%rsn,$+($chr(35),%target)) } else { var %target = 0 } hadd -m $($+(u,%class),2) user_s $iif(!%rsn,$nick,$ifmatch) if ($+(*,$chr(38),*) iswm %rsn) { if ($remove(%rsn,$chr(38)) !ison $chan) { $($iif($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) || $readini(chansetting.ini,$chan,public) == off,.notice $nick,.msg $chan),2) $s1($nick,An) $s2($nick,Error) $s1($nick,occured when attempting to initiate a stats lookup) .gotonclear $($+(u,%class),2) halt } %rsn = $rsn($remove(%rsn,$chr(38))) } hadd -m $($+(u,%class),2) address $address($nick,3) hadd -m $($+(u,%class),2) skill $f2u($right($1,-1)) hadd -m $($+(u,%class),2) item %item hadd -m $($+(u,%class),2) target %target hadd -m $($+(u,%class),2) user $replace($rsn($nick,$iif(%rsn == $null,$null,%rsn)),$chr(32),_) if ($+(*,$chr(38),*) iswm %user && %rsn != $null) { if ($remove(%user,$chr(38)) !ison $chan) { $iif($regex($1,/^[ $+ $se(trigger,private) $+ ]/Si) || $readini(chansetting.ini,$chan,public) == off,.notice $nick,.msg $chan),2) $s1($nick,An) $s2($nick,Error) $s1($nick,occured when attemptign to initiate a stats lookup) .gotonclear $($+(u,%class),2) halt } } } hadd -m $($+(u,%class),2) display $iif($regex($1,/^[ $+ $se(trigger,public) $+ ]/Si) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick) .sockopen $+(stats.,%class) hiscore.runescape.com 80 if ($f2u($right($1,-1)) == Compare) { .sockopen $+(stats.,%class2) hiscore.runescape.com 80 } } on *:START: { echo -ts [Stats] Initiating data load... var %a = 1 while (%a <= $findfile($mircdirSkills,*.data,0)) { .hmake $left($gettok($findfile($mircdirSkills,*.data,%a),-1,92),-5) 100 .hload -s $left($gettok($findfile($mircdirSkills,*.data,%a),-1,92),-5) $+(",$findfile($mircdirSkills,*.data,%a),") inc %a } echo -ts [Stats] Data files successfully loaded. if (!$readini(Settings.ini,RegEx,cmb%)) { .writeini -n Settings.ini RegEx cmb% cmb% } if (!$readini(Settings.ini,RegEx,Summon)) { .writeini -n Settings.ini RegEx summon $+(summon,$chr(124),summoning,$chr(124),sum) } }