Nirn.de

Gast

Thema: Wir erstellen einen eigenen Zauber  (Gelesen 4905 mal)

  • Bettler
    • Neuling
Spell Making with Paranaix ;)
[/B][/SIZE]
1. Voraussetzungen

In diesen Tutorial werde ich erklären wie wir einen simpel "Telikentischen Stoß" Zauber scripten.
Dafür setze ich jedoch einige Dinge vorraus:
  • Grundkenntnisse des Scriptens:
    Es sollte euch bekannt seien, was "begin ... end" Blöcke sind, was Variablen sind und was IFs sind.
  • Grundkenntnisse des Editors:
    Es sollte euch bekannt seien, wie man den Editor öffnet, Files speicher usw.
  • Solltet ihr euch für den erweiterten Spell interessieren benötigt ihr OBSE.
    Der einfache Spell kommt jedoch ohne OBSE aus.
Erfüllt ihre diese Bedingungen seit ihr bereit für euren ersten eigenen Zauber ;)
Wenn nicht sucht nach guten Scripting Tutorials und lernt fleißig ;)


2. Wir erstellen unseren Zauber

Ok öffnet das Construction Set und erstellt am besten ein neues Plugin.
Brint euer Object Window in den Vordergrund und geht in die Kategory:
Magic/Spell/Zauber
In dieser Kategory befinden sich alle Zauber, die ihr auch bei einem Händler kaufen könnt. Macht einen Rechtsklick auf einen der Zauber und wählt "New"
Ein Fenster kommt auf das so aussehen sollte:


  • Die EditorID, mit der der Zauber nacher im Editor bezeichnet wird. Ich nehme "TestTKS"
  • Der Name des Zaubers. Diesen sehen wir nacher im Spiel: zB. Sternenlicht. Ich nehme "Sithis Gabe"
  • Die Art von Zauber. Es kann ein Gift, eine Krankheit seien oder aber auch eine große Macht. Hier lassen wir es bei "Zauber"
  • Hier kommen die Effekte des Zaubers hin. zB. Feuerschaden 10 Punkte auf Berührung. Darüber erfahren wir gleich mehr ;)
  • Sollen die Zauberkosten ausgerechnet werden? Wenn nicht kannst du bei Spelllevel angeben für welchen Fertigkeitsrang
     der Zauber ist und bei Spellcost seine Manakosten.
    Hier wird die Box ungecheckt

Ok nachdem wir diese Werte eingetragen haben geht es weiter zu unseren Effekt. Klickt rechts auf die Box bei 4 und wählt "New".
Wieder erscheint ein Fenster:

  • Effect: Hier steht der Zaubereffekt drinne, zB. Feuerschaden. Wählt hier Script-Effekt.
  • Range: Hier steht drin um welche Art von Zauber es sich handelt, zB. auf sich selbst, auf Ziel. Wählt hier Ziel.
  • Area: Ist euer Zauber ein Flächenzauber? Wählt hier 0
  • Duration: Wielange hält der Effekt von eurem Zauber? Wählt hier 0
  • Magnitude: Wie stark ist euer Zauber? Da wir Script-Effekt gewählt haben können wir hier nichts wählen.


3. Wir erstellen unseren Scripteffekt

So jetz haben wir einen Zauber aber noch keinen Effekt. Das ändern wir nun. Wie ihr seht hat sich, als wir "Script-Effekt" ausgewählt haben,
der untere Teil des Fensters aktiv geschaltet. Dies ist wohl für uns der wichtigste Teil. Klickt bei Script auf den Button mit den "...".
Der Scripteditor öffnet sich. Klickt in der Menüleiste auf:
"Script/New"
Es öffnet sich ein neues Script. Wählt oben in der rechten Ecke "Magic Effect" aus und tragt folgendes in das Script ein:
Code
scn TeleStrike

Begin ScriptEffectStart
End

Begin ScriptEffectUpdate
End

Begin ScriptEffectFinish
End
Zur Erklärung: In Magic Effects Scripten stehen uns folgende neue Blöcke zu verfügen:
  • ScriptEffectStart: Dieser Block wird ausgeführt, wenn der Zauber beginnt, dh. Den Gegner trifft
  • MScriptEffectDuration: Dieser Zauber wird bei jeden Frame ausgeführt solange der zauber aktiv ist.
    Dh. dieser wert hängt von der Duration ab, nicht ob der Zauber den Feind bereits getroffen hat. Wird benutzt für Schaden über Zeit.
  • ScriptEffectEnd: Dieser Block wird einmal ausgeführt wenn die Duration ausläuft, also der Zauber zu Ende ist.

Ok da wir ja unseren Gegner durch die Luft schleudern wollen, wenn der Zauber trifft müssen wir natürlich noch das einbauen:
Code
scn TeleStrike

ref Target

Begin ScriptEffectStart
set Target to GetSelf
player.PushActorAway Target, 50
End
PushActorAway wirft einen Actor(in unserem Falle "Target") von dem Caller(in unseren Falle "Player") weg. Die Zahl die hinterm Komma steht bestimmt die Kraft mit dem unser Target weggeschleudert wird.
In Magic Effect Scripts liefert GetSelf uns Standartweise immer das Target, also das Ziel des Zaubers zurück. Speichert das Script ab und schließt den Editor.

Wählt nun in unserem Effect Item Window bei Script unser "TeleStrike" Script aus. Sollte es nicht vorhanden seien, klickt auf OK und öffnet das Fenster einfach nochmal. Bei Effect Name tragt ihr am besten "Telekinetischer Stoß" ein. Unter Visual Effect könnt ihr einen Zauber euer Wahl nehmen, dies ändert nur das aussehen eures Zauber. Effect is Hostile bestimt ob der Effekt als Kampfhandlung gilt, lasst es lieber erstmal ungecheckt ;)



4. Wir testen unseren Spell

Ok jetz ist es endlich Zeit die 'Früchte unserer Arbeit zu ernten. Wechselt in das Object Window und zieht die Spalte neben Count auseinander. Sucht unseren Spell und schreibt euch die Nummer auf.
Jetz speichert das Plugin ab und wechselt ins Game.
Öffnet die Konsole und gebt folgendes ein:
Code
player.addspell EureNummerGlückwunsch wenn ihr alles richtig gemacht haben solltet, solltet ihr jetz ein Spell mit den Name "Sithis Gabe" in eurem Zauberbuch haben.
Kriegt ihr als Fehler zurück, das dieser Spell nicht existier erhöht mal immer die zweite Nummer immer um 1:
Code
02000CE6
03000CE6
...
06000CE6 und so weiter


Hier ein paar Screens von dem Spell:


Hach wielange ich auf diesen Momment gewartet habe ^^


Langsam gehts los ^^


Wuhuuuuu!!!

5. Wir erweitern unseren Scripteffekt
!!! FÜR DIE NACHFOLGENDEN SCHRITTE WIRD OBSE BENÖTIGT !!!

Was haben wir vor?
Wir werden den Spell so ändern das wir ihn einem Schaden geben können wie bei einem Feuerball. Dafür verwenden wir anstatt Magnitude, Duration.

Ok fangen wir mal an das Script etwas umzuschreiben:
Code
scn TeleStrike

ref Target
ref Spell

short duration

Begin ScriptEffectStart
set Target to GetSelf
set spell to GetPlayerSpell
set duration to GetNthEffectItemDuration spell 0

player.PushActorAway Target, 50
End
Ok jetz haben wir schoneinmal den Spell und die Duration raus.
Über
Jetz müssen wir einfach nur noch den Damage und die Power berechnen:
Code
scn TeleStrike
...
short duration
float damage
float power

Begin ScriptEffectStart
...
set damage to 10 * duration
set damage to 0 - damage
set power to 6 * duration

player.PushActorAway Target, power
ModActorValue Health damage
End
So zuletz können wir noch den Damage und die Power durch die Distanz zum Ziel beienflussen(Da diese das fertige Script ist poste ich diesmal das ganze:
Code
scn TeleStrike

ref Target
ref Spell

short duration
float damage
float power

float malus
float distance

Begin ScriptEffectStart
set Target to GetSelf
set spell to GetPlayerSpell

set duration to GetNthEffectItemDuration spell 0
set distance to GetDistance player
set malus to distance / 150

set damage to 10 * duration - malus
set power to 6 * duration - malus
set damage to Ceil damage
set damage to 0 - damage
set power to Ceil power


player.PushActorAway Target, power
ModActorValue Health damage
End

Begin ScriptEffectUpdate
End

Begin ScriptEffectFinish
End
So hiermit ist der Zauber fertig.
Speichert das Script und setzt die Duration einen von euch beleiben Wert.
Ihr werdet sehen: So höher die Duration so weiter weg fleigen die Leute.

Ich hoffe euch hat das Tutorial gefallen und ihr habt was gelernt.
Fragen postet ihr am besten in diesen Thread.

MfG

Paranaix
  04.08.2009, 15:59
  • Offline