Giter Club home page Giter Club logo

heroes.replayparser's People

Contributors

barrett777 avatar koliva8245 avatar pjmagee avatar poma avatar roylancemichael avatar stanzilla avatar wakuflair avatar zemill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heroes.replayparser's Issues

Strange `MiscellaneousScoreResultEventDictionary` data.

I parsed a replay file to extract the map objectives data, and I know it will be stored in the player's ScoreResult -> MiscellaneousScoreResultEventDictionary.

But I found there are some strange data:
The map is Volskaya Foundry, and the replay parsed with no error.
But the MiscellaneousScoreResultEventDictionary data are:

		"MiscellaneousScoreResultEventDictionary": {
			"TeamTakedowns": 4,
			"Tier1Talent": 1,
			"Tier2Talent": 1,
			"Tier3Talent": 2,
                        ...
			"DragonNumberOfDragonCaptures": 0,
			"DragonShrinesCaptured": 0

They are the map objectives data of the Dragon Shire??
The same thing happed again when I parsed a Hanamura replay, this time the MinesSkullsCollected from Haunted Mines showed up.

Not able to get hero deaths for most replays

The current way I am getting hero deaths isn't very good. It is accurate, but only for older replays. In the current patch 35360, this method only works for 'Garden of Terror' replays.

Currently I am getting deaths from a replay.game.event cutscene event, which I believe is the screen shatter effect playing when a hero dies. I'm not sure why this is only in 'Garden of Terror.'

The best way to track hero unit deaths would be using the in game tracker event for unit deaths - unfortunately there is a known issue in Starcraft 2 which I believe is applying to hero units here:

"There's a known issue where revived units are not tracked, ..." (https://github.com/Blizzard/s2protocol)

The hero units in Heroes of the Storm do have a death event for the hero's first death, and as the above comment suggests, they no longer receive born/position/death events after their first death.

Until Blizzard fixes that, there may be another replay.game.event we can use for tracking deaths, but I haven't found it yet.

Parser Failing when reading replay as bytes with latest Hots patch

Alright, I figured out the issue with my Lambda parser. I read the replay in as bytes.

So, it throws error "Heroes.ReplayParser.MPQFiles.DetailedParsedException: 'Not Hero'"

throw new DetailedParsedException("Not Hero");

So to test the similar approach my Lambda parser uses, I changed the input file section to the following.

byte[] bytes = System.IO.File.ReadAllBytes(replayFile);
var (replayParseResult, replay) = DataParser.ParseReplay(bytes, ParseOptions.MediumParsing);

Kills, assists and deaths as doubles

Hello!

After using your library quite a lot, I came across replays involving Murky. Killing Murky only yields a quarter of a kill, and thus it takes four Murky kills for a complete takedown.

Is it possible to retrieve the number of kills, assists and deaths as doubles instead of integers, as it is shown in the in-game stats-board? This would allow more detailed analysis and insight.

Replay parsing exception

If system region format is set to Turkish (either Turkey or Cyprus), the line:

using (var mpqStream = archive.OpenFile(archive.Single(i => i.Filename == fileName)))

called from:
ReplayDetails.Parse(replay, GetMpqFile(archive, ReplayDetails.FileName), parseOptions.IgnoreErrors);

throws a "sequence contains no matching elements" exception

Document build

It's unclear how the build and packaging functions. Particularly, versioning is done in the GitVersion build task, but dotnet build doesn't function with this build task.

I can't find out how to create a local package and how to version it.

Unexpected Result on Replay

Issue for replay here and its due to this.

Instead of just a return and causing the replay be Unexpected Result, can't we just do

replay.ClientListByWorkingSetSlotID[i] = replay.Players[i];

ReplayHash always 0000-0000

Hi,

richTextBox1.AppendText(replay.ReplayHash.ToString());

This always returns a blank GUID - how do we uniquely identify a particular replay?

Stitches TimeCCdEnemyHeroes

I'm finding all my replays with a Stitches have the his (it's?) TimeCCdEnemyHeroes above 24 hours. I attached an example screenshot. It appears to be 24+ hours regardless of some of his CC talent/ult picks so it seems independent of builds. Any thoughts on why this could be?
image

Legal notice

You're violating Blizzard's EULA by parsing 'Hero of the Storm' game replays.

http://us.blizzard.com/en-us/company/legal/eula.html

Section 2. BLIZZARD’S OWNERSHIP.
A. Blizzard is the owner or licensee of all right, title, and interest in and to the Battle.net Client, Battle.net, the Games, Accounts, and all of the features and components thereof. Battle.net and the Games may contain materials licensed by third-parties to Blizzard, and these third-parties may enforce their ownership rights against you in the event that you violate this Agreement. The following components of Battle.net and/or the Games, are owned or licensed by Blizzard:

  • All recordings, Game replays, or reenactments of in-game matches, battles, duels, etc.;

ReplayTrackerEvents.Parse - Error "Unexpected data in tracker event"

Ben, good day!

I'm trying to parse locally my replies as in example code and getting error at the line "ReplayTrackerEvents.Parse" - "Unexpected data in tracker event".
Replay file for example: https://www.dropbox.com/s/ilzza52r0iyn5uf/TestReplay.StormReplay?dl=0
Code:

var bytes = File.ReadAllBytes(filename);
var replay = new Replay();
MpqHeader.ParseHeader(replay, filename);
ReplayInitData.Parse(replay, bytes);
ReplayTrackerEvents.Parse(replay, bytes);

Can you help me please, what am I doing wrong?

P.S.
And maybe I found in "Example Code" minor misprint:
MpqHeader.ParseHeader(replay, bytes); , second parameter should be "filename"?

Automate build

The build should be automated through CI with build configuration in the repo. I would contribute it, but I don't understand how the build works

Scaling issue on smaller monitor

Hey again,

Wasn't sure how best to report this as it is related to the actual website, not the parser.

Just refreshed the page and noticed the site now displays weird on my smaller monitor (17", 1280 x 1024 Res). Image attached - Notice everything is being pushed to the left side.

Tested in Chrome, Firefox, and IE, all have the same problem. Happens on all pages. Displays normally on my other monitor at any size.

No errors in console.

Did you update the CSS?

hotslogs scaling

Issue with Application

Hello there,

I was just experimenting with the parser and some local replays I have, and ended up getting an error. Was wondering if you could give me any insight into it please ?

Thanks
Jeremy

parser issue

console

.NET Core 1.0 support

Is it possible to do something to get .NET Core 1.0 support? I tried some stuff but SharpZipLib doesn't seem to want to work with it. But I'm not a dotnet person, so I'm mostly just confused by all of this and may have missed something obvious.

I'd like this because I want to run this project on AWS Lambda, which doesn't support 2.0 yet.

1.2.3 is breaking the API

v 1.2.3. is API breaking vs 1.2.2. The package seems to be packaged with semver (at least, according to the used plugins), which means the package major version should have changed to 2.0.0 per https://semver.org/

difficulty level for hard

Hi,
I think in ReplayAttributeEvents.cs the text for Difficulty.Hard is "hdvh" instead of "hard". At least in my replays I have this text when I choose Veteran. And I'm not sure if "insa" even exists in HotS.

Building v1.2.3 fails

Trying to build v1.2.3 fails for me with the following error:

"C:\Users\marti\source\hots\Heroes.ReplayParser\Heroes.ReplayParser.ConsoleApplication\ConsoleApplication.csproj" (default target) (1) ->
"C:\Users\marti\source\hots\Heroes.ReplayParser\Heroes.ReplayParser\Heroes.ReplayParser.csproj" (default target) (2:2) ->
(GetAssemblyVersion target) ->
  C:\Program Files\dotnet\sdk\3.1.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets(160,5): error MSB4044: The "GetAssemblyVersion" task was not given a value for the required parameter "NuGetVersion". [C:\Users\marti\source\hots\Heroes.ReplayParser\Heroes.ReplayParser\Heroes.ReplayParser.csproj]

    4 Warning(s)
    1 Error(s)

Time Elapsed 00:00:01.55

I build using MSBuild.exe Heroes.ReplayParser.ConsoleApplication/ConsoleApplication.csproj

Foole's MPQTool is distributed within the published package

Foole's MPQTool is published as source of this package. That's problematic for multiple reasons, among which:

  • It's plagiarism. The author is declared as only Ben Barrett, while the software was written by Foole
  • It conflicts with software written against other sources of MPQTool. If MPQTool is in some way a transitive dependency and you also have a dependency on this package, you will have clashing class names

Game event '15' unparsable

Hi @barrett777,

I am attempting to parse the 'replay.game.events' file and I find that an event with integer value 15 is causing a not implemented exception from the default handler in the event switch. Do you have any idea what the structure could be for event 15? There isn't anything in the sc2protocol repo...

Tracking deaths via replay.resumable.events

Hey there,

I don't really have any experience with this sort of thing but I have looking over the replays for the few last day to see if there is any way to track player deaths.

The one thing I have noticed is that the replay.resumable.events file contains a number of references to each player equal to the number of times they have died.

I would say I have found this to be ~80% accurate, but I have noticed (from my small sample group) that these are often for a Jaina/Raynor, so I believe most differences were caused by pet deaths. The only other factor I was able to identify when the count in the events file did not match the player death count was the player dying at the end of the match, so a death event may not have been recorded before the game was "over."

I am actually really interested in this project - But I am struggling a bit with how you are able to determine what the specific bit/byte references are, and how you are able to decode some of this gibberish.

Just wanted to share as an avid HotS player!

Open source hotslogs.com?

@barrett777, you provide a wonderful service for the HotS community with http://hotslogs.com and some of us would love to help give back.

Would you consider open sourcing http://hotslogs.com to accept pull requests? I know there's a bunch of UX improvements I'd love to personally incorporate, but I'm sure there are things others would love to contribute too. What about your own honey do list? Have you considered publishing that and letting the community cherry pick and contribute?

Thanks a bunch!

Map & Character hero in different languages

Hi how do you manage the map & character name on hotslogs as they are different for every localization?
Do you use a a map id / character id from replay.details or any other way?
thank you

How do you determine takedowns, deaths and score?

First off, really great work on this library! I'm surprised that it has received limited attention so far.

Is it currently possible to determine the final number of takedowns, deaths and the score of a player at the end of the game using this library? I dug through the game events and tracker events and didn't manage to find anything pertaining to these stats. I wanted to use this to write a tool that permits me to track my performance with each hero (wins/losses, takedowns/deaths/score per game, etc.).

The ClientList only seems to contain win/loss and hero data.

Thanks!

No release branches

Any chance you make release branches when a new stable version is available?

LAN Settings - Uses Proxy Information?

Not sure if this can be resolved or not, or maybe a bypass option?

I started using a PROXY in my Chrome and as soon as I did hotslogs no longer connected properly - (it's in EU).

I disabled it in LAN in chrome, and instantly all files uploaded successfully.

I'm assuming it's using a http connection settings provided via chrome/default browser - any chance of a bypass proxy/connection setting?

Ana Q hit rate calculator

Hi, how would I go about calculating the hit rate of Ana's q from a replay? I'm a veteran C# programmer, a few tips should be enough

Unable to parse replays of build 49838

Hello!

I've tried to parse several old replays with success, but all my replays with of ReplayBuild 49838 fails due to an IndexOutOfRangeException.

It seems that workingSetSlotID in ReplayInitData.Parse is set to 255, which is an invalid index for the array Replay.ClientListByWorkingSetSlotID of size 16.

I've attached two of the replays failing due to this error.

Replays.zip

Can't parse replay.game.events for most games with 'Lost Vikings' and 'Longboat Raid' talent selected

This popped up within the past few patches

Something has changed in the replay.game.events event structure, and it has to do with Lost Vikings and Longboat Raid.

It likely has to do with unit selection or movement. I spent some time trying to find it, but wasn't too easy. I'll look into it more in the future

For now, this means we can't parse talent selections for most replays with a 'Longboat Raid' Viking player

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.