Armee funktioniert nicht! Warum?

» Siedler Map Source Forum » Siedler DEdK Script Forum » Armee funktioniert nicht! Warum?

Seiten: 1

Wladimir
#1
14.08.2009 19:08
Beiträge: 489

Armee funktioniert nicht! Warum?

function DLordVBArmee1()
DLordVBArmee1						= {}
DLordVBArmee1.player 					= 2
DLordVBArmee1.id 						= 1
DLordVBArmee1.strength 					= 6
DLordVBArmee1.position 					= GetPosition("HQ2sp")
DLordVBArmee1.rodeLength 				= 1500
SetupArmy(DLordVBArmee1)
local troopDescription1 					= {}
troopDescription1.maxNumberOfSoldiers 	= 4
troopDescription1.minNumberOfSoldiers 	= 0
troopDescription1.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription1.leaderType 			= Entities.PU_LeaderBow2
local troopDescription2 					= {}
troopDescription2.maxNumberOfSoldiers 	= 8
troopDescription2.minNumberOfSoldiers 	= 0
troopDescription2.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription2.leaderType 			= Entities.PU_LeaderSword3
local troopDescription3 					= {}
troopDescription3.maxNumberOfSoldiers 	= 8
troopDescription3.minNumberOfSoldiers 	= 0
troopDescription3.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription3.leaderType 			= Entities.PU_LeaderPoleArm3
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription1)
end
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription2)
end
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription3)
end
StartSimpleJob("ControlDLAVB1")
end

function ControlDLAVB1()
Advance(DLordVBArmee1)
if not DLordVBArmee1.created then
DLordVBArmee1.created = not IsDead(DLordVBArmee1)
return false
end
if IsDead(DLordVBArmee1) and I***isting("HQ2") then
Message("Die dunkle Armee ist tot!")
DLordVBArmee1()
return true
end
end



Wenn nun diese Armee tot ist kommt immer und immer wieder "Die dunkle Armee ist tot!" aber keine neue und auch sonst funkt nix mehr. Warum?

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

kingsia
#2
14.08.2009 22:40
Beiträge: 750

Es ist gundsätzlich keine gute Idee eine Funktion und eine Variable/Array die gleiche Name zu geben.
In deinem Beispiel wurde ich die Function in etwas anderes umbenennen. vielleicht CreateDLordVBArmee1()

Auch die Befehl For 1,2,1 Do hast du komplizierter gemacht wie nötig ist. Die Dritte Parameter ist die Schrittgrosse zwischen die erste und zweite Parametern und ist standardmässig 1 wenn nich anders spezifiziert.
Also For 1,2 Do wurde ausreichen.

fritz_98
#3
15.08.2009 08:41
Beiträge: 472

Hi Wladi?
Was genau ist das Problem?
Stürzt DEdK ab, oder erscheint die Armee einfach nicht, bzw. an der falschen Stelle? Bekommst du eine Fehlermeldung?

Und ausserdem wäre es nützlich, die Armeen einfach mit Army1, Army2, usw. zu benennen, dann lässt sich die Army-Id besser überprüfen.

Wladimir
#4
15.08.2009 10:53
Beiträge: 489

Danach funzen keine anderen Skriptbefehle mehr und die Message erscheint jede Sekunde neu. Keine Armee taucht auf.

@ kingsia
Beim 1. Mal hat die Armee ja auch gefunzt. Da muss es beim 2. Mal doch auch gehen. Werde deinen Vorschlag aber mal versuchen.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Wladimir
#5
15.08.2009 11:26
Beiträge: 489

Problem gelöst!

Ich hab die Armeeaufrufe jetzt geändert und es funzt. Nun werde ich das noch bei den anderen Armeen machen und die Sache ist OK.

Danke kingsia, danke fritz

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

fritz_98
#6
15.08.2009 11:36
Beiträge: 472

Mich würd jetzt schon interessieren, was genau du gemacht hast. Hab jetzt nämlich auch ein paar Veränderungen gemacht -> nach 10 Sek. Absturz...

Edit: Nun funzt alles bis auf den Respawn.

Wladimir
#7
15.08.2009 11:51
Beiträge: 489

Hier sieht man es:

Ich Zeige dir einfach den neuen Code:

function ArmeeDLordVBArmee1()
DLordVBArmee1						= {}
DLordVBArmee1.player 					= 2
DLordVBArmee1.id 						= 1
DLordVBArmee1.strength 					= 6
DLordVBArmee1.position 					= GetPosition("HQ2sp")
DLordVBArmee1.rodeLength 				= 1500
SetupArmy(DLordVBArmee1)
local troopDescription1 					= {}
troopDescription1.maxNumberOfSoldiers 	= 4
troopDescription1.minNumberOfSoldiers 	= 0
troopDescription1.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription1.leaderType 			= Entities.PU_LeaderBow2
local troopDescription2 					= {}
troopDescription2.maxNumberOfSoldiers 	= 8
troopDescription2.minNumberOfSoldiers 	= 0
troopDescription2.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription2.leaderType 			= Entities.PU_LeaderSword3
local troopDescription3 					= {}
troopDescription3.maxNumberOfSoldiers 	= 8
troopDescription3.minNumberOfSoldiers 	= 0
troopDescription3.experiencePoints 		= MEDIUM_EXPERIENCE
troopDescription3.leaderType 			= Entities.PU_LeaderPoleArm3
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription1)
end
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription2)
end
for i = 1,2,1 do
EnlargeArmy(DLordVBArmee1,troopDescription3)
end
StartSimpleJob("ControlDLAVB1")
end

function ControlDLAVB1()
Advance(DLordVBArmee1)
if not DLordVBArmee1.created then
DLordVBArmee1.created = not IsDead(DLordVBArmee1)
return false
end
if IsDead(DLordVBArmee1) and I***isting("HQ2") then
StartCountdown(120, ArmeeDLordVBArmee1, false)
return true
end
end



Ich habe einfach die Funktionsaufrufe geändert!

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Seiten: 1

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

Impressum