def init(): # Create timestamp dict def db_match(match): global oldest _match_stamps[match["_id"]] = match["round_stamps"][0] oldest = match["round_stamps"][0] if oldest == 0 else min( match["round_stamps"][0], oldest) db.get_all_elements(db_match, "matches")
def get_match_logs(): db.get_all_elements(DbMatch.new_from_data, "match_logs") average = list() for m in _all_db_matches: try: average.append(m.start - m.launch) except KeyError: pass print(f"mean: {statistics.mean(average)}") print(f"median: {statistics.median(average)}") std = np.std(average) print(statistics.quantiles(average)) print(std)
def get_match_stats(): teams_scores = [0, 0] win_nb = [0, 0] db.get_all_elements(DbMatch.new_from_data, "matches") for m in _all_db_matches: t0 = m.data["teams"][0]["score"] t1 = m.data["teams"][1]["score"] teams_scores[0] += t0 teams_scores[1] += t1 if t1 >= t0: win_nb[1] += 1 else: win_nb[0] += 1 print(teams_scores) print(win_nb)
def fill_player_stats(): all_players = dict() db.get_all_elements(DbMatch.new_from_data, "matches") for m in _all_db_matches: for tm in m.data["teams"]: for p in tm["players"]: if p["discord_id"] not in all_players: all_players[p["discord_id"]] = PlayerStat( p["discord_id"], "N/A") all_players[p["discord_id"]].add_data( m.id, m.data["round_length"] * 2, p) la = list() for x in all_players.values(): print(f"add {x.id}") la.append(x.get_data()) db.force_update("player_stats", la)
def get_best_net(): players = dict() db.get_all_elements(DbMatch.new_from_data, "matches") for m in _all_db_matches: if m.match.data.round_length > 10: print("skipping 15 min") continue invalid = False for tm in m.match.data.teams: for p in tm.players: if p.net == 0 and p.kills == 0 and p.deaths == 0: print("skipping invalid") invalid = True break if invalid: break if invalid: continue if abs(m.match.data.teams[0].score - m.match.data.teams[1].score) > 30: continue for tm in m.match.data.teams: for p in tm.players: n = NetScore(p.id, p.kills, m.match.id) if p.id not in players: players[p.id] = n elif p.kills > players[p.id].net: players[p.id] = n p_list = list(players.values()) srt = sorted(p_list, key=operator.attrgetter("net"), reverse=True) for s in srt[:15]: print( f"Player {s.player.name} [{s.player.id}, in match {s.match}, kills: {s.net}]" )
# Internal imports import modules.config as cfg from modules.database import force_update, init as db_init, get_all_elements import classes import pathlib # Find if we are in test mode or in production if os.path.isfile(f"{pathlib.Path(__file__).parent.absolute()}/test"): LAUNCHSTR = "_test" else: LAUNCHSTR = "" # Init config file and database, get all weapons currently in db cfg.get_config(LAUNCHSTR) db_init(cfg.database) get_all_elements(classes.Weapon, "static_weapons") item_type_id = 26 # weapon # List of all categories we_cats = { 2: 'Knife', # DET 3: 'Pistol', # DET 8: 'Carbine', # DET 7: 'Assault Rifle', # DET 139: 'Infantry Abilities', # BAN 4: 'Shotgun', # BAN 6: 'LMG', # DET 13: 'Rocket Launcher', # NP, DET 11: 'Sniper Rifle', # DET 18: 'Explosive', # BAN
import numpy as np import modules.tools as tools from match.classes import Match from classes import Player import modules.config as cfg import modules.database as db if os.path.isfile("test"): LAUNCHSTR = "_test" else: LAUNCHSTR = "" cfg.get_config(LAUNCHSTR) db.init(cfg.database) db.get_all_elements(Player.new_from_data, "users") def get_all_stats(): all_stats = list() for p in Player.get_all_players_list(): loop = asyncio.get_event_loop() stat_player = loop.run_until_complete( PlayerStat.get_from_database(p.id, p.name)) all_stats.append(stat_player) print("Highest Kills per match:") key = operator.attrgetter("kpm") sorted_stats = sorted(all_stats, key=key, reverse=True) for s in sorted_stats[:5]: print(