Es gibt drei verschiedene diplomatische Zustände zwischen zwei Spielern: verbündet, neutral, feindlich. Standardmäßig sind alle Spieler untereinander neutral. Um die Diplomatie zu modifizieren, benötigt man die jeweiligen Spieler-Ids. Spieler 1 ist im Singleplayer standardmäßig der menschliche Spieler.
Es gibt drei Funktionen, um einen der drei diplomatischen Zustände zu setzen:
-- Setze _PlayerId1 und _PlayerId2 verbündet SetFriendly(_PlayerId1, _PlayerId2) -- Setze _PlayerId1 und _PlayerId2 neutral SetNeutral(_PlayerId1, _PlayerId2) -- Setze _PlayerId1 und _PlayerId2 feindlich SetHostile(_PlayerId1, _PlayerId2)
Wir setzen die Diplomatie in der dafür vorgesehenen Funktion InitDiplomacy
. Für unsere Beispielkarte müssen Spieler 1 und Spieler 2 feindlich zueinander sein:
function InitDiplomacy() SetHostile(1, 2) -- Für einen verbündeten Spieler 3 könnte man folgendes einstellen: -- SetFriendly(1, 3) -- damit dieser auch den gemeinsamen Feind angreifen kann, müssen die -- beiden untereinander ebenfalls feindlich sein: -- SetHostile(2, 3) end
Das diplomatische Verhältnis zweier Spieler kann auch später im Spiel verändert werden. Falls beispielsweise ein neutrales Dorf nach der Erfüllung einer Reihe von Quests verbündet werden soll, kann das zum Ende der Quest immer noch eingestellt werden.
Spieler 2 ist nun feindlich, allerdings kann der menschliche Spieler das im F2-Diplomatiemenü noch nicht sehen. Damit das möglich wird, müssen wir Spieler 2 einen Namen geben, unter dem er angezeigt werden kann. Dies geschieht mit der Funktion SetPlayerName
:
function InitDiplomacy() SetHostile(1, 2) -- Parameter 1 ist die Spieler-Id, Parameter 2 der Name als String SetPlayerName(2, "Kerberos") end
Für unser Beispiel ist es nicht relevant, aber möglicherweise möchtest du einen Verbündeten auf die Karte setzen, der seine Sicht mit dem Spieler teilt. Der Aufruf von SetFriendly
macht das nicht automatisch. Dafür braucht man die Funktion
-- Definiert, ob _PlayerId1 die Sicht von _PlayerId2 erhält -- Wenn _ShareFlag 1 ist, wird die gemeinsame Sicht aktiviert -- Wenn _ShareFlag 0 ist, wird die gemeinsame Sicht deaktiviert Logic.SetShareExplorationWithPlayerFlag(_PlayerId1, _PlayerId2, _ShareFlag)
Achtung: Diese Funktion definiert nur eine einseitige Sicht! Das bedeutet, dass _PlayerId1
zwar _PlayerId2
sehen kann, aber nicht umgekehrt. Im Singleplayer ist das nicht so relevant wie im Multiplayer. Eine gegenseitige gemeinsame Sicht samt Bündnis sähe daher so aus:
function InitDiplomacy() SetFriendly(1, 3) Logic.SetShareExplorationWithPlayerFlag(1, 3, 1) Logic.SetShareExplorationWithPlayerFlag(3, 1, 1) end
Es gibt insgesamt 16 verschiedene Spielerfarben (IDs von 1-16). Jeder Spieler hat standardmäßig die Farb-Id, die seiner Spieler-Id entspricht (also hat Spieler 1 Farb-Id 1). Mit der Funktion
Display.SetPlayerColorMapping(_PlayerId, _ColorId)
kann die Farbe eines Spielers verändert werden.
Achtung: Die Spielerfarben müssen in der Funktion InitPlayerColorMapping
definiert werden, da die Änderungen sonst nach dem Laden eines Spielstands verloren gehen!
Einige Farb-Ids sind in einer Variable abgespeichert, um sie leichter auffindbar und im Skript besser lesbar zu machen. Beispielsweise kann man die Farb-Id 12 in der Variable KERBEROS_COLOR
finden. Da wir oben Spieler 2 den Namen „Kerberos“ gegeben haben, soll er auch die passende Farbe erhalten:
function InitPlayerColorMapping() Display.SetPlayerColorMapping(2, KERBEROS_COLOR) end
Diese Tabelle gibt eine Übersicht über alle Spielerfarben und eventuelle Aliase:
Farb-Id | RGB | Farbe | Bezeichner |
---|---|---|---|
1 | 15, 64, 255 | Blau | PLAYER_COLOR |
2 | 226, 0, 0 | Rot | NEPHILIM_COLOR |
3 | 235, 255, 53 | Gelb | FRIENDLY_COLOR2 |
4 | 0, 235, 209 | Türkis | ENEMY_COLOR2 |
5 | 252, 164, 39 | Orange | FRIENDLY_COLOR1 |
6 | 178,2,255 | Lila | ENEMY_COLOR1 |
7 | 255,79,200 | Pink | - |
8 | 115, 209, 65 | Hellgrün | - |
9 | 0, 140, 2 | Dunkelgrün | EVIL_GOVERNOR_COLOR |
10 | 184,184,184 | Hellgrau | - |
11 | 184,182,90 | Mattes Gold | NPC_COLOR |
12 | 136,136,136 | Grau | KERBEROS_COLOR |
13 | 230,230,230 | Weiß | FRIENDLY_COLOR3 |
14 | 57,57,57 | Schwarz | ROBBERS_COLOR |
15 | 139,232,255 | Blau-Türkis | - |
16 | 255,150,214 | Rosa | - |
Im nächsten Kapitel legen wir fest, welche Startressourcen die Spieler erhalten.
Voriges Kapitel: Das Basisskript
Nächstes Kapitel: Ressourcen
Zurück nach oben