Armeekontrolle funktioniert nicht

» Siedler Map Source Forum » Siedler DEdK Script Forum » Armeekontrolle funktioniert nicht

Seiten: 1

Josebra01
#1
30.03.2018 00:00
Beiträge: 2

Armeekontrolle funktioniert nicht

Guten Abend zusammen,
ich erstelle zur Zeit eine Map für meinen Bruder als Geburtstagsgeschenk, komme aber seit Stunden nicht mehr an einer Stelle weiter.
Ich habe einige Armeen erstellt, keine lässt sich jedoch mit den Standardbefehlen wie FrontalAttack() steuern. Sie spawnt, bleibt aber still stehen.
Die Armee habe ich hiermit erstellt:

function CreateArmyOne()
ArmyOne = {}
ArmyOne.player = 3
ArmyOne.id = 0
ArmyOne.strength = 8
ArmyOne.position = GetPosition( "EnemySpawn1" )
ArmyOne.rodeLength = 10000
ArmyOne.beAggressive = true
SetupArmy(ArmyOne)
ArmyOne.spawnTypes = {
{Entities.PU_LeaderSword4, 8},
{Entities.PU_LeaderPoleArm4, 8},
{Entities.PV_Cannon3, 1},
}
ArmyOne.endless = true
ArmyOne.spawnPos = GetPosition( "EnemySpawn1" )
ArmyOne.spawnGenerator = "player3HQ"
ArmyOne.respawnTime = 100
ArmyOne.refresh = false
ArmyOne.maxSpawnAmount = 2
ArmyOne.noEnemy = false
ArmyOne.noEnemyDistance = 50
SetupAITroopSpawnGenerator("EnemyArmyOne", ArmyOne)
StartSimpleJob( "ControlArmy" )
end


Und steuern möchte ich sie hiermit:


function ControlArmy()
Advance(ArmyOne)
end

Außerdem habe ich in der FMA die KI erstellt mit:

MapEditor_SetupAI(3, 0, 10000, 3, "player3", 3, 0)


Ich hoffe, dass alles verständlich ist und dass mit jemand helfen kann.

LG Josebra01

mcb
#2
30.03.2018 00:55
Beiträge: 1472

Du sagst, du hast mehrere Armeen? Hast du auch mehrere ControlArmy Funktionen? Die würden sich nämlich gegenseitig überschreiben. Ansonsten weiß ich nicht was dadran Schuld sein könnte.

Play4FuN
#3
30.03.2018 16:51
Beiträge: 704

Demokarte

Hallo, habe mal - da soetwas schon oft gefragt wurde - eine Demokarte gebaut. Darin sind einige wichtige Funktionen zur Truppensteuerung und Armeesteuerung und was dazu gehört. Bisher noch sehr übersichtlich, aber je nach Feedback werde ich das noch erweitern.

Zunächst sollte das Einsteigern helfen, aber vielleicht nicht nur. Die Sachen sind recht einfach gehalten, man kann damit aber dennoch schon gute "KI" für die meisten Anwendungen einfacher Gegner (die nicht großartig bauen müssen...) aufbauen.

Lasst mir gerne Euer Feedback da.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Josebra01
#4
02.04.2018 18:59
Beiträge: 2

Danke, ich habe das Problem schon gelöst. Der Fehler war, dass hier

MapEditor_SetupAI(3, 0, 10000, 3, "player3", 3, 0)

die zweite Zahl also der strenght Wert auf 0 stand und damit die KI deaktiviert ist, er muss also mindestens auf 1 stehen.

BalistiK
#5
02.04.2018 20:37
Beiträge: 70

Die Strenght des Setup's

Also erstmal finde ich es schön, dass hier sogar noch Siedler 5 - Maps als Geburtstags-geschenke vergeben werden

Zur KI: Der Level-Wert 0 für die Strenght ist schon okay. Dieser Wert gibt lediglich an, dass die KI selbstständig Truppen rekrutiert, wenn entprechende Gebäude und Ressourcen zur Verfügung stehen.

Bei einem Wert von 1 sind die Id's 1-2 vergeben, bei Strenght 2 Id 1-4 und bei Wert 3 id's 1-6. Für eigene Armeen stehen dann nur die ID's 0, 7, 8 und 9 zur Verfügung.

An sich kannst du den Wert auch auf 0 stehen lassen, macht an sich keinen großen Unterschied.

Am Besten greifst du aber auf diese nicht-reservierten ID's zu. Das vermeidet Fehler.

EDIT: Ebenso musst du eine KI immer erst per Mapeditor erzeugen, damit eine Armee überhaupt gesteuert werden kann.

Dafür muss die KI auch ein Gebäude auf der Map besitzen, egal welches, hauptsache es ist da.

--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EDIT: Lernen ist immer gut! Danke Play4FuN für das Korrigieren meines Kommentares c: . Die Phrasen in den Kästchen sind dann in korrigierter Version bei Play4FuN's Kommentar zu finden.

Dieser Beitrag wurde von BalistiK am 03.04.2018 um 11:50 editiert.

Play4FuN
#6
02.04.2018 21:51
Beiträge: 704

Nein, das stimmt nicht so ganz!

function MapEditor_SetupAI(_playerId, _strength, _range, _techlevel, _position, _aggressiveLevel, _peaceTime)

	-- Valid
	if 	_strength == 0 or _strength > 3 or
		_techlevel < 0 or _techlevel > 3 or 
		_playerId < 1 or _playerId > 8 or
		_aggressiveLevel < 0 or _aggressiveLevel > 3 or
		type(_position) ~= "string" then
		return
	end

aus MapEditorTools. Eine (Standard) KI mit der Stärke 0 gibt es nicht. Musst also schon einen Wert von 1 bis 3 wählen. Richtig ist, dass ein Gebäude notwendig ist. Ich selbst mag MapEditor_SetupAI überhaupt nicht ist mir zu unintelligent.

Auch das "du musst eine KI per MapEditor erzeugen" stimmt damit nicht.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum