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)))
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)))
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 }
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
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)
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
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
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 }