header YouTube
Clonk Livestream auf Twitch.tv!

Clonkspot

Abenteuerliga

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:

<br/>mysql&gt; show tables;<br/>+-------------------------+<br/>| Tables_in_league2&#160; &#160; &#160;&#160; |<br/>+-------------------------+<br/>| lg_admin_permissions&#160; &#160; |<br/>| lg_clan_scores&#160; &#160; &#160; &#160; &#160; |<br/>| lg_clans&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_cuid_bans&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_debug_counter&#160; &#160; &#160; &#160; |<br/>| lg_game_leagues&#160; &#160; &#160; &#160;&#160; |<br/>| lg_game_list_html&#160; &#160; &#160;&#160; |<br/>| lg_game_players&#160; &#160; &#160; &#160;&#160; |<br/>| lg_game_reference&#160; &#160; &#160;&#160; |<br/>| lg_game_reference_cache |<br/>| lg_game_scores&#160; &#160; &#160; &#160; &#160; |<br/>| lg_game_teams&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| lg_games&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_languages&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_league_scenarios&#160; &#160;&#160; |<br/>| lg_leagues&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_log&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_news_statistics&#160; &#160; &#160; |<br/>| lg_products&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| lg_rank_symbols&#160; &#160; &#160; &#160;&#160; |<br/>| lg_resources&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_scenario_user_data&#160;&#160; |<br/>| lg_scenario_versions&#160; &#160; |<br/>| lg_scenarios&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_scores&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| lg_scores_backup&#160; &#160; &#160; &#160; |<br/>| lg_scores_backup2&#160; &#160; &#160;&#160; |<br/>| lg_scores_copy&#160; &#160; &#160; &#160; &#160; |<br/>| lg_scores_diff&#160; &#160; &#160; &#160; &#160; |<br/>| lg_strings&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| lg_users&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+-------------------------+<br/>31 rows in set (0,00 sec)<br/>

lg_scenario_user_data klingt nach der richtigen Tabelle für die TdV-Spielstände. Mal schauen, was da so drin ist.

<br/>mysql&gt; describe lg_scenario_user_data;<br/>+-------------+------------------+------+-----+---------+-------+<br/>| Field&#160; &#160; &#160;&#160; | Type&#160; &#160; &#160; &#160; &#160; &#160;&#160; | Null | Key | Default | Extra |<br/>+-------------+------------------+------+-----+---------+-------+<br/>| scenario_id | int(10) unsigned | NO&#160;&#160; | PRI | 0&#160; &#160; &#160;&#160; |&#160; &#160; &#160;&#160; |<br/>| user_id&#160; &#160;&#160; | int(10) unsigned | NO&#160;&#160; | PRI | 0&#160; &#160; &#160;&#160; |&#160; &#160; &#160;&#160; |<br/>| data&#160; &#160; &#160; &#160; | varchar(2048)&#160; &#160; | NO&#160;&#160; |&#160; &#160;&#160; |&#160; &#160; &#160; &#160;&#160; |&#160; &#160; &#160;&#160; |<br/>+-------------+------------------+------+-----+---------+-------+<br/>3 rows in set (0,01 sec)<br/>

Jedes Szenario kann also 2 kiB an Daten pro Nutzer in der Liga speichern. Mal sehen, wie viele Szenarien das nutzen.

<br/>mysql&gt; select scenario_id from lg_scenario_user_data group by scenario_id limit 10;<br/>+-------------+<br/>| scenario_id |<br/>+-------------+<br/>|&#160; &#160; &#160; &#160; 2826 |<br/>|&#160; &#160; &#160; &#160; 6066 |<br/>|&#160; &#160; &#160; &#160; 6113 |<br/>|&#160; &#160; &#160; &#160; 6195 |<br/>|&#160; &#160; &#160; &#160; 6223 |<br/>|&#160; &#160; &#160; &#160; 6277 |<br/>|&#160; &#160; &#160; &#160; 6728 |<br/>|&#160; &#160; &#160; &#160; 6801 |<br/>+-------------+<br/>8 rows in set (0,00 sec)<br/>

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:

<br/>mysql&gt; 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);<br/>+------+------------------------------+<br/>| id&#160;&#160; | string&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>+------+------------------------------+<br/>| 2826 | Turm der Verzweiflung&#160; &#160; &#160; &#160; |<br/>| 2826 | Tower of Despair&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6066 | Schneeregen2007 Liga&#160; &#160; &#160; &#160;&#160; |<br/>| 6113 | Tempel Entweihung&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6113 | Temple profanation&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6195 | Tempelflucht&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6195 | Temple escape&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6223 | Tempelflucht&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6223 | Temple escape&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6277 | Turm der Verzweiflung 1.1.1&#160; |<br/>| 6728 | Turm der Verzweiflung 1.0.16 |<br/>| 6801 | Turm der Verzweiflung 1.1.1&#160; |<br/>+------+------------------------------+<br/>12 rows in set (0,00 sec)<br/>

Sieht gut aus. Nur welches der Turm der Verzweiflung-Einträge ist der richtige?

<br/>mysql&gt; select scenario_id, count(scenario_id) from lg_scenario_user_data group by scenario_id;<br/>+-------------+--------------------+<br/>| scenario_id | count(scenario_id) |<br/>+-------------+--------------------+<br/>|&#160; &#160; &#160; &#160; 2826 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 64 |<br/>|&#160; &#160; &#160; &#160; 6066 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 14 |<br/>|&#160; &#160; &#160; &#160; 6113 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 10 |<br/>|&#160; &#160; &#160; &#160; 6195 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 4 |<br/>|&#160; &#160; &#160; &#160; 6223 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 4 |<br/>|&#160; &#160; &#160; &#160; 6277 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 2 |<br/>|&#160; &#160; &#160; &#160; 6728 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 1 |<br/>|&#160; &#160; &#160; &#160; 6801 |&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 2 |<br/>+-------------+--------------------+<br/>8 rows in set (0,00 sec)<br/>

Mit 64 Einträgen gewinnt ganz klar das Szenario 2826. Mal sehen, welche Spieler da alle mitgespielt haben.

<br/>mysql&gt; select name from lg_users join lg_scenario_user_data on user_id = id where scenario_id = 2826;<br/>+---------------------+<br/>| name&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+---------------------+<br/>| Kanibal in der Liga |<br/>| LoneS&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| alex&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Sven2&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| [...]&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>+---------------------+<br/>64 rows in set (0,00 sec)<br/>

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:

<br/>mysql&gt; 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);<br/>+-------------------+<br/>| name&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+-------------------+<br/>| alex&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Sven2&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Pluto&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| TheDun&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| ala&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Jan&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Miniwipf&#160; &#160; &#160; &#160; &#160; |<br/>| Hexix&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Mortimer&#160; &#160; &#160; &#160; &#160; |<br/>| Maikel&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Slayer&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Glyndiszorn&#160; &#160; &#160;&#160; |<br/>| biber&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Lumberjack&#160; &#160; &#160; &#160; |<br/>| GipsyClonk&#160; &#160; &#160; &#160; |<br/>| ZAP&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| jok&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Frindus&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| burny&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Tocajinxzwo&#160; &#160; &#160;&#160; |<br/>| Micha&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Mave&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| HJK&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| SeeFunker&#160; &#160; &#160; &#160;&#160; |<br/>| DarkDude&#160; &#160; &#160; &#160; &#160; |<br/>| scaba&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Vengard&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| RiQQ&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Master_Yoda&#160; &#160; &#160;&#160; |<br/>| Clonker3000&#160; &#160; &#160;&#160; |<br/>| Atombombe003&#160; &#160; &#160; |<br/>| Rocky in der Liga |<br/>| Chix&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| MadMix&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Thrawn&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Pawel&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| The_Joker&#160; &#160; &#160; &#160;&#160; |<br/>| General&#160; &#160; &#160; &#160; &#160;&#160; |<br/>+-------------------+<br/>38 rows in set (0,01 sec)<br/>

38 Zeilen und damit glücklicherweise die Mehrheit. Hier ist der Rest:

<br/>mysql&gt; 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);<br/>+---------------------+<br/>| name&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+---------------------+<br/>| Kanibal in der Liga | -&gt; Kanibal<br/>| LoneS&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Caesar&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Randrian&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| K.A.&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| shadow of darkness&#160; | -&gt; Shadow<br/>| DarkMoon&#160; &#160; &#160; &#160; &#160; &#160; | -&gt; ClonkGeist<br/>| razor&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| GameOfDrones&#160; &#160; &#160; &#160; |<br/>| dandan&#160; &#160; &#160; &#160; &#160; &#160; &#160; | -&gt; dan-dan<br/>| cooltyp&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Apfel&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Spread&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Vatras&#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Gerrard&#160; &#160; &#160; &#160; &#160; &#160;&#160; | -&gt; Frogtok<br/>| Lawliet&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Twonkyy&#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| sizilium&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Wipfjaeger&#160; &#160; &#160; &#160; &#160; | -&gt; Wipfhunter<br/>| DMansion&#160; &#160; &#160; &#160; &#160; &#160; | -&gt; DMan<br/>| Paelleon&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| Mr. Clonk&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| AnjoCaido&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| Cimlu&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| MakroNepto&#160; &#160; &#160; &#160; &#160; |<br/>| Alfa&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+---------------------+<br/>26 rows in set (0,00 sec)<br/>

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:

<br/>mysql&gt; 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);<br/>+------+-----------------------------+<br/>| id&#160;&#160; | string&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>+------+-----------------------------+<br/>| 2826 | Turm der Verzweiflung&#160; &#160; &#160;&#160; |<br/>| 2826 | Tower of Despair&#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 3189 | Drachenfels&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 3189 | Dragon Rock&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6004 | Ein Baum - SIEDELVERSION!!! |<br/>| 6065 | AH - Predator&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6065 | AH - Predator&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6066 | Schneeregen2007 Liga&#160; &#160; &#160; &#160; |<br/>| 6113 | Tempel Entweihung&#160; &#160; &#160; &#160; &#160;&#160; |<br/>| 6113 | Temple profanation&#160; &#160; &#160; &#160; &#160; |<br/>| 6192 | Grabräuber&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6192 | Tomb raiders&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6223 | Tempelflucht&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br/>| 6223 | Temple escape&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; |<br/>+------+-----------------------------+<br/>14 rows in set (0,00 sec)<br/>

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.

Cool, den gesamten Datensatz?

Das bedeutet wir haben auch die Rankings der abgeschlossenen Liga-Turniere? (Magie, Ritter, Quake?)
Waer doch cool wenn man die Rankings der Vergangenheit wieder einsehen koennte, Accounts die es nichtmehr gibt muesste man dann eben ausgrauen.

>Wer noch weitere Vorschläge für den Neustart der Liga hat, nur her damit!


Da gab es noch einige Vorschlaege (z.B. der Verlorene Bote oder Schloss Seltsam). Allerdings muessten die meisten alten Adventures eben erst etwas ueberarbeitet werden.

>Das bedeutet wir haben auch die Rankings der abgeschlossenen Liga-Turniere? (Magie, Ritter, Quake?)


Ja, ist soweit ich das sehe mit drin. Die Rankings in die aktuelle Liga zu integrieren geht glaube ich wegen der Zuordnung eher schlecht. Eine getrennte Liste ist aber sicherlich machbar.

= Gerrard

= Wipfjaeger

<?php /* $DMansion = "Depp"; */
function DMansionIsWho()  {
mysql_query("SELECT * FROM $ClonkspotTable WHERE uid = '".$_GET['uid']."'");
if($_GET['uid'] == 29)  return true;
else  return false;
}

DMansionIsWho(); ?>

DarkMoon war mein Account.

Habe mich einmal zum Übertragen registriert.

OK, werde ich berücksichtigen.