DarthReven's Halo2 Grabber

By sean on Mar 10, 2006

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)
}

Comments

Sign in to comment.
Zxmbie   -  Mar 20, 2006

Nice, thats the sex.

 Respond  
sean   -  Mar 14, 2006

yeh, i thought about doing something like that but i got lazy :P

 Respond  
DarthReven   -  Mar 11, 2006

One sugestion for your dialog actually have the information routed to the dialog itself

 Respond  
DarthReven   -  Mar 10, 2006

Well i never have been one for Dialogs but looks good

 Respond  
sean   -  Mar 10, 2006

lol yep less work for him :P

 Respond  
Gex   -  Mar 10, 2006

Very nice Sean Darthreven should be happy lol

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.