Wie bekomme ich die Anzahl der Soldaten eines Leaders

» Siedler Map Source Forum » Siedler DEdK Script Forum » Wie bekomme ich die Anzahl der Soldaten eines Leaders

Seiten: 1

Peter-FS
#1
24.07.2010 22:48
Beiträge: 1086

Wie bekomme ich die Anzahl der Soldaten eines Leaders

Hallo Leute, brauche eure Hilfe. Habe im Wiki schon alles durchsucht, finde aber nichts.

Hier meine Aufgabe die ich lösen möchte.
In einem bestimmten Bereich(Radius 1000), möchte ich die Anzahl von z.B. 50 Schwertkämpern zählen.
Mit Logic.GetEntitiesInArea kann ich nur max. 16 gleiche z.B. Schwertkämpfer in einem Radius erfassen.

Mein Lösungsansatz:
Ich zähle die LeaderSword.. und addiere dann alle zugehörigen Soldaten.

Wenn z.B. 6 LeaderSword... da sind, könnte ich mit der Anzahl der Soldaten die jeder Leader hat(kann ja unterschiedlich sein), die Summe der Schwertkämpfer ermitteln.

Deshalb:
Ich brauche die Anzahl der Soldaten die zu einem Leader gehören. Die Schleife mit dem erfassen der Leader ist schon vorhanden.

Andere Lösungen oder Ansätze sind natürlich willkommen.
Hoffe mein Problem ist klar.

Gruss Peter

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

warrior1024
#2
24.07.2010 23:07
Beiträge: 345

local leader = aua;
		local soldiers = {Logic.GetSoldiersAttachedToLeader(leader)}
		local i = 1;
		while (i <= soldiers[1]) and (_dmg > 0) do
			local opfer = soldiers[i+1];
			i = i+1;
			local overkill = (_dmg - Logic.GetEntityHealth(opfer));
			if overkill >= 0 then
				table.insert(toeten, opfer) -- armes Ding :(
				if table.getn(toeten) >= _tarMax then
					_dmg = 0; -- Maximale Anzahl an Zielen getroffen: kein weiterer Schaden, Euer Ehren!
					break;
				else
					_dmg = overkill; -- Restschaden weiterhin verteilen
				end
			else
				aua = opfer; -- Dieser Soldat wird durch den Schaden nicht getötet: er wird das "Hurt"-Ziel und die Schleife wird abgebrochen. Der "_dmg" stimmt automatisch
				break;
			end
		end


Ausschnitt aus HurtEntitySAVE von Noigi(Das Skript ist für mich dass, was für Flodder die RobArmee ist). Vielleicht hilft´s?

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

Peter-FS
#3
24.07.2010 23:21
Beiträge: 1086

Hi Warrior1024,

ich glaube das ist es wonach ich gesucht habe:
{Logic.GetSoldiersAttachedToLeader(leader)}

Probiers gleich mal aus.

Funktioniert, danke für die schnelle Hilfe.

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

Dieser Beitrag wurde von Peter-FS am 25.07.2010 um 01:40 editiert.

Flodder
#4
25.07.2010 06:58
Beiträge: 2608

Zitat von Peter-FS:
Hallo Leute, brauche eure Hilfe. Habe im Wiki schon alles durchsucht, finde aber nichts.

Hier meine Aufgabe die ich lösen möchte.
In einem bestimmten Bereich(Radius 1000), möchte ich die Anzahl von z.B. 50 Schwertkämpern zählen.
Mit Logic.GetEntitiesInArea kann ich nur max. 16 gleiche z.B. Schwertkämpfer in einem Radius erfassen.


So nicht, aber anders. Das Problem musste vor langer Zeit in der Map "Gladiator Part 1" gelöst werden und die Lösung war gar nicht soooo schwer.

Zitat von Peter-FS:

Ich brauche die Anzahl der Soldaten die zu einem Leader gehören. Die Schleife mit dem erfassen der Leader ist schon vorhanden.


Richtig! Ein anderer Weg zum Erfolg wäre diese Funktion gewesen, denn sie macht genau, was Du möchtest:

function AchtzigBogenschuetzenGefunden()
   idBogen = SucheAufDerWelt (1,Entities.PU_SoldierBow2,3000,GetPosition("roeZelt1"))
   if table.getn(idBogen) > 79 then
   -- Folgefunktion
   return true
   end
end


Hier werde tatsächlich nur die Soldaten gezählt und nicht auch noch die Leader.
Aufruf z.B. per:

gvMission.SucheBogenschuetzen = StartSimpleJob("AchtzigBogenschuetzenGefunden")


Gebraucht wird nur die Comfort-Funktion SucheAufDerWelt, die aber inzwischen wohl jeder ernsthafte Mapper kennen dürfte, weil sie enorm vielseitig ist.

@warrior1024,
wie Du siehst, hat "Flodder" auch noch andere Favoriten als nur die RobArmee.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Dieser Beitrag wurde von Flodder am 25.07.2010 um 07:11 editiert.

Peter-FS
#5
25.07.2010 11:13
Beiträge: 1086

Hallo Floder,

ich habe beide Funktionen verwendet, erstmal um die Anzahl der Soldaten zu zählen, und anschliessend um heraus zu finden ob der Leader noch Einheiten hat.

Hat super funktioniert, danke.


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

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

Seiten: 1

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

Impressum