Türme bestimmte Einheiten anvisieren lassen
» Siedler Map Source Forum » Siedler DEdK Script Forum » Türme bestimmte Einheiten anvisieren lassen
Seiten: 1
Play4FuN
|
#1 24.08.2020 22:18 Beiträge: 704 |
Türme bestimmte Einheiten anvisieren lassen
Ahoi, kennt jemand eine Möglichkeit, einem Turm (Ballista bzw. Kanone; auch jeweils in deren dark Versionen) eines Computerspielers ein bestimmtes Angriffsziel per Skript zuzuweisen?
(am besten HE-konform...)
Ich möchte, wenn Pilgrims Kanone platziert wurde, dass alle umliegenden Türme auf diese feuern (anstatt auf bis dato evtl. angegriffene Truppen des Spielers).
Hier mal das Wichtigste extrahiert:
function OnEntityCreated() local entityId = Event.GetEntityID() local entityType = Logic.GetEntityType( entityId ) -- Pilgrim: his cannons cause all enemy nearby towers to focus it instead of other player units -- do not use Entities.PU_Hero2_Foundation1 (which is created first) because this might easily be abused by the player (towers focus new multiple times) if entityType == Entities.PU_Hero2_Cannon1 then local pos = GetPos( entityId ) local _, foundation = Logic.GetEntitiesInArea( Entities.PU_Hero2_Foundation1, pos.X, pos.Y, 100, 1 ) if foundation then PilgrimCannonAttractTowerFire( foundation ) end end end function PilgrimCannonAttractTowerFire( foundation ) local pos = GetPos( foundation ) local range = 3000 -- what is the attack range of a tower? local towers = { Entities.PB_DarkTower2, Entities.PB_DarkTower3, Entities.PB_Tower2, Entities.PB_Tower3, } for _, entityType in towers do local entities = { Logic.GetEntitiesInArea( entityType, pos.X, pos.Y, range, 64, 8 ) } -- access category 8 = buildings for i = 2, entities[1]+1 do Logic.GroupAttack( entities[i], foundation ) n = n + 1 end end end
Habe auch versucht, statt den Türmen (entities[ i]) den Angriffsbefehl deren Geschützen (Logic.GetFoundationTop) zu geben, ebenfalls ohne Erfolg. Damit meine ich, die Türme greifen weiterhin Pilgrim an, und nicht seine Kanone...
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
totalwarANGEL
|
#2 26.08.2020 00:10 Beiträge: 2123 |
Soweit ich mich erinnere, sind die Kanonen/Ballisten getrennte Entities mit einem eigenen Typen. _Balista und _Cannon steht da glaube ich hinten dran (guck mal in die G_Liste.xls)
Du könntest nach diesen Entities suchen und ihnen mit Logic.GroupAttack die Kanone als Ziel geben.
Die Attack Rage der Türme kannst du zur Not aus den XML des Spiels entnehmen, wenn es dafür keine Funktion gibt.
____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.
Play4FuN
|
#3 26.08.2020 08:21 Beiträge: 704 |
Logic.GroupAttack ist genau das, was ich verwende.
Auch deinen Vorschlag, die Ballista- bzw. Kanonenentitäten anstelle der Türme zu verwenden habe ich schon probiert (zunächst über Logic.GetFoundationTop, dann auch direkt indem ich nach Entities.PB_Tower2_Ballista statt Entities.PB_Tower2 usw. suche). Alles anscheinend ohne Auswirkungen. Ich vermute, die GroupAttack Funktion ist nur für Truppen anwendbar... :/
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
Seiten: 1