this is the halo2 stats grabber by DarthReven
i just added a dialog looks like it could have used one :)
;DarthReven's Halo 2 Stat Grabber
;dialog by: sean
menu * {
halo2 stats: dialog -md halo2_stats halo2_stats
}
dialog halo2_stats {
title "Stat Grabber"
size -1 -1 92 82
option dbu
box "Gamertag:", 1, 1 2 88 22
edit "", 2, 4 10 81 10
button "Overall", 3, 2 29 32 9, flat
button "Last 22 Games", 4, 37 29 52 9, flat
box "Clan Name:", 5, 1 42 88 22
edit "", 6, 5 50 80 10
button "Overall", 7, 1 68 32 9, flat
button "Last 22 Games", 8, 36 68 53 9, flat
}
on 1:dialog:halo2_stats:sclick:*: {
if ($did == 3) {
if ($did($dname,2) != $Null) {
halo2 -p -o $did($dname,2).text
}
}
if ($did == 4) {
if ($did($dname,2) != $Null) {
halo2 -p -g $did($dname,2).text
}
}
if ($did == 7) {
if ($did($dname,6) != $Null) {
halo2 -c -o $did($dname,6).text
}
}
if ($did == 8) {
if ($did($dname,6) != $Null) {
halo2 -c -g $did($dname,6).text
}
}
}
alias halo2 {
if (!$1) || (!$2) || (!$3) { echo $color(notice) -a Error - Invalid parameters: /halo2 -<p/c> -<o/g> <gamer tag/clan name> }
else {
if ($regex(pc,$1,/([pc])/ig)) && ($regex(og,$2,/([og])/ig)) {
if ($sock($+(halo2.,$3))) { sockclose $+(halo2.,$3) }
sockopen $+(halo2.,$3) www.bungie.net 80
sockmark $+(halo2.,$3) $+($me,/,$regml(pc,1),/,$regml(og,1),/,$replace($3-,$chr(32),$+(%,20)))
echo $color(info) -a [Halo 2] - Retreving Data on $iif($regml(pc,1) == p,player,clan) $3-
}
else { echo 4 -a Error - Invalid parameters: /halo2 -<o/g> <gamer tag> }
}
}
on *:sockopen:halo2.*: {
sockwrite -n $sockname GET $($halo2router($sock($sockname).mark).url,2) HTTP/1.1
sockwrite -n $sockname Host: www.Bungie.net
sockwrite -n $sockname $crlf
}
on *:sockread:halo2.*: {
var %tmp
sockread %tmp
if ($halo2router($sock($sockname).mark).pc == p) {
if ($halo2router($sock($sockname).mark).og == o) {
if (*<span id="dlHopperRanks__ctl*_HopperName">*</span>* iswm %tmp) { hadd -m Halo2Stat TEMP $remove($nohtml(%tmp),$chr(9)) }
elseif (*<span>*</span></span>* iswm %tmp) {
echo $color(info2) -a $+([,$hget(Halo2Stat,TEMP),]) - $remove($nohtml(%tmp),$chr(9))
hdel Halo2Stat TEMP
}
elseif (*<div class="ExpBar" style="width:*"><div class="ExpBarText" style="left:*">*</div></div>* iswm %tmp) { hadd Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$+(L,.,$remove($nohtml(%tmp),$chr(9))),95) }
elseif ($nohtml(%tmp) isnum) {
if ($numtok($hget(Halo2Stat,TEMP),95) == 2) { hadd Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$+(GP,.,$remove($nohtml(%tmp),$chr(9))),95) }
elseif ($v1 == 3) {
echo $color(info2) -a $+([,$gettok($hget(Halo2Stat,TEMP),1,95),]) - [Level] $mid($gettok($hget(Halo2Stat,TEMP),2,95),3) [Games Played] $mid($gettok($hget(Halo2Stat,TEMP),3,95),4) [Wins] $nohtml(%tmp) [Winning Percentage] $halo2router($mid($gettok($hget(Halo2Stat,TEMP),3,95),4),$nohtml(%tmp)).percent
hadd -m Halo2Stat TEMP_2 $iif($hget(Halo2Stat,TEMP_2),$calc($v1 + $mid($gettok($hget(Halo2Stat,TEMP),3,95),4)),$mid($gettok($hget(Halo2Stat,TEMP),3,95),4))
hadd -m Halo2Stat TEMP_3 $iif($hget(Halo2Stat,TEMP_3),$calc($v1 + $nohtml(%tmp)),$nohtml(%tmp))
hdel Halo2Stat TEMP
}
}
elseif (*<p class="rightSide"><b>Questions about Stats?</b></p>* iswm %tmp) {
echo $color(info2) -a [Total Games Played] $hget(Halo2Stat,TEMP_2) [Total Wins] $hget(Halo2Stat,TEMP_3) [Overall Win Percentage] $halo2router($hget(Halo2Stat,TEMP_2),$hget(Halo2Stat,TEMP_3)).percent
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
hfree Halo2Stat
sockclose $sockname
}
elseif (*</HTML>* iswm %tmp) {
echo $color(notice) -a [Error] - Gamertag $gettok($sock($sockname).mark,3,47) was not found
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
sockclose $sockname
}
}
else {
if (*<span><a id="RecentGames__ctl*_GameLink" class="span" href="/Stats/GameStats.aspx?gameID=*">*</a></span></td>* iswm %tmp) { hadd -m Halo2Stat TEMP $nohtml($v2) }
elseif (*<span id="RecentGames__ctl*_Date" class="span">*</span></td>* iswm %tmp) { hadd Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
elseif (*<span id="RecentGames__ctl*_Map" class="span">*</span></td>* iswm %tmp) { var %map $nohtml($v2) | hadd Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),%map,45) }
elseif (*<span id="RecentGames__ctl*_HopperName" class="span">*</span></td>* iswm %tmp) { hadd Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
elseif (*<span id="RecentGames__ctl*_Standing" class="span">*</span></td>* iswm %tmp) {
echo $color(info2) -a $halo2router($hget(Halo2Stat,TEMP)).pgs $nohtml(%tmp)
hinc -m Halo2Stat $+(TEMP_,$nohtml(%tmp))
}
elseif (*<td><span class="InvalidGame">* indicates that game's stats are unreliable</span></td>* iswm %tmp) {
echo $color(info2) -a [Game Finishes] - [1st Place] $calc($hget(Halo2Stat,TEMP_1st)) [2nd Place] $calc($hget(Halo2Stat,TEMP_2nd)) [3rd Place] $calc($hget(Halo2Stat,TEMP_3rd)) [4th Place] $calc($hget(Halo2Stat,TEMP_4th)) [5th Place] $calc($hget(Halo2Stat,TEMP_5th)) [6th Place] $calc($hget(Halo2Stat,TEMP_6th))
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
hfree Halo2Stat
sockclose $sockname
}
elseif (*<SPAN>There are no games available or the stats system is temporarily unavailable.</SPAN>* iswm %tmp) { echo $color(notice) -a [Error] - Gamertag $halo2router($sock($sockname).mark).query was not found }
}
}
else {
if ($halo2router($sock($sockname).mark).og == o) {
if (*<span id="dlHopperRanks__ctl1_HopperName">*</span>* iswm %tmp) { hadd -m Halo2Stat TEMP $nohtml(%tmp) }
elseif (*<span id="dlHopperRanks__ctl1_lblNoLevel"><span>*</span></span>* iswm %tmp) {
echo 4 -a [Clan] - $halo2router($sock($sockname).mark).query has not played any games.
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
sockclose $sockname
}
elseif (*<div class="ExpBar" style="width:50"><div class="ExpBarText" style="left:20">*</div></div>* iswm %tmp) { hadd -m Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
elseif (*<td align="center"><span>*</span></td>* iswm %tmp) && ($nohtml(%tmp) isnum) {
if ($numtok($hget(Halo2Stat,TEMP),45) == 3) {
echo $color(info2) -a $halo2router($hget(Halo2Stat,TEMP)).cor $nohtml(%tmp) [Winning Percentage] $halo2router($gettok($hget(Halo2Stat,TEMP),3,45),$nohtml(%tmp)).percent
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
sockclose $sockname
}
else { hadd -m Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
}
}
else {
if (*<td><span><a id="dlClanGames__ctl*_GameLink" href="*">*</a></span></td>* iswm %tmp) { hadd -m Halo2Stat TEMP $nohtml(%tmp) }
elseif (*<td><span id="dlClanGames__ctl*_Date">*</span></td>* iswm %tmp) { hadd -m Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
elseif (*<td><span id="dlClanGames__ctl*_Map">*</span></td>* iswm %tmp) { hadd -m Halo2Stat TEMP $addtok($hget(Halo2Stat,TEMP),$nohtml(%tmp),45) }
elseif (*<td><span id="dlClanGames__ctl*_lblHopperName" class="span">*</span></td>* iswm %tmp) {
echo $color(info2) -a $halo2router($hget(Halo2Stat,TEMP)).cgs $nohtml(%tmp)
}
elseif (*<p class="rightSide"><b>Questions about Stats?</b></p>* iswm %tmp) {
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
sockclose $sockname
}
elseif (*<h2>Object moved to* *here</a>.</h2>* iswm %tmp) {
echo 4 -a [Clan] - $halo2router($sock($sockname).mark).query has not played any games.
echo $color(info) -a [Halo 2] - END Data Retreval on $iif($gettok($sock($sockname).mark,2,47) == p,player,clan) $halo2router($sock($sockname).mark).query
sockclose $sockname
}
}
}
}
on *:sockclose:halo2.*: { if ($hget(Halo2Stat)) { hfree Halo2Stat } }
alias halo2router {
if ($prop) {
if ($v1 == url) {
if ($gettok($1,2,47) == p) {
if ($gettok($1,3,47) == o) { return $+(/Stats/PlayerStats.aspx?player=,$gettok($1,4,47)) }
else { return $+(/Stats/PlayerGameList.aspx?player=,$gettok($1,4,47)) }
}
else {
if ($gettok($1,3,47) == o) { return $+(/Stats/ClanStats.aspx?clan=,$gettok($1,4,47)) }
else { return $+(/Stats/ClanGameList.aspx?clan=,$gettok($1,4,47)) }
}
}
elseif ($v1 == pc) { return $gettok($1,2,47) }
elseif ($v1 == og) { return $gettok($1,3,47) }
elseif ($v1 == query) { return $replace($gettok($1,4,47),$+(%,20),$chr(32)) }
elseif ($v1 == pgs) {
tokenize 45 $1
return [Game] $1 [Time] $2 [Map] $3 [Game Type] $4 [Position]
}
elseif ($v1 == cor) {
tokenize 45 $1
return [Playlist] $1 [Level] $2 [Games Played] $3 [Wins]
}
elseif ($v1 == cgs) {
tokenize 45 $1
return [Game] $1 [Time] $2 [Map] $3 [Playlist]
}
elseif ($v1 == percent) { return $+($round($calc($calc($2 / $1) * 100),1),%) }
}
}
alias -l nohtml {
var %a,%b
%b = $regsub($1,/[^<]*>|<[^>]*>|<[^>]*/g,$chr(32),%a)
return $iif($chr(9) isin %a,$remove(%a,$chr(9)),%a)
}