Benutzer-Werkzeuge

Webseiten-Werkzeuge


s5lua_g:g_funktionen:setupaitroopspawngenerator

SetupAITroopSpawnGenerator

Die Parameter (_name, _extendedArmy)

Initialisiert einen automatischen Respawn KI gesteuerter Armeen

Welcher Mapper kennt das nicht:
Man setzt einen Räuberturm in die Landschaft und lässt dann mit EnlargeArmy() eine Banditenhorde vor die Tür stellen.
Wenn diese tot sein sollte und der Turm noch steht, dann soll die Armee nach einer bestimmten Zeit respawnen.
  
Insgesamt ist das natürlich sehr viel Aufwand.
Doch es geht auch einfacher. Es gibt eine Funktion die genau das automatisch erledigt. 
Dafür muss zuerst ganz normal eine Armee mit den Standardwerten erzeugt werden:


Anwendungsbeispiel

Army = {}
Army.player = 2
Army.id = 1
Army.strength = 3
Army.position = GetPosition("EnemySpawn")
Army.rodeLength = 1000
 
SetupArmy(Army)
 
-- Statt nun Truppen manuell mit EnlargeArmy() zu erzeugen, erweitern wir jetzt die Army-Table um einige Werte:
-- Hier wird angegeben, welcher Einheitentyp und wieviel Soldaten der Truppe angehören. Es funktionieren auch Kanonen.
-- Die Liste kann beliebig lang sein, es werden maximal soviele Truppen gespawned wie in Army.strength angegeben.
-- Nachteil gegenüber dem EnlargeArmy(): Es kann keine Erfahrung verteilt werden
Army.spawnTypes = {
    {Entities.PU_LeaderPoleArm4, 8},
    {Entities.PU_LeaderPoleArm4, 8},
    {Entities.PU_LeaderSword4,   8},
    {Entities.PU_LeaderSword4,   8},
    }
 
-- Wenn endless true ist wird am Ende der Liste wieder oben angefangen, 
-- ansonsten ist die Armee am Ende besiegt und es spawned nix mehr
Army.endless = true
 
-- spawnPos sollte der gleiche Punkt sein wie die normale Army.position, aber es geht auch ein anderer Spawnpunkt
Army.spawnPos = GetPosition("EnemySpawn")
 
-- spawnGenerator ist das Gebäude aus dem die Truppen "rauskommen". Ist das Gebäude zerstört spawnen keine Truppen mehr
Army.spawnGenerator = "EnemyHQ"
 
-- Nach jeweils x Sekunden spawnen neue Gegner wenn sie gebraucht werden
Army.respawnTime = 10
 
-- Wenn refresh true ist, werden angeschlagene Truppen wieder aufgefüllt
Army.refresh = true
 
-- Pro Spawn werden maximal x neue Truppen der Armee hinzugefügt falls nötig
Army.maxSpawnAmount = 3
 
-- Wenn noEnemy true ist, spawnen nur neue Gegner wenn kein Feind in der Nähe ist
Army.noEnemy = true
 
-- Die Reichweite in der sich keine Gegner befinden dürfen wenn noEnemy true ist
Army.noEnemyDistance = 500
 
--Mit diesen erweiterten Angaben kann man dann die Funktion aufrufen:
SetupAITroopSpawnGenerator("EnemyArmy", Army)
--EnemyArmy ist dabei ein frei wählbarer, eindeutiger Name.
--Jetzt sollten die Truppen völlig automatisch erstellt werden und bei Bedarf erneuert.
 
--Einen Job um die Armee zu steuern, braucht man allerdings immer noch.

Siehe auch

s5lua_g/g_funktionen/setupaitroopspawngenerator.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)