[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
====== Entities in einer bestimmten Region entfernen ======
[[http://www.siedler-portal.de/vb3/sendmessage.php?do=mailmember&u=162|opeter]]
Diese Funktion löscht eine gewünschte Art von Entity im angegebenen Radius. Die Anzahl ist dabei auf 16 pro angegebener Entity beschränkt. Ggf. muss dann mittels einer [[tutorials:schleifen|Schleife]] das Gebiet entsprechend "gesäubert" werden.
Die Parameter (_position, _range,_entity) \\ \\
_position: Ist die Position auf der man Entities entfernen will.
_range : Ist die Entfernung von der Position. Praktisch das Gebiet im Umkreis von _position.
_entity : Die Entity die verschwinden soll.
Rückgabe keine. Siehe Anwendungsbeispiel.
function _OP_CleanUp(_position, _range,_entity)
local Data = { Logic.GetEntitiesInArea( _entity, _position.X, _position.Y, _range, 20)};
local i;
for i=2, Data[1]+1 do
DestroyEntity(Data[i]);
end
end
===== Anwendungsbeispiele =====
In einer bestimmten Region (ausgehend von tPunkt) sollen alle Orangenbäume verschwinden.
_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree1)
Jetzt verschwinden alle Orangenbäume der Sorte XD_OrangeTree1. Da es zwei Sorten gibt müßte man noch
_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree2)
Dann sind alle weg. opeter
\\
\\
=== Erweitertes Anwendungsbeispiel ===
Bei einer größeren Anzahl von unterschiedlichen Entities, lässt sich der zu überprüfende Entity-Typ auch in einen [[tutorials:tables|Table]] packen.
\\
Danach müssen wir die Funktion, die wir oben kennen gelernt haben entsprechend umstricken. Es muss Entity für Entity überprüft werden, welche davon in einem entsprechenden Bereich ( _range ) vorhanden ist:\\
function _OP_CleanUp( _position, _range, _entityTable )
for i = 1, table.getn( _entityTable ) do
local Data = { Logic.GetEntitiesInArea( _entityTable[i], _position.X, _position.Y, _range, 20 )};
for k=2, Data[1]+1 do
DestroyEntity( Data[k] );
end
end
end
\\
Beispiel für Entity-Table:
myEntityTable = {
Enities.XD_OrangeTree1,
Enities.XD_OrangeTree2,
Enities.XD_CherryTree,
Enities.XD_Flower1,
Enities.XD_Flower4,
}
Aufruf mit:
_OP_CleanUp(tPunkt, 5000, myEntityTable)