Tutorial:Getriggerter Zauber
| Dieser Artikel oder Abschnitt enthält möglicherweise falsche Informationen. Den Grund erfährst du auf der Diskussionsseite. Wenn die Informationen korrigiert wurden, oder ihre Richtigkeit auf der Diskussionsseite erwiesen wurde, kann dieser Hinweis entfernt werden. |
Wie macht man seine eigenen Zauber per Trigger? Im grunde bestehen getriggerte Zauber aus Animationen und ziemlich einfachen "FUNKTIONEN" Wobei das schwerere ist die Zauberanimationen zu Triggern. Wir beginnen mit einem einfachen Zauber der einen Stern am Boden erzeugt und dann eine Kriesdonner Animation abspielt und dann allen Einheiten in dem Gebiet Schaden Zufügt
Zaubervariablen: Für Zauber werden viele Variablen gebraucht Die meisten sind für das bestimmen von Positionen der Triggering Unit oder der Angegriffenen Einheit. Je nachdem umwelche/auf welcher Eiheit der Spell erzeugt werden soll. Für den Zauber den wir erstellen wollen brauchen wir folgende:
- Evil Caster – Einheit
- Dis – Real
- Ang – Real
- Point – Punkt (Array)
- Player - Spieler
Als erster sollte man immer das Grundgerüst FAST jedes Zaubertriggers bauen das sollte so aussehen:
Grundgerüst
Aktionen

Einheit - A unit Beginnt, eine Fähigkeit zu wirken
Bedingungen

(Ability being cast) Gleich Star of Death
Ab jetzt wird es schwerer. Als erster sollte man immer die Einheit die den Zauber wirkt und die, die Angegriffen bestimmen. Da es in unserem Fall aber nur ein Spell ist der um die Zaubernde Einheit entsteht, müssen wir eigentlich nur die Triggering Unit bestimmen. Hier wird auch gleich die erste Variable bestimmt: unsere Einheiten Variable (Evil Caster)

Set Evil_Caster = (Triggering unit)So und jetzt geht es an die Spezialeffekte: Wenn man mehrere Spezialeffekte um eine Einheit erstellt bietet sich immer

For each (Integer A) from <x> to <x>, do (Actions)

Schleifen - Aktionenwas bedeutet das eine bestimmte Aktion x mal ausgeführt wird
Jetzt wird der erste Spezialeffekt erstellt.

For each (Integer A) from 1 to 90, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at ((Position of Evil_Caster) offset by ((200.00 x (Cos(Ang))), (200.00 x (Sin(Ang))))) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Ang = (Ang + 4.00)was im Grunde bedeutet das auf der Position der Einheit die den Spell ausgelöst hatt ein Spezialeffekt erstellt wird. Dann kommt Ang+4 was bedeutet das der nächste Spezialeffekt um 4 weiter entfernt platziert wird. Wenn diese Aktion oft genug ausgefüht wird (in diesem Fall 90 mal) entsteht ein Kreis.
Jetzt haben wir den Kreis!
Als nächstes kommen die Linien:
Dazu brauchen wir die Dis Variable und erneut die For each (Integer A) from <x> to <x>, do (Actions)
Als ersts bestimmen wir einen Punk two die Linie Anfängt und dann kommt immer ein Punkt dazu bis die Liene den Kreis berührt:

Set Point[1] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(57.00))), (200.00 x (Sin(57.00)))))
Set Point[2] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(129.00))), (200.00 x (Sin(129.00)))))
Set Point[3] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(201.00))), (200.00 x (Sin(201.00)))))
Set Point[4] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(273.00))), (200.00 x (Sin(273.00)))))
Set Point[5] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(345.00))), (200.00 x (Sin(345.00)))))Wir brauchen 5 da der Stern aus 5 Linien besteht.
Dann wird der Spezialeffekt gemacht:

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[1] offset by Dis towards (Angle from Point[1] to Point[3]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00),was beudetet das auf dem Point (1) ein Spezialeffekt erstellt wird und das 25 mal jedoch wird der Punkt immer um 15 versetzt (Set Dis = [Dis + 15.00]) womit nach 25 mal eine komplette Linie erstellt wird.
danach müssen wir Dis wieder zu 15 setzen um die nächste Linie zu erstellen:

Set Dis = 15.00Danach wird die nächste Linie erstellt:

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[2] offset by Dis towards (Angle from Point[2] to Point[4]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)danach müssen wir Dis wieder zu 15 setzen um die nächste Linie zu erstellen:

Set Dis = 15.00Danach wird die nächste Linie erstellt:

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[3] offset by Dis towards (Angle from Point[3] to Point[5]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)
Jedoch muss der Punkt wo die Linie erstellt wird immer an einer anderen Position sein (ein bisschen Probieren kann nicht schaden ;) )
danach müssen wir Dis wieder zu 15 setzen um die nächste Linie zu erstellen:

Set Dis = 15.00Danach wird die nächste Linie erstellt:

For each (Integer A) from 1 to 25, do (Actions)

Schleifen - Aktionen


Spezialeffekt - Create a special effect at (Point[4] offset by Dis towards (Angle from Point[4] to Point[1]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl


Set Dis = (Dis + 15.00)und noch einmal

Set Dis = 15.00
For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[5] offset by Dis towards (Angle from Point[5] to Point[2]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)So dann dürfter der Spezialeffekt fertig sein.
Doch wir wollen doch auch eine War Stomp Animation und Schaden: Dazu machen wir wieder eine Schleifen Aktion

For each (Integer B) from 1 to 5, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Random point in (Region centered at (Position of Evil_Caster) with size (100.00, 100.00))) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl



Einheit - Cause (Triggering unit) to damage circular area after 0.10 seconds of radius 100.00 at (Random point in (Region centered at (Position of Evil_Caster) with size (100.00, 100.00))), dealing 100.00 damage of attack type Zaubersprüche and damage type Normal
Das heißt das 5 mal (jedoch zu schnell um es zu sehen) eine Kriegsdonner Zauber Animation abgespielt wird und danach 100 Schaden zugefügt wird.
Was heißt der Zauber macht 500 Schaden (kann man jedoch beliebig ändern)
So jetzt haben wir jedoch ein Problem… Unsere Einheiten werden auch beschädigt! Somit müssen wir unsere Einheiten in dem Moment wo der Schaden ausgeteilt wird. Alsomüssen wir vor alle Einheiten unbesiegbar machen:
Dazu müssen wir jedoch ganz am Anfang nach der Bedingung noch den Spieler der den Spell auslöst hatt bestimmen:

Set Player = (Triggering player)und natürlich noch die Einheiten Unbesiegbar machen:

Einheit - Make Evil_Caster Unverwundbarund dann Natürlich wieder Besiegbar machen:

Einheit - Make Evil_Caster VerwundbarAm Ende sollte der Trigger dan so aussehen:
Cymbol of Death
Ereignisse

Einheit - A unit Beginnt, eine Fähigkeit zu kanalisieren
Bedingungen

(Ability being cast) Gleich Symbol of Death (Version 2)
Aktionen

Set Evil_Caster = (Triggering unit)

For each (Integer A) from 1 to 90, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at ((Position of Evil_Caster) offset by ((200.00 x (Cos(Ang))), (200.00 x (Sin(Ang))))) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Ang = (Ang + 4.00)

Set Point[1] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(57.00))), (200.00 x (Sin(57.00)))))

Set Point[2] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(129.00))), (200.00 x (Sin(129.00)))))

Set Point[3] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(201.00))), (200.00 x (Sin(201.00)))))

Set Point[4] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(273.00))), (200.00 x (Sin(273.00)))))

Set Point[5] = ((Position of Evil_Caster) offset by ((200.00 x (Cos(345.00))), (200.00 x (Sin(345.00)))))

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[1] offset by Dis towards (Angle from Point[1] to Point[3]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)

Set Dis = 15.00

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[2] offset by Dis towards (Angle from Point[2] to Point[4]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)

Set Dis = 15.00

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[3] offset by Dis towards (Angle from Point[3] to Point[5]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)

Set Dis = 15.00

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[4] offset by Dis towards (Angle from Point[4] to Point[1]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)

Set Dis = 15.00

For each (Integer A) from 1 to 25, do (Actions)


Schleifen - Aktionen



Spezialeffekt - Create a special effect at (Point[5] offset by Dis towards (Angle from Point[5] to Point[2]) degrees) using Objects\Spawnmodels\Other\IllidanFootprint\IllidanSpawnFootPrint0.mdl



Set Dis = (Dis + 15.00)

Set Dis = 15.00

Einheit - Make Evil_Caster Unverwundbar

For each (Integer A) from 1 to 6, do (Actions)


Schleifen - Aktionen



For each (Integer B) from 1 to 5, do (Actions)




Schleifen - Aktionen





Spezialeffekt - Create a special effect at (Random point in (Region centered at (Position of Evil_Caster) with size (100.00, 100.00))) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl





Einheit - Cause (Triggering unit) to damage circular area after 0.10 seconds of radius 100.00 at (Random point in (Region centered at (Position of Evil_Caster) with size (100.00, 100.00))), dealing 100.00 damage of attack type Zaubersprüche and damage type Normal

Wait 0.01 seconds

Einheit - Make Evil_Caster Verwundbar
Und natürlich brauchen wir auch noch einen Dummy spell der in den meisten Fällen nichts bewirkt da der Trigger den Schaden und alles macht:
Speicherlecks
Wenn man den hier beschriebenen Zauber sehr oft ausführt bleiben die erstellten Punkte und Spezialeffekte im Speicher erhalten und man hat keine Möglichkeit mehr sie zu löschen. Dies führt dazu, dass der Arbeitsspeicher voll ist und das Spiel anfängt zu ruckeln. Was Speicherlecks genau sind und wie man sie beseitigt steht im Artikel Speicherleck.

USA
Argentina
Thyke.