from data import data_api from match_calculations import calculation import json import os from wood import logger point_inflation = 0.7 # => entspricht % K_FACTOR = 40 # Die "Border" (Maximalpunkte) die ein Sieg gibt. # Mach die DB abfrage für die Relevanten Daten. Von hier aus werden die "Aufgaben" und Daten dann an die kleineren Berechnungs Funktionen verteilt. def calculate_match (match_id): match_data = data_api.get_match_by_id(match_id) if not match_data: print("Fehler: Match nicht gefunden!") return data_api.confirm_match(match_id) # Laden und aufdröseln der Match Daten p1_id = match_data['player1_id'] p2_id = match_data['player2_id'] p1_score = match_data['score_player1'] p2_score = match_data['score_player2'] sys_name = match_data['gamesystem_name'] sys_id = match_data['gamesystem_id'] # ========================================== # 1. IDENTIFIKATION (Bleibt gleich) # ========================================== if -draw_diff <= (p1_score - p2_score) <= draw_diff: winner_id, looser_id = p1_id, p2_id elif p1_score > p2_score: winner_id, looser_id = p1_id, p2_id else: winner_id, looser_id = p2_id, p1_id # ========================================== # 2. DIE BERECHNUNG & ROUTING-TABELLE # ========================================== # Wir speichern die Ergebnisse direkt in einem temporären Dictionary, # und nutzen die SPIELER-ID als Schlüsselwort! calc_results = { "match_id" : match_id, "sys_id" : sys_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: { "base": calculation.calc_base_change(), "khorne": calculation.wrath_of_khorne(winner_id), "slaanesh": calculation.slaanesh_delight(), "tzeentch": calculation.tzeentch_scemes(), "total": winner_total }, looser_id: { "base": looser_base, "khorne": wrath_of_khorne(looser_id), "slaanesh": slaanesh_delight(winner_score, looser_score, rules), "total": looser_total } } 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): draw_diff = 0 match sys_id: case 1: draw_diff = 3 case 2,3: draw_diff = 1 return draw_diff