Dass der genauso ist wie ein normaler Creep? Exakt so kann man es nicht machen,
Naja, das einzige, was nicht funktioniert ist, dass die Einheiten drum herum stehen und nicht laufen, weil das laufen Bugs ergeben wüürde oder DEUTLICH schwerer und komplizierter werden würde.^^
Obwohl... mir fallen grad ein paar Scripts ein, aber das wären dann pro Einheit nochmal um die 10 weitere scripts
aber man kann es so ähnlich scripten(Ich sage nur was man machen soll, nicht die Befehle, die weiß ich nicht auswendig):
Extrastunden, man muss alle Scripts auswendig können
Ein Gebäude als "Basis" benannt (Hier a)spawnen(Da dürfen aber keine Crepps rauskommen).
Spawnen? Platzieren oder setzen wären hier wohl besser
Also einfach in der Map hinsetzen.^^
Einen Waypoint dorthin setzen, wo dann die Basis ist und einen Pfad so, dass dieser durch den Eingang führt und dann um das Gebäude rum.(Als Hilfe würde ich das Gebäude platzieren und später wieder löschen)
Warum zum Teufel das Gebäude löschen?
Die Creeps alle 5(20?30?) Sekunden Spawnen und mit Attackmove den Pfad folgen lassen.
Wenn du das so machst kommen einmal die Viecher und bleiben dann draußen stehen.^^
Und sie rennen unendlich lang hinter allen anderen hinterher
Zum Wiederaufbau:
Wenn das Leben von a=0 ist=>Ruine Spawnen(b)
Wenn Leben von b größer ist als 0 und 30(40?50?) Sekunden vergangen sind, b zerstören und a Spawnen.
Das passt, auch wenn ich einfach sagen würde:
***IF***
'a' is finished dying
***THEN***
Spawn Unit named 'b' of Type 'was auch immer' at waypoint 'Waypointwieduihngenannth
ast'
AND Set Timer 'rebuild' to expire in 32 seconds.
***IF***
Timer 'rebuild' is equal than 2
***THEN***
Spawn Unit 'a' of Type 'dein Gebäude' at waypoint 'Waypointwieduihngenannth
ast'
AND Stop Timer 'rebuild'
***IF***
Unit 'b' has been destroyed
***THEN***
Stop Timer 'rebuild'
Damit es wirklich wie ingame wirkt bedarf es leider deutlich mehr Scriptingarbeit.
Ich mache das ganze Mal ohne Ruinen und nehme als Gebäude eine MordorTaverne und als Unit MordorCorsair.
Zudem lass ich sie gleich außerhalb des Gebäudes spawnen, da das andere nur ein kleiner Schönheitseffekt wäre, den ich hier Mal nicht beachte (würde außerdem nochmal deutlich mehr Arbeit machen.)
Ich sage Mal, dass 2 Korsaren patroillieren, für mehr ist das Prinzip das gleiche.
Als erstes setzt man eine Mordortaverne auf eine Map. Diese benenne ich "Creepbuilding".
Vor die Tür setze ich 2 Waypoints und benenne sie "Spawn1" und "Spawn2".
Zusätzlich setze ich in die Taverne 3 waypoints, die ich "Treasure1", "Treasure2" und "Treasure3" nenne.
Jetzt kommen die Scripts:
***IF***
Unit 'CorsairCreep1' has finished dying
***THEN***
Set timer 'ReviveCorsairCreep1' to expire random between 20 and 40 seconds.
(Anmerkung: Es geht natürlich auch: Set timer 'Revivecorsaircreep1' in 20 seconds, aber ich mag das mit Random lieber )***IF***
Unit 'CorsairCreep2' has finished dying
***THEN***
Set timer 'ReviveCorsairCreep2' to expire random between 20 and 40 seconds.
So, die beiden Scripts erledigen jetzt den Start für die Wiederbelebung, aber das wrüden sie nur ein einziges Mal machen. Man muss die Scripts nochmal öffnen (oder gleich am Anfang machen) und den Hacken vor "Deactivate upon success" wegmachen.
Nun weiter im Text.^^
Die Korsaren werden wiederbelebt:
***IF***
timer 'ReviveCorsairCreep2' is equal than 2 seconds
***THAN***
Stop timer 'ReviveCorsairCreep2'
AND Spawn Unit 'CorsairCreep2' of Type MordorCorsair at waypoint 'Spawn 2'
AND Unit 'CorsairCreep2' begins guarding at current location
***IF***
timer 'ReviveCorsairCreep1' is equal than 2 seconds
***THAN***
Stop timer 'ReviveCorsairCreep1'
AND Spawn Unit 'CorsairCreep1' of Type MordorCorsair at waypoint 'Spawn 1'
AND Unit 'CorsairCreep1' begins guarding at current location
Das bewirkt jetzt, dass die wiederbelebt (neu gespawnt) werden und sofort beginnen ihr Gebiet zu verteidigen - sie rennen also nicht unendlich lang hinterher.
Auch hier muss der Hacken vor "Deactivate upon success" weg.
Bald haben wir es geschafft, das war schon ein großer Teil.^^
Jetzt kommen noch 2 Dinge:
1. das erste spawnen.
Wie man oben sieht muss eine Einheit sterben, damit andere gespawnt werden.
Ich mache dann einfach immer ein Script, das lautet:
***IF***
True
***THEN***
Set timer 'Revivecorsaircreep1' in 3 seconds
AND Set timer 'Revivecorsaircreep2' in 3 seconds
Hier muss der Hacken
bleiben, da dies nur einmal geschieht.
Zusätzlich muss noch die Belohnung für das zerstören einprogrammiert werden und das spawnen gestoppt werden.
***IF***
Unit 'Creepbuilding' is finished dying
***THEN***
Deactivate Script bla
AND Deactivate Script blabla
AND Deactivate Script bla2
AND Deactivate Script blabla2
AND Spawn Unit of Type Treasure at Waypoint 'Treasure1'
AND Spawn Unit of Type Treasure at Waypoint 'Treasure2'
AND Spawn Unit of Type Treasure at Waypoint 'Treasure3'
bla, blabla, bla2, blabla2 sind die 4 oberen scripts, die das wiederbeleben regeln, je nachdem wie du sie benannt hast.
Für jede neue Einheit kommen eben mehr Scripts dazu.^^
Wenn du willst, dass sie im Gebäude starten musst du sie in einem Spawnpunkt im Gebäude spawnen lassen, dann zuerst einen movebefehl aus dem gebäude raus machen, wenn sie dann draußen sind den Befehl geben, dass sie von einem bestimmten waypoint (Spawn1 etc.) aus das Gebiet bewachen sollen. (Guard from Waypoint)
Wenn du willst, dass sie laufen darfst du keinen Guardbefehl benutzen, sondern musst einen waypointpath machen, der in sich selbst endet, sodass sie unendlich lang drum herum rennen und dann den Befehl "Attackmove at waypointpath" benutzen.
Hier ist das Problem, dass sie Einheiten unendlich lang hinterher laufen, das heißt man muss noch ständig für jede Einheit den Abstand zum Gebäude berechnen lassen und wenn der Größer als ??? ist, dann gibt man ihr den Guardbefehl von der ORkhöhle aus (sodass sie zurückläuft) und setzt einen timer auf 5 sekudnen und gibt dann wieder einen attackmovebefehl um die orkhöhle rum.
Dadurch läuft der erst einmal zurück (und kann nicht weiter weg laufen), greift aber weiterhin Feinde an. Nach 5 Sekunden sollte er wieder nah genug sein und man macht den Attackmove wieder. Wenn er bei der Zeit immer noch nah am Rand steht und wieder raus rennt tritt das erste Script wieder in Kraft. (man muss natürlich immer Endlosscripts machen).
Zusätzlich werden sich manche fragen:
Warum sagt der Kerl:
IF Timer is equal than 2 THAN stop timer.
Kann man nicht einfach sagen: If timer has expired?
Antwort:
Nein
Wie das schon heißt: If timer HAS expired...
Also wenn der Timer einmal abgelaufen ist, dann ist es für die Scripts scheiß egal, ob der wieder zurückgesetzt wird, er gilt als abgelaufen, da kann er noch so weit zurückgesetzt werden.^^ Man muss ihn also vor dem ablaufen bremsen und wieder zurücksetzen.^^
Ich hoffe es liest sich jemand alles durch und ich konnte helfen
@ Beorn:
Nein, weil da kann man nicht drüber laufen, man muss eine unsichtbare Textur drunter setzen, aber dann kann niemand mehr unten drunter durch laufen