Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)