1 Voraussetzungen

  1. Ikarus Scriptpaket
  2. LeGo Scriptpaket
  3. Spine Scriptpaket Version 0.9.7+
  4. Tutorial 1 - Initialisierung

2 Einleitung

Dieses Tutorial befasst sich mit der Befüllung und Verwaltung von Highscores inklusive Rankings. Benötigt wird das Modul SPINE_MODULE_SCORES. Nützlich sind Scores für Modifikationen wie Elemental War, JiBo, Battle of the Kings, DoodleGoth, Sumpfkrautscavenger oder auch den GothicRacer.

3 Scores

Zuerst einmal sollte geklärt werden, was konkret unter Scores zu verstehen ist. Das lässt sich relativ einfach anhand einer Tabelle darstellen.

Rang/PlatzUsernameScore
1 Diego 1000
2 Gorn 900
2 Lester 900
4 Milten 800

Jeder Spieler bekommt in einem Score entsprechend seines Scores einen Rang oder auch eine Platzierung. Die Sortierung wird komplett von Spine übernommen. Als Nutzer des Scores-Modul muss man lediglich den Score setzen und kann sämtliche Werte abfragen.

Zusätzlich bietet Spine die Möglichkeit, mehrere solcher Ranking für eine Modifikation anzulegen. Diese werden über eine ID identifiziert. Eine ID kann z.B. für einen Spielmodus oder ein Level stehen. Sie ist eindeutig und sie beginnen bei 0.

4 Die Funktionen

Die verschiedenen Funktionen des Scores-Modul sollen hier kurz vorgestellt werden.

4.1 Spine_UpdateScore

Mit Spine_UpdateScore lässt sich der Score für den aktuellen Spine-Nutzer für eine gegebene ID erhöhen. Um einen Wert in die Tabelle aus dem Beispiel oben einzutragen, müsste man also folgenden Code ausführen:

Spine_UpdateScore(0, 1001);

Damit würde man auf Platz 1 des Highscores kommen.

4.2 Spine_GetUserScore

Mit Spine_GetUserScore lässt sich der Score für den aktuellen Spine-Nutzer für eine gegebene ID auslesen. Das bedeutet, dass man mit

Spine_GetUserScore(0);

den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat.

4.3 Spine_GetUserRank

Mit Spine_GetUserRank lässt sich die Platzierung für den aktuellen Spine-Nutzer für eine gegebene ID auslesen. Das bedeutet, dass man mit

Spine_GetUserRank(0);

den Wert 1 bekommt, wenn man das Beispiel oben ausgeführt hat.

4.4 Spine_GetScoreForRank

Mit Spine_GetScoreForRank lässt sich der Score für den Spieler auf dem angegebenen Platz für eine gegebene ID auslesen. Das bedeutet, dass man mit

Spine_GetScoreForRank(0, 1);

den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat. Für Platz 2 bekäme man 1000. Wichtiger Hinweis: Haben zwei Spieler den gleichen Score, werden sie alphabetisch sortiert und werden über den Platz in der Tabelle identifiziert und nicht über den Rang. D.h. Gorn und Lester haben zwar beide Rang 2 im Beispiel, jedoch würde man mit Spine_GetScoreForRank(0, 2); den Score für Gorn, mit Spine_GetScoreForRank(0, 3); den von Lester bekommen. Das ist beim Score allerdings noch egal, wichtig ist es jedoch für den zugehörigen Username.

4.5 Spine_GetUsernameForRank

Mit Spine_GetUsernameForRank lässt sich der Name für den Spieler auf dem angegebenen Platz für eine gegebene ID auslesen. Das bedeutet, dass man mit

Spine_GetUsernameForRank(0, 1);

den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat. Für Platz 2 bekäme man Diego. Wichtiger Hinweis: Haben zwei Spieler den gleichen Score, werden sie alphabetisch sortiert und werden über den Platz in der Tabelle identifiziert und nicht über den Rang. D.h. Gorn und Lester haben zwar beide Rang 2 im Beispiel, jedoch würde man mit Spine_GetUsernameForRank(0, 2); den Namen Gorn, mit Spine_GetUsernameForRank(0, 3); Lester bekommen.

5 Hinweis

Die Benutzung ist wie in den Beispielen gezeigt sehr einfach. Es gilt jedoch zu beachten, dass Scores immer überschrieben werden. Will man also immer nur höhere Scores eintragen, so muss man sich selbst um den Code dafür kümmern. Das ist jedoch ebenfalls sehr einfach, wie im folgenden Beispiel zu sehen ist:

var int newScore; newScore = 100; 
if (newScore > Spine_GetUserScore(0)) { 
        Spine_UpdateScore(0, newScore); 
};