ggtracker / sc2reader

Extracts gameplay information from Starcraft II replay files
http://pypi.python.org/pypi/sc2reader
MIT License
147 stars 143 forks source link

How can I get the values inside of PlayerStatsEvent? #173

Open bw-leran opened 2 years ago

bw-leran commented 2 years ago

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!

Andrene commented 2 years ago

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

https://github.com/ggtracker/sc2reader/blob/12634e133060ef8b8847b06974dcfc75e0e75b23/sc2reader/events/tracker.py#L57

NumberPigeon commented 1 year ago

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

cclauss commented 1 year ago

Go to... https://github.com/ggtracker/sc2reader/blob/12634e133060ef8b8847b06974dcfc75e0e75b23/sc2reader/events/tracker.py#L277-L278 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))
NumberPigeon commented 1 year ago

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