

Ein Multiboard besteht immer aus n*m Feldern. Diese Felder können jedoch verschiedene Breiten haben. Die Folgende Grafik verdeutlicht den aufbau eines MB's (Mutltiboards):Das Bild stammt übrigens von Nemesis[DK].
Nun können wir in jede Zelle Text und/oder Bilder einfügen, und dies wollen wir nun auch tun.
Inhaltsverzeichnis |
Für dieses Tutorial nehmen wir an, dass wir eine Heroarena mit ganzen 12 Spielern bauen; das heißt, dass das MB 12 rows (Reihen sh. Bild), für die Spieler haben muss und nochmal eine Reihe für die "Überschriften" a la "Kills", "Name" usw.. Also brauch das MB auch noch 3 Colums (Spalten sh. Bild). Gesagt getan:
Multiboard Init
Events

Time - Elapsed game time is 0.00 seconds
Conditions
Actions

Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der TitelJedoch sieht man, wenn man das Spiel startet nichts... Dies liegt daran, dass man das Multiboard erst Zeigen muss:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)Leider sieht man nun in jeder Zelle so ein komisches Auge; dies liegt daran, dass WarCraft jede Zelle mit einem Icon füllt, solange man diese nicht selbst mit einem Bild füllt. Da wir in diesem Kapitel nicht mit Icons arbeiten, deaktivieren wir in unserem Multiboard erstmal alle Icons:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)


Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide iconsWie ihr seht, sage ich WarCraft, dass er alle Icons in Spalte und Reihe 0 verstecken soll. Die 0 steht für alle Spalten bzw. Reihen, sodass ich jede Reihe und Spalte einzeln machen muss.
Also merken: 0 steht für alle Reihen bzw. Spalten.
Nun wollen wir aber damit beginnen das MB mit Text zu füllen.
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)


Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons


Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Name


Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Kills


Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Herokills


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Set the text for (Last created multiboard) item in column 1, row ((Integer A) + 1) to (Name of (Player((Integer A))))




Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Integer A) + 1) to 0




Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Integer A) + 1) to 0Wie man sieht benutze ich hier für die Bestimmung der Reihe ((Integer A) + 1). Das mache ich, weil die erste Reihe ja für die "Überschriften" benutzt wird. Und außerdem erspare ich mir so das manuelle Eintragen jedes Spielers.
Doch leider sieht das Ergebnis ingame nicht so schön aus; das liegt daran, dass der Text zu lang für die Breite der Zelle ist, also müssen wir die Zelle verbreitern. Dies geht mit folgendem Befehl:

Multiboard - Set the width for (Last created multiboard) item in column 1, row 1 to 3.00% of the total screen widthAlso einfach mal die Zellen verbreitern:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)


Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons


Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Name


Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Kills


Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Herokills


Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 8.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 2, row 0 to 3.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 3, row 0 to 4.00% of the total screen width


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Set the text for (Last created multiboard) item in column 1, row ((Integer A) + 1) to (Name of (Player((Integer A))))




Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Integer A) + 1) to 0




Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Integer A) + 1) to 0


Multiboard - Minimize (Last created multiboard)


Multiboard - Maximize (Last created multiboard)Am besten probiert man die Breite für verschiedene Zellen einfach so lange aus, bis man das gewünschte Ergebnis hat. Ausserdem hat der aufmerksame Leser auch noch die letzten beiden neuen Aktionen entdeckt (Multiboard - Minimize bzw. Multiboard - Maximize). Diese verhindern mögliche Darstellungsprobleme beim Text.
So weit, so gut, aber wie added man nun Kills und in wie in diesem Beispiel auch Herokills? Natürlich sollte man, wie solls auch anders sein mit Variablen arbeiten.
Ich nenne diese Variablen "Kills" und "Herokills". Beide sind Integer-variablen und haben einen Array. Beginnen wir damit, dass wir einfach einen neuen Trigger erstellen und ihn "Multiboard Kills" nennen. Als Event nemen wir natürlich "A Unit dies". Als Condition, die wir direkt bei Conditions eintragen nehmen wir "((Triggering unit) belongs to an enemy of (Owner of (Killing unit))) Equal to True" (Boolean Comparsion), damit man nicht für das Killen seiner Freunde Kills angestrichen bekommt. Nun unterscheiden wir mit Hilfe eines If-Then-Else-Blockes, ob es sich um eine normale Einheit, oder um einen Helden handelt:

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions





((Triggering unit) is A Hero) Equal to True



Then - Actions





Set Herokills[(Player number of (Owner of (Killing unit)))] = (Herokills[(Player number of (Owner of (Killing unit)))] + 1)



Else - Actions





Set Kills[(Player number of (Owner of (Killing unit)))] = (Kills[(Player number of (Owner of (Killing unit)))] + 1)Aber wie übertragen wir den Wert der Variable nun in das MB? Da die Nummer der Reihe eines Spielers im MB genau Nummer des Spielers + 1 entspricht nemen wir nun einfach diesen Wert und benutzen ihn um den Wert der Variable in MB einzutragen:

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




((Triggering unit) is A Hero) Equal to True



Then - Actions




Set Herokills[(Player number of (Owner of (Killing unit)))] = (Herokills[(Player number of (Owner of (Killing unit)))] + 1)




Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Player number of (Owner of (Killing unit))) + 1) to (String(Herokills[(Player number of (Owner of (Killing unit)))]))



Else - Actions




Set Kills[(Player number of (Owner of (Killing unit)))] = (Kills[(Player number of (Owner of (Killing unit)))] + 1)




Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Player number of (Owner of (Killing unit))) + 1) to (String(Kills[(Player number of (Owner of (Killing unit)))]))Also sieht der ganze Trigger nun folgendermaßen aus:

Multiboard Kills


Events



Unit - A unit Dies


Conditions



((Triggering unit) belongs to an enemy of (Owner of (Killing unit))) Equal to True


Actions



If (All Conditions are True) then do (Then Actions) else do (Else Actions)




If - Conditions





((Triggering unit) is A Hero) Equal to True




Then - Actions





Set Herokills[(Player number of (Owner of (Killing unit)))] = (Herokills[(Player number of (Owner of (Killing unit)))] + 1)





Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Player number of (Owner of (Killing unit))) + 1) to (String(Herokills[(Player number of (Owner of (Killing unit)))]))




Else - Actions





Set Kills[(Player number of (Owner of (Killing unit)))] = (Kills[(Player number of (Owner of (Killing unit)))] + 1)





Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Player number of (Owner of (Killing unit))) + 1) to (String(Kills[(Player number of (Owner of (Killing unit)))]))Nun aber noch mal zur genauen erläuterung der wichtigsten Funktionen:
| Player Number Of ( ) | Gibt die Nummer eines Spielers aus |
| Owner Of Unit ( ) | Gibt den Besitzer einer Einheit aus |
| String ( ) | Konvertiert in diesem Fall einen Integer zu einem String |
Da es ganz schön wäre, die Spieler auch in ihrer richtigen Farbe im MB anzuzeigen, gebe ich euch hier ein paar Hilfen, wie ihr das umsetzt.
Wie ist ein "Colorstring" aufgebaut? Ein String zum angeben der Farbe besteht aus 6 Teilen:
Die einzelnen Werte für die Rot/Grün/Blau-Werte werden im Hexadezimalsystem angeben. So ist 255 genau ff, die größte Zahl, die ihr mit zwei Zeichen im Hexedezimalystem darstellen könnt.
Liste aller Colorstrings für die Farben der einzelnen Spieler:
| Spieler 01 Rot | cffff0303 |
| Spieler 02 Blau | cff0042ff |
| Spieler 03 Cyan | cff1ce6b9 |
| Spieler 04 Lila | cff540081 |
| Spieler 05 Gelb | cfffffc01 |
| Spieler 06 Orange | cfffe8a0e |
| Spieler 07 Grün | cff20c000 |
| Spieler 08 Pink | cffe55bb0 |
| Spieler 09 Grau | cff959697 |
| Spieler 10 Silber | cff7ebff1 |
| Spieler 11 Dunkelgrün | cff106246 |
| Spieler 12 Braun | cff4e2a04 |
Am einfachsten ist es die Farbwerte in einen Stringarray zu packen; also packen wir den Wert für Spieler 1 einfach in den Array (ich nenn ihn hier mal "Playercolor") unter dem Index 1, mit Spieler 2 genauso, usw.. Also wird unser Trigger "Multiboard Init" um folgende 12 Zeilen erweitert:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)


Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons


Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Name


Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Kills


Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Herokills


Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 8.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 2, row 0 to 3.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 3, row 0 to 4.00% of the total screen width


Set Playercolor[1] = |cffff0202


Set Playercolor[2] = |cff0041ff


Set Playercolor[3] = |cff1be6b8


Set Playercolor[4] = |cff530080


Set Playercolor[5] = |cffffcc00


Set Playercolor[6] = |cfffe890d


Set Playercolor[7] = |cff1fbf00


Set Playercolor[8] = |cffe55aaf


Set Playercolor[9] = |cff949596


Set Playercolor[10] = |cff7dbef1


Set Playercolor[11] = |cff0f6145


Set Playercolor[12] = |cff4d2903


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Set the text for (Last created multiboard) item in column 1, row ((Integer A) + 1) to (Name of (Player((Integer A))))




Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Integer A) + 1) to 0




Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Integer A) + 1) to 0


Multiboard - Minimize (Last created multiboard)


Multiboard - Maximize (Last created multiboard)Und damit die Spielernamen auch in der passenden Farbe angezeigt werden, benutzen wir einfach "Integer A" als Index für unseren Array:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Titel


Multiboard - Show (Last created multiboard)


Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons


Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Name


Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Kills


Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Herokills


Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 8.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 2, row 0 to 3.00% of the total screen width


Multiboard - Set the width for (Last created multiboard) item in column 3, row 0 to 4.00% of the total screen width


Set Playercolor[1] = |cffff0303


Set Playercolor[2] = |cff0042ff


Set Playercolor[3] = |cff1ce6b9


Set Playercolor[4] = |cff540081


Set Playercolor[5] = |cfffffc01


Set Playercolor[6] = |cfffe8a0e


Set Playercolor[7] = |cff20c000


Set Playercolor[8] = |cffe55bb0


Set Playercolor[9] = |cff959697


Set Playercolor[10] = |cff7ebff1


Set Playercolor[11] = |cff106246


Set Playercolor[12] = |cff4e2a04


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Set the text for (Last created multiboard) item in column 1, row ((Integer A) + 1) to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))




Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Integer A) + 1) to 0




Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Integer A) + 1) to 0


Multiboard - Minimize (Last created multiboard)


Multiboard - Maximize (Last created multiboard)Hier möchte ich nochmal auf die Funktion " Player ( ) ", bzw. wie sie im Auswahlmenu heisst "Conversion - Convert Player Index To Player", hinweisen:
Diese Funktion nimmt einen Integer und macht daraus einen Spieler. Also wenn wir Player(1) haben, so ist das Spieler 1 Rot; bei Player(2) Spieler 2 Blau usw..
Damit hätten wir die Farben geschafft, jedoch werden in so, die selbst ausgewählte Farbe eines Spielers nicht berücksichtigt; ihr solltet also die Farben in den Spielerpreferenzen festlegen.
Anzeigen des Helden als Icon im MB. Wir müssen es also irgendwie schaffen, dass wir ein Icon an einen Helden speichern. Dies lässt sich am besten mit dem Gamecache realisieren, da wir bei ihm einfach an den Eiheitentyp einen String speichern können: Benötigt werden folgende Funktionen (und Variablen):
Und wie speichere ich nun ein Icon und wie hole ich das wieder?
Nun erstmal muss man die Icons initialisieren; also wieder ab in den Trigger "Multiboard Init". Dort erstellen wir erstmal unseren Cache:

Game Cache - Create a game cache from blablabla

Set Multiboardcache = (Last created game cache)Und nun speichert man den Pfad des Icons in dem Cache:

Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp as Multiboard of (Icons - + (String(Paladin))) in MultiboardcacheBei einem Cache ist es wichtig, dass man sich nicht mit den Labeln und den Caterogies in die Quere kommt, daher sollte man möglichst aussagekräftige und einmalige Werte benutzen. Hier speicher in unter dem Label "Multiboard" mit der Caterogie "Icons - " + String(Paladin). Ich benutze den Präfix "Icons - ", damit ich nacher keine Probleme habe, sollte ich String(Paladin) nochmals verwenden. Da wir nun Icons in unser MB einbauen brauchen wir auch eine Spalte mehr; ich packe die Icons vor den Spielernamen. Also muss die Zeile "Multiboard - Create a multiboard with 3 columns and 13 rows, titled Hier steht der Tite..." in "Multiboard - Create a multiboard with 4 columns and 13 rows, titled Hier steht der Tite..." geändert werden. Jedoch müssen nun aber auch alle anderen Werte für die Breite der Zellen gändert werden und ausserdem werden ja im ganzen MB keine Icons angezeigt, jedoch sollen jetzt aber welche angezeigt werden; da gibt es nur eins: ändern. Der geänderte Trigger sieht nun folgendermaßen aus:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


-------- *** Erstellen des Multiboards *** --------


Multiboard - Create a multiboard with 4 columns and 13 rows, titled Hier steht der Tite...


1. Set MB = (Last created multiboard)


Multiboard - Show MB


Multiboard - Set the display style for MB item in column 0, row 0 to Show text and Hide icons


2. Multiboard - Set the text for MB item in column 2, row 1 to Name


2. Multiboard - Set the text for MB item in column 3, row 1 to Kills


2. Multiboard - Set the text for MB item in column 4, row 1 to Herokills


2. Multiboard - Set the width for MB item in column 1, row 0 to 2.00% of the total screen width


2. Multiboard - Set the width for MB item in column 2, row 0 to 8.00% of the total screen width


2. Multiboard - Set the width for MB item in column 3, row 0 to 3.00% of the total screen width


2. Multiboard - Set the width for MB item in column 4, row 0 to 4.00% of the total screen width


3. -------- *** Definieren der Farben *** --------


Set Playercolor[1] = |cffff0303


Set Playercolor[2] = |cff0042ff


Set Playercolor[3] = |cff1ce6b9


Set Playercolor[4] = |cff540081


Set Playercolor[5] = |cfffffc01


Set Playercolor[6] = |cfffe8a0e


Set Playercolor[7] = |cff20c000


Set Playercolor[8] = |cffe55bb0


Set Playercolor[9] = |cff959697


Set Playercolor[10] = |cff7ebff1


Set Playercolor[11] = |cff106246


Set Playercolor[12] = |cff4e2a04


3. -------- *** Erstellen des Cache *** --------


Game Cache - Create a game cache from blablabla


Set Multiboardcache = (Last created game cache)


3. -------- *** Einrichten der Icons *** --------


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp as Multiboard of (Icons - + (String(Paladin))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroArchMage.blp as Multiboard of (Icons - + (String(Erzmagier))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroMountainKing.blp as Multiboard of (Icons - + (String(Bergkönig))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince.blp as Multiboard of (Icons - + (String(Blutmagier))) in Multiboardcache


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




4. Multiboard - Set the display style for MB item in column 1, row ((Integer A) + 1) to Hide text and Show icons




Multiboard - Set the text for MB item in column 2, row ((Integer A) + 1) to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))




Multiboard - Set the text for MB item in column 3, row ((Integer A) + 1) to 0




Multiboard - Set the text for MB item in column 4, row ((Integer A) + 1) to 0


Multiboard - Minimize MB


Multiboard - Maximize MBWie man sieht, habe ich viele veränderungen vorgenommen (siehe Zahlen), die ich nun erläutere:
Und wie kriege ich jetzt die Icons?
Nun dies hängt von eurer Heldenwahl (also wie die Spieler ihren Helden auswählen) ab. Ich habe einfach mal ein Beispielasuwahlsystem gemacht:
BEISPIEL Auswahl

Events


Player - Player 1 (Red) Selects a unit


Player - Player 2 (Blue) Selects a unit


Player - Player 3 (Teal) Selects a unit


Player - Player 4 (Purple) Selects a unit


Player - Player 5 (Yellow) Selects a unit


Player - Player 6 (Orange) Selects a unit


Player - Player 7 (Green) Selects a unit


Player - Player 8 (Pink) Selects a unit


Player - Player 9 (Gray) Selects a unit


Player - Player 10 (Light Blue) Selects a unit


Player - Player 11 (Dark Green) Selects a unit


Player - Player 12 (Brown) Selects a unit

Conditions


BEISPIEL_Chosen[(Player number of (Triggering player))] Equal to False

Actions


Set BEISPIEL_Chosen[(Player number of (Triggering player))] = True


Unit - Create 1 (Unit-type of (Triggering unit)) for (Triggering player) at ((Triggering player) start location) facing Default building facing degrees


Multiboard - Set the icon for MB item in column 1, row ((Player number of (Triggering player)) + 1) to (Load Multiboard of (Icons - + (String((Unit-type of (Triggering unit))))) from Multiboardcache)Ihr müsste diesen Trigger NICHT verwenden, damit das Multiboard funktioniert! Alle Sachen (Variablen, Trigger), vor denen "BEISPIEL" steht müssen NICHT verwendet werden!
Ich zeige euch an diesem Trigger nur wie ihr jetzt das Icon eures Helden in das MB bekommt. Dafür gucken wir uns folgende Zeile an:

Multiboard - Set the icon for MB item in column 1, row ((Player number of (Triggering player)) + 1) to (Load Multiboard of (Icons - + (String((Unit-type of (Triggering unit))))) from (Last created game cache))Wir setzen das Item in Spalte 1 und Reihe Playernumber + 1 gleich des, unter der Einheit im Cache gespeichertem Wert. Dafür benutzen wir einfach "Game Cache - Load String Value" und schwupps haben wir das Item.
Nun kommen wir zu etwas, was in allen Maps, egal ob herobasierte Map, oder nicht, gerne gesehen wird: der Zeitanzeige. Ich packe die Zeitanzeige gerne in den Titel des MB's, da ich finde dies übersichtlicher und schöner ist; jedoch könnt ihr euch, wenn ihr hier das Tutorial durch habt, die Zeitanzeige in jede andere Zelle legen.
Die Theorie ist, das wir jede Sekunde einen Trigger laufen lassen, der eine Variable, die die Sekunden zählt um 1 erhöht; ist diese Varialbe nun über 60, so wird eine Minuten-Variable um 1 erhöht, die wiederum, falls sie über 60 ist eine Stunden-Variable um 1 erhöht. Hört sich nicht allzu schwer an; ist es auch nicht: los gehts.
(Anfänglich aus)
Multiboard Update

Events


Time - Every 1.00 seconds of game time

Conditions

Actions


Set Sekunden = (Sekunden + 1)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Sekunden Greater than 60



Then - Actions




Set Sekunden = 0




Set Minuten = (Minuten + 1)



Else - Actions




Do nothing


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Minuten Greater than 60



Then - Actions




Set Minuten = 0




Set Stunden = (Stunden + 1)



Else - Actions




Do nothingBenötigte Variablen sind hier die drei Integer-Variablen, von denen ich grade sprach (Sekunden, Minuten, Stunden). Würden wir diese drei Variablen jetzt einfach hintereinander reihen und durch Doppelpunkte trennen, so würde dies nicht nach der typischen Uhr-Anzeige aussehen, da, falls die Werte unter 10 sind sowas z.B. bei rauskommt 1:3:7 .Da wir aber eine richtige Uhranzeige haben wollen (also 01:03:07) müssen wir mit wieteren IF's arbeiten. Um uns die Sache leichter zu machen besorgen wir uns ausserdem eine neue Varialbe; einen String mit dem Namen "Title".
(Anfänglich aus)
Multiboard Update

Events


Time - Every 1.00 seconds of game time

Conditions

Actions


Set Sekunden = (Sekunden + 1)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Sekunden Equal to 60



Then - Actions




Set Sekunden = 0




Set Minuten = (Minuten + 1)



Else - Actions




Do nothing


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Minuten Equal to 60



Then - Actions




Set Minuten = 0




Set Stunden = (Stunden + 1)



Else - Actions




Do nothing


Set Title = |cffab2d5e


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Stunden Less than 10



Then - Actions




Set Title = (Title + (0 + (String(Stunden))))



Else - Actions




Set Title = (Title + (String(Stunden)))


Set Title = (Title + |cff23def1:|cffab2d5e)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Minuten Less than 10



Then - Actions




Set Title = (Title + (0 + (String(Minuten))))



Else - Actions




Set Title = (Title + (String(Minuten)))


Set Title = (Title + |cff23def1:|cffab2d5e)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Sekunden Less than 10



Then - Actions




Set Title = (Title + (0 + (String(Sekunden))))



Else - Actions




Set Title = (Title + (String(Sekunden)))


Multiboard - Change the title of MB to TitleGehen wir den Trigger, bis aud dei Stellen mit dem Sekundenerhöhen mal durch: Also zuerst setze ich den String "Title" auf eine Farbe (damit es schöner aussieht); dann prüfe ich ob Stunden noch kleiner als 10 sind. Sind sie dies, so setze ich Title=Tile + "0" + String(Stunden) Aber warum + "0" ? Nun das mache ich, damit ich die schöne Uhranzeige bekomme. Danach setze ich Title=Title+":" (Allerdings färbe ich : noch ein bisschen, damits noch schöner wird). Und wiederhole, das was ich grade mit Stunden gemacht habe, mit Minuten, und Sekunden und am Ende setze ich einfach den Title des Multiboards auf den Wert, den die Variable "Title" hat.
Da dieses Multiboard vor allem für eine Heldenbasierte Map gedacht ist, werde ich die Zeitanzeige in den Multiboardtitel packen, da ich finde, dass die Revivezeit sehr wichtig ist und man sie immer im Auge behalten sollte. Da wir ja schon einen Trigger haben, der Jede Sekunde feuert, wäre es doch Ressourcensparend die Wiederbelebung auch in diesem Trigger zu machen. Dafür brauchen wir natürlich ein paare neue Variablen:
Zudem brauchen wir ja auch nun für jeden Spieler ein eigenes MB, damit wir den Title nur für den Spieler des gestorbenen Helden anzeigen; also aus MB einen Multiboard-Array machen. Jetzt zeigt sich eine Fehlermeldung... WarCraft weiss nicht mehr welches Multiboard er in den Trigger behandeln soll: Also packen wir, wo immer nun son graues Kästchen ist, die Zeile in eine Schleife, die von 1 bis 12 geht und machen dann diese Aktion für jeweils MB[Integer A] (Da wir in Multiboard Init schon einmal Integer A benutzen benutzen wir in der Integer A schleife einfach Integer B um durch alle MB's zu gehen). Nun bearbeiten wir unseren Inittrigger, sodass für jeden Spieler ein eigenes MB erstellt wird:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


-------- *** Erstellen des Multiboards *** --------


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Create a multiboard with 4 columns and 13 rows, titled |cffab2d5e00|cff23d...




Set MB[(Integer A)] = (Last created multiboard)




Multiboard - Set the display style for MB[(Integer A)] item in column 0, row 0 to Show text and Hide icons




Multiboard - Set the text for MB[(Integer A)] item in column 2, row 1 to Name




Multiboard - Set the text for MB[(Integer A)] item in column 3, row 1 to Kills




Multiboard - Set the text for MB[(Integer A)] item in column 4, row 1 to Herokills




Multiboard - Set the width for MB[(Integer A)] item in column 1, row 0 to 2.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 2, row 0 to 8.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 3, row 0 to 3.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 4, row 0 to 4.00% of the total screen width


-------- *** Definieren der Farben *** --------


Set Playercolor[1] = |cffff0303


Set Playercolor[2] = |cff0042ff


Set Playercolor[3] = |cff1ce6b9


Set Playercolor[4] = |cff540081


Set Playercolor[5] = |cfffffc01


Set Playercolor[6] = |cfffe8a0e


Set Playercolor[7] = |cff20c000


Set Playercolor[8] = |cffe55bb0


Set Playercolor[9] = |cff959697


Set Playercolor[10] = |cff7ebff1


Set Playercolor[11] = |cff106246


Set Playercolor[12] = |cff4e2a04


-------- *** Erstellen des Cache *** --------


Game Cache - Create a game cache from blablabla


Set Multiboardcache = (Last created game cache)


-------- *** Einrichten der Icons *** --------


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp as Multiboard of (Icons - + (String(Paladin))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroArchMage.blp as Multiboard of (Icons - + (String(Erzmagier))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroMountainKing.blp as Multiboard of (Icons - + (String(Bergkönig))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince.blp as Multiboard of (Icons - + (String(Blutmagier))) in Multiboardcache


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Wait 0.00 seconds //(ka warum aber WarCraft sagt, dass die zwei Schleife ineinander zu viel ist,








//daher benutze ich hier ein Wait, damit WarCraft den Trigger bis zum Ende aufruft)




For each (Integer B) from 1 to 12, do (Actions)





Loop - Actions






Multiboard - Set the display style for MB[(Integer B)] item in column 1, row ((Integer A) + 1) to Hide text and Show icons






Multiboard - Set the text for MB[(Integer B)] item in column 2, row ((Integer A) + 1) to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))






Multiboard - Set the text for MB[(Integer B)] item in column 3, row ((Integer A) + 1) to 0






Multiboard - Set the text for MB[(Integer B)] item in column 4, row ((Integer A) + 1) to 0




Multiboard - Minimize MB[(Integer A)]




Multiboard - Maximize MB[(Integer A)]




Custom script: call ShowMultiboardForPlayer(Player(bj_forLoopAIndex-1), udg_MB[bj_forLoopAIndex])


Trigger - Turn on Multiboard Update <gen>Am wichtigsten ist das Custom Scripts "ShowmultiboardForPlayer()". Diese Funktion erlaubt es uns jedem Spieler ein anderes Mb zu zeigen. Die Funktion, die das tut, sieht so aus:
function ShowMultiboardForPlayer takes player p, multiboard m returns nothing if GetLocalPlayer()==p then call MultiboardDisplay(m, true) endif endfunction
Die müsst ihr einfach in euren Map-Header kopieren (einfach im Triggereditor oben auf den Mapnamen klicken).
Die Funktion nimmt einen Spieler und ein MB entgegen, jedoch geben wir der Funktion beim Aufruf den Spieler IntegerA - 1 und dass passende MB. Warum? Nun ja, dies liegt daran, dass in Jass die Spieler bei 0 beginnen also Spieler 1 Rot = Player(0).
Der Updatetrigger wird folgendermaßen geändert:
Multiboard Update

Events


Time - Every 1.00 seconds of game time

Conditions

Actions


Set Sekunden = (Sekunden + 1)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Sekunden Equal to 60



Then - Actions




Set Sekunden = 0




Set Minuten = (Minuten + 1)



Else - Actions




Do nothing


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




Minuten Equal to 60



Then - Actions




Set Minuten = 0




Set Stunden = (Stunden + 1)



Else - Actions




Do nothing


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






Dead[(Integer A)] Equal to False





Then - Actions






Set Title = |cffab2d5e






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Stunden Less than 10







Then - Actions








Set Title = (Title + (0 + (String(Stunden))))







Else - Actions








Set Title = (Title + (String(Stunden)))






Set Title = (Title + |cff23def1:|cffab2d5e)






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Minuten Less than 10







Then - Actions








Set Title = (Title + (0 + (String(Minuten))))







Else - Actions








Set Title = (Title + (String(Minuten)))






Set Title = (Title + |cff23def1:|cffab2d5e)






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Sekunden Less than 10







Then - Actions








Set Title = (Title + (0 + (String(Sekunden))))







Else - Actions








Set Title = (Title + (String(Sekunden)))





Else - Actions






Set Title = |cff23def1






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Revivetime[(Integer A)] Equal to 0







Then - Actions








Hero - Instantly revive Hero[(Integer A)] at ((Player((Integer A))) start location), Hide revival graphics








Camera - Pan camera for (Player((Integer A))) to (Position of Hero[(Integer A)]) over 0.00 seconds








Selection - Select Hero[(Integer A)] for (Player((Integer A)))








Set Dead[(Integer A)] = False







Else - Actions








Do nothing






Set Tmpint[0] = (Revivetime[(Integer A)] / 60)






Set Tmpint[1] = (Revivetime[(Integer A)] mod 60)






Set Revivetime[(Integer A)] = (Revivetime[(Integer A)] - 1)






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Tmpint[0] Less than 10







Then - Actions








Set Title = (Title + (0 + (String(Tmpint[0]))))







Else - Actions








Set Title = (Title + (String(Tmpint[0])))






Set Title = (Title + |cffab2d5e:|cffab2d5e|cff23def1)






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








Tmpint[1] Less than 10







Then - Actions








Set Title = (Title + (0 + (String(Tmpint[1]))))







Else - Actions








Set Title = (Title + (String(Tmpint[1])))




Multiboard - Change the title of MB[(Integer A)] to TitleEigentlich ist zu diesem Trigger recht wenig zu sagen. Es werden wie gewohnt die Sekunden geprüft, dass geguckt, ob man die Minuten oder die Stunden erhöhen muss. Dann kommt etwas neues: Es wird eine If-Then-Else-Aktion erstellt, die prügt, ob ein Boolean (Dead) true oder false ist. Is dieser false, so wir das gemacht, was auch schon früher gemacht wurde; ist er jedoch auf true, so wird der Titel ein anderer. Tmpint[0] wird auf die Minutenanzahl gesetzt, die der Spieler noch warten muss, bis sein Held wiederbelebt wird; Tmpint[1] wir auf die Sekunden gesetzt, die der Spieler noch warten muss. Dies wird aus dem Integer-Array Revivetime entnommen, der jede Sekunde um eins heruntergezählt wird, und falls er 0 ist, der Held revived wird. Ansonsten nur der übliche Schnack wie zu überprüfen, dass beide Zahlenstring über 10 sind, und wenn nicht, dass eine 0 hinzugefügt wird.
Nun widmen wir uns einem Kapitel, dass vor allem für Anfänger recht schwer ist: das MB soll nur so viele Reihen wie Spieler (+ extra Reihen) haben. Dies ist mit der passenden Technik kein Problem. Zu erläuterung, ein kleines Beispiel:
| Spieler | Spielt? | Zähltvariable |
|---|---|---|
| Spieler 1 | [ ] | 1 |
| Spieler 2 | [x] | 2 |
| Spieler 3 | [x] | 3 |
| Spieler 4 | [ ] | 3 |
| Spieler 5 | [ ] | 3 |
| Spieler 6 | [x] | 4 |
| Spieler 7 | [x] | 5 |
| Spieler 8 | [ ] | 6 |
| Spieler 9 | [x] | 7 |
| Spieler 10 | [ ] | 7 |
| Spieler 11 | [x] | 8 |
| Spieler 12 | [ ] | 8 |
Zähltvariable ist zu anfangs 1, da die erste Reihe für den Spieler erst Reihe 2 ist
So einfach kriegen wir die passende Reihe für jeden Spieler. Nun brauchen wir nurnoch einen Weg, diese Zahl für den jeweiligen Spieler zu speichern. Man könnte dies über einen Integer-Array lösen, jedoch haben wir ja noch einen Cache, und warum nicht den benutzen!

Game Cache - Store CountPlayer as Multiboard of (Player - + (String((Integer A)))) in MultiboardcacheMan beachte hier wieder den Präfix "Player - ", damit es zu keinen Konflikten kommt. Zudem speicher ich den Wert unter der Spielernummer (oder bzw. Integer A). Dies erlaubt den Spieler wärend des Spiels die Namen zu ändern, ohne das es zu Problemen kommt. Das ganze sieht in einer Schleife so aus:

For each (Integer A) from 1 to 12, do (Actions)


Loop - Actions



Wait 0.00 seconds



If (All Conditions are True) then do (Then Actions) else do (Else Actions)




If - Conditions




--> ((Player((Integer A))) controller) Equal to User




--> ((Player((Integer A))) slot status) Equal to Is playing




Then - Actions




--> Set CountPlayer = (CountPlayer + 1)




--> Game Cache - Store CountPlayer as Multiboard of (Player - + (String((Integer A)))) in Multiboardcache





For each (Integer B) from 1 to 12, do (Actions)






Loop - Actions







Multiboard - Set the display style for MB[(Integer B)] item in column 1, row CountPlayer to Hide text and Show icons







Multiboard - Set the text for MB[(Integer B)] item in column 2, row CountPlayer to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))







Multiboard - Set the text for MB[(Integer B)] item in column 3, row CountPlayer to 0







Multiboard - Set the text for MB[(Integer B)] item in column 4, row CountPlayer to 0




Else - Actions





Do nothing



Multiboard - Minimize MB[(Integer A)]



Multiboard - Maximize MB[(Integer A)]



Custom script: call ShowMultiboardForPlayer(Player(bj_forLoopAIndex-1), udg_MB[bj_forLoopAIndex])Die Pfeile zeigen die neuen Aktionen
Wollen wir nun z.B. die Kills erhöhen, so kriegen wir die passende Reihe, indem wir den Wert aus dem Cache mit der Katerogie
(Player - + String(Playernumber of Owner of (Killing Unit)))
Natürlich darf das MB jetzt auch nur "Anzahl der Spieler + Extra Reihen" Besitzen. Aber das ist ja kein Problem:

Set Tmpint[2] = ((Number of players in (All players matching ((((Matching player) controller) Equal to User) and (((Matching player) slot status) Equal to Is playing)))) + 1)und

Multiboard - Create a multiboard with 4 columns and Tmpint[2] rows, titled |cffab2d5e00|cff23d...Der ganze Inittrigger sieht nun so aus:
Multiboard Init

Events


Time - Elapsed game time is 0.00 seconds

Conditions

Actions


Set Tmpint[2] = ((Number of players in (All players matching ((((Matching player) controller) Equal to User) and (((Matching player) slot status) Equal to Is playing)))) + 1)


Set CountPlayer = 1


-------- *** Erstellen des Multiboards *** --------


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Multiboard - Create a multiboard with 4 columns and Tmpint[2] rows, titled |cffab2d5e00|cff23d...




Set MB[(Integer A)] = (Last created multiboard)




Multiboard - Set the display style for MB[(Integer A)] item in column 0, row 0 to Show text and Hide icons




Multiboard - Set the text for MB[(Integer A)] item in column 2, row 1 to |cff6785a7Name




Multiboard - Set the text for MB[(Integer A)] item in column 3, row 1 to |cff6785a7Kills




Multiboard - Set the text for MB[(Integer A)] item in column 4, row 1 to |cff6785a7Herokills




Multiboard - Set the width for MB[(Integer A)] item in column 1, row 0 to 2.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 2, row 0 to 8.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 3, row 0 to 3.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 4, row 0 to 4.00% of the total screen width


-------- *** Definieren der Farben *** --------


Set Playercolor[1] = |cffff0303


Set Playercolor[2] = |cff0042ff


Set Playercolor[3] = |cff1ce6b9


Set Playercolor[4] = |cff540081


Set Playercolor[5] = |cfffffc01


Set Playercolor[6] = |cfffe8a0e


Set Playercolor[7] = |cff20c000


Set Playercolor[8] = |cffe55bb0


Set Playercolor[9] = |cff959697


Set Playercolor[10] = |cff7ebff1


Set Playercolor[11] = |cff106246


Set Playercolor[12] = |cff4e2a04


-------- *** Erstellen des Cache *** --------


Game Cache - Create a game cache from blablabla


Set Multiboardcache = (Last created game cache)


-------- *** Einrichten der Icons *** --------


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp as Multiboard of (Icons - + (String(Paladin))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroArchMage.blp as Multiboard of (Icons - + (String(Erzmagier))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroMountainKing.blp as Multiboard of (Icons - + (String(Bergkönig))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince.blp as Multiboard of (Icons - + (String(Blutmagier))) in Multiboardcache


-------- ***Anpassen der Reihen*** --------


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Wait 0.00 seconds




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






((Player((Integer A))) controller) Equal to User






((Player((Integer A))) slot status) Equal to Is playing





Then - Actions






Set CountPlayer = (CountPlayer + 1)






Game Cache - Store CountPlayer as Multiboard of (Player - + (String((Integer A)))) in Multiboardcache






For each (Integer B) from 1 to 12, do (Actions)







Loop - Actions








Multiboard - Set the display style for MB[(Integer B)] item in column 1, row CountPlayer to Hide text and Show icons








Multiboard - Set the text for MB[(Integer B)] item in column 2, row CountPlayer to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))








Multiboard - Set the text for MB[(Integer B)] item in column 3, row CountPlayer to 0








Multiboard - Set the text for MB[(Integer B)] item in column 4, row CountPlayer to 0





Else - Actions






Do nothing




Multiboard - Minimize MB[(Integer A)]




Multiboard - Maximize MB[(Integer A)]




Custom script: call ShowMultiboardForPlayer(Player(bj_forLoopAIndex-1), udg_MB[bj_forLoopAIndex])


Trigger - Turn on Multiboard Update <gen>Ersteinmal erstellen wir eine neue Variable names "Leader". Zudem brauchen wir noch ein neues Customscript, dass uns den Spieler mit den meisten Punkten gibt (Als Jass-Script, da es dadrin viel einfacher ist).
function GetLeader takes nothing returns integer local integer i = 1 local integer array p local integer r = - 1 local integer a = 15 loop exitwhen i > 12 set p[ i ] = udg_Kills[ i ] + udg_Herokills[ i ] * 10 set i = i + 1 endloop set i = 1 loop exitwhen i > 12 if p[ i ] > r then set r = p[ i ] set a = i endif set i = i + 1 endloop return a - 1 endfunction
Wie man sieht, werden hier die Herokills * 10 gerechnet, da ich finde, dass Herokills mehr zählen als normale; wer das nicht möchte, ändert den Wert einfach in der Funktion und im Kill Trigger. Da wir nun natürlich auch eine (bzw 2, da ich noch ne "Grenzlinie" gezogen habe) müssen wir den Init trigger verändern.
Multiboard Init


Events



Time - Elapsed game time is 0.00 seconds


Conditions


Actions



Custom script: set bj_wantDestroyGroup=true



Set Tmpint[2] = ((Number of players in (All players matching ((((Matching player) controller) Equal to User) and (((Matching player) slot status) Equal to Is playing)))) + 1)



Set Tmpint[2] = (Tmpint[2] + 2)



Set CountPlayer = 1



-------- *** Erstellen des Multiboards *** --------



For each (Integer A) from 1 to 12, do (Actions)




Loop - Actions





Multiboard - Create a multiboard with 4 columns and Tmpint[2] rows, titled |cffab2d5e00|cff23d...




Set MB[(Integer A)] = (Last created multiboard)




Multiboard - Set the display style for MB[(Integer A)] item in column 0, row 0 to Show text and Hide icons




Multiboard - Set the text for MB[(Integer A)] item in column 2, row 1 to |cff6785a7Name




Multiboard - Set the text for MB[(Integer A)] item in column 3, row 1 to |cff6785a7Kills




Multiboard - Set the text for MB[(Integer A)] item in column 4, row 1 to |cff6785a7Herokills




Multiboard - Set the width for MB[(Integer A)] item in column 1, row 0 to 2.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 2, row 0 to 8.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 3, row 0 to 3.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 4, row 0 to 4.00% of the total screen width


-------- *** Definieren der Farben *** --------


Set Playercolor[1] = |cffff0303


Set Playercolor[2] = |cff0042ff


Set Playercolor[3] = |cff1ce6b9


Set Playercolor[4] = |cff540081


Set Playercolor[5] = |cfffffc01


Set Playercolor[6] = |cfffe8a0e


Set Playercolor[7] = |cff20c000


Set Playercolor[8] = |cffe55bb0


Set Playercolor[9] = |cff959697


Set Playercolor[10] = |cff7ebff1


Set Playercolor[11] = |cff106246


Set Playercolor[12] = |cff4e2a04


-------- *** Erstellen des Cache *** --------


Game Cache - Create a game cache from blablabla


Set Multiboardcache = (Last created game cache)


-------- *** Einrichten der Icons *** --------


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp as Multiboard of (Icons - + (String(Paladin))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroArchMage.blp as Multiboard of (Icons - + (String(Erzmagier))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroMountainKing.blp as Multiboard of (Icons - + (String(Bergkönig))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroBloodElfPrince.blp as Multiboard of (Icons - + (String(Blutmagier))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroBladeMaster.blp as Multiboard of (Icons - + (String(Klingenmeister))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroFarSeer.blp as Multiboard of (Icons - + (String(Scharfseher))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroTaurenChiefTain.blp as Multiboard of (Icons - + (String(Tauren-Häuptling))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNShadowHunter.blp as Multiboard of (Icons - + (String(Schattenjäger))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroDeathKnight.blp as Multiboard of (Icons - + (String(Todesritter))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroLich.blp as Multiboard of (Icons - + (String(Lich))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroDreadLord.blp as Multiboard of (Icons - + (String(Schreckenslord))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroCryptLord.blp as Multiboard of (Icons - + (String(Gruftlord))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNKeeperOfTheGrove.blp as Multiboard of (Icons - + (String(Hüter des Hains))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNPriestessOfTheMoon.blp as Multiboard of (Icons - + (String(Mond-Priesterin))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroDemonHunter.blp as Multiboard of (Icons - + (String(Dämonenjäger))) in Multiboardcache


Game Cache - Store ReplaceableTextures\CommandButtons\BTNHeroWarden.blp as Multiboard of (Icons - + (String(Wächterin))) in Multiboardcache


-------- ***Anpassen der Reihen*** --------


For each (Integer A) from 1 to 12, do (Actions)



Loop - Actions




Wait 0.00 seconds




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






((Player((Integer A))) controller) Equal to User






((Player((Integer A))) slot status) Equal to Is playing





Then - Actions






Set CountPlayer = (CountPlayer + 1)






Game Cache - Store CountPlayer as Multiboard of (Player - + (String((Integer A)))) in Multiboardcache






For each (Integer B) from 1 to 12, do (Actions)







Loop - Actions








Multiboard - Set the display style for MB[(Integer B)] item in column 1, row CountPlayer to Hide text and Show icons








Multiboard - Set the text for MB[(Integer B)] item in column 2, row CountPlayer to (Playercolor[(Integer A)] + ((Name of (Player((Integer A)))) + |r))








Multiboard - Set the text for MB[(Integer B)] item in column 3, row CountPlayer to 0








Multiboard - Set the text for MB[(Integer B)] item in column 4, row CountPlayer to 0





Else - Actions






Do nothing




-------- ***Grenze*** --------




Multiboard - Set the width for MB[(Integer A)] item in column 1, row (Tmpint[2] - 1) to 17.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 2, row (Tmpint[2] - 1) to 0.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 3, row (Tmpint[2] - 1) to 0.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 4, row (Tmpint[2] - 1) to 0.00% of the total screen width




Multiboard - Set the text for MB[(Integer A)] item in column 1, row (Tmpint[2] - 1) to |cff777777#########...




-------- ***Bester Spieler*** --------




Multiboard - Set the width for MB[(Integer A)] item in column 1, row Tmpint[2] to 8.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 2, row Tmpint[2] to 10.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 3, row Tmpint[2] to 0.00% of the total screen width




Multiboard - Set the width for MB[(Integer A)] item in column 4, row Tmpint[2] to 0.00% of the total screen width




Multiboard - Set the text for MB[(Integer A)] item in column 1, row Tmpint[2] to |cff3b4a9aBester Sp...




-------- ***Einklappen und Ausklappen*** --------




Multiboard - Minimize MB[(Integer A)]




Multiboard - Maximize MB[(Integer A)]




Custom script: call ShowMultiboardForPlayer(Player(bj_forLoopAIndex-1), udg_MB[bj_forLoopAIndex])


Trigger - Turn on Multiboard Update <gen>Ausserdem brauchen wir noch einen veränderten Kill Trigger
Multiboard Kills


Events




Unit - A unit Dies


Conditions




(Killing unit) Not equal to No unit




(Player number of (Owner of (Killing unit))) Less than 13




((Triggering unit) belongs to an enemy of (Owner of (Killing unit))) Equal to True


Actions




Set Tmpint[2] = (Number of rows in MB[1])




Set Tmpint[3] = (Load Multiboard of (Player - + (String((Player number of (Owner of (Killing unit)))))) from (Last created game cache))




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






((Triggering unit) is A Hero) Equal to True





Then - Actions






Set Herokills[(Player number of (Owner of (Killing unit)))] = (Herokills[(Player number of (Owner of (Killing unit)))] + 1)





Else - Actions






Set Kills[(Player number of (Owner of (Killing unit)))] = (Kills[(Player number of (Owner of (Killing unit)))] + 1)




Custom script: set udg_Leader=Player(GetLeader())




For each (Integer A) from 1 to 12, do (Actions)





Loop - Actions







Multiboard - Set the text for MB[(Integer A)] item in column 2, row Tmpint[2] to ((Playercolor[(Player number of Leader)] + (Name of Leader)) + (( ( + (String((Kills[(Player number of Leader)] + (Herokills[(Player number of Leader)] x 10))))) + )))






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








((Triggering unit) is A Hero) Equal to True







Then - Actions









Multiboard - Set the text for MB[(Integer A)] item in column 4, row Tmpint[3] to (String(Herokills[(Player number of (Owner of (Killing unit)))]))







Else - Actions









Multiboard - Set the text for MB[(Integer A)] item in column 3, row Tmpint[3] to (String(Kills[(Player number of (Owner of (Killing unit)))]))Wir setzen einfach Tmpint[2] auf die Anzahl der Reihen eines MB's (das geht, da wir den besten Spieler ja in der letzten Reihe anzeigen wollen).

Kroatien (wir berichteten), spielt
Österreich bei der Clanbase Nations League heute einen vorentscheidenden War gegen die starke Mannschaft aus
Tschechien. Am heutigen mehr...