Open onlinehunter opened 3 months ago
Thanks for finding this. Probably the best thing to do here is to say a team is in a timeout any time between a timeout start even and a round start. I will move to use that model for now, but might be worth talking with LaihoE about the demoparser library. This will be fixed in b3!
Thank you. Yes, it can be a problem or bug on the demoparser2 side.
I'm using awpy2 dev in my project, specifically awpy==2.0.0b2 from the pip repository. I've encountered an issue with the
parse_kills(events: dict[str, pd.DataFrame])
method where it filters out non-play ticks using theremove_nonplay_ticks(kill_df)
method.In one of the demos, I noticed that this function incorrectly filters out some kills during gameplay. Upon further investigation, I found that approximately one second before the final kill and the round end, events are marked with
is_ct_timeout=True
.Here is the FACEIT demo: https://www.faceit.com/en/cs2/room/1-0f23ea46-6beb-4d50-8728-eed8d87bb8a8
For instance, take round 1. This is the result produced by the current code of awpy==2.0.0b2:
I adjusted the code to remove non-play moments filtering and added
is_terrorist_timeout
andis_ct_timeout
fields to the result returned byparse_kills
. This is the new result:As seen, the final kill at tick 7933 is filtered out by the current code of awpy==2.0.0b2, because
is_ct_timeout=True
at the moment of this tick.Upon further analysis, I concluded that
is_ct_timeout=True
andis_terrorist_timeout=True
flags are set when the team had been voted for a timeout, not when the timeout actually starts.This causes incorrect filtering of non-play ticks.