Vorweg muss ich sagen, dass ich eigentlich keinen blassen schimmer von python hab.
Ich bin Mitveranstalter von virtuellen Rennserien in Assetto Corsa. Für dieses Spiel gibt es sog. Apps die einem viele zusätzliche Features bieten. Die Hauptapp die wir nutzen unterstützt leider ein wichtiges Feature nicht: Das Bestrafen von Cuts.
Ich hab solange in dem Code rumgewühlt bis ich mir selbst ein wenig was zusammenreimen konnte. Ich hab anhand folgender Stelle gesehen dass es einen "cutsCounter" gibt, der nach bestimmten Bedingungen um +1 addiert wird:
Code: Alles auswählen
if info.physics.numberOfTyresOut > wheelsOutAllowed and not outOfTrack :
cutoffReturn = 0
outOfTrack = 1
cutsCounter += 1
if (info.graphics.completedLaps - 1) not in cutLaps :
cutLaps.append(info.graphics.completedLaps - 1)
if checkWheelsOut :
ac.setBackgroundTexture(cutLapCounterBkGr, "apps/python/OSRW_RaceAdmin/images/cutLapCounterBkGr.png")
ac.setVisible(cutLapCounterBkGr, 1)
ac.setVisible(cutLapCounterLabel, 1)
if info.physics.numberOfTyresOut <= wheelsOutAllowed and outOfTrack :
outOfTrack = 0
cutoffReturn = currentTime
if cutoffReturn and not outOfTrack:
if currentTime - cutoffReturn < cutsCounterBlinkingTime :
if (((currentTime - cutoffReturn)//cutsCounterBlinkFrequency)%2) != 0 :
ac.setBackgroundTexture(cutLapCounterBkGr, "apps/python/OSRW_RaceAdmin/images/cutLapCounterBkGr.png")
else:
ac.setBackgroundTexture(cutLapCounterBkGr, "apps/python/OSRW_RaceAdmin/images/cutLapCounterBkGr2.png")
else:
cutoffReturn = 0
if checkWheelsOut :
ac.setVisible(cutLapCounterBkGr, showCutsPermanent)
ac.setVisible(cutLapCounterLabel, showCutsPermanent)
ac.setText(cutLapCounterLabel, "{0}".format(len(cutLaps)))
Aktueller Stand: Wenn ich X (in diesem Fall >2) mal die Strecke verlasse dann wird die gewünschte Strafe getriggert. ABER: Hört nicht auf zu zählen. Ich bekomm die Strafe dann unendlich oft.
Ich hab versucht am Ende den cutsCounter wieder = 0 zu setzen, allerdings erscheint die App dann nichtmehr im Spiel. Ist also scheinbar doch irgendwas nicht i.O..
Code: Alles auswählen
# ======================== CUT PENALTY TEST ==========================
if racePhase == "Race" and cutsCounter > 2 :
currentPenalty.append("RaceAdmin App")
currentPenalty.append("Cut Track Limits 8/8")
currentPenalty.append(info.graphics.completedLaps + 1)
currentPenalty.append("Pit Lane drive through")
currentPenalty.append("plth")
currentPenalty.append(0)
currentPenalty.append(1)
currentPenalty.append(N_LapsToCompetePenalty)
currentPenalty.append(-1)
currentPenalty.append("inprogress")
currentPenalty.append("Prohibited")
messageArr.append("| Cut Track Limits 8/8 | Lap: {1} | PENALTY! Pit Lane drive through |")
penaltyMessage = "Pit Lane drive through"
cutoffNewPenalty = currentTime
penalties.append(currentPenalty)
penaltiesUpdated = 1
cutsCounter = 0
currentPenalty = []
Grüße,
Stefan