[[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)