def invoke(): if g_debug: print "Invoked end-of-round data-send" # collect needed stats e = {} statsMap = getStatsMap() # find top player in different categories for sp in statsMap.itervalues(): for k in range(0, NUM_KIT_TYPES + 1): if k in sp.kits and sp.kits[k].timeInObject > 0: findTop(e, "sk" + str(k), "skn" + str(k), sp.kits[k].score, sp.name) for v in range(0, NUM_VEHICLE_TYPES + 1): if v in sp.vehicles and sp.vehicles[v].timeInObject > 0: findTop(e, "sv" + str(v), "svn" + str(v), sp.vehicles[v].score, sp.name) findTop(e, "ts", "tsn", sp.teamScore, sp.name) findTop(e, "ss", "ssn", sp.skillScore, sp.name) findTop(e, "cpc", "cpcn", sp.localScore.cpCaptures, sp.name) findTop(e, "cpa", "cpan", sp.localScore.cpAssists, sp.name) findTop(e, "cpd", "cpdn", sp.localScore.cpDefends, sp.name) findTop(e, "ka", "kan", sp.localScore.damageAssists + sp.localScore.targetAssists + sp.localScore.passengerAssists, sp.name) findTop(e, "he", "hen", sp.localScore.heals, sp.name) findTop(e, "rev", "revn", sp.localScore.revives, sp.name) findTop(e, "rsp", "rspn", sp.localScore.ammos, sp.name) findTop(e, "rep", "repn", sp.localScore.repairs, sp.name) findTop(e, "drs", "drsn", sp.localScore.driverSpecials + sp.localScore.driverAssists, sp.name) # find top-3 if len(statsMap) > 0: sortedPlayers = [] for sp in statsMap.itervalues(): sortedPlayers += [((sp.score, sp.skillScore, -sp.deaths), sp)] sortedPlayers.sort() sortedPlayers.reverse() # stats for top-3 scoring players for i in range(3): if len(sortedPlayers) <= i: break sp = sortedPlayers[i][1] e["np" + str(i)] = sp.name e["tsp" + str(i)] = sp.teamScore e["ssp" + str(i)] = sp.skillScore e["csp" + str(i)] = sp.cmdScore e["bfp" + str(i)] = sp.bulletsFired e["bhp" + str(i)] = sp.bulletsHit for k in range(0, NUM_KIT_TYPES + 1): if sp.kits[k].timeInObject > 0: e["tk" + str(k) + "p" + str(i)] = int(sp.kits[k].timeInObject) for v in range(0, NUM_VEHICLE_TYPES + 1): if sp.vehicles[v].timeInObject > 0: e["tv" + str(v) + "p" + str(i)] = int(sp.vehicles[v].timeInObject) keyvals = [] for k in e: keyvals.append ("\\".join((k, str(e[k])))) dataString = "\\" + "\\".join(keyvals) if g_debug: print dataString host.gl_sendEndOfRoundData(dataString)
def invoke(): if g_debug: print "endofround.py[20]: Invoked end-of-round data-send" # collect needed stats e = {} statsMap = getStatsMap() sortedPlayers = [] #ranked = host.ss_getParam('ranked') #if ranked: #e["r"] = ranked if g_debug: print "endofround.py[31]: EOR: statsMap length: " + str( len(statsMap) ) # find top player in different categories for sp in statsMap.itervalues(): if sp.score > 0: sortedPlayers += [((sp.score, sp.skillScore, -sp.deaths), sp)] player = "_" + str(sp.name) if g_debug: print "endofround.py[39]: EOR: Found player" + player + " (" + str(sp.score) + ", " + str(sp.skillScore) + ", " + str(sp.teamScore) + ")" e["tt" + player] = int(sp.timePlayed) awayBonus = int(sp.localScore.awayBonusScoreIAR + sp.localScore.awayBonusScore) if awayBonus > 0: e["ab" + player] = awayBonus if sp.localScore.squadMemberBonusScore > 0: e["smb" + player] = int(sp.localScore.squadMemberBonusScore) if sp.localScore.squadLeaderBonusScore > 0: e["slb" + player] = int(sp.localScore.squadLeaderBonusScore) if sp.localScore.commanderBonusScore > 0: e["cb" + player] = int(sp.localScore.commanderBonusScore) if sp.roundRankup > 0: e["rr" + player] = 1 p = bf2.playerManager.getPlayerByIndex(sp.playerId) try: if p.getName() == sp.name: totalScore = (sp.score - sp.localScore.diffRankScore) + int(sp.localScore.experienceScoreIAR + sp.localScore.experienceScore) + int(awayBonus) #if ranked: if 'crpt' in p.medals.globalKeys: totalScore += int(p.medals.globalKeys['crpt']) if (sp.score - sp.localScore.diffRankScore) < 0: totalScore -= (sp.score - sp.localScore.diffRankScore) if g_debug: print "endofround.py[68]: Total player score: " + str(totalScore) e["gs" + player] = totalScore else: if g_debug: print "endofround.py[71]: Duplicate player id found: " + sp.name + ", found: " + p.getName() + " (" + str(sp.playerId) + ")" except: if g_debug: "No total score for player index: " + str(sp.playerId) for k in range(0, NUM_KIT_TYPES): if g_debug: print "endofround.py[77]: kit time: " + str(k) + ", " + str(sp.kits[k].timeInObject) kit = sp.kits[k] if kit.timeInObject > 0: e["ktw" + str(k) + player ] = int(kit.timeInObject) e["ks" + str(k) + player ] = kit.score for w in range(0, NUM_WEAPON_TYPES): if g_debug: print "endofround.py[86]: weapon: " + str(w) + ", " + str(sp.weapons[w].timeInObject) weapon = sp.weapons[w] if weapon.timeInObject > 0: kills = weapon.kills accuracy = "%.3g" % weapon.accuracy timeWithWeapon = int(weapon.timeInObject) if w in SPECIAL_WEAPONS: w = SPECIAL_WEAPONS[ w ] keyName = "wk" + str(w) + player if keyName in e: kills += int(e[ keyName ]) accuracy = "%.3g" % ( ( float(accuracy) + float( e[ "wa" + str(w) + player ]) ) / 2.0 ) timeWithWeapon += int( e["wtw" + str(w) + player ] ) e["wk" + str(w) + player ] = kills e["wa" + str(w) + player ] = accuracy e["wtw" + str(w) + player ] = timeWithWeapon for v in range(0, NUM_VEHICLE_TYPES): if g_debug: print "endofround.py[114]: vehicle: " + str(v) + ", " + str(sp.vehicles[v].timeInObject) if v in IGNORED_VEHICLES: if g_debug: print "endofround.py[116]: Ignoring vehicle " + str(v) continue vehicle = sp.vehicles[v] if vehicle.timeInObject > 0: timeInVehicle = int(vehicle.timeInObject) killsWithVehicle = vehicle.kills if v in SPECIAL_VEHICLE: v = SPECIAL_VEHICLE[ v ] keyName = "vtw" + str(v) + player if keyName in e: timeInVehicle += int(e[ keyName ]) killsWithVehicle += int(e["vtw" + str(v) + player ]) e["vtw" + str(v) + player ] = timeInVehicle e["vk" + str(v) + player ] = killsWithVehicle if g_debug: print "\n-----------------\n%s\n---------------------\n" %e # stats for top-3 scoring players sortedPlayers.sort() sortedPlayers.reverse() if g_debug: for p in range(0, len(sortedPlayers)): print "endofround.py[144]: EOR: Sorted player " + str(p+1) + ": n:" + sortedPlayers[p][1].name + ", s:" + str(sortedPlayers[p][1].score) for i in range(3): if len(sortedPlayers) <= i: break sp = sortedPlayers[i][1] e["tp" + str(i)] = sp.name keyvals = [] for k in e: keyvals.append ("\\".join((k, str(e[k])))) dataString = "\\" + "\\".join(keyvals) if g_debug: print "endofround.py[160]: ", dataString host.gl_sendEndOfRoundData(dataString)
def invoke(): if g_debug: print "endofround.py[20]: Invoked end-of-round data-send" # collect needed stats e = {} statsMap = getStatsMap() sortedPlayers = [] #ranked = host.ss_getParam('ranked') #if ranked: #e["r"] = ranked if g_debug: print "endofround.py[31]: EOR: statsMap length: " + str(len(statsMap)) # find top player in different categories for sp in statsMap.itervalues(): if sp.score > 0: sortedPlayers += [((sp.score, sp.skillScore, -sp.deaths), sp)] player = "_" + str(sp.name) if g_debug: print "endofround.py[39]: EOR: Found player" + player + " (" + str( sp.score) + ", " + str(sp.skillScore) + ", " + str( sp.teamScore) + ")" e["tt" + player] = int(sp.timePlayed) awayBonus = int(sp.localScore.awayBonusScoreIAR + sp.localScore.awayBonusScore) if awayBonus > 0: e["ab" + player] = awayBonus if sp.localScore.squadMemberBonusScore > 0: e["smb" + player] = int(sp.localScore.squadMemberBonusScore) if sp.localScore.squadLeaderBonusScore > 0: e["slb" + player] = int(sp.localScore.squadLeaderBonusScore) if sp.localScore.commanderBonusScore > 0: e["cb" + player] = int(sp.localScore.commanderBonusScore) if sp.roundRankup > 0: e["rr" + player] = 1 p = bf2.playerManager.getPlayerByIndex(sp.playerId) try: if p.getName() == sp.name: totalScore = (sp.score - sp.localScore.diffRankScore) + int( sp.localScore.experienceScoreIAR + sp.localScore.experienceScore) + int(awayBonus) #if ranked: if 'crpt' in p.medals.globalKeys: totalScore += int(p.medals.globalKeys['crpt']) if (sp.score - sp.localScore.diffRankScore) < 0: totalScore -= (sp.score - sp.localScore.diffRankScore) if g_debug: print "endofround.py[68]: Total player score: " + str( totalScore) e["gs" + player] = totalScore else: if g_debug: print "endofround.py[71]: Duplicate player id found: " + sp.name + ", found: " + p.getName( ) + " (" + str(sp.playerId) + ")" except: if g_debug: "No total score for player index: " + str(sp.playerId) for k in range(0, NUM_KIT_TYPES): if g_debug: print "endofround.py[77]: kit time: " + str(k) + ", " + str( sp.kits[k].timeInObject) kit = sp.kits[k] if kit.timeInObject > 0: e["ktw" + str(k) + player] = int(kit.timeInObject) e["ks" + str(k) + player] = kit.score for w in range(0, NUM_WEAPON_TYPES): if g_debug: print "endofround.py[86]: weapon: " + str(w) + ", " + str( sp.weapons[w].timeInObject) if w >= IGNORED_WEAPON_INDEX and not w in SPECIAL_WEAPONS: if g_debug: print "endofround.py[88]: Ignoring weapon " + str(w) continue weapon = sp.weapons[w] if weapon.timeInObject > 0: kills = weapon.kills accuracy = "%.3g" % weapon.accuracy timeWithWeapon = int(weapon.timeInObject) if w in SPECIAL_WEAPONS: w = SPECIAL_WEAPONS[w] keyName = "wk" + str(w) + player if keyName in e: kills += int(e[keyName]) accuracy = "%.3g" % ( (float(accuracy) + float(e["wa" + str(w) + player])) / 2.0) timeWithWeapon += int(e["wtw" + str(w) + player]) e["wk" + str(w) + player] = kills e["wa" + str(w) + player] = accuracy e["wtw" + str(w) + player] = timeWithWeapon for v in range(0, NUM_VEHICLE_TYPES): if g_debug: print "endofround.py[114]: vehicle: " + str(v) + ", " + str( sp.vehicles[v].timeInObject) if v in IGNORED_VEHICLES: if g_debug: print "endofround.py[116]: Ignoring vehicle " + str(v) continue vehicle = sp.vehicles[v] if vehicle.timeInObject > 0: timeInVehicle = int(vehicle.timeInObject) killsWithVehicle = vehicle.kills if v in SPECIAL_VEHICLE: v = SPECIAL_VEHICLE[v] keyName = "vtw" + str(v) + player if keyName in e: timeInVehicle += int(e[keyName]) killsWithVehicle += int(e["vtw" + str(v) + player]) e["vtw" + str(v) + player] = timeInVehicle e["vk" + str(v) + player] = killsWithVehicle if g_debug: print "\n-----------------\n%s\n---------------------\n" % e # stats for top-3 scoring players sortedPlayers.sort() sortedPlayers.reverse() if g_debug: for p in range(0, len(sortedPlayers)): print "endofround.py[144]: EOR: Sorted player " + str( p + 1) + ": n:" + sortedPlayers[p][1].name + ", s:" + str( sortedPlayers[p][1].score) for i in range(3): if len(sortedPlayers) <= i: break sp = sortedPlayers[i][1] e["tp" + str(i)] = sp.name keyvals = [] for k in e: keyvals.append("\\".join((k, str(e[k])))) dataString = "\\" + "\\".join(keyvals) if g_debug: print "endofround.py[160]: ", dataString host.gl_sendEndOfRoundData(dataString)
def invoke(): if g_debug: print "Invoked end-of-round data-send" # collect needed stats e = {} statsMap = getStatsMap() # find top player in different categories for sp in statsMap.itervalues(): for k in range(0, NUM_KIT_TYPES + 1): if k in sp.kits and sp.kits[k].timeInObject > 0: findTop(e, "sk" + str(k), "skn" + str(k), sp.kits[k].score, sp.name) for v in range(0, NUM_VEHICLE_TYPES + 1): if v in sp.vehicles and sp.vehicles[v].timeInObject > 0: findTop(e, "sv" + str(v), "svn" + str(v), sp.vehicles[v].score, sp.name) findTop(e, "ts", "tsn", sp.teamScore, sp.name) findTop(e, "ss", "ssn", sp.skillScore, sp.name) findTop(e, "cpc", "cpcn", sp.localScore.cpCaptures, sp.name) findTop(e, "cpa", "cpan", sp.localScore.cpAssists, sp.name) findTop(e, "cpd", "cpdn", sp.localScore.cpDefends, sp.name) findTop( e, "ka", "kan", sp.localScore.damageAssists + sp.localScore.targetAssists + sp.localScore.passengerAssists, sp.name) findTop(e, "he", "hen", sp.localScore.heals, sp.name) findTop(e, "rev", "revn", sp.localScore.revives, sp.name) findTop(e, "rsp", "rspn", sp.localScore.ammos, sp.name) findTop(e, "rep", "repn", sp.localScore.repairs, sp.name) findTop(e, "drs", "drsn", sp.localScore.driverSpecials + sp.localScore.driverAssists, sp.name) # find top-3 if len(statsMap) > 0: sortedPlayers = [] for sp in statsMap.itervalues(): sortedPlayers += [((sp.score, sp.skillScore, -sp.deaths), sp)] sortedPlayers.sort() sortedPlayers.reverse() # stats for top-3 scoring players for i in range(3): if len(sortedPlayers) <= i: break sp = sortedPlayers[i][1] e["np" + str(i)] = sp.name e["tsp" + str(i)] = sp.teamScore e["ssp" + str(i)] = sp.skillScore e["csp" + str(i)] = sp.cmdScore e["bfp" + str(i)] = sp.bulletsFired e["bhp" + str(i)] = sp.bulletsHit for k in range(0, NUM_KIT_TYPES + 1): if sp.kits[k].timeInObject > 0: e["tk" + str(k) + "p" + str(i)] = int( sp.kits[k].timeInObject) for v in range(0, NUM_VEHICLE_TYPES + 1): if sp.vehicles[v].timeInObject > 0: e["tv" + str(v) + "p" + str(i)] = int( sp.vehicles[v].timeInObject) keyvals = [] for k in e: keyvals.append("\\".join((k, str(e[k])))) dataString = "\\" + "\\".join(keyvals) if g_debug: print dataString host.gl_sendEndOfRoundData(dataString)