Oblivion:Zauber hinzufügen, entfernen: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K (Umgebung)
(Umgebung)
Zeile 31: Zeile 31:
 
==== Umgebung ====
 
==== Umgebung ====
 
Wir nehmen einen beliebigen [[ob:Activator|Activator]] (optimalerweise ein Stein ;) ), geben ihm eine neue [[ob:EditorID|EditorID]] und legen das unten stehende Script drauf. Der wird dann irgendwo in die Weltgeschichte platziert.  
 
Wir nehmen einen beliebigen [[ob:Activator|Activator]] (optimalerweise ein Stein ;) ), geben ihm eine neue [[ob:EditorID|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! ist Die [[ob:EditorID|EditorID]] von dem Zauber ist ''MySpell''.
+
Dann noch einen tollen Zauber erstellt. Was der macht, ist egal. Als ''Typ'' ist ''Zauber'' eingestellt! Die [[ob:EditorID|EditorID]] von dem Zauber ist ''MySpell''.
  
 
==== Script ====
 
==== Script ====

Version vom 9. September 2008, 23:19 Uhr

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 PlayMagicShader 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 | }}