ggtracker/sc2reader

How can I get the values inside of PlayerStatsEvent?

bw-leran opened this issue · 4 comments

I'm able to get the normal events out of the replays, but when I print it using the following:

  replay = sc2reader.load_replay(
      'path_here',
      engine=sc2reader.engine.GameEngine(plugins=[ContextLoader(), APMTracker(), SelectionTracker()]))
  
  for r in replay.events:
      print(r)

I see the "Stats Update" every 10 seconds like expected, but I can't find a way to actually print out those stats? I'm interested in seeing the player's minerals, vespene gas, etc.

Hope someone can point me in the right direction, thanks!

This should give you some help hopefully. This has all the various attributes for a PlayerStatsEvent.

class PlayerStatsEvent(TrackerEvent):

I guess you need to filter the events manually and extract interesting data yourself.

Go to...

def __str__(self):
return self._str_prefix() + "{0: >15} - Stats Update".format(str(self.player))

After that add...

    def __repr__(self) -> str:
        return f"{self.player}: minerals: {self.minerals_current}, vespene: {self.vespene_current}"

Then replace your print loop with...

print("\n".join(repr(event) for event in replay.events))

Now you might want to have a look on sc2reader-plugins, and use PlayerStatsTracker, then all the interesting infos in PlayerStatsEvent will be attached to the player objects