Immer noch mmr berechnung...

This commit is contained in:
Daniel Nagel 2026-03-16 07:21:02 +01:00
parent 1dcfb0694b
commit aaaf96caed
2 changed files with 52 additions and 57 deletions

View File

@ -26,15 +26,24 @@ def calculate_match (match_id):
sys_name = match_data['gamesystem_name'] sys_name = match_data['gamesystem_name']
sys_id = match_data['gamesystem_id'] sys_id = match_data['gamesystem_id']
match_is_draw = False
# ========================================== # ==========================================
# 1. IDENTIFIKATION (Bleibt gleich) # 1. IDENTIFIKATION (Bleibt gleich)
# ========================================== # ==========================================
# Draw
if -draw_diff <= (p1_score - p2_score) <= draw_diff: if -draw_diff <= (p1_score - p2_score) <= draw_diff:
winner_id, looser_id = p1_id, p2_id winner_id, looser_id = p1_id, p2_id
winner_score, looser_score = p1_score, p2_score
match_is_draw = True
# P1 Winner
elif p1_score > p2_score: elif p1_score > p2_score:
winner_id, looser_id = p1_id, p2_id winner_id, looser_id = p1_id, p2_id
winner_score, looser_score = p1_score, p2_score
# P2 Winner
else: else:
winner_id, looser_id = p2_id, p1_id winner_id, looser_id = p2_id, p1_id
winner_score, looser_score = p2_score, p1_score
# ========================================== # ==========================================
@ -42,60 +51,50 @@ def calculate_match (match_id):
# ========================================== # ==========================================
# Wir speichern die Ergebnisse direkt in einem temporären Dictionary, # Wir speichern die Ergebnisse direkt in einem temporären Dictionary,
# und nutzen die SPIELER-ID als Schlüsselwort! # und nutzen die SPIELER-ID als Schlüsselwort!
elo_factor = calculation.calc_elo_factor(winner_id, looser_id, system_name)
base_change = calculation.calc_base_change(elo_factor, match_is_draw)
rust_factor = calculation.calc_rust_factor(winner_id, looser_id, gamesystem_id)
calc_results = { #winner
"match_id" : match_id, w_base = base_change
"sys_id" : sys_id, w_khorne = calculation.wrath_of_khorne(winner_id)
"elo_factor" : calculation.calc_elo_factor(winner_id, looser_id, system_name),
"rust_factor" : calculation.calc_rust_factor(winner_id, looser_id, gamesystem_id),
winner_id: { #looser
"base": calculation.calc_base_change(), l_base = int(base_change*point_inflation)
"khorne": calculation.wrath_of_khorne(winner_id), l_khorne = calculation.wrath_of_khorne(looser_id)
"slaanesh": calculation.slaanesh_delight(),
"tzeentch": calculation.tzeentch_scemes(), slaanesh = calculation.slaanesh_delight(),
"total": winner_total tzeentch = calculation.tzeentch_scemes(winner_score, looser_score),
},
looser_id: {
"base": looser_base,
"khorne": wrath_of_khorne(looser_id), # ==========================================
"slaanesh": slaanesh_delight(winner_score, looser_score, rules), # 3. Daten Verpacken
"total": looser_total # ==========================================
calc_results = {
"match_id" : match_id,
"elo_factor" : elo_factor,
"rust_factor" : rust_factor,
"point_inflation" : point_inflation,
winner_id: {
"base": w_base,
"khorne": w_khorne,
"slaanesh": slaanesh,
"tzeentch": tzeentch,
"total": int((w_base + w_khorne + slaanesh + tzeentch)*rust_factor),
},
looser_id: {
"base": l_base,
"khorne": l_khorne,
"slaanesh": -slaanesh,
"tzeentch": calculation.tzeentch_scemes(winner_score, looser_score),
"total": int((calc_results[looser_id]["base"] + calc_results[looser_id]["khorne"] - calc_results[looser_id]["slaanesh"] - calc_results[looser_id]["tzeentch"])*calc_results["rust_factor"]),
}
} }
}
meine_ergebnisse = {
# --- Identifikation ---
"match_id": match_id,
"gamesystem_id": sys_id,
# --- Match-Globale Werte ---
"rust_factor": 1.0, # Dein errechneter Wert (als Kommazahl / Float)
"elo_factor": 40.0, # K-Faktor
"point_inflation": 0.7, # Deine 70%
# --- Spieler 1 ---
"p1_id": p1_id,
"p1_score": p1_score,
"p1_base": p1_base_change,
"p1_khorne": khorne_p1,
"p1_slaanesh": slaanesh_points,
"p1_tzeentch": 0,
"p1_total": winner_final, # Die endgültige MMR Änderung!
# --- Spieler 2 ---
"p2_id": p2_id,
"p2_score": p2_score,
"p2_base": p2_base_change,
"p2_khorne": khorne_p2,
"p2_slaanesh": slaanesh_points,
"p2_tzeentch": 0,
"p2_total": looser_final # Die endgültige MMR Änderung!
}
def determine_draw_diff(sys_id): def determine_draw_diff(sys_id):

View File

@ -5,7 +5,7 @@ from wood import logger
# die meisten Spieler über 1000MMR sein. Sprich: Neueinsteiger, oder leute die weniger spielen sind eher im unteren Ende als in der Mitte. # die meisten Spieler über 1000MMR sein. Sprich: Neueinsteiger, oder leute die weniger spielen sind eher im unteren Ende als in der Mitte.
def calc_base_change(elo_factor): def calc_base_change(elo_factor, match_is_draw):
if match_is_draw: if match_is_draw:
# Bei einem Draw (0.5) gewinnt der Schwächere leicht Punkte, der Stärkere verliert leicht. # Bei einem Draw (0.5) gewinnt der Schwächere leicht Punkte, der Stärkere verliert leicht.
base_change = (K_FACTOR * (0.5 - elo_factor)/2) base_change = (K_FACTOR * (0.5 - elo_factor)/2)
@ -64,11 +64,7 @@ def wrath_of_khorne(player_id):
return 0 return 0
def slaanesh_delight(winner_points, looser_points, rules): def slaanesh_delight():
print() return 0
def tzeentch_scemes(winner_score, looser_score):
def tzeentch_scemes(): return 0
print("k")
def nurgles_entropy():
print("k")