Giter VIP home page Giter VIP logo

parser's People

Contributors

27bslash avatar albertcui avatar arch1baald avatar argn0 avatar bobsaget4lyfe avatar builder-247 avatar dmzda avatar evaldobratti avatar howardchung avatar jlleitschuh avatar lancebendo avatar markxy avatar nul0m avatar pavelcore avatar psimage avatar slavox avatar steakscience avatar thot-experiment avatar whoeza 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

parser's Issues

How to find replay_salt?

Hi all

I find the steamapi GetMatchDetails seem no longer provide match replay_salt. How can I get this info now?

Question about Quickstart

I tried to run Main.java and then post the .dem file via cmd and got the error message says that
image

Then I tried to use docker run the parser and post .dem file via cmd but got an error message (I am a beginner to docker):
image

Could you please tell me how should I run the parser correctly? Thanks for any help you can provide!

AbilityList: For loop ends 1 too early

Here, it should be 32 instead of 31

private List<Ability> getHeroAbilities(Context ctx, Entity eHero) {
List<Ability> abilityList = new ArrayList<>(31);
for (int i = 0; i < 31; i++) {
try {
Ability ability = getHeroAbilities(ctx, eHero, i);
if(ability != null) {
abilityList.add(ability);
}
}

This is because there are abilities at 31. Looping with i < 31 will skip over the last ability

* Uses "EntityNames" string table and Entities processor
* @param ctx Context
* @param eHero Hero entity
* @param idx 0-31 = Hero abilities including talents and special event items
* @return {@code null} - empty slot. Throws @{@link UnknownItemFoundException} if item information can't be extracted

Garbage data for sourcename?

hi,
I am trying to understand the parser output. For example:

{
  "time": 676,
  "type": "DOTA_COMBATLOG_MODIFIER_ADD",
  "value": 1,
  "attackername": "npc_dota_hero_bounty_hunter",
  "targetname": "npc_dota_hero_bristleback",
  "sourcename": "npc_dota_hero_lycan",
  "targetsourcename": "dota_unknown",
  "attackerhero": true,
  "targethero": true,
  "attackerillusion": false,
  "targetillusion": false,
  "inflictor": "modifier_bounty_hunter_track"
}

I read this as bounty hunter tracked bristleback, but what has lycan to do with this? What is the sourcename?

Brisleback and lycan are on the same team, so no lotus orb shenanigans.

Meaning of actions

Hi,
I recently study data 2 parser.
I tried your parser and I got some output, is there any documentation for meanings?
eg.
{"time":285,"type":"actions","key":"1","slot":0}
whats key:1 means?
and gold_reason, xp_reason?
@howardchung
Thank you very much!

Exception while parsing

Hello. I am using jdk 12.0.2 The text of the error is as follows:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
skadistats.clarity.ClarityException: oops. no provider found for required usage point interface opendota.processors.warding.OnWardExpired
at skadistats.clarity.processor.runner.ExecutionModel.requireProvider(ExecutionModel.java:123)
at skadistats.clarity.processor.runner.ExecutionModel.requireEventListener(ExecutionModel.java:135)
at skadistats.clarity.processor.runner.ExecutionModel.requireProcessorClass(ExecutionModel.java:79)
at skadistats.clarity.processor.runner.ExecutionModel.addProcessor(ExecutionModel.java:49)
at skadistats.clarity.processor.runner.AbstractRunner.addProcessorsToModel(AbstractRunner.java:37)
at skadistats.clarity.processor.runner.AbstractRunner.addProcessorsToModel(AbstractRunner.java:35)
at skadistats.clarity.processor.runner.AbstractRunner.createExecutionModel(AbstractRunner.java:28)
at skadistats.clarity.processor.runner.AbstractRunner.initWithProcessors(AbstractRunner.java:43)
at skadistats.clarity.processor.runner.AbstractFileRunner.initAndRunWith(AbstractFileRunner.java:37)
at skadistats.clarity.processor.runner.SimpleRunner.runWith(SimpleRunner.java:36)
at opendota.Parse.(Parse.java:177)
at opendota.Main$MyHandler.handle(Main.java:27)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:692)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:664)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)

Wards killed without killer

I was checking if #26 was working as intended and still found some wards that did not live their whole life without a proper killer.
After analysing some replays we have still have 2 problems:

  • 4204756967 a lot of wards die at 27:33, that is the ending of the match, should we show something different in this case?
  • 4203845546 some wards were killed by the creeps (mirana sentry@24:42, aa observer@25:49). I think showing a creep icon would be nice here.

IOException: given stream does not seem to contain a valid replay

i have error while trying to parse ANY replay:

java.io.IOException: given stream does not seem to contain a valid replay
	at skadistats.clarity.source.Source.readEngineType(Source.java:165)
	at skadistats.clarity.processor.runner.SimpleRunner.<init>(SimpleRunner.java:31)
	at opendota.Parse.<init>(Parse.java:177)
	at opendota.Main$MyHandler.handle(Main.java:27)
	at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
	at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)
	at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
	at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:692)
	at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
	at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:664)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:835)

steps to reproduce:

[dropnz@home]$ wget http://replay138.valve.net/570/5135152728_2083094372.dem.bz2
[dropnz@home]$ bunzip2 5135152728_2083094372.dem.bz2
[dropnz@home]$ curl localhost:5600 --data-binary 5135152728_2083094372.dem

Extract player's Dota Plus hero level

It's stored in CPlayerLocalDota, I've spent a few hours now trying to add it myself but my unfamiliarity with clarity (and java) has made the task rather hard.

So I'd appreciate if someone could point me to the right direction or even add it themselves.

Provider Error when parsing replay

I used to have this running a couple years ago for a sideproject. Wanted to pick it back up and grabbed a new version of this parser and reused parts of my old code. When posting a current replay to the parser I keep getting thrown this Exception:

skadistats.clarity.ClarityException: oops. no provider found for required usage point interface opendota.processors.warding.OnWardKilled

I read in #29 that someone was having a similar problem in 2019, however they were running a wrong jdk version. To the best of my knowledge I'm running JDK 8.

I'd love if someone could chime in and help me figure this out.

Where to find replay salt

At your site in docs.opendota I found a method where you get information about the match, along with its replica, as well as more rich information than the public API Dota2 provides. Could show the site of your when you get replay salt?

EOFException with new dem-files

This might have something to do with #32 as it is also related to the format of new dem-files, but I'm getting a bit different error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.io.EOFException
	at skadistats.clarity.source.InputStreamSource.readBytes(InputStreamSource.java:61)
	at skadistats.clarity.processor.packet.PacketReader.readFromSource(PacketReader.java:15)
	at skadistats.clarity.model.engine.AbstractDotaEngineType$1.parse(AbstractDotaEngineType.java:86)
	at skadistats.clarity.processor.reader.InputSourceProcessor.processSource(InputSourceProcessor.java:177)
	at skadistats.clarity.event.AbstractInvocationPoint.invoke(AbstractInvocationPoint.java:86)
	at skadistats.clarity.event.Event.raise(Event.java:37)
	at skadistats.clarity.processor.runner.AbstractFileRunner.initAndRunWith(AbstractFileRunner.java:39)
	at skadistats.clarity.processor.runner.SimpleRunner.runWith(SimpleRunner.java:36)
	at opendota.Parse.<init>(Parse.java:177)
	at opendota.Main$MyHandler.handle(Main.java:27)
	at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
	at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
	at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
	at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
	at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
	at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

The parser works OK with the older dem-files like this

Pick Order

The information on pick order seems to be in the replay now. Feature request for adding hero pick order to the JSON log events. This is something that could be added to the web UI at some point as well.

I keep getting SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" with the docker build. help plz

Hi, Ive seen a few issues like this that have been closed but they all seem not to be running your docker image.
Im going to try and be through here so that my steps are clear and also that it helps perhaps in you understand where my problem is.

I was able to build the docker image which i named odotaparser with command
sudo docker build -t odotaparser .

I then run the container with the 5600 container port linkled to the 8000 port on localhost
docker run -p 0.0.0.0:8000:5600 odotaparser

i can clearly see with netstat -ntlp that there indeed is a port 8000 open
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
tcp6 0 0 :::8000 :::* LISTEN -

I then try and send the dem file from another terminal with the command
curl localhost:8000 --data-binary "/home/stevan/Workplace/junk/parser-master/5628067723_202531792.dem"

the dem file was downloaded from https://www.opendota.com/matches/5628067723

and i get the error in the docker run terminal
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.io.IOException: given stream does not seem to contain a valid replay
at skadistats.clarity.source.Source.readEngineType(Source.java:165)
at skadistats.clarity.processor.runner.SimpleRunner.(SimpleRunner.java:31)
at opendota.Parse.(Parse.java:180)
at opendota.Main$MyHandler.handle(Main.java:27)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Any idea what im doing wrong here or what the problem is? Ive tried a few replays and its always the same.

Thank you

[Feature] Match Skill Level

Currently on a players page in the match list each match is listed as having an unknown skill.
image

After reviewing the web repo I don't believe this is a bug. It appears that the field is never populated with any data. I checked the clarity protobuf repo and found something that looked promising called AverageSkill. After extracting the value on a few replays I believe the field is dead as the value is always 0.
image
image

I checked dotabuff and iirc they used to have a skill rating associated with every match and now it looks like they are using average rank.
image

After trying to figure out which protobuf value they are using to pull the average rank I came up blank and was hoping someone else would have an idea on what to do. I think this is a cool stat to have and I would like to have it visible on opendota.

Metadata available for the parsed data json?

Hi, is there a metadata available for the parsed data.

There are a lot of variables describes who's meaning is difficult to interpret. So is there any documentation available like that?

Example "type":"interval", from what I have derived it is just logging the status as time progresses i.e increment in gold, etc. However some others are very difficult to interpret.

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.