Army

» Siedler Map Source Forum » Siedler DEdK Script Forum » Army

Seiten: 1

Der_Deutsche
#1
11.10.2018 20:57
Beiträge: 349

Army

function BabarenArmy()
    armyOne = {
        player      = 3,
        id          = 1,
        strength    = 2,
        position    = GetPosition("EnemySpawn1"),
        rodeLength  = 40000
    }
    SetupArmy(armyOne)
 
    local troopDescription = {
        maxNumberOfSoldiers = 4,
        minNumberOfSoldiers = 0,
        experiencePoints    = MEDIUM_EXPERIENCE,
        leaderType          = Entities.CU_Barbarian_LeaderClub1
    }
 
    for i = 1, 2 do
        EnlargeArmy(armyOne, troopDescription)
    end
 
StartSimpleJob("ControlArmyOne")
    StartSimpleJob("BabarenIsDead")
end
 
function ControlArmyOne()
    if Counter.Tick2("ControlArmyOne", 10) then
        if IsDead(armyOne) then
            return true
        end

 
        FrontalAttack(armyOne)
    end
end
function BabarenDefend()
    armyTwo = {
        player      = 3,
        id          = 2,
        strength    = 5,
        position    = GetPosition("EnemySpawn1"),
        rodeLength  = 10
    }
    SetupArmy(armyTwo)
 
    local troopDescription1 = {
        maxNumberOfSoldiers = 4,
        minNumberOfSoldiers = 0,
        experiencePoints    = MEDIUM_EXPERIENCE,
        leaderType          = Entities.CU_Barbarian_LeaderClub1,
    }
    local troopDescription2 = {
        maxNumberOfSoldiers = 4,
        minNumberOfSoldiers = 0,
        experiencePoints    = MEDIUM_EXPERIENCE,
        leaderType          = Entities.CU_BanditLeaderBow1,

    }


 
    for i = 1, 2 do
        EnlargeArmy(armyTwo, troopDescription1)
        EnlargeArmy(armyTwo, troopDescription2)
    end
 
StartSimpleJob("ControlArmyTwo")
    StartSimpleJob("BabarenIsDead2")
end
 
function ControlArmyTwo()
    if Counter.Tick2("ControlArmyTwo", 10) then
        if IsDead(armyTwo) then
            return true
        end

 
        Defend(armyTwo)
    end
end


	function BabarenIsDead()
    if not IsDead("EnemyHQ") and IsDead(armyOne) then
        BabarenArmy()
    --elseif IsDead("EnemyHQ") and IsDead(armyOne) then
        return true
    end
end
function BabarenIsDead2()
    if not IsDead("EnemyHQ") and IsDead(armyTwo) then
        BabarenDefend()
    --elseif IsDead("EnemyHQ") and IsDead(armyOne) then
        return true
    end
end



Heyy, kann mir jemand bei dem Fehler helfen: Und zwar 1. Defend Army greift trotzdem an und 2. bei dem Tod der Army respawnt sie nicht

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

BalistiK
#2
11.10.2018 21:33
Beiträge: 70

Zum 1. Punkt:

Möglicherweise hast du irgendwo bereits einen Aufruf von

MapEditor_SetupAI( _id, _strenght, _range, _techlevel, "player2HQ", _agressive, 0_peacetime );


Einen Wert für _strenght übergeben. Demensprechend kümmert sich dann die KI darum, da die ID deiner Armee in dem bereich liegt.

Zum 2. Punkt:

Ich weiß spontan nicht warum der Fehler auftritt, aber ich würde die Kontrolle der Armee in eine Funktion packen:

function ControlArmy()
	if Counter.Tick2("ControlArmy", 10) then
		if not IsAlive(army) then
			if not IsDead("EnemyHQ") then
				-- doSomething()
				CreateArmy()
				return true
			else
				-- doSomething()
				return true
			end
		else
			Defend(army)
		end
	end
end



Wer mehr weiß bitte melden c:

Peter-FS
#3
11.10.2018 22:15
Beiträge: 1086

Zeitverzögerung

Hi,

kann sein das deine armyOne noch nicht erstellt wurde, das dauert ein bisschen, soweit ich mich erinnern kann.
Mach doch mal einen Counter.Tick2 in die Abfrage ( "BabarenIsDead" ) rein. Es reicht sicher, wenn du alle 5 Sek. prüfst, ob die Armee noch vorhanden ist.

Gruß Peter

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Peter-FS
#4
11.10.2018 22:18
Beiträge: 1086

Defend

Hi,

zu Punkt 2

Ändere mal die ID der Armee auf eine unbenutzte: 0,7,8,9
Die werden von der KI nicht gesteuert.

Gruß Peter

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Der_Deutsche
#5
12.10.2018 06:44
Beiträge: 349

Okey, abe das ergibt keinen Sinn, da es ein Simple Job ist. Wie kann das sein?

Edit: Ich werde mal die Controllarmy von Balistik versuchen sobald ich Zuhause bin

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

Der_Deutsche
#6
12.10.2018 06:48
Beiträge: 349

Oh checken gerade das du den 1. Punkt meintest 😂😂 Ja kann gut sein

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

Der_Deutsche
#7
12.10.2018 15:15
Beiträge: 349

Oje, hat doch mit meiner Methode funktioniert, ich war nur zu doof um zu bemerken das ich das EnemyHQ falsch benannt habe

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

Seiten: 1

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

Impressum