lol-comp-generator


LoL Comp Generator


Der LoL Comp Generator erstellt auf Knopfdruck zufällige Team-Kompositionen für League of Legends aus einer verwaltbaren Champion-Datenbank – inklusive Speichern, Teilen und einem zusätzlichen Challenge-Würfel-Modus.

Allgemein

Champions, Sets & Presets


Die Champion-Liste wird im Admin-Dashboard gepflegt. Champions werden zu Sets gruppiert (benannte Champion-Pools je Rolle), mehrere Sets wiederum zu Presets zusammengefasst – ein Preset bestimmt also, aus welchen Sets pro Rolle beim Generieren gezogen wird.

Generieren, Speichern, Teilen


Jede generierte Komposition erhält einen eindeutigen Hash und lässt sich als Link teilen – der Aufruf mit ?lol_session=HASH öffnet direkt die Detailansicht dieser Session, inklusive optionalem Ergebnis, Screenshot, Tags und Notizen.

Challenges


Über einen Umschalter im Generator lässt sich zusätzlich ein Challenge-Modus aktivieren: Aus konfigurierten Kategorien wird per Würfel-Button eine zufällige Challenge gezogen (Name, Beschreibung, optional beteiligte Champions). Ergebnisse lassen sich inklusive Screenshot direkt per Discord-Webhook posten.

Statistiken & Verlauf


Eine chronologische Verlaufsliste sowie Statistiken (Win-Rates, Top-Champions, Leaderboard, Hall of Shame) runden das Modul ab.

Shortcodes

ShortcodeBeschreibung
weinhold_lol_comp_generatorDer Hauptgenerator (3-Schritt-Flow) mit integriertem Challenge-Modus. Mit ?lol_session=HASH direkt zur Session-Detailansicht
weinhold_lol_comp_historyChronologische Liste aller gespeicherten Sessions mit Tag-Filter
weinhold_lol_comp_statsStatistiken: Win-Rates, Top-Champions, Leaderboard, Hall of Shame

Dateien

DateiInhalt
modules/lol_comp_generator.phpLade-Stub: Init, Audit-Log- und Discord-Integration, alle AJAX-Registrierungen, Admin- und Cleanup-Einstiegspunkte
modules/lol_comp_generator/db.phpDatenbank-Installation (10 Tabellen) und alle Lese-/Schreibfunktionen
modules/lol_comp_generator/admin.phpAdmin-Oberfläche: Champions, Sets, Presets, Sessions verwalten
modules/lol_comp_generator/frontend.phpFrontend-Shortcodes: Generator, Challenges, Verlauf, Statistiken

Für Entwickler

Datenbank (Auswahl)


TabelleInhalt
weinhold_lol_championsChampion-Stammdaten
weinhold_lol_sets,weinhold_lol_set_championsSets und ihre Champion-Zuordnung
weinhold_lol_presets,weinhold_lol_preset_setsPresets und ihre Set-Zuordnung
weinhold_lol_sessionsGenerierte/gespeicherte Kompositionen (hash, preset_id, mode, result, screenshot_path, tags, notes)
weinhold_lol_session_playersPro Session: Spieler, Rolle, verwendetes Set, gezogener Champion
weinhold_lol_challenge_categories,weinhold_lol_challenges,weinhold_lol_challenge_championsChallenge-Oberkategorien, einzelne Challenges und ihre Champion-Zuordnung

Berechtigungen


weinhold_lol_comp_generator_current_user_can_view()/_can_edit() setzen zusätzlich zur Modul-Berechtigung immer einen eingeloggten Nutzer voraus – anders als bei rein view-basierten Modulen ist hier auch das reine Ansehen nicht für Gäste vorgesehen.

Discord-Integration


Zwei getrennte Discord-Integrationen über den Filter weinhold_discord_module_integrations: lol_comp_generator (neue gespeicherte Session) und lol_comp_generator_challenge (manuell per Button gepostetes Challenge-Ergebnis). Der Challenge-Discord-Versand läuft dabei NICHT über die zentrale weinhold_discord_fire_module_event()-Funktion wie bei anderen Modulen, sondern baut den Webhook-Request inkl. optionalem Bild-Multipart-Upload (Screenshot als Anhang) direkt selbst zusammen.

AJAX-Endpunkte


Über 20 registrierte wp_ajax_*-Actions, grob in vier Gruppen: Admin-Verwaltung (Champions/Sets/Presets speichern, löschen, synchronisieren), Frontend-Generator (Daten laden, Session speichern, Ergebnis setzen, Screenshot hochladen/ausliefern, Tags/Notizen, Replay), Challenge-Verwaltung (Kategorien und Challenges speichern/löschen, Discord-Versand) sowie ein öffentlicher (nopriv) Endpunkt für Statistiken.

Besonderheiten

Statistik-Endpunkt (get_stats) und Screenshot-Auslieferung (serve_screenshot) sind bewusst auch für nicht eingeloggte Besucher freigegeben (wp_ajax_nopriv_*), obwohl der Rest des Moduls Login voraussetzt – Statistiken und geteilte Screenshots sollen auch ohne Konto einsehbar sein.

Sessions werden über einen eindeutigen hash (nicht die numerische ID) referenziert – verhindert das Erraten fortlaufender Session-IDs beim Teilen von Links.

Der Challenge-Discord-Versand baut den Multipart-Request für Bild-Uploads manuell zusammen (eigener Boundary-String), da WordPress‘ wp_remote_post() keine native Unterstützung für multipart/form-data mit Dateianhang bietet.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.