Пример #1
0
    def on_score(self, e):

        if e.player not in self.kitScores:
            self.kitScores[e.player] = collections.Counter()
            self.kitScores[e.player][kits.ASSAULT] = 0
            self.kitScores[e.player][kits.ANTI_TANK] = 0
            self.kitScores[e.player][kits.ENGINEER] = 0
            self.kitScores[e.player][kits.MEDIC] = 0
            self.kitScores[e.player][kits.SNIPER] = 0
            self.kitScores[e.player][kits.SPEC_OPS] = 0
            self.kitScores[e.player][kits.SUPPORT] = 0

        kit = model_mgr.get_kit(e.player.kit_id).kit_type
        if kit not in self.kitScores[e.player]:
            return  #empty kit

        self.kitScores[e.player][kit] += e.value

        #change to use numpy?
        scores = []
        totalScore = 0
        for kit in self.kitScores[e.player]:
            score = self.kitScores[e.player][kit]
            if score < 1:
                return  #ignore if player unable to score a point with each kit
            scores.append(score)
            totalScore += score

        avg = totalScore / (len(scores) * 1.0)
        totalDev = 0
        for score in scores:
            totalDev += (score - avg) * (score - avg)

        self.results[e.player] = round(
            math.sqrt(totalDev / (len(scores) * 1.0)))
Пример #2
0
    def on_score(self, e):

        if e.player not in self.kitScores:
            self.kitScores[e.player] = collections.Counter()
            self.kitScores[e.player][kits.ASSAULT] = 0
            self.kitScores[e.player][kits.ANTI_TANK] = 0
            self.kitScores[e.player][kits.ENGINEER] = 0
            self.kitScores[e.player][kits.MEDIC] = 0
            self.kitScores[e.player][kits.SNIPER] = 0
            self.kitScores[e.player][kits.SPEC_OPS] = 0
            self.kitScores[e.player][kits.SUPPORT] = 0

        kit = model_mgr.get_kit(e.player.kit_id).kit_type
        if kit not in self.kitScores[e.player]:
            return #empty kit

        self.kitScores[e.player][kit] += e.value

        #change to use numpy?
        scores = []
        totalScore = 0
        for kit in self.kitScores[e.player]:
            score = self.kitScores[e.player][kit]
            if score < 1:
                return #ignore if player unable to score a point with each kit
            scores.append(score)
            totalScore += score

        avg = totalScore / (len(scores) * 1.0)
        totalDev = 0
        for score in scores:
            totalDev += (score - avg) * (score - avg)

        self.results[e.player] = round(math.sqrt(totalDev / (len(scores) * 1.0)))
Пример #3
0
    def get_kit(self, id):
        '''
        Provides details for a specific kit based on the given kit identifier.

        Args:
           id (string): The unique identifier of a kit.

        Returns:
            kit (object): Detailed information for a specific kit.
        '''

        # Get the model for the requested kit
        kit = model_mgr.get_kit(id)
        if not kit: raise cherrypy.HTTPError(404)

        # Get the stats for the requested kit
        kit_stats = stat_mgr.get_kit_stats(kit)

        # Build a list of column descriptors
        columns = [{
            'name': 'Players',
            'data': 'player'
        }, {
            'name': 'Score',
            'data': 'number',
            'sorted': False
        }, {
            'name': 'Kills',
            'data': 'number'
        }, {
            'name': 'Deaths',
            'data': 'number'
        }]

        # Build a list of kit statistics
        rows = list()
        for player in kit_stats.players:
            if player != models.players.EMPTY:
                object_stats = kit_stats.players[player]
                player_tuple = {
                    'id': player.id,
                    'name': player.name,
                    'photo': player.photo_s
                }
                rows.append([
                    player_tuple, object_stats.score, object_stats.kills,
                    object_stats.deaths
                ])

        # Sort the results by score
        rows.sort(key=lambda r: r[1], reverse=True)

        return {
            'id': kit.id,
            'name': kit.name,
            'columns': columns,
            'rows': rows
        }
Пример #4
0
    def on_kill(self, e):

        # Ignore suicides and team kills
        if not e.valid_kill:
            return

        attacker_kit = model_mgr.get_kit(e.attacker.kit_id)
        if attacker_kit.kit_type == MEDIC:
            self.results[e.victim] += 1
Пример #5
0
    def on_kill(self, e):

        # Ignore suicides and team kills
        if not e.valid_kill:
            return

        attacker_kit = model_mgr.get_kit(e.attacker.kit_id)
        if attacker_kit.kit_type == MEDIC:
            self.results[e.victim] += 1
Пример #6
0
    def __init__(self, tick, values):
        BaseEvent.__init__(self, tick, values, 3)

        self.player = model_mgr.get_player_by_name(values[0])
        self.player_pos = event_mgr.parse_pos(values[1])
        self.kit = model_mgr.get_kit(values[2])

        event_mgr.get_history(self.player).add_event(self)
        event_mgr.get_history(self.kit).add_event(self)
Пример #7
0
    def on_kill(self, e):

        # Ignore suicides and team kills
        if not e.valid_kill:
            return

        # Check whether the kill weapon belongs to the engineer kit
        attacker_kit = model_mgr.get_kit(e.attacker.kit_id)
        if attacker_kit.kit_type == ENGINEER:
            if e.weapon.id in attacker_kit.weapon_ids:
                self.results[e.attacker] += 1
Пример #8
0
    def on_kill(self, e):

        # Ignore suicides and team kills
        if not e.valid_kill:
            return

        # Check whether the kill weapon belongs to the sniper kit
        attacker_kit = model_mgr.get_kit(e.attacker.kit_id)
        if attacker_kit.kit_type == SNIPER:
            if e.weapon.id in attacker_kit.weapon_ids:
                self.results[e.attacker] += 1
Пример #9
0
    def get_kit(self, id):
        '''
        Provides details for a specific kit based on the given kit identifier.

        Args:
           id (string): The unique identifier of a kit.

        Returns:
            kit (object): Detailed information for a specific kit.
        '''

        # Get the model for the requested kit
        kit = model_mgr.get_kit(id)
        if not kit: raise cherrypy.HTTPError(404)

        # Get the stats for the requested kit
        kit_stats = stat_mgr.get_kit_stats(kit)

        # Build a list of column descriptors
        columns = [{ 'name': 'Players', 'data': 'player' },
                { 'name': 'Score', 'data': 'number', 'sorted': False },
                { 'name': 'Kills', 'data': 'number' },
                { 'name': 'Deaths', 'data': 'number' }]

        # Build a list of kit statistics
        rows = list()
        for player in kit_stats.players:
            if player != models.players.EMPTY:
                object_stats = kit_stats.players[player]
                player_tuple = {
                    'id': player.id,
                    'name': player.name,
                    'photo': player.photo_s
                }
                rows.append([player_tuple, object_stats.score,
                        object_stats.kills, object_stats.deaths])

        # Sort the results by score
        rows.sort(key=lambda r: r[1], reverse=True)

        return { 'id': kit.id, 'name': kit.name, 'columns' : columns,
                'rows': rows }