
Seit einiger Zeit wird - neben der Siedelliga - die Rückkehr der Adventure-Liga [gewünscht](
https://clonkspot.org/forum/topic_show.pl?tid=406). In Verbindung mit den Turm der Verzweiflung-Streams wäre es interessant, TdV auch wieder in der Liga spielen zu können. Damit die alten Spieler nicht nochmal bei null anfangen müssen, wurde gewünscht, auch die alten Spielerdaten zu übernehmen. Sven2 hat mir dazu die gesamten Daten der alten Liga übermittelt. Im Folgenden eine Beschreibung, was ich so damit angestellt habe.
Den Datenbank-Dump habe ich erstmal in eine laufende MySQL-Datenbank importiert und geschaut, was da so alles mit drin ist:
```
mysql> show tables;
+-------------------------+
| Tables_in_league2 |
+-------------------------+
| lg_admin_permissions |
| lg_clan_scores |
| lg_clans |
| lg_cuid_bans |
| lg_debug_counter |
| lg_game_leagues |
| lg_game_list_html |
| lg_game_players |
| lg_game_reference |
| lg_game_reference_cache |
| lg_game_scores |
| lg_game_teams |
| lg_games |
| lg_languages |
| lg_league_scenarios |
| lg_leagues |
| lg_log |
| lg_news_statistics |
| lg_products |
| lg_rank_symbols |
| lg_resources |
| lg_scenario_user_data |
| lg_scenario_versions |
| lg_scenarios |
| lg_scores |
| lg_scores_backup |
| lg_scores_backup2 |
| lg_scores_copy |
| lg_scores_diff |
| lg_strings |
| lg_users |
+-------------------------+
31 rows in set (0,00 sec)
```
`lg_scenario_user_data` klingt nach der richtigen Tabelle für die TdV-Spielstände. Mal schauen, was da so drin ist.
```
mysql> describe lg_scenario_user_data;
+-------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+-------+
| scenario_id | int(10) unsigned | NO | PRI | 0 | |
| user_id | int(10) unsigned | NO | PRI | 0 | |
| data | varchar(2048) | NO | | | |
+-------------+------------------+------+-----+---------+-------+
3 rows in set (0,01 sec)
```
Jedes Szenario kann also 2 kiB an Daten pro Nutzer in der Liga speichern. Mal sehen, wie viele Szenarien das nutzen.
```
mysql> select scenario_id from lg_scenario_user_data group by scenario_id limit 10;
+-------------+
| scenario_id |
+-------------+
| 2826 |
| 6066 |
| 6113 |
| 6195 |
| 6223 |
| 6277 |
| 6728 |
| 6801 |
+-------------+
8 rows in set (0,00 sec)
```
Nur 8 Stück. Leider ist Liga-interne Szenario-ID wenig aussagekräftig. An den Namen des Szenarios kommt man wegen der Mehrsprachigkeit nur über zwei Ecken:
```
mysql> select lg_scenarios.id, string from lg_scenarios join lg_strings on name_sid = lg_strings.id where lg_scenarios.id in (select scenario_id from lg_scenario_user_data group by scenario_id);
+------+------------------------------+
| id | string |
+------+------------------------------+
| 2826 | Turm der Verzweiflung |
| 2826 | Tower of Despair |
| 6066 | Schneeregen2007 Liga |
| 6113 | Tempel Entweihung |
| 6113 | Temple profanation |
| 6195 | Tempelflucht |
| 6195 | Temple escape |
| 6223 | Tempelflucht |
| 6223 | Temple escape |
| 6277 | Turm der Verzweiflung 1.1.1 |
| 6728 | Turm der Verzweiflung 1.0.16 |
| 6801 | Turm der Verzweiflung 1.1.1 |
+------+------------------------------+
12 rows in set (0,00 sec)
```
Sieht gut aus. Nur welches der Turm der Verzweiflung-Einträge ist der richtige?
```
mysql> select scenario_id, count(scenario_id) from lg_scenario_user_data group by scenario_id;
+-------------+--------------------+
| scenario_id | count(scenario_id) |
+-------------+--------------------+
| 2826 | 64 |
| 6066 | 14 |
| 6113 | 10 |
| 6195 | 4 |
| 6223 | 4 |
| 6277 | 2 |
| 6728 | 1 |
| 6801 | 2 |
+-------------+--------------------+
8 rows in set (0,00 sec)
```
Mit 64 Einträgen gewinnt ganz klar das Szenario 2826. Mal sehen, welche Spieler da alle mitgespielt haben.
```
mysql> select name from lg_users join lg_scenario_user_data on user_id = id where scenario_id = 2826;
+---------------------+
| name |
+---------------------+
| Kanibal in der Liga |
| LoneS |
| alex |
| Sven2 |
| [...] |
+---------------------+
64 rows in set (0,00 sec)
```
Offensichtlich sind bekannte Namen dabei, auch wenn Kanibal auf Clonkspot keinen Namenszusatz mehr hat.
Vielleicht reicht es aber aus, die Daten einfach nach Benutzername zuzuordnen. Dazu habe ich die aktuelle Nutzertabelle von Clonkspot genommen und in meiner lokalen Datenbank importiert. Hier sind alle, die einen gleichnamigen Clonkspot-Account haben:
```
mysql> select name from lg_users join lg_scenario_user_data on user_id = id where scenario_id = 2826 and name in (select name from lg_users_clonkspot);
+-------------------+
| name |
+-------------------+
| alex |
| Sven2 |
| Pluto |
| TheDun |
| ala |
| Jan |
| Miniwipf |
| Hexix |
| Mortimer |
| Maikel |
| Slayer |
| Glyndiszorn |
| biber |
| Lumberjack |
| GipsyClonk |
| ZAP |
| jok |
| Frindus |
| burny |
| Tocajinxzwo |
| Micha |
| Mave |
| HJK |
| SeeFunker |
| DarkDude |
| scaba |
| Vengard |
| RiQQ |
| Master_Yoda |
| Clonker3000 |
| Atombombe003 |
| Rocky in der Liga |
| Chix |
| MadMix |
| Thrawn |
| Pawel |
| The_Joker |
| General |
+-------------------+
38 rows in set (0,01 sec)
```
38 Zeilen und damit glücklicherweise die Mehrheit. Hier ist der Rest:
```
mysql> select name from lg_users join lg_scenario_user_data on user_id = id where scenario_id = 2826 and name not in (select name from lg_users_clonkspot);
+---------------------+
| name |
+---------------------+
| Kanibal in der Liga | -> Kanibal
| LoneS |
| Caesar |
| Randrian |
| K.A. |
| shadow of darkness | -> Shadow
| DarkMoon | -> ClonkGeist
| razor |
| GameOfDrones |
| dandan | -> dan-dan
| cooltyp |
| Apfel |
| Spread |
| Vatras |
| Gerrard | -> Frogtok
| Lawliet |
| Twonkyy |
| sizilium |
| Wipfjaeger | -> Wipfhunter
| DMansion | -> DMan
| Paelleon |
| Mr. Clonk |
| AnjoCaido |
| Cimlu |
| MakroNepto |
| Alfa |
+---------------------+
26 rows in set (0,00 sec)
```
**Wer sich in dieser Liste findet und seinen Fortschritt übernommen haben will, bitte hier per Antwort melden.**
In der Abenteuer-Liga waren übrigens die folgenden Szenarien:
```
mysql> select lg_scenarios.id, string from lg_scenarios join lg_strings on name_sid = lg_strings.id where lg_scenarios.id in (select scenario_id from lg_league_scenarios where league_id = 14);
+------+-----------------------------+
| id | string |
+------+-----------------------------+
| 2826 | Turm der Verzweiflung |
| 2826 | Tower of Despair |
| 3189 | Drachenfels |
| 3189 | Dragon Rock |
| 6004 | Ein Baum - SIEDELVERSION!!! |
| 6065 | AH - Predator |
| 6065 | AH - Predator |
| 6066 | Schneeregen2007 Liga |
| 6113 | Tempel Entweihung |
| 6113 | Temple profanation |
| 6192 | Grabräuber |
| 6192 | Tomb raiders |
| 6223 | Tempelflucht |
| 6223 | Temple escape |
+------+-----------------------------+
14 rows in set (0,00 sec)
```
Wer noch weitere Vorschläge für den Neustart der Liga hat, nur her damit!
Ich bin mir auch noch nicht sicher, ob die Punktestände komplett übernommen werden sollen. Da Turm der Verzweiflung aber den Großteil der Punkte (und vermutlich auch des Aufwands) ausgemacht hat, ist es vermutlich nicht so wichtig. So wird es dann vielleicht auch für Einsteiger einfacher, einen guten Platz zu erringen.