Geschrieben von LordValdis.
zum Anfang Ein einfaches Leaderboard
Hier werde ich euch zeigen, wie man ein einfaches Leaderboard erstellt, in dem die Unit Kills und Deaths der Spieler angezeigt werden.
Was wir benötigen: 3 Globale Variablen (2 mal ein Integer Array und ein Leaderboard), 2 Trigger und optional einen Unterordner für die bessere Übersicht. Zuerst erstellen wir den Unterordner (Rechtsklick in den Kasten unten links->New->New Folder). Dort packen wir dann die benötigten Variablen rein (New->New Variable und rechts bei Typ den richtigen Typ einstellen). Bei den Arrays muss man noch einen Hacken bei Array machen, außerdem ist darauf zu achten, dass die Größe richtig angegeben wird. In unserem Fall sollte die Größe mit der Anzahl der Spieler übereinstimmen. Ich nehme 5.
Von der Struktur sollte es es etwa so aussehen: (Icons falsch)
Scoreboard
Kills = 0 <Integer[5]>
Deaths = 0 <Integer[5]>
Leaderboard = No Leaderboard <Leaderboard>
Init
Add Kills
So nun geht es an die Trigger. Der erste initialisiert das Leaderboard:
InitEventsGame - Map initializationLocal VariablesIterator = 0 <Integer>ConditionsActionsLeaderboard - Create a leaderboard with 3 columns and 6 rows, with the name "My first Leaderboard", and using (100%, 100%, 100%) color.Variable - Set Leaderboard = (Last created leaderboard)Leaderboard - Set Leaderboard item text at column 1 and row 6 to "Player"Leaderboard - Set Leaderboard item text at column 2 and row 6 to "Kills"Leaderboard - Set Leaderboard item text at column 3 and row 6 to "Deaths"General - For each integer Iterator from 1 to 5 with increment 1, do (Actions)ActionsLeaderboard - Set Leaderboard item text at column 1 and row Iterator to (Text (Name of player Iterator) with color (Color((Current player Iterator color))))Leaderboard - Set Leaderboard item text at column 2 and row Iterator to "0"Leaderboard - Set Leaderboard item text at column 3 and row Iterator to "0"Leaderboard - Sort Leaderboard by column 2, in Descending order, with priority 1Leaderboard - Sort Leaderboard by column 3, in Ascending order, with priority 2Leaderboard - Sort Leaderboard by column 1, in Ascending order, with priority 3Leaderboard - Set Leaderboard item sort order at column 1 and row 6 to 1Leaderboard - Set Leaderboard item sort order at column 2 and row 6 to 1Leaderboard - Set Leaderboard item sort order at column 3 and row 6 to 1Leaderboard - Enable Sorted state for Leaderboard for (Active Players)
Game - Map initialization gibt an, dass der Trigger beim Laden der Map ausgeführt wird. Außerdem deklarieren wir noch eine lokale Integer Variable, die wir später für die For-Schleife brauchen. Die Leaderboard - Create Funktion sollte sich eigentlich selbst erklären. Danach wird das Leaderboard in die oben beschriebene Leaderboard Variable gespeichert. Die drei Set Leaderboard item text Funktionen für die Überschriften sind eigentlich auch selbsterklärend, sie werden erstmal in die letzte Zeile geschrieben, damit die Schleife später übersichtlicher ist. Nun benutzen wir eine For Schleife. Sie geht von 1 bis 5, weil sie für die 5 anderen Zeilen des Leaderboards zuständig ist. Die erste Zeile der Schleife sieht etwas verwirrend aus, deswegen hier noch der Subview (Die Icons sind noch falsch, das hängt mit dem Wiki zusammen):
Set Leaderboard Item TextBoard: LeaderboardColumn: 1Row: IteratorText: Text With ColorText: Name Of PlayerPlayer: IteratorColor: Convert Player Color To ColorPlayer Color: Player ColorOption: CurrentPlayer: Iterator
Im Prinzip kann man anstatt des Text With Color auch einfach nur den Namen des Spielers ohne Farbe nehmen, so sieht es aber schöner aus. Danach wird die Sortierung des Leaderboards eingestellt. Zuerst wird nach Kills, dann nach Deaths und schließlich nach Namen sortiert. Die 3 folgenden Zeilen sind dafür da, dass die Titel immer in die erste Zeile sortiert werden. Am Schluss wird noch eingestellt, dass das Leaderboard sortiert ist.
Nun folgt der zweite Trigger:
Add KillsEventsUnit - Any Unit diesLocal VariablesKilling Player = 0 <Integer>Killed Player = 0 <Integer>ConditionsActionsVariable - Set Killing Player = ((Owner of (Killing unit)) - 1)Variable - Set Killed Player = ((Owner of (Triggering unit)) - 1)General - If (Conditions) then do (Actions) else do (Actions)IfKilled Player == Killing PlayerThenVariable - Set Kills[Killing Player] = (Kills[Killing Player] - 1)ElseVariable - Set Kills[Killing Player] = (Kills[Killing Player] + 1)Variable - Set Deaths[Killed Player] = (Deaths[Killed Player] + 1)Leaderboard - Set Leaderboard item text at column 2 and row (Killing Player + 1) to (Text(Kills[Killing Player]))Leaderboard - Set Leaderboard item text at column 3 and row (Killed Player + 1) to (Text(Deaths[Killed Player]))
Hier haben wir gleich 2 lokale Integer Variablen. Diese werden zunächst auf die Spielernummern der Spieler gesetzt, jedoch um 1 verringert, da die Spieler zwar bei 1 anfangen, unsere Arrays für die Kills und Deaths aber bei 0. Die If Abfrage dient nur dazu festzustellen, ob der Spieler seine eigene Einheit getötet hat. Falls ja gibt es einen minus Kill falls nein einen Plus kill. Am Ende werden die neuen Werte noch in das Leaderboard eingetragen.
Falls ihr noch Fragen zum Tutorial habt, so benutzt bitte das Trigger-Forum. Feedback zum Tutorial könnt ihr in den zugehörigen Feedback Thread im Tutorial-Forum schreiben.
Mit freundlichen Grüßen
LordValdis




) die Intel Extreme Masters. Sao Paulo ist dabei die letzte Station vor dem Finale auf der CeBit im März. In Hannover treffen dann die besten Spieler der vergangenen IEM aufeinander.Bis es aber soweit 
Kommentare
Kommentar abgeben