PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Tutorial] Skripten?



imported_Lakos
07.04.2006, 20:10
Skripten?

Hiermit möchte ich euch Tutorial präsentieren, welches euch ein wenig in die Welt des Skriptens einführt.

Zunächst einmal stellt sich die Frage nach dem Sinn und Zweck des Skriptens. Wozu braucht man das? Zunächst einmal sind fast alle Quests in Oblivion durch Skripts gesteuert. Dann eröffnen sich durch das Skripten auch nochmal unzählige Möglichkeiten seine Ideen wahr werden zu lassen. Ihr wollt eine Armee von Ratten um euch scharen? Lernt skripten. Ihr wollt das Wetter beeinflussen? Lernt skripten. Ihr wollt ein unendliches Inferno an Special-Effects in einem einzigen Zauber abfeuern? Lernt skripten.

Da nun jeder von der Wichtigkeit des Skriptens überzeugt sein sollte, wenden wir uns der Materie zu.
Je mehr man schon mit Programmiersprachen ,wie VB, PHP oder C++, zu tun gehabt hatte, desto leichter fällt einem auch der Einstieg.

Für die, die bisher noch nicht in "Kontakt" mit einer der oben genannten Programmiersprachen gekommen ist, hier ein Crashkurs. (Erfahrenere Modder springen zum nächsten Abschnitt)

Crashkurs

In der Welt des einfachen Skriptens (in der ich mich zur Zeit auch noch bewege) gibt es ein paar elementare Dinge, die man wissen sollte. Zum Beispiel was Variablen und if-Funkionen sind.

Mit Variablen sollten die meisten schon einmal in Mathematik zu gehabt haben. Wer es nicht mehr weiß: In Variablen kann man Daten speichern. Man muss sich eine Variable wie einen Container vorstellen, in den man aber nur eine Sache legen gleichzeitig kann. Mit Variablen lassen sehr einfach bestimmte Daten speichern und wieder aufrufen.

If-Funktionen dienen zum Vergleich. Eine If-Funktion vergleicht zwei Werte miteinander. Da sich das nur schwer erklären lässt, gebe ich hier ein Beispiel.


If x == 1
Message "Die Variable X ist 1"
elseif x != 1
Message "Die Variable X ist nicht 1"

Hier seht ihr, dass durch das If geprüft wird, ob x (eine Variable) gleich 1 ist. Es gibt dabei mehrere Vergleichsmethoden.

1.== steht für den direkten Vergleich zweier Werte. Also wird die Funktion, die unter der If-Bedingung steht, nur ausgeführt, wenn – wie in unserem Beispiel – x gleich 1 ist.
2.!= steht für ungleich. Die Funktionen nach dem If werden nur ausgeführt, wenn x ungleich 1 ist.
3.< Die Funktion wird nur ausgeführt, wenn x kleiner als 1 ist.
4.> Die Funktion wird nur ausgeführt wenn x größer als 1 ist.
5.<= Die Funktion wird nur ausgeführt, wenn x kleiner oder gleich 1 ist.
6.>= Die Funktion wird nur ausgeführt, wenn x größer oder gleich 1 ist.

Mit && könnt ihr eine zweite Bedingung an die If-Schleife hängen, mit || eine alternative Bedingung.
Am Anfang war der Name

So, nun starten wir durch: Öffnet das CS, ladet die Oblivion.esm rein und ruft das Skriptfenster auf (Das Icon ganz rechts).
Geht nun auf Script, New. Die Fläche in der Mitte wird weiß, und ihr habt auch neue Schaltflächen zur Verfügung. Uns interessieren jetzt erstmal nur die zwei Icons links.

Zunächst solltet ihr auswählen, als was euer Skript verwendet wird. Gehört es zu einem Objekt (zum Beispiel einer Statue oder einem NPC), zu einem Quest oder soll das Skript als Magieeffekt dienen (dazu später mehr)?

Wir entscheiden uns für den Magieeffekt (Magic Effect). Wir wollen nämlich ein Wetteramulett bauen. ;)

Zuerst einmal müssen wir dem Skript einen Namen geben. Deshalb schreiben wir in die erste Zeile:


scn wetteramulett

scn steht für Scriptname und gibt eurem Skript einen Namen.
Dann stellt sich die Frage, was das Amulett können soll. Da es Wetteramulett heißt, liegt es nahe, ihm die Kraft über das Wetter zu geben. Und wie soll der User auswählen können, welches Wetter er haben will? Hm. Vielleicht durch eine Textbox? Ja, das ist eine gute Idee.
Wie wir oben schon gelernt haben, kann man in Variablen bestimmte Werte speichern. Wenn wir also eine Variable erschaffen, die speichert welches Wetter der Spieler haben will und es dann ans Spiel weiterleitet, wären wir schon einen Schritt weiter. Also gebt dies als nächstes ein:


short wetter

Es gibt beim CS vier Arten von Variablen: short, long, float, ref.
Short: Können Zahlen von -32768 bis 32767 erfassen
Long: Können Zahlen von -2147483648 bis 2147483647 erfassen
Float: Können verdammt viele Zahlen erfassen (von 1.18 x 10-38 bis 3.40 x 1038)

Mit Ref-Variablen könnt ihr um einiges mehr speichern, als mit den "normalen" Variablen. Da die Erklärung dafür zu ausschweifend wären, hier mal ein Link zum (englischen) CS-Wiki.
http://cs.elderscrolls.com/constwiki/index.php/Reference_variables

Nun haben wir also unsere Variable gesetzt. Fehlt noch die Textbox.
Um eine Textbox, oder MessageBox wie sie im CS genannt wird, zu erstellen, müsst ihr den Befehl zur Ausgabe einer Textbox (MessageBox) schreiben und ausführen lassen.

Zunächst aber müssen wir festlegen, wann unser Skript mit was "beginnen" soll. Wenn es im normalen Spiel ist, oder im Menü, oder erst, wenn ein bestimmter Gegenstand aufgenommen bzw. abgelegt wurde?
Das kann man alles mit Begin einstellen. Im Folgenden sind die wichtigsten Einstellungen für Begin.

GameMode: Das Skript führt die Funktion in jedem Frame im laufenden Spiel aus
MenuMode: Das Skript führt die Funktion in jedem Frame im Menü aus
OnActivate: Sobald der Gegenstand, auf dem das Skript liegt, aktiviert wurde, wird das Skript ausgeführt
OnAdd: Sobald ein bestimmer Gegenstand in einen bestimmten "Container", z.B. in das Inventar des Spielers, aufgenommen wird, wird das Skript ausgeführt (Beispiel: Begin OnAdd wetteramulett player)
OnDrop: Dasselbe wie bei OnAdd, nur wird das Skript ausgeführt, wenn ein bestimmter Gegenstand fallen gelassen wird.
ScriptEffectStart, ScriptEffectUpdate und ScriptEffectFinish: Können nur von "Magic Effect"-Skripts benutzt werden.
OnEquip: Das Skript wird beim Ausrüsten des "beskripteten" Gegenstandes aktiviert.
OnUnequip: Das Skript wird beim Ausziehen des "beskripteten" Gegenstandes aktiviert.

Da die Skripts im CS in sogenannten Blocks geschrieben und jeder Anfang ein Ende hat, muss man nach dem letzten Befehl eines Blocks ein End setzen. So weiß das Spiel, dass dieser Block zu Ende ist.

Wir schreiben also dann einige Zeilen unter der Deklarierung der Variablen. Da wir einen neuen "Magic Effect" erstellen, benutzen wir dafür ScriptEffectStart; für die meisten Scripts wird GameMode genommen. Wir schreiben also:


Begin ScriptEffectStart

Dann brauchen wir die Textbox. Der Befehl für die Textbox ist folgendermaßen aufgebaut.

MessageBox "Hier stehen immer Anführungsstrichen", Variable,"Auswahlmöglichkeiten"

In unserem Fall würde da so aussehen:

MessageBox "Welches Wetter wollt Ihr haben?", "Klar", "Wolkig", "Nebel", "Regen", "Schnee" , "Normaler Wetterverlauf"

Im Spiel sieht das dann so aus:

http://img335.imageshack.us/img335/5168/tutorial11fh.th.jpg (http://img335.imageshack.us/my.php?image=tutorial11fh.jpg)

Das reicht nun für diesen Block, also schreiben wir eine Zeile darunter ein End hin und beginnen einen neuen Block. Euer Script sollte nun so aussehen:

http://img376.imageshack.us/img376/954/tutorial27co.th.jpg (http://img376.imageshack.us/my.php?image=tutorial27co.jpg)


Nun soll ausgelesen werden, was der Spieler gewählt hat. Dafür benutzen wir unsere Variable, in die wir den Wert des gedrückten Buttons speichern und dann später wieder auslesen lassen. Da der Rest des Skriptes im normalen Spielmodus ausgeführt werden soll, schreiben wir:


Begin GameMode

Nun müssen wir den Wert der Variable auf den Wert des gedrückten Buttons setzen. Das geht Setzen übernimmt der Befehl Set. Und der Wert des gedrückten Buttons wird durch GetButtonPressed ermittelt. Das Ganze sieht dann so aus:


Set wetter to GetButtonPressed

Nun hat die Variable wetter den Wert des gedrückten Buttons. Jetzt lassen wir sie von einer If-Funktion auslesen. Das sieht dann so aus:


If wetter == 0

Wie wir oben schon gelernt haben wird jetzt verglichen, ob der gedrückte Button der erste in der Auswahl war (in der MessageBox ist die erste Auswahl die 0, die zweite die 1, die dritte die 2, usw.). Wenn dem so ist, wird folgendes ausgeführt:


SetWeather Clear 1

Mit dem SetWeather-Befehl wird das aktuelle Wetter verändert, bzw. der Verlauf des Wetters. Der erste Befehl nach SetWeather, Clear, gibt an, in welches Wetter sich das Wetter umformen soll, mit der 1 nach dem Clear wird festgelegt, dass sich das Wetter dann auch nicht mehr ändert. Das erweitern wir nun auf alle Auswahlmöglichkeiten, so dass es am Ende so aussieht:


if wetter == 0
;Auswahl 1 Klar
SetWeather Clear 1
elseif wetter == 1
;Auswahl 2 Wolkig
SetWeather Cloudy 1
elseif wetter == 2
;Auswahl 3 Nebel
SetWeather Fog 1
elseif wetter == 3
;Auswahl 4 Regen
SetWeather Rain 1
elseif wetter == 4
;Auswahl 5 Schnee
SetWeather Snow 1
elseif wetter == 5
;Auswahl 6 Normal
ReleaseWeatherOverride
endif

Mit ReleaseWeatherOverride legen wir fest, dass sich das Wetter wieder von alleine ändern "darf."
Mit EndIf beenden wir unsere If-Funktion, die ebenfalls immer in Blöcken geschrieben werden.

Jetzt noch ein End dranfügen, und nun sollte euer Fenster so aussehen:

http://img93.imageshack.us/img93/618/unbenannt1ch.th.jpg (http://img93.imageshack.us/my.php?image=unbenannt1ch.jpg)

Speichert jetzt das Skript ab. Herzlichen Glückwunsch! Ihr habt nun euer erstes Skript geschrieben. Da wir es als "Magic Effect"-Skript erstellt haben, liegt es nahe, einen neuen Zauber zu erschaffen, der genau dieses Skript benutzt.

Wir klicken dazu im Object Window unter Magic > Spell > Zauber rechts auf die Liste mit den bisher vorhandenen Zaubern und wählen New. Ein neues Fenster öffnet sich, in dem ihr die verschiedenen Parameter des neuen Zaubers eingeben müsst. Unter ID gebt ihr die individuelle Zauber-ID ein, mit der ihr z.B. den Zauber in Skripts aufrufen könnt. Im Names-Feld gebt ihr dem Zauber einen Namen. Unter Type könnt ihr zwischen den einzelnen Typen von Effekten auswählen, also ob es ein Zauber, eine Krankheit, eine Fähigkeit, eine Eigentschaft oder einfach nur ein An/Aus-Schalter ist. Da wir einen Zauber erstellen wollen, wählen wir in dem Drop-Down-Menü "Zauber" aus.

Nachfolgend noch die Erklärungen für die Checkboxen:

Disallow Spell Absorb/Reflect: Der Zauber kann nicht absorbiert/reflektiert werden
Script Effect Always Applies: (noch unbekannt)
Area Effect Ignores LOS: Der Zauber durchdringt auch massive Gegenstände wie Wände.
Immune to Silence: Dieser Zauber kann auch gesprochen werden, wenn der Spieler "schweigt".
PC Start Spell: Der Spieler hat diesen Zauber von Anfang an.

Für unseren Zauber ist keiner dieser Einstellung von großer Bedeutung, weswegen wir nichts ankreuzen. Im Effects-Feld klickt ihr wieder mit einem Rechtsklick und wählt New, wodurch sich wieder ein neues Fenster öffnet, in dem ihr einen Zaubereffekt bestimmt.

Unter Effect wählt ihr "Skript-Effekt", wodurch eine neue Schaltfläche freigegeben wird, in der ihr das Skript, den Effektnamen, die Zauberschule und die visuellen Effekte des Zaubereffekts auswählen könnt.

Bei der Zauberschule müsst ihr allerdings aufpassen, da die Übersetzer Mist gebaut haben. Es stehen zwar die deutschen Namen da, allerdings wird nach wie vor im englischen ausgewählt, weshalb ihr folgende Liste zu Hilfe nehmen solltet.

Zauberschulen
Im Editor = Tatsächliche Schule
Beschwörung = Veränderung (Alteration)
Illusion = Beschwörung (Conjuration)
Mystik = Zerstörung (Destruction)
Veränderung = Illusion (Illusion)
Wiederherstellung = Mystik (Mysticism)
Zerstörung = Wiederherstellung (Restoration)

An sich ist es unwichtig, welche Schule der Zauber benutzt, aber wir wollen es ja authentisch machen. Da der Zauber das Wetter verändert, liegt es nahe die Schule der Veränderung als Zauberschule auszuwählen.

In der "Effect Is Hostile"-Box könnt ihr auswählen, ob der Skript-Effekt primär gegen Feinde gerichtet ist, oder eher ein verstärkender Zauber sein soll.

Bei der "Range" solltet ihr "Selbst" auswählen, da wir den Effekt auf uns selber ausführen. Bei Duration ist es anzuraten, eine Zeitspanne von 10 Minuten auszuwählen (in Sekunden; sprich: 600).

Wer will kann auch den Haken bei Auto-Calculate im Effects-Fenster entfernen und den Zauberlevel sowie seine Magickakosten einstellen. Nach dem Klick auf OK haben wir also unseren ersten Zauber erschaffen. Dieser Zauber soll jetzt noch auf ein neues Amulett gelegt werden, so dass der Spieler, sobald er das Amulett trägt, den Zauber auch ausführen kann.

Erstellt also unter Items > Clothing ein neues Item. Zunächst müssen wir wieder die ID und den Namen des Amuletts auswählen. Unter Weight und Value könnt ihr das Gewicht bzw. den Wert des Amuletts bestimmen,
bei Enchantment dem Amulett eine Verzauberung verpassen. Die Checkboxen bestimmen, ob das Amulett ein Questitem ist, ob es die Ringe und Amulette am Körper des Spielers verschwinden lässt, und ob es vom Spieler angelegt werden kann.

Unter Biped Object wählen wir Amulet aus. Mit Biped Object können wir festlegen, welches Körperteil durch dieses Kleidungsstück belegt wird. Um die NIF-Files hinzufügen zu können, müsst ihr leider die kompletten Oblivion – Meshes.bsa und Oblivion - Textures – Compressed.bsa mit dem TES4BSA-Entpacker (http://www34.brinkster.com/ghostwheel/) entpacken.

Um mit dem TES4BSA-Entpacker arbeiten zu können, ladet ihn herunter und entpackt die exe-Datei in das Data-Verzeichnis des Oblivion-Ordners.

Betätigt die Windows-Taste + R und gebt ihm "Ausführen"-Feld cmd ein und steuert euch im DOS-Fenster zum Oblivion/Data-Order.
Hier die wichtigsten DOS-Befehle:

cd Change Directory, Wechselt in einen anderen Ordner (auch Vorwärts). Um in einen übergeordneten Ordner zu wechseln, müsst ihr z.B. "cd .." eingeben.
dir Listet den Inhalt des aktuellen Verzeichnisses aus.

Falls ihr Oblivion auf einer anderen Partition installiert habt (z.B. auf der Festplatte D), dann gebt ihr einfach den Laufwerksbuchstaben mit anschließedem Doppelpunkt ein, um das Laufwerk zu wechseln.

Im Oblivion-Ordner angekommen, gebt ihr
tes4bsa unpack " Oblivion – Meshes.bsa"
und bestätigt mit Enter. Nach dem Entpack-Vorgang gebt:
tes4bsa unpack " Oblivion - Textures – Compressed.bsa"
ein, um auch diesen Ordner zu entpacken.

Wenn ihr das geschafft habt, könnt ihr endlich die NIF-Files verwenden. Wie ihr seht gibt es für beide Geschlechter verschiedene Models, bei Amuletten sind sie aber immer gleich. Wählt also für das Biped Model und World Model immer das gleiche. Unter Clothes > Amulet sind alle NIF-Files für die Amulette gespeichert. NIF-Files mit einem _gnd-Suffix sind übrigens ausschließlich für die World-Models gedacht. Unter Icon Image sucht ihr euch ein passendes Icon für eure Amulett aus.

Kommen wir nun zum wichtigsten Teil des Amuletts: Dem Skript. Klickt auf die Schaltflächte neben dem Script-Feld und erstellt im neuen Fenster ein neues Skript.

Wir nennen es "wetteramulettscript". Jetzt müssen wir festlegen, dass das Skript auf eine Object gelegt, und dass der Spieler einen bestimmen Zauber erhält, wenn er das Amulett anlegt. Wir wählen also unter Script Type Object.

Wie wir (hoffentlich) noch wissen, steht am Anfang eines Blocks immer ein Begin. Und da der Spieler den Zauber erhalten soll, wenn er das Amulett ausrüstet. Also schreiben wir (Ich habe meinem Zauber die ID wetterzauber gegeben, ihr müsst dann folglich eure ID eintragen):


scn wetteramulettscript

Begin OnEquip
player.AddSpell wetterzauber
End

Mit AddSpell können wir – wie der Name schon sagt, dem Objekt, welches das Skript ausführt, einen Zauber zur Zauberliste hinzufügen. Da es in diesem Fall allerdings das Amulett wäre, müssen wir noch ein player. davor setzen, um diesen Befehl auf den Spieler auszuführen. Mit End beenden wir den Block wieder.

Da der Spieler den Zauber aber wieder verlieren soll, wenn er das Amulett auszieht, setzen wir noch folgenden Block darunter:


Begin OnUnequip
player.RemoveSpell wetterzauber
End

Mit RemoveSpell kann man einen Zauber wieder aus der Zauberliste entfernen. Das Skript sollte nun so aussehen:

http://img82.imageshack.us/img82/4769/unbenannt20ya.th.jpg (http://img82.imageshack.us/my.php?image=unbenannt20ya.jpg)

Speichert das Script ab, drückt im Item-Fenster OK, und ruft euer Item noch einmal auf, um nun im Drop-Down-Menü euer Skript auszuwählen. Fertig!


Wir haben nun also das Wetteramulett erschaffen. Aber wie soll der Spieler das Amulett erhalten? Am besten durch einen Quest, oder? Also gehen wir ins Quest-Fenster und rechtsklicken auf die Liste und wählen New, um einen neuen Quest zu erstellen. Nennen wir ihn "Das Wetteramulett". Ein richtig toller Name, was? ;)

Auf der rechten Fensterhälfte erscheinen viele neue Felder, die ihr ausfüllen könnt. Ich erkläre hier kurz ihre Funktionen.

Reiter Quest Data
Quest Name: Eigentlich selbstverständlich, dass man dem Quest einen Namen gibt.
Priority: Setzt die Priorität des Quests. 1 ist für Tutorials, 10 für questlose Dialoge, 20 für Haus- und Pferdequests, 40 für Vampirquests, 50 für sonstige Quests, 60 für Gildenquests, 85 für die Hauptquest reserviert.
Script: Zur Auswahl eines Skriptes.
Start Game Enabled: Der Spieler startet das Spiel mit diesem Quest.
Allow Repeated Conversation Topics: Normalerweise verschwinden bestimmte Themen nach der Erfüllung ihrer Pflicht wieder, aber wenn diese Funktion aktiviert wird, bleiben sie erhalten.
Allow Repeated Stages: Siehe oben.
Add Icon Image: Hier könnt ihr ein Icon für eure Quest einfügen.
Quest Conditions: Die Bedingungen, unter denen der Quest angenommen werden kann.

Reiter Quest Stages
Index: Hier tragt ihr die verschienden "Stages" der Quest ein. Dazu später mehr.
Log Entry: Der Eintrag, der in eurem Ingame-Logbuch erscheint.
Result Script: Skript, das aktiviert wird, wenn der Quest in diesem Stage wechselt.
Conditions: Siehe oben.

Reiter Quest Targets
Hier tragt ihr ein, wo eure Kompassnadel hinzeigen soll.

Reiter Topics
Relativ kompliziert, deshalb machen wir das im Tutorial.


So, nach dieser langen Reihe von Fakten, begeben wir uns mal ans Praktische. Zunächst legen wir also fest, dass unser Quest "Das Wetteramulett" heißt, die Priorität 50 hat und nur von spielbaren Rassen angenommen werden kann. Dazu Rechtsklick auf das Conditionsfeld, New und wählt dann unten "GetIsPlayableRace" aus.

Im Quest Stages-Reiter legen wir fest, wieviele Stages, oder auch Stufen, unsere Quest haben soll. Sagen wir mal, dass uns ein Auftraggeber damit beauftragt das Wetteramulett zu holen, um es ihm zu bringen. Als Belohnung macht er eine Kopie davon (er will es Cyrodiil-weit vermarkten) und gibt sie dem Spieler. Das wären also: Annahme des Quests, Suchen des Amuletts und Rückkehr zum Auftraggeber. 1, 2, 3 Stages.
Klickt also rechts auf das Index-Feld und weist den Stages eine Zahl zwischen 0 und 255 zu. Ihr könnt zwar jede Zahl zwischen diesen beiden benutzen, allerdings ist es – übersichtshalber – anzuraten die Stages in Zehnerschritten zu benennnen.
Erstellt also 3 Stages: 0, 10, 20 und 30. Warum 0 auch noch eingefügt werden sollte, erkläre ich später.

Ihr könnt die Log Entrys nun ausfüllen. Lasst eurer Fantasie dabei freien Lauf.

Bei Quest Targets müssen wir jetzt ein wenig nachdenken. Was soll alles durch den Kompass angezeigt werden? Der Standort des Amuletts und der Standort des Auftraggebers vielleicht? Ja, ich glaub, dass wäre gut. Platziert eure Amulett also irgendwo in die Pampa rein und legt einen Xmarker darauf (WorldObjects > Static). Klickt auf den Marker doppelt und tragt bei ReferenceID "wetteramulettMarker" ein. Zurück im Quest Targets-Fenster, erstellt ihr ein neue Target und wählt mit "Select Reference in Render Window" den Xmarker aus. Da dieser Marker nur in der zweiten Phase, der Suche nach dem Amulett, angezeigt werden soll, wählt ihr unter den Conditions noch "GetStage". Hier müsst ihr ein bisschen aufpassen, denn es wird nicht die aktuelle Stage ausgegeben, sondern nur die zuletzt erfüllte. Da wir bis jetzt aber noch nichts gemacht haben, setzen wir den Value der Condition auf 0. Erstellt außerdem einen NPC, auf den ihr ebenfalls ein Quest Target setzt, allerdings mit der Condition "GetStage wetteramulettquest 10"

Im Topics-Reiter, dem mitunter wichtigsten Teil eines Quests, können wir die Dialoge zusammenstellen. Anfangs brauchen wir eine Begrüßung für den NPC. Wählt also unter "Add Topic"(rechtsklick auf das linke Feld) GREETING aus. In dem nun weißen Feld tragt ihr den Text des NPCs ein. Wie auch bei sovielem, spielen die Conditions eine wichtige Rolle. Hier sollten folgende Conditions gewählt werden:


GetIsplayableRace == 1
GetIsID == QuestNPC (hier die ID des NPCs einfügen)
GetStage (QuestID) (Stagenummer, Erklärung siehe oben) < 10

Damit wird festgelegt, dass nur der dafür bestimmte NPC diesen Dialog von sich gibt, und auch nur, falls die Stage nicht größer als 10 ist.
Der NPC bittet uns also das Amulett zu finden. Wir fügen nun zwei Choices ein. Dafür müssen wir aber erstmal zwei neue Topics erstellen. Klickt rechts auf das Choices-Feld und dann Add Topic. In diesem Fenster klickt ihr nochmal rechts und wählt New und gebt eurem neuen Topic einen Namen.

Wählt dieses Topic jetzt durch nochmaliges "Add Topic" aus. Nun habt ihr zwei Antwortmöglichkeiten; z.B. Ja und Nein. Dieses werden dann im Spiel angezeigt. Gebt dem NPC, je nach Antwort des Spielers, weiteren Text. Bei Nein könntet ihr allerdings auch gar nichts hinschreiben.

Sollte der Spieler den Quest angenommen haben, muss der Quest in die Stage 10 springen, damit der Marker aktiviert wird. Also schreiben wir unter "Result Script" folgende Zeile rein:


SetStage wetteramulett 10

Damit wird die Stage des Quests "wetteramulettquest" auf den Wert 10 gesetzt, was den Marker aktiviert. Für die spätere Nutzung solltet ihr übrigens noch ein Topic für die Belohnung erstellen. Wenn der Spieler den NPC darauf anspricht, wird dieser ihm sagen, dass er das Amulett erst holen soll (GetStage wetteramulett 0), sollte der Spieler das Amulett aber schon haben, wird der NPC ihm die Belohnung geben.

Damit aber der Zeiger wieder umspringt, wenn wir das Amulett aufnehmen, müssen wir noch ein kleines Skript schreiben, welches ihr auf das Amulett legt.

Das Skript muss so aussehen:


scn wetteramulettscript

Begin OnAdd wetteramulett player
SetStage wetteramulett 20
End

Dadurch wird die Stage auf den Wert 20 gesetzt, sobald der Spieler das Amulett aufnimmt. Nun sollte der Spieler den NPC auf die Belohnung ansprechen, woraufhin er eine Belohnung erhält. Um das zu realisieren muss das Skript, welches ihr unter "Result Script" reinschreibt, so aussehen:


player.RemoveItem wetteramulett 1
player.AddItem Gold001 200
Player.AddItem wetteramulett 1
SetStage wetteramulettquest 30

Setzt noch im Quest Stages-Reiter, bei der Stage 30, einen Haken bei "Complete Quest", damit die Quest nach Erhalt der Belohnung abgeschlossen ist. Genauso wie dieses Tutorial.



Written by Lakos


Download: http://lakos-networx.de/tes4/skript-tutorial.pdf (Mit Rechtsklick > Ziel speichern unter runterladen)
Mirror: http://lakosweb.de/skript-tutorial.pdf (Mit Rechtsklick > Ziel speichern unter runterladen)

Innos Paladin
07.04.2006, 20:18
Danke, cool von dir das du dir die Mühe gemacht hast und das alles geschrieben.

Hoffe das ich das auch bald kann.:D

ruben86
07.04.2006, 22:00
Danke für dieses Tutorial http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Hab da aber noch ne frage. ich verstähe diesen Teil nicht ganz:

Wählt dieses Topic jetzt durch nochmaliges "Add Topic" aus. Nun habt ihr zwei Antwortmöglichkeiten; z.B. Ja und Nein. Dieses werden dann im Spiel angezeigt. Gebt dem NPC, je nach Antwort des Spielers, weiteren Text. Bei Nein könntet ihr allerdings auch gar nichts hinschreiben.

Ich hab da jetzt nur die Choices, wo kann ich jetzt einstellen was passieren soll wenn ich eines dieser sachen auswähle?

imported_Lakos
07.04.2006, 22:01
Füge dann im linken Feld dann die selben Topics nochmal hinzu und fülle sie mit Inhalt.

ruben86
07.04.2006, 22:12
Achso verstähe, die Choices sind sozusagen mit dem entsprechenden Topics verknüpft.

~MP~
08.04.2006, 00:54
Mir zeigt das CS immer an, dass clear, fog, snow etc keinen richtigen Werte zum eingeben sind. Woran könnte das liegen? ;_;

Hab mal ein Bild vom fehler angehängt. Bin grad dabei das script von vorn zu beginnen weil halt der fehler kam als ich fertig war. Deshalb hab ich immer zwischengespeichert und jetzt kommt halt wieder der Fehler. An der Groß/Kleinschreibung lieghts nicht. ^^

~
MP

imported_Lakos
08.04.2006, 07:08
Mir zeigt das CS immer an, dass clear, fog, snow etc keinen richtigen Werte zum eingeben sind. Woran könnte das liegen? ;_;

Hab mal ein Bild vom fehler angehängt. Bin grad dabei das script von vorn zu beginnen weil halt der fehler kam als ich fertig war. Deshalb hab ich immer zwischengespeichert und jetzt kommt halt wieder der Fehler. An der Groß/Kleinschreibung lieghts nicht. ^^

~
MP

Hast du auch die Oblivion.esm geladen? Ohne die gehts nicht.

Wenthoff
08.04.2006, 14:45
Echt super tut! Ich hab mich vor n paar jahren ma mit Basic rumgeärgert, das hilft wirklich zum verständnis! gibts evt. ne Liste mit allen befehlen?

imported_Lakos
08.04.2006, 19:36
Echt super tut! Ich hab mich vor n paar jahren ma mit Basic rumgeärgert, das hilft wirklich zum verständnis! gibts evt. ne Liste mit allen befehlen?

Ja, hier: http://cs.elderscrolls.com/constwiki/index.php/Category:Functions
Dort gibt es übrigens ebenfalls seit neuestem englische Tutorials.

Hab außerdem noch mein Tutorial in eine PDF-Datei gepackt, falls jemand das Tutorial offline machen will.

Download: http://lakos-networx.de/tes4/skript-tutorial.pdf (Mit Rechtsklick > Ziel speichern unter runterladen)
Mirror: http://lakosweb.de/skript-tutorial.pdf (Mit Rechtsklick > Ziel speichern unter runterladen)

~MP~
08.04.2006, 20:10
Ich finde den Anfang des Tutorials sehr gut gemacht. Da bekommt man richtig Lust weiterzumachen und sich damit zu befassen. Danach wirds es aber immer unfreundlicher gegenüber Neulingen. Was passiert mit dem Wetterscript? Wo ist die Erklärung wie man es denn nun auf ein Amulett einsetzt(bei mir wird das script übrigens garnicht bei der Scriptauswahl angezeigt, wenn man eine Amulett erstellt obwohl es ganz oben stehen müsste weil ich es mit 0 am Anfang geschrieben hab). Wo ist ne Erklärung z.B. das Quest einem NPC zu geben?

Mein Fazit:
Anfangs Top gemacht doch im Verlauf immer weiter demotivierend. Wenn man eine Sache nicht weiß muss man erst ewig lang rumprobieren ohne Erfolg oder man sucht erst zich andere Tutorials durch - ebenfalls ohne Erfolg. Dadurch geht nicht nur die Lust an diesem Tutorial verloren(weil nix so klappt wie beschrieben - bei mir jedenfalls nicht) sondern auch die Lust sich damit überhaupt noch auseinanderzusetzen.
Ich hab jedenfalls nach 4 Stunden doof davorsitzen entgültig die Lust verloren auch wenn sie gestern noch dank anderer Tutorials auf dem Höchststand war.


~
MP

imported_Lakos
08.04.2006, 20:14
Ich finde den Anfang des Tutorials sehr gut gemacht. Da bekommt man richtig Lust weiterzumachen und sich damit zu befassen. Danach wirds es aber immer unfreundlicher gegenüber Neulingen. Was passiert mit dem Wetterscript? Wo ist die Erklärung wie man es denn nun auf ein Amulett einsetzt(bei mir wird das script übrigens garnicht bei der Scriptauswahl angezeigt, wenn man eine Amulett erstellt obwohl es ganz oben stehen müsste weil ich es mit 0 am Anfang geschrieben hab). Wo ist ne Erklärung z.B. das Quest einem NPC zu geben?

Mein Fazit:
Anfangs Top gemacht doch im Verlauf immer weiter demotivierend. Wenn man eine Sache nicht weiß muss man erst ewig lang rumprobieren ohne Erfolg oder man sucht erst zich andere Tutorials durch - ebenfalls ohne Erfolg. Dadurch geht nicht nur die Lust an diesem Tutorial verloren(weil nix so klappt wie beschrieben - bei mir jedenfalls nicht) sondern auch die Lust sich damit überhaupt noch auseinanderzusetzen.
Ich hab jedenfalls nach 4 Stunden doof davorsitzen entgültig die Lust verloren auch wenn sie gestern noch dank anderer Tutorials auf dem Höchststand war.


~
MP

Ja, da hast du leider Recht. Allerdings wollte ich das Tutorial so schnell wie möglich rausbringen (Begrüdung stand in einem der untergegangen Threads). Außerdem hatte ich angenommen, dass ich jeden einzelnen Schritt erklären sollte. Dieses Tutorial befasst sich nur mit dem Skripten; mit dem Mappen oder Items erstellen hat es rein gar nichts zu tun, weshalb ich das auch kaum bzw. gar nicht erwähnt habe.

Wenthoff
08.04.2006, 20:21
ich hab nochmal ne frage: :D also ich wollte für meine quest (so ähnlich wie im tut (labern, gegenstand holen, labern) ein paar texte aufnehmen. im wiki hab ich nur folgendes gefunden:

# Voice Filename: Displays the filename that will be generated for this response. Full path is listed in the file list.
# Voice file list: Displays the voice files that this response needs (based on the race\sex\faction conditions on the info), as well as the full path.
# Record: Click this to begin recording to a temp voice file.
# Preview: Click this to listen to your current temp voice file.
# Save: Click this to save your temp voice file to ALL filenames listed in the voice file list. This was intended strictly as a quick way to generate temporary files; for final voice files you'll want to create the files by hand. The game uses mono 64 Kbit/s mp3 files for voices.

das ist ja wunderbar :D aber wie soll ich denn meinen file den ich per hand gemacht hab einfügen ??

imported_Lakos
08.04.2006, 20:25
ich hab nochmal ne frage: :D also ich wollte für meine quest (so ähnlich wie im tut (labern, gegenstand holen, labern) ein paar texte aufnehmen. im wiki hab ich nur folgendes gefunden:

das ist ja wunderbar :D aber wie soll ich denn meinen file den ich per hand gemacht hab einfügen ??

Das hab ich im Wiki gefunden. Habs noch nicht ausprobiert, aber vielleicht hilfts ja.
http://cs.elderscrolls.com/constwiki/index.php/Audio_Settings_For_Dialogue_Video_Tutorial

Wenthoff
08.04.2006, 21:47
sehr gut es funzt :D wenn du mir jetzt noch erklären kannst wie man zwei dialoge ohne unterbrechung verknüpft, dürft ihr euch auf einen sehr amüsanten quest freuen :D

imported_Lakos
08.04.2006, 21:59
Was meinst du mit "ohne Unterbrechung"?

Wenthoff
08.04.2006, 23:05
naja ein text kann ja max. 135 Zeichen (oder so) haben und deswegen laufen ja im spiel immer kurze texte hintereinander. sonst könnte man ja auch garnicht die stimmung ändern

ok/ hab mir ne andre quest angeguckt, da hab ichs gesehn :)

~MP~
09.04.2006, 01:20
Wäre ziemlich cool, wenn du noch die fehlenden Dinge ergänzen könntest. Ich weiß noch aus alten Tagen vom RPG Maker das Tut-schreiben immer ne Menge Arbeit mit sich bringen oder Guides für MMORPGs, aber letztendlich freut das jeden Endbenutzer was dann die Arbeit lohnenswert macht. Hab mich jetz nochmal seit 1-2 Stunden dahinter geklemmt, aber ich Esel komm einfach nicht dahinter wie man das Script über das Amulett zum laufen bringt. Das script einfach im Amulett eingeben funktioniert nicht wirklich und ein komplett neues Amulett machen geht auch nicht, weil dann immer Meshes etc fehlen.

Würde mich über ein "Nebentutorial" wo die Schritte Zwischendurch sehr freuen. Am besten einmal für Neuerstellung von zaubern(nicht jeder will vllt die quest machen und ein Amulett bekommen soindern lieber einen direkten Zauber) und Items. Es gibt in nem anderen Forum ein Tutorial dazu, aber da sind eher die Funktionen erklärt, aber nicht wirklich die einzelnen schritte vom klick auf "New" bis zum "OK". =/


~
MP

imported_Lakos
09.04.2006, 09:12
Wäre ziemlich cool, wenn du noch die fehlenden Dinge ergänzen könntest. Ich weiß noch aus alten Tagen vom RPG Maker das Tut-schreiben immer ne Menge Arbeit mit sich bringen oder Guides für MMORPGs, aber letztendlich freut das jeden Endbenutzer was dann die Arbeit lohnenswert macht. Hab mich jetz nochmal seit 1-2 Stunden dahinter geklemmt, aber ich Esel komm einfach nicht dahinter wie man das Script über das Amulett zum laufen bringt. Das script einfach im Amulett eingeben funktioniert nicht wirklich und ein komplett neues Amulett machen geht auch nicht, weil dann immer Meshes etc fehlen.

Würde mich über ein "Nebentutorial" wo die Schritte Zwischendurch sehr freuen. Am besten einmal für Neuerstellung von zaubern(nicht jeder will vllt die quest machen und ein Amulett bekommen soindern lieber einen direkten Zauber) und Items. Es gibt in nem anderen Forum ein Tutorial dazu, aber da sind eher die Funktionen erklärt, aber nicht wirklich die einzelnen schritte vom klick auf "New" bis zum "OK". =/


~
MP

Nun gut, ich denke ich sollte mich vielleicht hinsetzen und noch ein "Addon" zum Tutorial schreiben; allerdings kann ich natürlich nur die Schritte beschreiben, die ich selber gemacht habe, da ich nicht auf jede Möglichkeit, einen Zauber zu bekommen, eingehen kann.

//edit: Ok, wie gewünscht habe ich jetzt das Tutorial ein wenig erweitert.

Wenthoff
09.04.2006, 10:57
Ich möchte noch was zu der NIF-Entpack geschichte anmerken :D
Man muss den Kram nicht entpacken. Man kann z. B. ein anderes Amulett auswählen und die ID ändern. Dann fragt das CS ob man ein neues Item erstellen will.

imported_Lakos
09.04.2006, 11:10
Ich möchte noch was zu der NIF-Entpack geschichte anmerken :D
Man muss den Kram nicht entpacken. Man kann z. B. ein anderes Amulett auswählen und die ID ändern. Dann fragt das CS ob man ein neues Item erstellen will.

Jetzt wo du es sagst...
Naja, aber ich hab das immer so gemacht, weil ich so auswählen kann, welches NIF-Model meine Items benutzen sollen, ohne das Pendant dazu in den bereits vorhandenen Items zu suchen.

FrAGgi
12.04.2006, 17:13
Danke für das Tut. Ist wirklich gut gemacht. Bei mir ist nur das Problem, dass das Menü zum Wetter umstellen zwar erscheint und die Buttons sich auch klicken lassen, aber das Wetter sich nicht ändert...

imported_Lakos
12.04.2006, 17:56
Danke für das Tut. Ist wirklich gut gemacht. Bei mir ist nur das Problem, dass das Menü zum Wetter umstellen zwar erscheint und die Buttons sich auch klicken lassen, aber das Wetter sich nicht ändert...

Mit dem SetWeather-Befehl wird deine Eingabe erst mit der nächsten Umwandlung des Wetters gültig. Das Wetter ändert sich jede Stunde.
Wenn du das Ergebnis sofort haben willst, kannst du aber ForceWeather benutzen.

Cheatkiller
13.04.2006, 23:39
Wirkilch toll da Tut. Hatte Anfangs meine Probleme mit dem entpacken der NIF Dateien, hat sich aber mit der ReadMe Datei des TES4BSA gelöst.:)

FrAGgi
14.04.2006, 14:29
Mit dem SetWeather-Befehl wird deine Eingabe erst mit der nächsten Umwandlung des Wetters gültig. Das Wetter ändert sich jede Stunde.
Wenn du das Ergebnis sofort haben willst, kannst du aber ForceWeather benutzen.

Achso, danke.Werds gleich mal versuchen.

Farg
14.04.2006, 17:26
Hast du auch die Oblivion.esm geladen? Ohne die gehts nicht.

Klingt jetzt zwar ein bisschen doof, aber wie ladet man die?

imported_Lakos
14.04.2006, 17:40
File -> Data -> Oblivion.esm auswählen; OK drücken.

Avaron
16.04.2006, 22:42
Klasse gemacht! :)

Im Moment suche ich noch ein Plugin, mit welchem mann mehrere Kartenmarkierungen setzen kann, anstatt nur einem... (um sich z.B. alle Dungeons zu markieren, die man zwar gerade gefunden hat aber erst später plündern will). Wenn das nicht klappt, würde ich es zur Not auch selbst schreiben. Nun weiss ich nicht, ob auch solche Modifikationen möglich wären... also ich meine, Speziell im Bereich der Menüs, und nicht im eigentlichen Spielverlauf. bin da aber eher etwas septisch, dass es mit Scripts machbar wäre... Hättest du da eine Vorstellung bzw. Idee? (Oder gibt es gar schon so ein Plugin? :p )

Avaron

Wenthoff
16.04.2006, 23:24
es gibt eins, ich habs gesehn :D aber wo.....

Morrak
19.04.2006, 12:04
Hi, bin ganz neu dabei!
Das Tut zum Skripten ist super ;), das mit dem Wetter funzt auch bei mir, aber kann mir einer nochmal erklären, wie man quests macht?
Ich hab's bis zum reiter Quest Target geschafft, nach dem Tut, aber dann bin ich nicht mehr weiter gekommen!? :confused:

MXM
25.06.2006, 13:28
Hallo, bin neu in der Gemeinde,

Ich habe gerade bekonnen mal ein bissl in Oblivion rumzumodden :D

Fand dein Tut echt Klasse! :)

Allerdings hätte ich gern eine Sache genauer erklärt haben wollen, das mit dem neuen Object erstellen und es auf der Karte oder in der Stadt plazieren und dann den BM draufzusetzten.

das hab ich nicht ganz verstanden.

MFG,
MXM