Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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}]"
        )
Ejemplo n.º 6
0
# 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
Ejemplo n.º 7
0
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(