Oblivion:Zauber hinzufügen, entfernen
Inhaltsverzeichnis
Thema
Es gibt 3 Möglichkeiten, dem Spieler im Spiel Zauber hinzuzufügen. Entweder Zauber kaufen, Zauber selbst basteln oder durch Scripts hinzugefügte Zauber. Wir wollen uns hier verständlicherweise mit Letzterem befassen. Weiterhin wollen wir schauen, wie man neu gewonnenen Zauber gleich zauberbereit anwählt und wie man sie auch wieder aus der Zauberliste weg bekommt.
Stein aktivieren - Zauber bekommen
Aufgabenstellung
Durch einfaches aktivieren von einem Stein gibts einen kostenlosen Zauber.
Theorie
Mit AddSpell werden Zauber, Krankheiten, Eigenschaften oder Mächte (siehe Spell Window) auf den Spieler gelegt. Es gibt unterschiedliche Wirkungen, je nachdem als welcher Typ er definiert ist:
Art | Wirkung |
---|---|
Zauber/Spell | Zauber wird in das Zauberbuch übertragen |
Macht, geringere Macht/Power, Lesser Power | Zauber wird in das Zauberbuch übertragen, "Macht" kann nur einmal pro Tag benutzt werden |
Eigenschaft/Ability | Zaubereffekt ist sofort aktiv, lässt sich nicht mehr entfernen |
Krankheit/Disease | Zaubereffekt ist sofort aktiv, kann durch den Zauber "Krankheit heilen" wieder entfernt werden |
Wir wollen für den ersten Versuch jedoch einen normalen Zauber erstellen.
Realisierung
Umgebung
Wir nehmen einen beliebigen Activator (optimalerweise ein Stein ;) ), geben ihm eine neue EditorID und legen das unten stehende Script drauf. Der wird dann irgendwo in die Weltgeschichte platziert. Dann noch einen tollen Zauber erstellt. Was der macht, ist egal. Als Typ ist Zauber eingestellt! Die EditorID von dem Zauber ist MySpell.
Script
<tesscript>Scn AddMySpell
short done
begin OnActivate
if done == 0 set done to 1 Player.Addspell MySpell ;hier wird der Zauber hinzugefügt endif
end</tesscript>
Handhabung
Simplerweise passiert hier nicht mehr, als dass der Zauber ins Zauberbuch übertragen wird, und der Stein danach nutzlos ist. Wir haben eine Variable benutzt um die Aktion nur einmal ablaufen zu lassen. Beim aktivieren des Steins erscheint eine Meldung am oberen linken Bildschirmrand, fertig. Aber was passiert, wenn wir das ganze ohne dem done machen, also wenn man den Stein öfters aktivieren kann. Nun, nicht viel, da derselbe Zauber schon vorhanden ist, erscheint zwar immer wieder die Meldung, aber der alte Zauber wird überschrieben, die Funktion hat also eine kleine Kindersicherung, sodass euer Zauberbuch nicht aus allen Nähten platzt, wenn ihr lustigerweise andauernd auf den Stein klickt.
Stein aktivieren - extended
Aufgabenstellung
Das vorher war nun ziemlich lasch, ohne viel Effekte usw... Nun wollen wir, dass der Spieler was dafür blechen soll, wenn er den Zauber bekommt. Dann noch kleines Effektefeuerwerk und der Spieler soll den Zauber gleich mal auf sich anwenden.
Theorie
Wir benutzen AddSpell, SelectPlayerSpell damit der Zauber ausgewählt wird, den Cast-Befehl um den Zauber zu sprechen, und PlayMagicShaderVisuals für die Effekte. Weiterhin RemoveItem um den Spieler ein bisschen Geld abzuknöpfen.
Probleme
Da der Cast-Befehl nur bei Zaubern auf sich selbst bewirkt, muss unser Zauber auch so definiert sein (siehe Zauber erzwingen).
Realisierung
Umgebung
Den Stein haben wir schon von unserem ersten Script. Jetzt nur noch den Zauber so anpassen, dass wir einen self-Effekt haben. Also meinetwegen Feuerschaden auf sich^^
Script
<tesscript>Scn AddMySpell
short done
begin OnActivate if done == 0 if Player.GetItemCount Gold001 >= 500 set done to 1 Player.RemoveItem Gold001 500 ;500 Gold entfernen Player.Addspell MySpell ;hier wird der Zauber hinzugefügt Player.SelectPlayerSpell MySpell ;Zauber auswählen Player.Cast MySpell Player ;Zauber wirken PlayMagicShaderVisuals effectAbsorb 5 ;5-Sekunden-Shader auf den Stein gelegt (der glüht dann so lila) else Message "Ihr habt nicht genug Gold dabei" endif endif
end</tesscript>
Handhabung
Damit der Spieler hier nicht sinnlos sein Geld verpulvert, lassen wir den Spaß nur einmal abspielen. Die ganzen Befehle stehen in keinem logischen Zusammenhang, man kann also auch welche entfernen, die man nicht haben will. Nur der Cast-Befehl muss nach SelectPlayerSpell kommen, sonst wird irgendwas anderes gezaubert, nur nicht das, was soll. Die if-Kostruktion, welche abfragt, ob der Spieler genug Gold hat, besitzt noch einen else-Zweig um den Spieler wissen zu lassen, dass er noch etwas sparen muss. Beachte, dass das set done to 1 nicht in dem else-Zweig steht, also kann man den Stein beliebig oft aktivieren, solang man noch nicht das benötigte Kleingeld hat (so soll es auch sein)
Links
Weitere Scripts aus dieser Kategorie
Level 1
{{#if: Handhabung von Zaubern | }}
{{#if: Level 1 Scripts | }}