Benutzer-Werkzeuge

Webseiten-Werkzeuge


scripting:tutorials:level3:armies

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

scripting:tutorials:level3:armies [2024/05/20 10:35] – angelegt fritz_98scripting:tutorials:level3:armies [2024/05/20 13:18] (aktuell) fritz_98
Zeile 10: Zeile 10:
  
 =====Aufsetzen einer Armee===== =====Aufsetzen einer Armee=====
 +
 +Falls du den Abschitt zu [[ scripting:tutorials:level2:bandit_camps#die_armee-basisparameter |Armee-Basisparametern]] schon kennst, kannst du diesen Abschnitt überspringen. Die Inhalte sind hier der Vollständigkeit halber enthalten.
 +
 +Armeen werden mit der Funktion ''SetupArmy(_ArmyTable)'' aufgesetzt. Der Parameter ''_ArmyTable'' ist ein Table mit den folgenden Key-Value-Paaren:
 +^ Key ^ Value-Typ ^ Bedeutung ^
 +| **player** | Player Id | Spieler-Id des Spielers, dem die Armee gehören soll |
 +| **id** | Ganze Zahl (0 - 9) | Id der Armee. Es darf pro Spieler-Id und Armee-Id maximal **eine** Armee geben. Somit ist die Anzahl der Armeen pro Spieler auf 10 beschränkt |
 +| **position** | Position (Table der Form ''{X = x, Y = y}'') | Anfangsposition der Armee |
 +| **rodeLength** | Number | Radius um ''position'', innerhalb dessen sich die Armee bewegt |
 +| **beAgressive** | Boolean | Legt fest, ob die Armee auf dem Weg zu einem Angriffsziel Gegner angreifen soll (für ausschließlich defensive Armee irrelevant). **true** ist hier eigentlich immer sinnvoll |
 +
 +Eine Armee für Spieler 2 kann also beispielsweise so aufgesetzt werden:
 +<code lua>
 +function CreateArmy()
 +    -- Wir definieren das Armee-Table
 +    -- Um die Armee später steuern zu können, muss dieses Table global sein!
 +    Army = {
 +        player = 2,
 +        -- wir wählen die Id 0
 +        -- bei mehreren Armeen für Spieler 2 müssen alle unterschiedliche Ids haben
 +        id = 0,
 +        position = GetPosition("PositionArmy"),
 +        rodeLength = 4000,
 +        beAgressive = true
 +    }
 +
 +    SetupArmy(Army)
 +end
 +</code>
 +
 +Spieler-Id, Armee-Id, und Aggressivität bleiben für jede Armee fest. Um die Armee zu steuern, werden später nur die Position und die ''rodeLength'', also der Radius, modifiziert.
 +
 +**Achtung**: Die Verwendung von Armeen setzt voraus, dass für den KI-Spieler, dem die Armee gehört, auch eine **[[ scripting:tutorials:level1:enemy_ai#setupplayerai | KI aktiv]]** ist! ''SetupPlayerAi'' ist also zwingend notwendig! Weil das Spiel abstürzt, wenn eine KI aktiviert wird, ohne, dass der KI-Spieler ein Gebäude besitzt, muss für jeden Spieler mit einer Armee auch mindestens 1 Gebäude auf der Map stehen. \\
 +Gleichzeitig gibt es Konflikte mit der Funktion [[ scripting:tutorials:level1:enemy_ai#mapeditor_setupai |MapEditor_SetupAI]]. Die Angabe einer Armee-Id ist zwingend erforderlich. ''MapEditor_SetupAI'' belegt einige dieser Ids, abhängig vom angegebenen ''_Strength''-Wert und "bemächtigt" sich aller Armeen, deren Ids ''MapEditor_SetupAI'' für sich reserviert. Dadurch werden sie der Steuerung durch eigene Skripte entzogen. Die Tabelle unten zeigt die Armee-Ids, die durch ''MapEditor_SetupAI'' nicht mehr zur Verfügung stehen.
 +
 +^ _Strength ^ Reservierte Armee-Ids ^
 +| 0 | keine |
 +| 1 | 1 bis 2 |
 +| 2 | 1 bis 4 |
 +| 3 | 1 bis 6 |
 +
 +**Wichtig**: Mit dem Aufruf von ''SetupArmy'' hat die Armee **keine Truppen** und wird sie auch nicht selbstständig rekrutieren! Es wird dem Spiel lediglich klargemacht, dass der angegebene Spieler eine Armee mit der designierten Id bekommt und ein leerer Container dafür erstellt. Wie die Armee Truppen erhalten kann (sowohl gespawnt als auch rekrutiert) wird im Abschnitt zu [[ scripting:tutorials:level3:armies#truppenerstellung_und_andere_wichtige_armeefunktionen |Truppenerstellung]] beschrieben.
  
 =====Funktionen zum Armeestatus===== =====Funktionen zum Armeestatus=====
scripting/tutorials/level3/armies.txt · Zuletzt geändert: 2024/05/20 13:18 von fritz_98