KI baut sich nicht auf

» Siedler Map Source Forum » Siedler DEdK Script Forum » KI baut sich nicht auf

Seiten: 1

RitterLeo
#1
30.08.2020 17:49
Beiträge: 237

KI baut sich nicht auf

Ich bräuchte mal etwas Hilfe.
Die KI baut sich nicht selbstständig auf doch tauchen keinerlei Fehler auf.

function Constructionplans(i)
	if Logic.GetEntityType(GetID("Hero"..i)) == Entities.CU_Evil_Queen then
		if GetDistance("Headquarter"..i,"pos_random1") <= 500 then
			local pos = GetPosition("village_pos1")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random2") <= 500 then
			local pos = GetPosition("village_pos2")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(j);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random3") <= 500 then
			local pos = GetPosition("village_pos3")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random4") <= 500 then
			local pos = GetPosition("village_pos4")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random5") <= 500 then
			local pos = GetPosition("village_pos5")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random6") <= 500 then
			local pos = GetPosition("village_pos6")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random7") <= 500 then
			local pos = GetPosition("village_pos7")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
		elseif GetDistance("Headquarter"..i,"pos_random8") <= 500 then
			local pos = GetPosition("village_pos8")
			Logic.CreateEntity(Entities.PB_VillageCenter1, pos.X, pos.Y, 0, i);
			KalaConstructionplanPos1(i);
		return true
	end
 end
end
--Konstruktionspläne für jeden Helden an jeder Position
function KalaConstructionplanPos1(i)
	local constructionplanKala1 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },	-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala1)
end
function KalaConstructionplanPos2(i)
	local constructionplanKala2 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },	-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala2)
end
function KalaConstructionplanPos3(i)
	local constructionplanKala3 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, invalidPosition, level = 0 },	-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala3)
end
function KalaConstructionplanPos4(i)
	local constructionplanKala4 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala4)
end
function KalaConstructionplanPos5(i)
	local constructionplanKala5 = {
		{ type = Entities.PB_Stonemine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },	-- Steinmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala5)
end
function KalaConstructionplanPos6(i)
	local constructionplanKala6 = {
		{ type = Entities.PB_ironmine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Eisenmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_ironmine1, pos = invalidPosition, level = 0 },	-- Eisenmine
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala6)
end
function KalaConstructionplanPos7(i)
	local constructionplanKala7 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala7)
end
function KalaConstructionplanPos8(i)
	local constructionplanKala8 = {
		{ type = Entities.PB_Claymine1, pos = GetPosition("Headquarter"..i..""), level = 0 },	-- Lehmgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
		{ type = Entities.PB_Stonemine1, pos = invalidPosition, level = 0 },	-- Schwefelgrube
		{ type = Entities.PB_Farm1, pos = invalidPosition, level = 0 },					-- Farm
		{ type = Entities.PB_Residence1, pos = invalidPosition, level = 0 },			-- Haus
	}
	FeedAiWithConstructionPlanFile(i,constructionplanKala8)
end 



Aufgerufen wird das ganze mit

 	for i = 2,Selected_AI do
	Constructionplans(i)
	end 

wobei i jeweils vom Spieler bestimmt werden kann (also mindestens 3 KI Spieler sind vorhanden) Trotz eigentlich richtiger Abfrage und mehrfachen kontrollieren der Namen deutet nichts auf einen Fehler hin. Ich habe einfach aus Testgründen mit Kala angefangen und werde das dann auf jeden der 12 Helden ausweiten.
Anderer Aufruf mit bspw

 	for i = 2,Selected_AI do
StartBuildingP(i)
end 

klappt. Es ist zum Haare raufen weil so nichtmal angefangen werden kann zu testen.

Schon vorab, vielen dank für eure Hilfe.

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Play4FuN
#2
30.08.2020 20:43
Beiträge: 704

KalaConstructionplanPos1(j);
müsste
KalaConstructionplanPos1(i);
sein.

Außerdem rufst du immer KalaConstructionplanPos1 auf und nie KalaConstructionplanPos2 etc.

Ansonsten sollte der entsprechende Spieler genügend Ressis haben.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

RitterLeo
#3
31.08.2020 15:59
Beiträge: 237

Kommt leider auf das gleiche Ergebnis raus.
Habe zwar die entsprechenden Fehler berichtigt jedoch tut sich dennoch nix.

Genügend Rohstoffe sind ja vorhanden da die KI sich selbst immer genügend zu schiebt.
Lediglich eine Triggermeldung kommt andauernd (Ist aber, und da bin ich mir zu fast 100% sicher, von ner anderen Funktion).

Habe auch mit LuaDebugger alles Nachgeprüft und finde keinen Fehler.
Sie weigert sich einfach nur etwas zu bauen.

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Play4FuN
#4
01.09.2020 08:01
Beiträge: 704

Geht's um eine Mehrspielerkarte? Falls ja, dann solltest du prüfen, ob deine Script Entities für die Positionen im Spiel exisiteren. Falls die im Map Editor nämlich z.B. SpielerID 2 haben und im Spiel dann ID 2 gar nicht belegt ist, werden diese allesamt gelöscht.

Ansonsten versuch mal als erstes Gebäude im construction plan ein Wohnhaus oder nen Bauernhof zu verwenden - vielleicht kann aus irgendeinem Grund die Grube nicht platziert werden.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Dieser Beitrag wurde von Play4FuN am 02.09.2020 um 09:46 editiert.

RitterLeo
#5
04.09.2020 18:09
Beiträge: 237

Vielen dank dafür.
Ich habs mal mit nem Bauernhof getestet und es klappte.
Jetz rate mal was der Fehler war?

Er ist unten zu sehen: Rechtschreibung

PB_Claymine1 ist nicht PB_ClayMine1.

Was man so alles im Nachhinein entdeckt...
Dafür baut sie sich jetzt auf.

Vielen dank

____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.

Seiten: 1

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

Impressum